Graphinators and the Duality of SIMD and MIMD


Paul Hudak and Eric Mohr


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.


    ,Author={Hudak, P. and Mohr, E.}
    ,Title={Graphinators and the Duality of {SIMD} and {MIMD}}
    ,Booktitle={Proceedings~1988 ACM Conference on Lisp and Functional Programming}
    ,Address={Salt Lake City, Utah}