Abstract
Data parallelism is often seen as a form of explicit parallelism for SIMD and vector machines, and data parallel programming as an explicit programming paradigm for these architectures. Data parallel languages possess certain software qualities as well, which justifies their use in higher level programming and specification closer to the algorithm domain. Thus, it is interesting to study how the data parallel paradigm can be best realized in a declarative setting, since declarative languages offer a pure view of computation which is good for these purposes. For numerical computing the functional programming paradigm is especially attractive, since numerical algorithms often are specified by recursion equations and thus can be translated more or less directly into recursive functional programs. Merging the data parallel and functional paradigms then yields languages and formalisms where many algorithms can be expressed in a very succinct fashion. In this paper we review data parallelism, functional programming, and existing approaches to the integration of the two paradigms. We then proceed to describe a formalism for data parallel functional programming, allowing very simple languages, where the view of aggregate data is particularly abstract. We explain how various data parallel operations can be expressed in this formalism. Finally, we conclude with a discussion of issues for languages based directly on the formalism.
Preview
Unable to display preview. Download preview PDF.
References
Steven Anderson and Paul Hudak. Compilation of Haskell array comprehensions for scientific computing. In Proceedings of the ACM SIG-PLAN'90 Conference on Programming Language Design and Implementation, pages 137–149. ACM, June 1990.
John Backus. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Comm. ACM, 21(8):613–641, August 1978.
H. P. Barendregt. The Lambda Calculus — Its Syntax and Semantics, volume 103 of Studies in Logic and the Foundations of Mathematics. North-Holland, Amsterdam, 1981.
Guy E. Blelloch, Siddhartha Chatterjee, Jonathan C. Hardwick, Jay Sipelstein, and Marco Zagha. Implementation of a portable nested dataparallel language. In Proceedings 4th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pages 102–111, San Diego, May 1993.
Walter S. Brainerd, Charles H. Goldberg, and Jeanne C. Adams. Programmer's Guide to FORTRAN 90. Programming Languages. McGraw-Hill, 1990.
Richard S. Bird. A calculus of functions for program derivation. In David A. Turner, editor, Research Topics in Functional Programming, The UT Year of Programming Series, chapter 11, pages 287–307. Addison-Wesley, Reading, MA, 1989.
Richard S. Bird. Constructive functional programming. In M. Broy, editor, Marktoberdorf International Summer school on Constructive Methods in Computer Science, NATO Advanced Science Institute Series. Springer Verlag, 1989.
Guy E. Blelloch. NESL: A nested data-parallel language. Technical Report CMU-CS-95-170, School of Computer Science, Carnegie-Mellon University, September 1995.
Luc Bougé. The Data Parallel Programming Model: A Semantic Perspective. In A. Darte and G.-R. Perrin, editors, Infra, Lecture Notes in Computer Science, chapter 1. Springer Verlag, 1996.
Guy E. Blelloch and Gary W. Sabot. Compiling collection-oriented languages onto massively parallel computers. J. Parallel Distrib. Comput., 8(2):119–134, February 1990.
John Backus, John H. Williams, and Edward L. Wimmers. An introduction to the programming language FL. In David A. Turner, editor, Research Topics in Functional Programming, The UT Year of Programming Series, chapter 9, pages 219–247. Addison-Wesley, Reading, MA, 1989.
David Cann. Retire Fortran? A debate rekindled. Comm. ACM, 35(3):81–89, August 1992.
P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proc. 4th ACM Symposium on Principles of Programming Languages, Los Angeles, January 1977.
Marina C. Chen, Young-Il Choo, and Jingke Li. Crystal: Theory and pragmatics of generating efficient parallel code. In Boleslaw K. Szymanski, editor, Parallel Functional Languages and Compilers, chapter 7, pages 255–308. Addison-Wesley, 1991.
Siddharta Chatterjee. Compiling nested data-parallel programs for shared-memory multiprocessors. ACM Transactions on Programming Languages and Systems, 15(3):400–462, July 1993.
Marina C. Chen. A design methodology for synthesizing parallel algorithms and architectures. J. Parallel Distrib. Comput., pages 461–491, 1986.
B. Carpentieri and Z. G. Mou. A formal approach to Divide-and-Conquer parallel computation and its applications on the Connection Machine. In Proceedings of the First Italian Conference: Algorithms and Complexity, pages 13–44. World Scientific Publ., October 1990.
B. Carpentieri and Z. G. Mou. Compile-time transformations and optimization of parallel Divide-and-Conquer algorithms. ACM SIGPLAN Notices, 26(10):19–28, October 1991.
John Darlington, A. J. Field, P.G. Harrison, P.H. J. Kelly, D.W.N. Sharp, Q. Wu, and R.L. While. Parallel programming using skeleton functions. In Proc. PARLE'93, Volume 694 of Lecture Notes in Comput. Sci., pages 146–160, Athens, June 1993. Springer-Verlag.
Jean-Marc Delosme and Use Ipsen. Efficient systolic arrays for the solution of Toeplitz systems: an illustration of a methodology for the construction of systolic architectures in VLSI. In W. Moore, A. McCabe, and R. Urquhart, editors, Systolic Arrays, pages 37–46, Bristol, UK, 1987. Adam Hilger.
E. W. Dijkstra. A Discipline of Programming. Prentice Hall, Englewood Cliffs, N.J., 1976.
Kattamuri Ekanadham. A perspective on Id. In Boleslaw K. Szymanski, editor, Parallel Functional Languages and Compilers, chapter 6, pages 197–253. Addison-Wesley, 1991.
John T. Feo, David C. Cann, and Rodney R. Oldehoeft. A report on the Sisal language project. J. Parallel Distrib. Comput., 10:349–366, 1990.
Paul Feautrier. Automatic parallelization in the polytope model. This Volume.
David Goldberg. What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys, 23(1):5–48, March 1991.
Nicholas Halbwachs. Détermination automatique de relations linéaires vérifiées par les variables d'un programme. Thèse de 3eme cycle, Univ. de Grenoble, March 1979.
Joacim Halén, Per Hammarlund, and Björn Lisper. An experimental implementation of a highly abstract model of data parallel programming. In preparation, 1996.
High Performance Fortran Forum. High Performance Fortran Language Specification, version 1.0. Technical report CRC-TR-92225, Center for Research on Parallel Computation, Rice University, Houston, TX, May 1993.
Jonathan M.D. Hill. The AIM is laziness in a data-parallel language. In K. Hammond and J. T. O'Donnell, editors, Glasgow functional programming workshop. Springer-Verlag, 1993.
Paul Hudak, Simon Peyton Jones, Philip Wadler, Brian Boutel, Jon Fairbairn, Joseph Fasel, María M. Guzmán, Kevin Hammond, John Hughes, Thomas Johnsson, Dick Kieburtz, Rishiyur Nikhil, Will Partain, and John Peterson. Report on the programming language Haskell: A non-strict, purely functional language. ACM SIGPLAN Notices, 27(5), May 1992.
Chua-Huang Huang and Christian Lengauer. The derivation of systolic implementations of programs. Acta Inform., 24:595–632, 1987.
Per Hammarlund and Björn Lisper. On the relation between functional and data parallel programming languages. In Proc. Sixth Conference on Functional Programming Languages and Computer Architecture, pages 210–222. ACM Press, June 1993.
Per Hammarlund and Björn Lisper. Purely functional data parallel programming. Submitted, 1995.
W. Daniel Hillis and Guy L. Steele, Jr. Data parallel algorithms. Comm. ACM, 29(12):1170–1183, December 1986.
Paul Hudak. Conception, evolution, and application of functional programming languages. ACM Computing Surveys, 21(3):359–411, 1989.
K. E. Iverson. A Programming Language. Wiley, London, 1962.
S. Y. Kung. VLSI array processors. In Will Moore, Andrew McCabe, and Roddy Urquhart, editors, Systolic Arrays, pages 7–24, Bristol, UK, 1987. Adam Hilger.
Björn Lisper and Jean-François Collard. Extent analysis of data fields. In Baudouin Le Charlier, editor, Proc. International Symposium on Static Analysis, Vol. 864 of Lecture Notes in Comput. Sci., pages 208–222, Namur, Belgium, September 1994. Springer-Verlag.
Björn Lisper. Synthesis of Synchronous Systems by Static Scheduling in Space-Time, volume 362 of Lecture Notes in Comput. Sci. Springer-Verlag, Berlin, May 1989. (Ph. D. thesis).
Björn Lisper. Synthesis of time-optimal systolic arrays with cells with inner structure. J. Parallel Distrib. Comput., 10(2):182–187, October 1990.
Hervé Le Verge, Vincent Van Dongen, and Doran K. Wilde. Loop nest synthesis using the polyhedral library. Research Report 840, IRISA, May 1994.
Zohar Manna. Mathematical Theory of Computation. McGraw-Hill, New York, 1974.
Dan I. Moldovan. On the analysis and synthesis of VLSI algorithms. IEEE Trans. Comput., C-31:1121–1126, October 1982.
Bruce McKenney and Boleslaw Szymanski. Generating parallel code for SIMD machines. ACM Letters on Programming Languages and Systems, 1(1):59–73, March 1992.
Patrice Quinton, Sanjay Rajopadhye, and Doran Wilde. Derivation of data parallel code from a functional program. In 9th International Parallel Processing Symposium, pages 1–15, 1995.
Patrice Quinton, Sanjay Rajopadhye, and Doran Wilde. Deriving imperative code from functional programs. In 7th Conference on Functional Programming Languages and Computer Architecture, La Jolla, CA, June 1995.
Patrice Quinton. Automatic synthesis of systolic arrays from uniform recurrent equations. In Proc. 11th Annual Int. Symp. on Comput. Arch., pages 208–214, June 1984.
Sanjay V. Rajopadye and Richard M. Fujimoto. Synthesizing systolic arrays from recurrence equations. Parallel Computing, 14:163–189, 1990.
Sailesh K. Rao and Thomas Kailath, Regular iterative algorithms and their implementation on processor arrays. Proc. IEEE, 76(3):259–269, March 1988.
Guy L. Steele and W. D. Hillis. Connection Machine LISP: Fine grained parallel symbolic programming. In Proc. 1986 ACM Conference on LISP and Functional Programming, pages 279–297, Cambridge, MA, 1986. ACM.
Stephen K. Skedzielewski. Sisal. In Boleslaw K. Szymanski, editor, Parallel Functional Languages and Compilers, chapter 4, pages 105–157. Addison-Wesley, 1991.
David B. Skillicorn. Architecture-independent parallel computation. Computer, 23(12):38–50, December 1990.
Boleslaw K. Szymanski. EPL-parallel programming with recurrent equations. In Boleslaw K. Szymanski, editor, Parallel Functional Languages and Compilers, chapter 3, pages 51–104. Addison-Wesley, 1991.
Thinking Machines Corporation, Cambridge, MA. Connection Machine: Programming in C *, 6.1 edition, 1991.
Thinking Machines Corporation, Cambridge, MA. Connection Machine: Programming in * Lisp, 6.1 edition, 1991.
D. Turner. Functional programming and communicating processes. In Proc. PARLE'87 vol. 2, Volume 259 of Lecture Notes in Comput. Sci., pages 54–74, Berlin, 1987. Springer-Verlag.
Eric Violard. Data-parallelism versus functional programming: The contribution of PEL. Technical report, ICPS, Université Luis Pasteur, Strasbourg, January 1995.
Eric Violard and G.-R. Perrin. PEL A language and its refinement calculus for parallel programming. Parallel Computing, 18:1167–1184, 1992.
J. Allan Yang and Young-il Choo. Data fields as parallel programs. In Proceedings of the Second International Workshop on Array Structures, Montreal, Canada, June/July 1992.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1996 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Lisper, B. (1996). Data parallelism and functional programming. In: Perrin, GR., Darte, A. (eds) The Data Parallel Programming Model. Lecture Notes in Computer Science, vol 1132. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-61736-1_50
Download citation
DOI: https://doi.org/10.1007/3-540-61736-1_50
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-61736-5
Online ISBN: 978-3-540-70646-5
eBook Packages: Springer Book Archive