Introduction of Pipelining Optimisations into
Formal program transformation in a functional language can be used to
support the incremental design of parallel programs. However it is
difficult to use it to introduce detailed communication
optimisations. This paper demonstrates how this can be done through an
example of such an optimisation: the introduction of a form of
pipelining into the back substitution phase of Gaussian Elimination.
The full paper
Versions of the Gaussian elimination program at different
stages of the derivation:
To run these, you will also need the following modules:
- Program 1, before the pipelining
optimisation is introduced at all.
- Program 2, once the communication
has been split into the communication of individual values rather than
whole sequences, allowing some communication to be overlapped.
- Program 3, once the calculation has
been made incremental.
- Program 4, after the pipelining
- SeqFinSeq.lhs which provides
a finite sequence representation of local arrays.
- ParFinSeq.lhs - similar, but
for distributed arrays.
- MPIapm.lhs which provides the
model of the parallel system, variable manipulation functions
and Haskell versions of MPI functions.
author = "Joy Goodman",
title = "Introduction of Pipelining Optimisations into Gaussian
booktitle = "Draft Proceedings of the 3rd Scottish Functional
month = Aug,
year = 2001}
Back to my research page
Back to my home page