A toolkit for parallel functional programming

Our toolkit for the design and implementation of parallel functional programs supports the stepwise development of parallel programs from a high level sequential specification to an optimised parallel implementation. The toolkit is used as follows: 1. The algorithm to be implemented is specified in a functional language. The program is debugged and tested using an interpreter. 2. The program is compiled for a sequential machine. Its performance is analysed an improved. 3. Annotation driven transformations are applied to the program to indicate parallel tasks. Simulations at task level, basic block level and bus transaction level make it possible to analyse the parallel performance of the program at three levels of detail. 4. When the performance is optimised using the simulators, the program is executed on a genuine parallel machine. Several programs have been developed with the toolkit. A program that simulates tidal flow in an estuary of the North sea is presented as a case study to demonstrate the merits of the toolkit when developing complex parallel programs. The toolkit not only supports the design of parallel applications; it also allows the study of important concepts in parallel computer architecture. These include the behaviour of cached memory systems, bus protocols, scheduling algorithms andmemorymanagement algorithms

[1]  Peter G. Harrison,et al.  A Functional Programming Environment Supporting Execution, Partial Execution and Transformation , 1989, PARLE.

[2]  van der,et al.  Finite difference methods for solving partial differential equations , 1968 .

[3]  David C. Cann,et al.  Retire Fortran? A debate rekindled , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[4]  Per Brinch Hansen,et al.  Model programs for computational science: A programming methodology for multicomputers , 1993, Concurr. Pract. Exp..

[5]  John Hughes,et al.  Why Functional Programming Matters , 1989, Comput. J..

[6]  Anthony J. G. Hey,et al.  Experiments in mimd parallelism , 1989, Future Gener. Comput. Syst..

[7]  Michael G. Norman,et al.  Models of machines and computation for mapping in multicomputers , 1993, CSUR.

[8]  Ken Kennedy,et al.  Analysis and transformation in an interactive parallel programming tool , 1993, Concurr. Pract. Exp..

[9]  Rutger F. H. Hofman Scheduling and grain size control , 1994 .

[10]  Arif Ghafoor,et al.  PAWS: a performance evaluation tool for parallel computing systems , 1991, Computer.

[11]  Willem G. Vree,et al.  Communication lifting: fixed point computation for parallelism , 1995, Journal of Functional Programming.

[12]  David S. Wise Matrix algebra and applicative programming , 1987, FPCA.

[13]  Johan Jeuring Theories for Algorithm Calculation , 1993 .

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

[15]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[16]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

[17]  Peter G. Harrison,et al.  The Mechanical Transformation of Data Types , 1992, Comput. J..

[18]  Jack J. Dongarra,et al.  Graphical development tools for network-based concurrent supercomputing , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[19]  Willem G. Vree,et al.  Experiments wiht Destructive Updates in a Lazy Functional Language , 1994, Comput. Lang..

[20]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[21]  Vaidy S. Sunderam,et al.  PVM: A Framework for Parallel Distributed Computing , 1990, Concurr. Pract. Exp..

[22]  Pieter H. Hartel,et al.  Compilation of functional languages using flow graph analysis , 1994, Softw. Pract. Exp..

[23]  Richard S. Bird,et al.  Introduction to functional programming , 1988, Prentice Hall International series in computer science.

[24]  Pieter H. Hartel,et al.  FCG: A Code Generator for Lazy Functional Languages , 1992, CC.

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

[26]  Arnold W. Heemink Storm surge prediction using Kalman filtering , 1986 .

[27]  Paul H. J. Kelly Functional programming for loosely-coupled multiprocessors , 1989, Research monographs in parallel and distributed computing.

[28]  Peter G. Harrison,et al.  Algebraic Transformation Techniques for Functional Languages , 1988, Comput. J..

[29]  Eileen Kraemer,et al.  The Visualization of Parallel Systems: An Overview , 1993, J. Parallel Distributed Comput..