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.
Preview
Unable to display preview. Download preview PDF.
References
J.-P. Banâtre, D. Le Métayer, A new computational model and its discipline of programming, INRIA Research Report, 566, 1986.
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.
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.
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.
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.
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.
B. Goldberg, Buckwheat: Graph Reduction on a Shared-Memory Multiprocessor, In ACM Conference on Lisp and Functional Programming, 1988.
R. Harrison, Pure Functional Languages and Parallelism, University of Southampton, PhD thesis, 1991.
P. H. Hartel, Performance Analysis of Storage Management in Combinator Graph Reduction, Dept. of Comp. Sys, University of Amsterdam, PhD Thesis, 1988.
P. Henderson, Functional Programming Application and Implementation, Prentice-Hall International, 1980.
S. Holmström, PFL: A Functional Language for Parallel Programming, and its Implementation, Report No.7, Programming Methodology Group, University of Gothenburgh, 1983.
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.
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.
R.J.M. Hughes, The Design and Implementation of Programming Languages, thesis submitted for the degree of Doctor of Philosophy, University of Oxford, 1983.
INMOS Ltd, IMS T800 Transputer, INMOS, Bristol, Feb. 1987.
P.H.J. Kelly, Functional Programming for Loosely-Coupled Multiprocessors, Westfield College, University of London, PhD Thesis, 1987.
P.H.J. Kelly, Functional Programming for Loosely-Coupled Multiprocessors, The MIT Press, 1989.
P.H.J. Kelly, The Implementation of Caliban, Private communication, 1990.
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.
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.
D. Pountain, D. May, A tutorial introduction to OCCAM programming, INMOS Ltd., Bristol, 72 OCC 046 00, March 1987.
M. Schlag, The Planar Topology of Programs, in Functional Programming Languages and Computer Architectures, Portland, Oregon, LNCS 274, 1987.
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.
M. Sheeran, μFP: a language for VLSI design, in Proceedings ACM Conference on Lisp and Functional Programming, pp. 104–112, 1984.
D.A. Turner, A new implementation technique for applicative languages, Software Practice and Experience, 9 (1), pp. 31–49, 1979.
Author information
Authors and Affiliations
Editor information
Rights 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