The program interaction system we developed, Breezy (BReakpoint Executive Environment for visualiZation and data DisplaY), is a tool that provides the infrastructure for a client application to attach to a data-parallel application at runtime. It creates a partnership between the client application and the parallel program. This partnership gives the client several capabilities.
Here we describe the Breezy implementation for the data-parallel language
pC++[3]. pC++ is a language extension to C++ designed to allow
programmers to create distributed data structures that have parallel execution
semantics. The basic concept behind pC++ is the notion of a distributed
collection, a structured set of objects which are distributed across
the processing elements of the computer in a manner designed to be
consistent with HPF[4]. To accomplish this, pC++
provides a very simple mechanism to build collections of objects from
a base element class. Member functions of this element class
can be applied to the entire collection (or a subset) in parallel.
This mechanism provides the programmer with a clean interface to
data-parallel style operations by simply calling member
functions of the element class. To help the programmer build collections,
the pC++ language includes a library of standard collection classes that
may be used direct or subclassed. This includes classes such as
DistributedArray
, DistributedMatrix
,
DistributedVector
, and DistributedGrid
.
pC++ also includes an environment of tuning and analysis
utilities (TAU)[5], of which Breezy is a part. This
implementation of Breezy in pC++ is a concrete example of how
the Breezy architecture has been applied successfully to a data-parallel
language environment.