Compilation of a specialized functional language for massively parallel computers

We propose a parallel specialized language that ensures portable and cost-predictable implementations on parallel computers. The language is basically a first-order, recursion-less, strict functional language equipped with a collection of higher-order functions or skeletons. These skeletons apply on (nested) vectors and can be grouped into four classes: computation, reorganization, communication and mask skeletons. The compilation process is described as a series of transformations and analyses leading to SPMD-like functional programs which can be directly translated into real parallel code. The language restrictions enforce a programming discipline whose benefit is to allow a static, symbolic and accurate cost analysis. The parallel cost takes into account both load balancing and communications, and can be statically evaluated even when the actual size of vectors or the number of processors are unknown. It is used to automatically select the best data distribution among a set of standard distributions. Interestingly, this work can be seen as a cross-fertilization between techniques developed within the FORTRAN parallelization, skeleton and functional programming communities.

[1]  Julien Mallet Compilation d'un langage specialise pour machine massivement parallele , 1998 .

[2]  Thomas Nitsche Shape Analysis of Functional Programs with Algebraic Data Types , 1998 .

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

[4]  G. C. Fox,et al.  Solving Problems on Concurrent Processors , 1988 .

[5]  Murray Cole A “skeletal” approach to the exploitation of parallelism , 1989 .

[6]  Murray Cole,et al.  A Monadic Calculus for Parallel Costing of a Functional Language of Arrays , 1997, Euro-Par.

[7]  Sergei Gorlatch,et al.  Skeletons and Transformations in an Integrated Parallel Programming Environment , 1999, PaCT.

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

[9]  John C. Mitchell,et al.  Type inference with simple subtypes , 1991, Journal of Functional Programming.

[10]  Thomas Nitsche Shapeliness analysis of functional programs with algebraic data types , 2000, Sci. Comput. Program..

[11]  Yike Guo,et al.  Parallel skeletons for structured composition , 1995, PPOPP '95.

[12]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

[13]  Nadia Tawbi Estimation of nested loops execution time by integer arithmetic in convex polyhedra , 1994, Proceedings of 8th International Parallel Processing Symposium.

[14]  Peter G. Harrison,et al.  Parallel Programming Using Skeleton Functions , 1993, PARLE.

[15]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[16]  Sergei Gorlatch,et al.  Optimization rules for programming with collective operations , 1999, Proceedings 13th International Parallel Processing Symposium and 10th Symposium on Parallel and Distributed Processing. IPPS/SPDP 1999.

[17]  Philippe Clauss Counting Solutions to Linear and Nonlinear Constraints Through Ehrhart Polynomials: Applications to Analyze and Transform Scientific Programs , 1996, International Conference on Supercomputing.

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

[19]  Simon Peyton-Jones,et al.  Programming Language , 2020, Definitions.

[20]  Norman Scaife,et al.  Engineering a Parallel Compiler for Standard ML , 1998 .

[21]  D. Wilde,et al.  A Library for Doing Polyhedral OperationsDoran , 1993 .

[22]  Gene H. Golub,et al.  Scientific computing: an introduction with parallel computing , 1993 .

[23]  Wentong Cai,et al.  Calculating Recurrences Using the Bird-Meertens Formalism , 1995, Parallel Process. Lett..

[24]  C. Barry Jay Costing parallel programs as a function of shapes , 2000, Sci. Comput. Program..

[25]  Alexander V. Shafarenko Symmetries in Data Parallelism , 1995, Comput. J..

[26]  John R. Gilbert,et al.  Automatic array alignment in data-parallel programs , 1993, POPL '93.

[27]  David A. Schmidt Detecting global variables in denotational specifications , 1985, TOPL.

[28]  Rémi Douence,et al.  A systematic study of functional language implementations , 1998, TOPL.

[29]  J. E. Glynn,et al.  Numerical Recipes: The Art of Scientific Computing , 1989 .

[30]  Uwe Kastens,et al.  Lifetime Analysis for Procedure Parameters , 1986, ESOP.

[31]  WadlerPhilip,et al.  Report on the programming language Haskell , 1992 .

[32]  Sergei Gorlatch,et al.  (De) composition rules for parallel scan and reduction , 1997, Proceedings. Third Working Conference on Massively Parallel Programming Models (Cat. No.97TB100228).

[33]  C. Barry Jay,et al.  Shape Checking of Array Programs , 1996 .

[34]  Wei-Ngan Chin,et al.  Automatic methods for program transformation , 1990 .

[35]  Julien Mallet Symbolic Cost Analysis and Automatic Data Distribution for a Skeleton-Based Language , 1998, Euro-Par.

[36]  Jaeyoung Choi,et al.  Scalable linear algebra software libraries for distributed memory concurrent computers , 1995, Proceedings of the Fifth IEEE Computer Society Workshop on Future Trends of Distributed Computing Systems.

[37]  William H. Press,et al.  Book-Review - Numerical Recipes in Pascal - the Art of Scientific Computing , 1989 .

[38]  Joyce L. Vedral,et al.  Functional Programming Languages and Computer Architecture , 1989, Lecture Notes in Computer Science.

[39]  Bruce W. Char,et al.  Maple V Language Reference Manual , 1993, Springer US.

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

[41]  John Hughes,et al.  Report on the Programming Language Haskell 98 , 1999 .

[42]  Ralf Hinze Standard Libraries for the Haskell 98 Programming Language , 1999 .

[43]  Thomas Johnsson,et al.  Lambda Lifting: Treansforming Programs to Recursive Equations , 1985, FPCA.

[44]  W. Press,et al.  Numerical Recipes in Fortran: The Art of Scientific Computing.@@@Numerical Recipes in C: The Art of Scientific Computing. , 1994 .

[45]  Wentong Cai,et al.  A Cost Calculus for Parallel Functional Programming , 1995, J. Parallel Distributed Comput..

[46]  Message Passing Interface Forum MPI: A message - passing interface standard , 1994 .

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

[48]  Roopa Rangaswami,et al.  A cost analysis for a higher-order parallel programming model , 1996 .

[49]  Doran Wilde,et al.  The ALPHA language , 1994 .

[50]  Paul Hudak,et al.  Single-threaded polymorphic lambda calculus , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[51]  Peter Sestoft,et al.  Replacing function parameters by global variables , 1989, FPCA.

[52]  Helmuth Partsch,et al.  The Transformational Derivation of Parallel Programs Using Data-distribution Algebras and Skeletons , 1997 .

[53]  Paul Steckler,et al.  The Functional Imperative: Shape! , 1998, ESOP.

[54]  Rolf Hempel,et al.  The MPI Message Passing Interface Standard , 1994 .

[55]  Gregory V. Wilson Assessing the Usability of Parallel Programming Systems: The Cowichan Problems , 1994 .

[56]  Marco Vanneschi,et al.  A methodology for the development and the support of massively parallel programs , 1992, Future Gener. Comput. Syst..

[57]  Christian Lengauer,et al.  Parallelization of divide-and-conquer by translation to nested loops , 1999, Journal of Functional Programming.

[58]  Manish Gupta,et al.  Demonstration of Automatic Data Partitioning Techniques for Parallelizing Compilers on Multicomputers , 1992, IEEE Trans. Parallel Distributed Syst..

[59]  William Pugh,et al.  Counting solutions to Presburger formulas: how and why , 1994, PLDI '94.

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

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