Explicit and implicit parallel functional programming : concepts and implementation
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 languag...
|Main Author:||Berthold, Jost|
|Contributors:||Loogen, Rita (Prof. Dr.) (advisor)|
Fachbereich Mathematik und Informatik
PDF Full Text
No Tags, Be the first to tag this record!
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.