Experiences of parallelising finite‐element problems in a functional style

Experiences are described of parallelizing a functional finite‐element program (written in Haskell) for the solution of computational fluid‐dynamics problems. A transformation prototyping approach using a system developed at the University of York, which simulates idealised parallel machines on a conventional sequential workstation, is presented. In this paper we demonstrate: (a) the relative simplicity of the functional approach for parallelizing a complex program compared with the conventional procedural approach; (b) the suitability of functional languages for prototyping parallel algorithms to improve an implementation; and (c) the considerable assistance provided by the simulator.

[1]  Jack Dongarra,et al.  Level 3 BLAS for distributed memory concurrent computers , 1993 .

[2]  Paul Hudak,et al.  Para-functional programming in Haskell , 1991 .

[3]  Alston S. Householder,et al.  Handbook for Automatic Computation , 1960, Comput. J..

[4]  Victor Eijkhout,et al.  Building blocks for iterative solution of linear systems , 1993 .

[5]  Uday S. Reddy,et al.  Imperative functional programming , 1996, CSUR.

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

[7]  Antony J. T. Davie An introduction to functional programming systems using Haskell , 1992 .

[8]  Graham Horton,et al.  The time‐parallel multigrid method , 1992 .

[9]  Robert L. Wainwright,et al.  A Study of Sparse Matrix Representations for Solving Linear Systems in a Functional Language , 1992, J. Funct. Program..

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

[11]  Michael B. Giles,et al.  A Parallel Framework for Unstructured Grid Solvers , 1994 .

[12]  Robert A. van de Geijn,et al.  Two Dimensional Basic Linear Algebra Communication Subprograms , 1993, PPSC.

[13]  X. Zhang,et al.  Some issues in a functional implementation of a finite element algorithm , 1993, FPCA '93.

[14]  P. Townsend,et al.  An Algorithm for the Three-Dimensional Transient Simulation of Non-Newtonian Fluid Flows , 1987 .

[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]  J. Michael Spivey,et al.  A Functional Theory of Exceptions , 1990, Sci. Comput. Program..

[17]  Pieter H. Hartel,et al.  Pseudoknot: A Float-Intensive Benchmark for Functional Compilers , 1994 .

[18]  M. F. Webster,et al.  A Taylor–Galerkin‐based algorithm for viscous incompressible flow , 1990 .

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

[20]  P. Raviart Finite element methods and Navier-Stokes equations , 1979 .

[21]  J. H. Wilkinson,et al.  Handbook for Automatic Computation: Linear Algebra (Grundlehren Der Mathematischen Wissenschaften, Vol 186) , 1986 .

[22]  P. Townsend,et al.  The iterative solution of Taylor—Galerkin augmented mass matrix equations , 1992 .

[23]  X. Zhang,et al.  Sparse Matrix Representations in a Functional Language , 1996, J. Funct. Program..

[24]  I. Duff,et al.  Direct Methods for Sparse Matrices , 1987 .

[25]  John F. Abel,et al.  Substructure condensation using modified decomposition , 1984 .

[26]  David S. Wisey Matrix Algorithms Using Quadtrees Invited Talk, Atable-92 Technical Report 357 , 1992 .