Table of Contents Author Guidelines Submit a Manuscript
Scientific Programming
Volume 1, Issue 1, Pages 79-89

The Parallel C Preprocessor

Eugene D. Brooks III, Brent C. Gorda, and Karen H. Warren

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

Received 25 February 1992; Accepted 25 April 1992

Copyright © 1992 Hindawi Publishing Corporation. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.


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.