pC++ is a language extension to C++ designed to allow programmers to compose distributed data structures with parallel execution semantics. 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 a 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.
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 ports include the Intel Paragon, TMC CM-5, IBM SP-1, Kendall Square Research KSR-1, Sequent Symmetry, BBN TC2000, and workstations clusters using PVM; ports to the Cray T3D and Meiko CS-2 are in progress. More details about the pC++ language and runtime system can be found in .