GpH: An Architecture-Independent Functional Language

Philip W. Trinder, Ed. Barry Jr., M. Kei Davis, Kevin Hammond, Sahalu B. Junaidu, Ulrike Klusic, Hans-Wolfgang Loidl, and Simon L. Peyton Jones
Submitted to IEEE Transactions on Software Engineering, special issue on Architecture-Independent Languages and Software Tools for Parallel Processing, July 1998.

In principle, pure functional languages promise straightforward architecture-independent parallelism. We investigate the validity of this claim in the context of our highly-portable implementation of an implicitly-parallel functional language: the GUM implementation of Glasgow Parallel Haskell (GpH). We discuss architecture independence at two levels: low-level (i.e. the implementation) and high-level (i.e. the programmer).

Low-level architecture independence is achieved by choosing a message-passing model for GUM, and implementing it using portable C and a widely-supported message-passing library like PVM. In fact GUM is largely independent of the message-passing library, and has been adapted to use MPI and the CM-5 CMMD libraries as well as PVM. As a result, GUM is easily ported, and is currently available on seven platforms including shared-memory machines, distributed memory machines, and networks of workstations. We provide indicative measurements of how efficient and effective our architecture-independent runtime system is across a range of architectures.

The GpH programming model provides higher-level architecture independence. The parallelism in GpH is mainly implicit, and hence relatively small parts of the program need to be changed for a new architecture. The coordination that is required is expressed with a new high-level construct, evaluation strategies. Evaluation strategies provide a clean separation between algorithm and coordination, easing the task of changing either facet to suit new parallel environments. Moreover, GpH programs can systematically be developed for multiple target architectures, using a suite of simulation, profiling and visualisation tools. Much of the development is architecture-independent but, once a particular target architecture has been selected, the tools are parameterised to support tuning for that architecture. We demonstrate the systematic development of two real programs to the point of achieving good speedups on four architectures.

@Unpublished{arch-indep,
  author = 	 {Philip W. Trinder and Ed. {Barry Jr.} and M. Kei Davis and Kevin Hammond and Sahalu B. Junaidu and Ulrike Klusik and Hans-Wolfgang Loidl and and Simon L. {Peyton Jones}},
  title = 	 {GpH: An Architecture-Independent Functional Language},
  note =         {Submitted to IEEE Transactions on Software Engineering,
special issue on Architecture-Independent Languages and Software Tools
for Parallel Processing},
  year = 	 {1998},
  month = 	 jul
}

Available in: ps, ps.gz


GPH Papers | GPH