Application of the Polytope Model to Functional Programs

We propose an approach to the static parallelization of functional programs. In past work, implicit parallelism in functional programs has mostly been dynamic, i.e., implemented by parallel graph reduction. In a special application domain, scientific computing, a static parallelization method has been successful, which is based on a mathematical execution model, the polytope model. Since scientific computations are usually phrased imperatively, the study of the polytope model has focused on imperative programs. We show that the polytope model also applies to functional programs. We describe the prerequisites for adapting the polytope model to Haskell, a non-strict functional language. Automatically generated parallel code in a subset of Haskell consists of instructions for an abstract parallel machine (APM). In future work, APM code can be translated further to native code for a parallel machine. We demonstrate a parallelization in the polytope model on a functional program for LU decomposition.

[1]  Paul Feautrier,et al.  Automatic Parallelization in the Polytope Model , 1996, The Data Parallel Programming Model.

[2]  Marko C. J. D. van Eekelen,et al.  Functional Programming and Parallel Graph Rewriting , 1993 .

[3]  Marina Chen,et al.  Crystal: theory and pragmatics of generating efficient parallel code , 1991 .

[4]  Guy E. Blelloch,et al.  Implementation of a portable nested data-parallel language , 1993, PPOPP '93.

[5]  François Irigoin,et al.  Supernode partitioning , 1988, POPL '88.

[6]  Patrice Quinton,et al.  The ALPHA language and its use for the design of systolic arrays , 1991, J. VLSI Signal Process..

[7]  Curtis F. Gerald,et al.  APPLIED NUMERICAL ANALYSIS , 1972, The Mathematical Gazette.

[8]  Yves Robert,et al.  Mapping affine loop nests: new results , 1995, HPCN Europe.

[9]  Christian Lengauer,et al.  On the Space-Time Mapping of a Class of Divide-and-Conquer Recursions , 1996, Parallel Process. Lett..

[10]  Paul Feautrier,et al.  Some efficient solutions to the affine scheduling problem. I. One-dimensional time , 1992, International Journal of Parallel Programming.

[11]  John Feo,et al.  The SISAL 2. 0 reference manual , 1991 .

[12]  Alain Darte,et al.  The Data Parallel Programming Model , 1996 .

[13]  Christian Lengauer,et al.  Loop Parallelization in the Polytope Model , 1993, CONCUR.

[14]  Hans-Wolfgang Loidl,et al.  Engineering Large Parallel Functional Programs , 1997, Implementation of Functional Languages.

[15]  Paul Feautrier Toward Automatic Distribution , 1994, Parallel Process. Lett..

[16]  Patrice Quinton,et al.  On deriving data parallel code from a functional program , 1995, Proceedings of 9th International Parallel Processing Symposium.

[17]  Gudula Rünger,et al.  A Methodology for Deriving Parallel Programs with a Family of Parallel Abstract Machines , 1997, Euro-Par.

[18]  Martin Griebl,et al.  The Loop Parallelizer LooPo-Announcement , 1996, LCPC.

[19]  Patrice Quinton,et al.  Derivation of Data Parallel Code from a Functional Program , 1994 .

[20]  Christian Lengauer,et al.  Transformation of Divide & Conquer to Nested Parallel Loops , 1997, PLILP.

[21]  Martin Griebl,et al.  Code generation in the polytope model , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[22]  Jean-Francois Collard,et al.  Automatic parallelization ofwhile-loops using speculative execution , 1995, International Journal of Parallel Programming.

[23]  Doran Wilde,et al.  From alpha to imperative code: a transformational compiler for an array-based functional language , 1996 .

[24]  John Feo,et al.  SISAL reference manual. Language version 2.0 , 1990 .

[25]  FeautrierPaul Some efficient solutions to the affine scheduling problem , 1992 .