A method for the design of parallel algorithms a case study: solving triangular systems

This paper illustrates a method for the design of parallel programs that is based on the separation of computation and coordination. We use Gamma programs to specify computations and show how to prove their correctness using a UNITY-like programming logic. A separate coordination language is used to determine behavioural aspects of the program. We illustrate how behaviour can be structured through a process of successive stepwise refinements. Reasoning about refinement is supported formally by two types of simulation. As an illustration of our method we study the problem of solving triangular systems of linear equations. For this problem we derive a number of known algorithms and show how they are related by our refinement ordering.