Distributed execution of functional programs using serial combinators
IEEE Transactions on Computers
Serial combinators: “optimal” grains of parallelism
Proc. of a conference on Functional programming languages and computer architecture
The connection machine
A safe approach to parallel combinator reduction
Proc. of the European symposium on programming on ESOP 86
Mechanisms for efficient multiprocessor combinator reduction
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
NORMA: a graph reduction processor
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
A combinator-based compiler for a functional language
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Experiments in diffused combinator reduction
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Super-combinators a new implementation method for applicative languages
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
LFP '82 Proceedings of the 1982 ACM symposium on LISP and functional programming
Conception, evolution, and application of functional programming languages
ACM Computing Surveys (CSUR)
Parallelism in sequential functional languages
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
IEEE Transactions on Parallel and Distributed Systems
A provably time-efficient parallel implementation of full speculation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Asynchronous Problems on SIMD Parallel Computers
IEEE Transactions on Parallel and Distributed Systems
On the Structure of Concurrent Interpreters
IPDPS '02 Proceedings of the 16th International Parallel and Distributed Processing Symposium
MIMD programs on SIMD architectures
FRONTIERS '96 Proceedings of the 6th Symposium on the Frontiers of Massively Parallel Computation
Hi-index | 0.00 |
Combinator reduction is a well-known implementation technique for executing functional programs. In this paper we present a new method for parallel combinator reduction based on viewing combinators simply as “graph mutators.” We show that each combinator in Turner's standard set can be expressed using two primitive operations on a binary graph — one to alter an edge and one to insert a vertex — and four symmetric variants of them. We call these primitive operations graphinators, and present a single 7-step graphinator sequence which implements the reduction rules for all combinators in the set. This sequence allows redexes involving any of the combinators to be reduced in parallel on a SIMD machine. We have implemented a graph reducer on the Connection Machine based on these results, together with a novel execution strategy called prudent evaluation. Preliminary performance results suggest that our implementation does reasonably well, significantly better than previous efforts, but perhaps still not well enough to be practical. Nevertheless, the approach suggests a new way of thinking about program execution, and we have thoughts on how to improve our implementation.