Parallel graph reduction for divide-and-conquer applications -- Part I: program transformation

A proposal is made to base parallel evaluation of functional programs on graph reduction combined with a form of string reduction that avoids duplication of work. Pure graph reduction poses some rather difficult problems to implement on a parallel reduction machine, but with certain restrictions, parallel evaluation becomes feasible. The restrictions manifest themselves in the class of application programs that may benefit from a speedup due to parallel evaluation. Two transformations are required to obtain a suitable version of such programs for the class of architectures considered. It is conceivable that programming tools can be developed to assist the programmer in applying the transformations, but we have not investigated such possibilities. To demonstrate the viability of the method we present four application programs with a complexity ranging from quick sort to a simulation of the tidal waves in the North sea.

[1]  David Turner Functional programs as executable specifications , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[2]  Marko C. J. D. van Eekelen,et al.  CLEAN: A language for functional graph writing , 1987, FPCA.

[3]  Willem G. Vree,et al.  Parallel graph reduction for divide-and-conquer applications -- Part II: program performance , 1988 .

[4]  Robert M. Keller,et al.  A loosely-coupled applicative multi-processing system , 1899 .

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

[6]  Henk A. van der Vorst,et al.  Data transport in Wang's partition method , 1988, Parallel Comput..

[7]  Thomas Johnsson,et al.  Efficient compilation of lazy evaluation , 1984, SIGPLAN '84.

[8]  Robert M. Keller,et al.  A loosely-coupled applicative multi-processing system* , 1979, 1979 International Workshop on Managing Requirements Knowledge (MARK).

[9]  M. Ronan Sleep,et al.  Transputer-Based Experiments with the ZAPP Architecture , 1987, PARLE.

[10]  G. Bergland,et al.  Fast Fourier transform hardware implementations--An overview , 1969 .

[11]  Werner E. Kluge Cooperating Reduction Machines , 1983, IEEE Transactions on Computers.

[12]  F. Warren Burton,et al.  Annotations to Control Parallelism and Reduction Order in the Distributed Evaluation of Functional Programs , 1984, TOPL.

[13]  Robert M. Keller,et al.  Simulated Performance of a Reduction-Based Multiprocessor , 1984, Computer.

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

[15]  Gyula A. Magó A network of microprocessors to execute reduction languages, part II , 1979, International Journal of Computer & Information Sciences.

[16]  Makoto Amamiya A New Parallel Graph Reduction Model and Its Machine Architecture , 1987, ICPP.

[17]  Robert D. Tennent,et al.  The denotational semantics of programming languages , 1976, CACM.

[18]  Simon L. Peyton Jones Using Futurebus in a fifth-generation computer , 1986, Microprocess. Microsystems.

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

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

[21]  Thomas Johnsson Efficient compilation of lazy evaluation , 1984, SIGP.

[22]  Jon Fairbairn,et al.  TIM: A simple, lazy abstract machine to execute supercombinatorics , 1987, FPCA.

[23]  F. Warren Burton,et al.  Executing functional programs on a virtual tree of processors , 1981, FPCA '81.

[24]  John Sargeant,et al.  Control of parallelism in the Manchester Dataflow Machine , 1987, FPCA.