Eecient High-level Parallel Programming

Algorithmic skeletons are polymorphic higher-order functions representing common parallelization patterns and implemented in parallel. They can be used as the building blocks of parallel and distributed applications by integrating them into a sequential language. In this paper, we present a new approach to programming with skeletons. We integrate the skeletons into an imperative host language enhanced with higher-order functions and currying, as well as with a polymorphic type system. We thus obtain a high-level programming language which can be implemented very eeciently. We then present a compile-time technique for the implementation of the functional features which has an important positive impact on the eeciency of the language. After describing a series of skeletons which work with distributed arrays, we give two examples of parallel algorithms implemented in our language, namely matrix multiplication and Gaussian elimination. Run-time measurements for these and other applications show that we approach the eeciency of message-passing C up to a factor between 1 and 1.5.

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

[2]  Ian T. Foster,et al.  Productive Parallel Programming: The PCN Approach , 1995, Sci. Program..

[3]  Guy E. Blelloch,et al.  NESL: A Nested Data-Parallel Language , 1992 .

[4]  George Horatiu Botorog,et al.  Efficient Parallel Programming with Algorithmic Skeletons , 1996, Euro-Par, Vol. I.

[5]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[6]  Murray Cole,et al.  Algorithmic Skeletons: Structured Management of Parallel Computation , 1989 .

[7]  L. D. J. C. Loyens,et al.  ILIAS : a sequential language for parallel matrix computations , 1993 .

[8]  Yike Guo,et al.  Functional Skeletons for Parallel Coordination , 1995, Euro-Par.

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

[10]  Marinus J. Plasmeijer,et al.  Efficient Distributed Memory Implementation of a Data Parallel Functional Language , 1994, PARLE.

[11]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1990, Theor. Comput. Sci..

[12]  M. J. Quinn,et al.  Parallel Computing: Theory and Practice , 1994 .

[13]  Herbert Kuchen,et al.  Distributed memory implementation of elliptic partial differential equations in a dataparallel functional language , 1995, Programming Models for Massively Parallel Computers.

[14]  George Horatiu Botorog,et al.  Skil: an imperative language with algorithmic skeletons for efficient distributed programming , 1996, Proceedings of 5th IEEE International Symposium on High Performance Distributed Computing.

[15]  Xavier Leroy,et al.  Polymorphism by name for references and continuations , 1993, POPL '93.

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

[17]  George Horatiu Botorog,et al.  Using Algorithmic Skeletons with Dynamic Data Structures , 1996, IRREGULAR.

[18]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..