Haskell distributed parallel Haskell (HdpH) is a Haskell DSL for parallel computation on distributed-memory architectures. HdpH is implemented entirely in Haskell but does make use of GHC extensions, most notably TemplateHaskell.
A recent paper [1] presents the semantics of HdpH and evaluates its implementation. There are also earlier design papers [2,3]. Sources for the related reliable HdpH-RS DSL can also be found on GitHub [4].
This repository largely follows the git branching model of [5].
-
The
master
branch publishes releases. Its HEAD is always the latest release, and it contains a directoryreleases
with archived cabal packages. -
The
develop
branch tracks development integration. Its HEAD is the latest development version. -
Branches named
feature-foo
(wherefoo
is a descriptive string) are for the development or fixing of featurefoo
. They branch offdevelop
and are eventually merged back intodevelop
(or abandoned). -
Branches named
test-bar
(wherebar
is a descriptive string) are for testing wacky ideas. They branch offdevelop
but are not meant to be merged back. -
Branches named
release-a.b.c
(wherea.b.c
is a version number) prepare for releases. They branch offdevelop
and are merged back intomaster
anddevelop
. -
Branches named
hotfix-a.b.c.d
(a.b.c.d
is a version number) prepare for off-cycle fixes of released code. They branch offmaster
(versiona.b.c
) and are merged backmaster
anddevelop
. -
Only branches
master
anddevelop
are considered public.
Package hdph
is the main HdpH source. It relies on auxiliary
packages hdph-closure
and hdph-mpi-allgather
; the latter is
only required when using MPI node discovery instead of UDP.
Consult HISTORY.txt
for information about package and compiler
dependencies.
Detailed build instructions can be found in hdph/README.md
and
hdph/doc/INSTALL.txt
.
Building the auxiliary package hdph-closure
is straightforward.
Building package hdph-mpi-allgather
requires furnishing the cabal
installer with the paths to MPI libraries and includes, see
hdph-mpi-allgather/README.md
for examples; the package has been
built successfully with recent OpenMPI and MPICH libraries.
HdpH is not production software; use at your own risk (see LICENSE
).
Documentation may be out of date.
-
Patrick Maier, Rob Stewart, Phil Trinder. The HdpH DSLs for Scalable Reliable Computation. Proc. 2014 ACM SIGPLAN Symposium on Haskell (Haskell 2014), pp 65-76. DOI 10.1145/2633357.2633363
-
Patrick Maier, Rob Stewart, Phil Trinder. Reliable Scalable Symbolic Computation: The Design of SymGridPar2. Proc. 28th ACM Symposium On Applied Computing (SAC 2013), pp. 1677-1684.
-
Patrick Maier, Phil Trinder. Implementing a High-level Distributed-Memory Parallel Haskell in Haskell. Proc. 23rd Intl. Symposium on the Implementation and Application of Functional Languages (IFL 2011), pp. 35-50.
-
Rob Stewart. HdpH-RS development repository
-
Vincent Driessen. A successful Git branching model