Summary:
This thesis investigates the relation between the two conflicting goals
of explicitness and abstraction, for the implementation of parallel
functional languages and skeletons. Necessary and useful coordination
features for implementing parallel coordination in a functional
implementation language will be identified, leading to the proposal of a
Haskell extension for explicit low-level coordination, and to a concept
of structuring implementations for parallel functional languages in
layers of increasing abstraction.
The first main part concentrates on implementation techniques and
requirements.
We are describing the layered implementation of the parallel functional
language Eden, pointing out advantages of its layer structure and
deriving the coordination features of the proposed explicit low-level
language, named EdI.
Subsequently, the presented implementation concept is generalised to the
design
and a prototype implementation of a generic parallel runtime system for
management of parallel functional computations, major parts of which are
encoded
in Haskell.
In a second main part, we concentrate on implementations of parallel
skeletons,
thereby investigating expressiveness and pragmatics of the proposed
low-level
language EdI in comparison to the language Eden. Exemplarily, a range of
implementations is presented for data parallel skeletons implementing
map, map-reduce, and the Google-MapReduce programming model.
Furthermore, we present and discuss a new skeleton category: topology
skeletons, which describe interaction and communication patterns in
regularly structured process networks.
In a broader context, the implementation concepts and skeleton
implementations
which we present underline that functional languages provide a suitable
abstraction level to reason about parallel programming and to circumvent its
complexity.