Deriving Parallel Algorithms using Data Distribution Algebras

Thomas Nitsche

Parallel and distributed programming are much more difficult than the development of sequential algorithms due to data distribution issues and communication requirements.

This talk presents a methodology which allows the abstract description of the distribution of algebraic data structures using data distribution algebras. The key idea behind the concept is that a data structure is split into a cover of overlapping subobjects which may be allocated to different processors. The own parts of the subobjects form a partitioning of the original structure, while the overlapping foreign parts specify communication requirements and possible data dependencies.

Algorithms are formulated in a functional setting using skeletons as certain higher order functions based on (parallel or sequential) covers. This allows the programmer to specify data distribution issues on an abstract level. Such specifications enable the derivation of explicit lower--level communication statements. To illustrate the concept Wang's partition algorithm for the solution of tridiagonal linear equations is derived.