Functional languages have recently gained attention as vehicles for programming in a concise and elegant manner. In addition, it has been suggested that functional programming provides a natural methodology for programming multiprocessor computers. This dissertation demonstrates that multiprocessor execution of functional programs is feasible, and results in a significant reduction in their execution times.
Two implementations of the functional language ALFL were built on commercially available multiprocessors. Alfalfa is an implementation on the Intel iPSC hypercube multiprocessor, and Buckwheat is an implementation on the Encore Multimax shared-memory multiprocessor. Each implementation includes a compiler that performs automatic decomposition of ALFL programs. The compiler is responsible for detecting the inherent parallelism in a program, and decomposing the program into a collection of tasks, called serial combinators, that can be executed in parallel. One of the primary goals of the compiler is to generate serial combinators exhibiting the coarsest granularity possibly without sacrificing useful parallelism. This dissertation describes the algorithms used by the compiler to analyze, decompose, and optimize functional programs.
The abstract machine model supported by Alfalfa and Buckwheat is called heterogeneous graph reduction, which is a hybrid of graph reduction and conventional stack-oriented execution. This model supports parallelism, lazy evaluation, and higher order functions while at the same time making efficient use of the processors in the system. The Alfalfa and Buckwheat run-time systems support dynamic load balancing, interprocessor communication (if required), and storage management. A large number of experiments were performed on Alfalfa and Buckwheat for a variety of programs. The results of these experiments, as well as the conclusions drawn from them, are presented.
Cited By
- Ghosh B, Muthukrishnan S and Schultz M First and second order diffusive methods for rapid, coarse, distributed load balancing (extended abstract) Proceedings of the eighth annual ACM symposium on Parallel Algorithms and Architectures, (72-81)
- Schauser K, Culler D and Goldstein S Separation constraint partitioning Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (259-271)
- Kaser O, Pawagi S, Ramakrishnan C, Ramakrishnan I and Sekar R Fast parallel implementation of lazy languages—the EQUALS experience Proceedings of the 1992 ACM conference on LISP and functional programming, (335-344)
- Kaser O, Pawagi S, Ramakrishnan C, Ramakrishnan I and Sekar R (2019). Fast parallel implementation of lazy languages—the EQUALS experience, ACM SIGPLAN Lisp Pointers, V:1, (335-344), Online publication date: 1-Jan-1992.
- Sarkar V and Cann D (2019). POSC—a partitioning and optimizing SISAL compiler, ACM SIGARCH Computer Architecture News, 18:3b, (148-164), Online publication date: 1-Sep-1990.
- Sarkar V and Cann D POSC—a partitioning and optimizing SISAL compiler Proceedings of the 4th international conference on Supercomputing, (148-164)
- Giorgi J and Le Métayer D Continuation-based parallel implementation of functional programming languages Proceedings of the 1990 ACM conference on LISP and functional programming, (209-217)
- Augustsson L and Johnsson T Parallel graph reduction with the (v , G)-machine Proceedings of the fourth international conference on Functional programming languages and computer architecture, (202-213)
- George L An abstract machine for parallel graph reduction Proceedings of the fourth international conference on Functional programming languages and computer architecture, (214-229)
- Goldberg B and Hudak P Implementing functional programs on a hypercube multiprocessor Proceedings of the third conference on Hypercube concurrent computers and applications: Architecture, software, computer systems, and general issues - Volume 1, (489-504)
- Goldberg B Buckwheat: graph reduction on a shared-memory multiprocessor Proceedings of the 1988 ACM conference on LISP and functional programming, (40-51)
Recommendations
Machine Independent AND and OR Parallel Execution of Logic Programs: Part II-Compiled Execution
In pt.I, we presented a binding environment for the ANDand OR parallel execution of logic programs. This environment was instrumental inrendering a compiler for the AND and OR parallel execution of logic programs machineindependent. In this paper, we ...