Graphinators and the duality of SIMD and MIMD

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.

[1]  Paul Hudak,et al.  Serial Combinators: "Optimal" Grains of Parallelism , 1985, FPCA.

[2]  Paul Hudak,et al.  Distributed execution of functional programs using serial combinators , 1985, IEEE Transactions on Computers.

[3]  Chris Hankin,et al.  A Safe Approach to Parallel Combinator Reduction , 1988, Theor. Comput. Sci..

[4]  W. Daniel Hillis,et al.  The connection machine , 1985 .

[5]  Paul Hudak,et al.  A combinator-based compiler for a functional language , 1984, POPL '84.

[6]  R. J. M. Hughes,et al.  Super-combinators a new implementation method for applicative languages , 1982, LFP '82.

[7]  Richard Kennaway,et al.  Expressions as processes , 1982, LFP '82.

[8]  Guy Durrieu,et al.  Mechanisms for efficient multiprocessor combinator reduction , 1986, LFP '86.

[9]  D. A. Turner Another Algorithm for Bracket Abstraction , 1979, J. Symb. Log..

[10]  R. Grondalski,et al.  A VLSI chip set for a massively parallel architecture , 1987, 1987 IEEE International Solid-State Circuits Conference. Digest of Technical Papers.

[11]  Bradley C. Kuszmaul Simulating Applicative Architectures on the Connection Machine , 1986 .

[12]  Paul Hudak,et al.  Experiments in diffused combinator reduction , 1984, LFP '84.

[13]  Sandeep N. Bhatt,et al.  The fluent abstract machine , 1988 .

[14]  Mark Scheevel NORMA: a graph reduction processor , 1986, LFP '86.

[15]  D. A. Turner,et al.  A new implementation technique for applicative languages , 1979, Softw. Pract. Exp..