3.3.2 GpH -- Glasgow Parallel Haskell
Report by: Phil Trinder
Recent work covers language, system and applications aspects, and
consistently emphasises the architecture independence (cf.
http://www.cee.hw.ac.uk/~dsg/gph/arch-indep.html) of our
approach. The latest version of GpH (GUM-4.06) is available for
RedHat-based Linux machines (binary snapshot
ftp://ftp.cee.hw.ac.uk/pub/gph/gum-4.06-snap-i386-unknown-linux.tar;
installation instructions
ftp://ftp.cee.hw.ac.uk/pub/gph/README.GUM). A version for Sun
shared-memory machines is available on request
<gph@cee.hw.ac.uk>. More information on research projects,
group members and publications is available from GpH
http://www.cee.hw.ac.uk/~dsg/gph/papers/
Language
We have produced a truly parallel implementation of a
referentially transparent bottom-avoiding choice operator
(http://www.cee.hw.ac.uk/~dsg/gph/papers/drafts/flops-submitted.ps.gz)
and used it to explore a new class of parallel algorithms in GpH,
namely branch-and-bound. It reveals an interesting relationship
between non-strict and speculative parallel evaluation.
System
In order to improve the architecture independent performance of GpH
we have added new features to its implementation (GUM). The load
balancing
(http://www.cee.hw.ac.uk/~dsg/gph/papers/drafts/sfp01-gum.ps.gz)
in GUM has been made more flexible by implementing low- and
high-watermarks on the spark pools, which represent potential
parallelism. Thread migration is being implemented as a technique of
avoiding gross load imbalance in applications with a small amount of
parallelism. For a better control of data locality in GpH
programs we are currently exploring language constructs with
explicit placement parameters as well as abstractions over these
basic constructs. We have improved the distributed shared memory
performance
(http://www.cee.hw.ac.uk/~dsg/gph/papers/ps/dsm02.ps.gz) of
GUM, in particular global address management and the graph packing,
enabling the user to optimise the parallel execution for execution
time or heap space.
An implementation of a time and space static analysis is nearing
completion. Although the current analysis is for a strict language,
the intention is to use the result of the analysis to select
appropriate computations for parallel evaluation.
Applications
We have produced detailed comparisons of three parallel functional
languages : GpH (http://www.cee.hw.ac.uk/~dsg/gph/), Eden
(http://www.mathematik.uni-marburg.de/~loogen/eden.html), PMLS
(http://www.cee.hw.ac.uk/Research/funct_prog.html), discussing
language and implementation differences
(http://www.cee.hw.ac.uk/~dsg/gph/papers/drafts/hosc-submitted.ps.gz).
Detailed performance results of several parallel programs on a
Beowulf cluster are given. A survey of parallel and distributed
Haskells
(http://www.cee.hw.ac.uk/~dsg/gph/papers/ps/jfp01.ps.gz) will
also soon appear in the JFP special issue.
We are investigating the architecture independence of GpH by
developing a significant application (genetic alignment) for a
variety of parallel architectures: a Beowulf cluster, a SunServer
SMP. We have also published careful measurements of the Naira
parallel Haskell compiler.
3.3.2.1 Further reading:
http://www.cee.hw.ac.uk/~dsg/gph/