Skip to main content

Parallel implementation of functional languages

  • Invited Paper
  • Conference paper
  • First Online:
Analysis and Verification of Multiple-Agent Languages (LOMAPS 1996)

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

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

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

    Google Scholar 

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

    Google Scholar 

  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.

    Google Scholar 

  4. F. Abolhassan, J. Keller, and W.J. Paul. On the Cost-Effectiveness of PRAMs. In SPDP, pages 2–9. IEEE Computer Society, 1991.

    Google Scholar 

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

    Google Scholar 

  6. Y. Ben-Asher and R. Wilhelm. Compiler support for fair execution of shared memory parallel programs on networks of workstations. in preparation.

    Google Scholar 

  7. J. Blazewicz, K. H. Ecker, G. Schmidt, and J. Weglarz. Scheduling in Computer and Manufacturing Systems. Springer-Verlag, 1994. Second, Revised Edition.

    Google Scholar 

  8. D.I. Bevan. An efficient reference counting solution to the distributed garbage collection problem. Parallel Computing, 9(2):179–192, 1989.

    Article  Google Scholar 

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

    Google Scholar 

  10. G. L. Burn. Using Projection Analysis in Compiling Lazy Functional Programs. In LISP'90, Nice, France, pages 227–241. ACM Press, 1990.

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  15. G. C. Fox, R. D. Williams, and P. C. Messina. Parallel Computing Works! Morgan Kaufmann, 1994.

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  21. M. Kesseler. The Implementation of Functional Languages on Parallel Machines with Distributed Memory. PhD thesis, ”Katholieke Universiteit Nijmegen, The Netherlands”, April 1996.

    Google Scholar 

  22. H. Kuchen and A. Wagener. Comparison of dynamic load balancing strategies. Technical Report 90-05, Technical University of Aachen (RWTH Aachen), 1990.

    Google Scholar 

  23. R. D. Lins and R. E. Jones. Cyclic weighted reference counting. Technical Report 95, University of Kent, Canterbury, United Kingdom, December 1991.

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  28. S. Peyton Jones. The Implementation of Functional Programming Languages. Prentice-Hall, 1987.

    Google Scholar 

  29. M. Raber. Parallele Implementierung funktionaler Programmiersprachen. PhD thesis, Universität des Saarlandes, 1994.

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  33. G. Tremblay. Parallel implementation of lazy functional languages using abstract demand propagation. PhD thesis, McGill University, November 1994.

    Google Scholar 

  34. R. Wilhelm and D. Maurer. Compiler Design. International Computer Science Series. Addison-Wesley, 1995.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Mads Dam

Rights and permissions

Reprints 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

Publish with us

Policies and ethics