The Parallel C Preprocessor
Eugene D. Brooks, Brent C. Gorda, Karen H. Warren · Scientific Programming · 1992
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.