Volume 1, Issue 1 708085 pp. 79-89
Article
Open Access

The Parallel C Preprocessor

Eugene D. Brooks III

Eugene D. Brooks III

Massively Parallel Computing Initiative Lawrence Livermore National Laboratory Livermore CA 94550, USA , llnl.gov

Search for more papers by this author
Brent C. Gorda

Brent C. Gorda

Massively Parallel Computing Initiative Lawrence Livermore National Laboratory Livermore CA 94550, USA , llnl.gov

Search for more papers by this author
Karen H. Warren

Karen H. Warren

Massively Parallel Computing Initiative Lawrence Livermore National Laboratory Livermore CA 94550, USA , llnl.gov

Search for more papers by this author
First published: 1992
Citations: 5

Abstract

We describe a parallel extension of the C programming language designed for multiprocessors that provide a facility for sharing memory between processors. The programming model was initially developed on conventional shared memory machines with small processor counts such as the Sequent Balance and Alliant FX/8, but has more recently been used on a scalable massively parallel machine, the BBN TC2000. The programming model is split-join rather than fork-join. Concurrency is exploited to use a fixed number of processors more efficiently rather than to exploit more processors as in the fork-join model. Team splitting, a mechanism to split the team of processors executing a code into subteams to handle parallel subtasks, is used to provide an efficient mechanism to exploit nested concurrency. We have found the split-join programming model to have an inherent implementation advantage, compared to the fork-join model, when the number of processors in a machine becomes large.

The full text of this article hosted at iucr.org is unavailable due to technical difficulties.