... a research project funded by the
German Research Foundation (DFG).
Following the principle «It takes one Egyptian a million years to build a pyramid,
it takes a million Egyptians one year to build a pyramid» efforts have been made
in parallel programming to enhance computation speed. Today, many commercial
parallel computer architectures are available. However, parallel computing has failed to
prevail against sequential computing. The reason for this is the intractability of
parallel computers. It is not as easy to program parallel computers concisely to
make them work efficiently. A task cannot always be evenly partitioned in subtasks to
obtain a performance gain as in the above-mentioned pyramid example.
We hope that collective operations will remedy this situation. These are relatively
simple operations for communication, synchronization and other purposes, which are
performed commonly by a group of processes. Well-known examples are reduce,
scan, etc. Collective operations are designed to substitute of the
individual communication between processes, which causes so much trouble in
parallel computer programming.
The main goal of the COFFEE project is to develop a viable and formally well-founded
methodology of parallel programming based exclusively on collective operations, i. e.
avoiding the Send/Receive mechanism of conventional
parallel programming. Dijkstras structured programming, which rejects the use of
goto transfer in programs, can be regarded as analogous in the sphere of sequential programming.
The subgoals of the COFFEE project are:
The COFFEE project is intended to increase awareness of collective operations. We wish
to convince experts and users that collective operations are a viable alternative to
individual process communication, which we consider responsible for the intractability
of parallel programming.
To explore an equational calculus of collective operations. The
equations should correspond to semantic-preserving transformations between
parallel computer programs made from collective operations.
To investigate cost models for some parallel computer architectures, providing
predictability of performance for parallel implementations.
To develop engineering principles of parallel programming, taking into account
both the equational calculus and the investigated cost models.
To experiment on some widely available parallel architectures in the form of case studies.
[Last modified: October 10, 2001]