Skip to main content

Data parallelism and functional programming

  • Chapter
  • First Online:
The Data Parallel Programming Model

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1132))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. 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.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. 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.

    Google Scholar 

  5. Walter S. Brainerd, Charles H. Goldberg, and Jeanne C. Adams. Programmer's Guide to FORTRAN 90. Programming Languages. McGraw-Hill, 1990.

    Google Scholar 

  6. 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.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. Guy E. Blelloch. NESL: A nested data-parallel language. Technical Report CMU-CS-95-170, School of Computer Science, Carnegie-Mellon University, September 1995.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. David Cann. Retire Fortran? A debate rekindled. Comm. ACM, 35(3):81–89, August 1992.

    Google Scholar 

  13. 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.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. Siddharta Chatterjee. Compiling nested data-parallel programs for shared-memory multiprocessors. ACM Transactions on Programming Languages and Systems, 15(3):400–462, July 1993.

    Google Scholar 

  16. Marina C. Chen. A design methodology for synthesizing parallel algorithms and architectures. J. Parallel Distrib. Comput., pages 461–491, 1986.

    Google Scholar 

  17. 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.

    Google Scholar 

  18. 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.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. 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.

    Google Scholar 

  21. E. W. Dijkstra. A Discipline of Programming. Prentice Hall, Englewood Cliffs, N.J., 1976.

    Google Scholar 

  22. Kattamuri Ekanadham. A perspective on Id. In Boleslaw K. Szymanski, editor, Parallel Functional Languages and Compilers, chapter 6, pages 197–253. Addison-Wesley, 1991.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. Paul Feautrier. Automatic parallelization in the polytope model. This Volume.

    Google Scholar 

  25. David Goldberg. What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys, 23(1):5–48, March 1991.

    Google Scholar 

  26. 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.

    Google Scholar 

  27. Joacim Halén, Per Hammarlund, and Björn Lisper. An experimental implementation of a highly abstract model of data parallel programming. In preparation, 1996.

    Google Scholar 

  28. 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.

    Google Scholar 

  29. 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.

    Google Scholar 

  30. 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.

    Google Scholar 

  31. Chua-Huang Huang and Christian Lengauer. The derivation of systolic implementations of programs. Acta Inform., 24:595–632, 1987.

    Google Scholar 

  32. 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.

    Google Scholar 

  33. Per Hammarlund and Björn Lisper. Purely functional data parallel programming. Submitted, 1995.

    Google Scholar 

  34. W. Daniel Hillis and Guy L. Steele, Jr. Data parallel algorithms. Comm. ACM, 29(12):1170–1183, December 1986.

    Google Scholar 

  35. Paul Hudak. Conception, evolution, and application of functional programming languages. ACM Computing Surveys, 21(3):359–411, 1989.

    Google Scholar 

  36. K. E. Iverson. A Programming Language. Wiley, London, 1962.

    Google Scholar 

  37. 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.

    Google Scholar 

  38. 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.

    Google Scholar 

  39. 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).

    Google Scholar 

  40. Björn Lisper. Synthesis of time-optimal systolic arrays with cells with inner structure. J. Parallel Distrib. Comput., 10(2):182–187, October 1990.

    Google Scholar 

  41. Hervé Le Verge, Vincent Van Dongen, and Doran K. Wilde. Loop nest synthesis using the polyhedral library. Research Report 840, IRISA, May 1994.

    Google Scholar 

  42. Zohar Manna. Mathematical Theory of Computation. McGraw-Hill, New York, 1974.

    Google Scholar 

  43. Dan I. Moldovan. On the analysis and synthesis of VLSI algorithms. IEEE Trans. Comput., C-31:1121–1126, October 1982.

    Google Scholar 

  44. Bruce McKenney and Boleslaw Szymanski. Generating parallel code for SIMD machines. ACM Letters on Programming Languages and Systems, 1(1):59–73, March 1992.

    Google Scholar 

  45. 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.

    Google Scholar 

  46. 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.

    Google Scholar 

  47. 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.

    Google Scholar 

  48. Sanjay V. Rajopadye and Richard M. Fujimoto. Synthesizing systolic arrays from recurrence equations. Parallel Computing, 14:163–189, 1990.

    Google Scholar 

  49. Sailesh K. Rao and Thomas Kailath, Regular iterative algorithms and their implementation on processor arrays. Proc. IEEE, 76(3):259–269, March 1988.

    Google Scholar 

  50. 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.

    Google Scholar 

  51. Stephen K. Skedzielewski. Sisal. In Boleslaw K. Szymanski, editor, Parallel Functional Languages and Compilers, chapter 4, pages 105–157. Addison-Wesley, 1991.

    Google Scholar 

  52. David B. Skillicorn. Architecture-independent parallel computation. Computer, 23(12):38–50, December 1990.

    Google Scholar 

  53. 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.

    Google Scholar 

  54. Thinking Machines Corporation, Cambridge, MA. Connection Machine: Programming in C *, 6.1 edition, 1991.

    Google Scholar 

  55. Thinking Machines Corporation, Cambridge, MA. Connection Machine: Programming in * Lisp, 6.1 edition, 1991.

    Google Scholar 

  56. 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.

    Google Scholar 

  57. Eric Violard. Data-parallelism versus functional programming: The contribution of PEL. Technical report, ICPS, Université Luis Pasteur, Strasbourg, January 1995.

    Google Scholar 

  58. Eric Violard and G.-R. Perrin. PEL A language and its refinement calculus for parallel programming. Parallel Computing, 18:1167–1184, 1992.

    Google Scholar 

  59. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Guy-René Perrin Alain Darte

Rights and permissions

Reprints 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

Publish with us

Policies and ethics