Next: The pC++ Performance Up: Performance Analysis of Previous: Introduction

A Very Brief Introduction to pC++

The basic concept behind pC++ is the notion of a distributed collection, which is a type of concurrent aggregate ``container class'' [8][6]. 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 [3]. 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 [5], the BBN TC2000 [1], and the Kendall Square Research KSR-1 [2]. The distributed memory ports include the Intel Paragon [20], the TMC CM-5 [19], the IBM SP-1, and homogeneous clusters of UNIX workstations with PVM [24]. 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 [17][12][11][10][9].



Next: The pC++ Performance Up: Performance Analysis of Previous: Introduction


mohr@cs.uoregon.edu
Thu Feb 24 13:42:43 PST 1994