Graphinators and the duality of SIMD and MIMD

Paul Hudak, Eric Hohr · 1988

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.

Read the paper · More papers on PaperTik