The basic concept behind pC++ is the notion of a distributed collection, which is a type of concurrent aggregate ``container class'' . More specifically, a collection is a structured set of objects which are distributed across the processing elements of the computer in a manner designed to be completely consistent with HPF Fortran. To accomplish this, pC++ provides a very simple mechanism to build ``collections of objects'' from some base element class. Member functions from this element class can be applied to the entire collection (or a subset) in parallel. This mechanism provides the user with a clean interface to data-parallel style operations by simply calling member functions of the base class. In addition, there is a mechanism for encapsulating SPMD style computation in a thread based computing model that is both efficient and completely portable.
To help the programmer build collections, the pC++ language includes a library of standard collection classes that may be used (or subclassed). This includes classes such as DistributedArray, DistributedMatrix, DistributedVector, and DistributedGrid.
In its current form, pC++ is a very simple preprocessor that generates C++ code and machine independent calls to a portable runtime system. This is accomplished by using the Sage++ restructuring tools . Sage++ is an object-oriented compiler preprocessor toolkit. It provides the functions necessary to read and restructure an internal representation of the pC++ program. After restructuring, the program is then ``unparsed'' back into C++ code, which can be compiled on the target architecture and linked with a runtime system specifically designed for that machine.
pC++ and its runtime system have been ported to several shared memory and distributed memory parallel systems, validating the system's goal of portability. The shared memory ports include the Sequent Symmetry , the BBN TC2000 , and the Kendall Square Research KSR-1 . The distributed memory ports include the Intel Paragon , the TMC CM-5 , the IBM SP-1, and homogeneous clusters of UNIX workstations with PVM . Work on porting the runtime system to the Cray T3D and Meiko CS-2 is in progress. More details about the pC++ language and runtime system can be found in .