Parallel Programming Archetypes

This page was reconstructed following a data loss (February 1998) and may not be as complete as earlier versions.

Introduction

A parallel programming archetype, or simply archetype, is an abstraction that captures the common features of a class of problems with similar computational structure and combines them with a parallelization strategy to produce a pattern of dataflow and communication. Such abstractions are useful in application development, both as a conceptual framework and as a basis for tools and techniques that facilitate the development process. In particular, an archetype abstraction can serve as the basis for a program skeleton and code library, where the skeleton deals with process creation and interaction between processes, and the code library encapsulates details of the interprocess interaction. If a sequential program fits an archetype, then a parallel program can be developed by fleshing out the skeleton, making use of the code library. The fleshing-out steps deal with defining the sequential structure of the processes. Thus, programmers can focus their attention primarily on sequential programming issues.

See "Concurrent Program Archetypes" (overview paper), .ps and .html for more information.

Archetypes for Scientific Computing

We have identified several archetypes useful in scientific computing, including:

Related technical reports