Abstract
Great hopes in the exploitation of the (implicit) parallelism inherent in functional programs have driven a number of projects. General frustration resulted wherever implementations on distributed memory machines were attempted. The grain size of potentially parallel tasks is too small to amortize the enormous costs of the necessary communication. The management of the parallelism is expensive. Decision making in the network operating system suffers from the fact, that most parameters such as the number of potentially parallel tasks and their execution times are dynamic.
This article tries to summarise the state of the art in the parallel implementation of functional languages, to give reasons why attempts have failed to show performance, and argues why this will probably remain so. Similar arguments will hold for other declarative languages and mechanisms with implicit fine grain parallelism such as logic and constraint languages.
Research supported by the Deutsche Forschungsgemeinschaft, SFB 124-VLSI Design Methods and Parallelism
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
V. Bafna A. Gupta, A. Banerjea, V. Jha and PCP Bhatt. Parallel implementation of logic languages. In CONPAR 90-VAPP IV, pages 154–165, Berlin-Heidelberg-New York, 1990. Springer.
R. Alverson, D. Callahan, D. Cummings, B. Koblenz, A. Porterfield, and B. Smith. The tera computer system. 1990 International Conf. on Super-computing, June 11–15 1990. Published as Computer Architecture News 18:3.
I. Alouini and C. Kirchner. Toward the Concurrent Implementation of Computational Systems. In Algebraic and Logic Programming, volume 1139 of LNCS, pages 1–31. Springer-Verlag, September 1996.
F. Abolhassan, J. Keller, and W.J. Paul. On the Cost-Effectiveness of PRAMs. In SPDP, pages 2–9. IEEE Computer Society, 1991.
C. Atay, K. McAloon, and C. Tretkoff. 21p: A highly parallel constraint logic programming language. In Linda R. Petzold Richard F. Sincovec, David E. Keyes, Michael R. Leuze and Daniel A. Reed, editors, Proceedings of the 6th SIAM Conference on Parallel Processing for Scientific Computing, pages 822–828, Norfolk, VI, March 1993. SIAM Press.
Y. Ben-Asher and R. Wilhelm. Compiler support for fair execution of shared memory parallel programs on networks of workstations. in preparation.
J. Blazewicz, K. H. Ecker, G. Schmidt, and J. Weglarz. Scheduling in Computer and Manufacturing Systems. Springer-Verlag, 1994. Second, Revised Edition.
D.I. Bevan. An efficient reference counting solution to the distributed garbage collection problem. Parallel Computing, 9(2):179–192, 1989.
G. L. Burn. Implementing Lazy Functional Languages on Parallel Architectures. In P. C. Treleaven, editor, Parallel Computers — Object-Oriented, Functional, Logic, Series in Parallel Computing, chapter 5, pages 101–140. John Wiley & Sons, Chichester, 1990.
G. L. Burn. Using Projection Analysis in Compiling Lazy Functional Programs. In LISP'90, Nice, France, pages 227–241. ACM Press, 1990.
G. Cousineau, P. L. Curien, and M. Mauny. The categorical abstract machine. In J.-P. Jouannaud, editor, Functional Programming Languages and Computer Architecture, pages 50–64. Springer-Verlag, Berlin, DE, 1985. Lecture Notes in Computer Science 201 Proceedings of. Conference at Nancy.
M. M. T. Chakravarty. A self-scheduling, non-blocking, parallel abstract machine for lazy functional languages. Proceedings of the 6th International Workshop on the Implementation of Functional Languages, 1994.
J. Feo, P. Miller, S. Skedzielewski, S. Denton, and C. Solomon. Sisal 90. In A. P. Wim Bohm and John T. Feo, editors, High Performance Functional Computing, pages 35–47, April 1995.
J. Fairbairn and S. Wray. TIM: A simple, lazy abstract machine to execute supercombinators. In Functional Programming Languages and Computer Architecture, pages 34–45. Springer Verlag, September 1987. LNCS 274.
G. C. Fox, R. D. Williams, and P. C. Messina. Parallel Computing Works! Morgan Kaufmann, 1994.
R. Graham, E. Lawler, J. Lenstra, and A. Rinnoy Kan. Optimization and approximation in deterministic sequencing and scheduling: A survey. In Annals of Discrete Mathematics, volume 5, pages 287–326. North-Holland, Amsterdam, 1979.
S. C. Goldstein, K. E. Schauser, and D. E. Culler. Lazy threads, stacklets, and synchronizers: Enabling primitives for compiling parallel languages. In Third Workshop on Languages, Compilers, and Run-Time Systems for Scalable Computers, 1995.
J. M. D. Hill. Data-parallel lazy functional programming (Phd Thesis). Technical Report QMW-DCS-1995-701, Queen Mary and Westfield College, Department of Computer Science, Mile End Road, London, E1 4NS, UK, May 1995.
T. Johnsson. The G-machine: An abstract machine for graph reduction. In Proceedings of the Joint SERC/Chalmers Workshop on Declarative Programming, University College, London, UK, 1983.
T. Johnsson. Parallel evaluation of functional programs: The <ν,G> approach (summary). In Parallel Architectures and Languages Europe PARLE, pages 406–422. Springer-Verlag, 1991. LNCS 505.
M. Kesseler. The Implementation of Functional Languages on Parallel Machines with Distributed Memory. PhD thesis, ”Katholieke Universiteit Nijmegen, The Netherlands”, April 1996.
H. Kuchen and A. Wagener. Comparison of dynamic load balancing strategies. Technical Report 90-05, Technical University of Aachen (RWTH Aachen), 1990.
R. D. Lins and R. E. Jones. Cyclic weighted reference counting. Technical Report 95, University of Kent, Canterbury, United Kingdom, December 1991.
R. D. Lins and M. A. Vasques. A comparative study of algorithms for cyclic reference counting. Technical Report No. 92, Computing Laboratory, University of Kent, Canterbury, UK, 1991. Submitted to Software—Practice and Experience.
D. Maurer. Strictness Computation Using Special Lambda-Expressions. In Harald Ganzinger and Neil D. Jones, editors, Programs as Data Objects, volume 217 of LNCS, pages 136–155. Springer-Verlag, October 1986.
E. G. J. M. H. Nöcker, J. E. W. Smetsers, M. C. J. D. Eekelen, and M. J. Plasmeijer. Concurrent Clean. In E. H. L. Aarts, J. van Leeuwen, and M. Rem, editors, PARLE '91, Parallel Architectures and Languages Europe, Volume I: Parallel Architectures and Algorithms, volume 505 of Lecture Notes in Computer Science, pages 202–219, Eindhoven, The Netherlands, June 10–13, 1991. Springer, Berlin.
J. H. Nang, D. W. Shin, S. R. Maeng, and J. W. Cho. A parallel execution of functional logic language with lazy evaluation. In Fifth Generation Computer Systems. IOS Press, Amsterdam, NL, 1992.
S. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.
M. Raber. Parallele Implementierung funktionaler Programmiersprachen. PhD thesis, Universität des Saarlandes, 1994.
M. Raber, Th. Remmel, E. Hoffmann, D. Maurer, F. Müller, H.-G. Oberhauser, and R. Wilhelm. Compiled graph reduction on a processor network. In 'Architektur und Betrieb von Rechensystemen', 10. GI/ITG-Fachtagung, pages 198–212, Paderborn, FRG, March 1988. Informatik Fachberichte 168, Springer-Verlag.
H. Seidl and R. Wilhelm. Probabilistic load balancing for parallel graph reduction. In Proceedings IEEE Region 10 Conference, pages 879–884, New York, 1989. IEEE.
P W Trinder, K Hammond, J S Mattson Jr, A S Partridge, and S L Peyton Jones. GUM: a portable parallel implementation of Haskell. In Proceedings of the ACM SIGPLAN '96 Conference on Programming Language Design and Implementation, pages 79–88, Philadelphia, Pennsylvania, 21-May 1996.
G. Tremblay. Parallel implementation of lazy functional languages using abstract demand propagation. PhD thesis, McGill University, November 1994.
R. Wilhelm and D. Maurer. Compiler Design. International Computer Science Series. Addison-Wesley, 1995.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1997 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Wilhelm, R., Alt, M., Martin, F., Raber, M. (1997). Parallel implementation of functional languages. In: Dam, M. (eds) Analysis and Verification of Multiple-Agent Languages. LOMAPS 1996. Lecture Notes in Computer Science, vol 1192. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-62503-8_13
Download citation
DOI: https://doi.org/10.1007/3-540-62503-8_13
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-62503-2
Online ISBN: 978-3-540-68052-9
eBook Packages: Springer Book Archive