Skip to main content

Parallel programming with pure functional languages

  • Conference paper
  • First Online:
Reasearch Directions in High-Level Parallel Programming Languages (HLPPP 1991)

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

  • 146 Accesses

Abstract

The use of pure functional languages is often quoted as facilitating the production of parallel algorithms. In this paper we examine the claim that programs written in pure functional languages can be easily transformed into programs which are suitable for implementation on a parallel machine. In particular, we investigate the transformation of a program to a form which is suitable for implementation on a pipelined process network, and then annotate the resulting network using a declarative language called Caliban.

The case study which is used for this investigation is an abstract programming model which was designed by Banâtre and Le Métayer, chosen as it is a non-trivial application which is not obviously well-suited to implementation in a functional language, and which is itself established as a model for concurrency.

Program transformation is used to improve the efficiency of the implementation of the model for execution on a loosely-coupled multiprocessor. The parallel execution of the resulting algorithm is simulated in order to obtain estimates of performance measurements, and to gauge the effect of changing the granularity of the process network.

Although we find that it is difficult to exploit pipeline parallelism effectively using the transformation techniques investigated here, we see that there is a direct correspondence between programs written in functional languages and distributed process networks, and that this can easily be harnessed by using Caliban. This correspondence, together with the referential transparency of programs written in pure functional languages, indicates that further research into the exploitation of parallelism using these languages is called for.

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. J.-P. Banâtre, D. Le Métayer, A new computational model and its discipline of programming, INRIA Research Report, 566, 1986.

    Google Scholar 

  2. G.L. Burn, Evaluation transformers — A model for the parallel evaluation of functional languages (extended abstract), in G. Kahn, (editor), Proceedings of the Functional Programming Languages and Computer Architecture Conference, Springer-Verlag, pp. 446–470, September 1987.

    Google Scholar 

  3. G.L. Burn, Implementing Lazy Functional Languages on Parallel Architectures, in P.C. Treleaven, (editor), Parallel Computers Object-Oriented, Functional, Logic, John Wiley & Sons Ltd., 1990, pp. 101–134.

    Google Scholar 

  4. M.C. Chen, A parallel language and its compilation to multiprocessor architectures or VLSI. In Conference Record of the 13th Annual ACM Symposium on Principles of Programming Languages, January 1986.

    Google Scholar 

  5. J. Darlington, Program Transformation, in J. Darlington, P. Henderson, D.A. Turner, (editors), Functional Programming and its Applications: An Advanced Course, Cambridge University Press, 1982.

    Google Scholar 

  6. M.C.J.D. van Eekelen, M.J. Plasmeijer, J.E.W. Smetsers, Communicating Functional Processes, Technical Report no. 89-3, University of Nijmegen, Department of Informatics, March 1989.

    Google Scholar 

  7. B. Goldberg, Buckwheat: Graph Reduction on a Shared-Memory Multiprocessor, In ACM Conference on Lisp and Functional Programming, 1988.

    Google Scholar 

  8. R. Harrison, Pure Functional Languages and Parallelism, University of Southampton, PhD thesis, 1991.

    Google Scholar 

  9. P. H. Hartel, Performance Analysis of Storage Management in Combinator Graph Reduction, Dept. of Comp. Sys, University of Amsterdam, PhD Thesis, 1988.

    Google Scholar 

  10. P. Henderson, Functional Programming Application and Implementation, Prentice-Hall International, 1980.

    Google Scholar 

  11. S. Holmström, PFL: A Functional Language for Parallel Programming, and its Implementation, Report No.7, Programming Methodology Group, University of Gothenburgh, 1983.

    Google Scholar 

  12. P. Hudak, B. Goldberg, Serial Combinators: ‘Optimal’ Grains of Parallelism, in Functional Programming Languages and Computer Architectures, Springer-Verlag, LNCS 201, pp. 382–388, 1985.

    Google Scholar 

  13. P. Hudak, Para-functional Programming: A Paradigm for Programming Multiprocessor Systems, Conference Record of the 13th Annual ACM Symposium on Principles of Programming Languages, pp. 243–254, 1986.

    Google Scholar 

  14. R.J.M. Hughes, The Design and Implementation of Programming Languages, thesis submitted for the degree of Doctor of Philosophy, University of Oxford, 1983.

    Google Scholar 

  15. INMOS Ltd, IMS T800 Transputer, INMOS, Bristol, Feb. 1987.

    Google Scholar 

  16. P.H.J. Kelly, Functional Programming for Loosely-Coupled Multiprocessors, Westfield College, University of London, PhD Thesis, 1987.

    Google Scholar 

  17. P.H.J. Kelly, Functional Programming for Loosely-Coupled Multiprocessors, The MIT Press, 1989.

    Google Scholar 

  18. P.H.J. Kelly, The Implementation of Caliban, Private communication, 1990.

    Google Scholar 

  19. E. Mohr, D.A. Kranz, R.H. Halstead, Jr., Lazy Task Creation: A Technique for Increasing the Granularity of Parallel Programs, in ACM Conference on Lisp and Functional Programming, pp. 185–197, 1990.

    Google Scholar 

  20. D. Patel, M. Schlag, M. Ercegovac, νFP: An Environment for the Multilevel Specification, Analysis and Synthesis of Hardware Algorithms, in Functional Programming Languages and Computer Architectures, Nancy, France, LNCS 201, pp. 238–255, 1985.

    Google Scholar 

  21. D. Pountain, D. May, A tutorial introduction to OCCAM programming, INMOS Ltd., Bristol, 72 OCC 046 00, March 1987.

    Google Scholar 

  22. M. Schlag, The Planar Topology of Programs, in Functional Programming Languages and Computer Architectures, Portland, Oregon, LNCS 274, 1987.

    Google Scholar 

  23. D.W.N. Sharp, Functional Language Program Transformation for Parallel Computer Architectures, Department of Computing, Imperial College of Science, Technology and Medicine, University of London, PhD Thesis, 1990.

    Google Scholar 

  24. M. Sheeran, μFP: a language for VLSI design, in Proceedings ACM Conference on Lisp and Functional Programming, pp. 104–112, 1984.

    Google Scholar 

  25. D.A. Turner, A new implementation technique for applicative languages, Software Practice and Experience, 9 (1), pp. 31–49, 1979.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Jean Pierre Banâtre Daniel Le Métayer

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Harrison, R. (1992). Parallel programming with pure functional languages. In: Banâtre, J., Le Métayer, D. (eds) Reasearch Directions in High-Level Parallel Programming Languages. HLPPP 1991. Lecture Notes in Computer Science, vol 574. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-55160-3_48

Download citation

  • DOI: https://doi.org/10.1007/3-540-55160-3_48

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-55160-7

  • Online ISBN: 978-3-540-46762-5

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics