The HPC++ design specification consists of a set of class libraries and
tools, that do not require any extensions to the C++ language. It also
consists of a set of run-time systems that are required for remote access.
The HPC++ specification is implemented in the form of a library called
HPC++Lib. We note at the outset that HPC++Lib is not unique and the
key ideas are drawn from many sources. In particular, many of the ideas
originate with K. Mani Chandy and Carl Kesselman in the CC++ language, and
the MPC++ Multiple Threads Template Library designed by Yutaka Ishikawa of
RWCP, the IBM ABC++ library, the Object Management Group's CORBA
specification and the Java concurrency model.
The key features of HPC++Lib are
A Java style thread class that provides an easy way to program
parallel applications on shared memory architectures.
A class and template library to support synchronization, collective
parallel operations such as reduction, and remote memory
references. It also includes PSTL, a parallel implementation of the
standard template library1.
A CORBA style IDL-to-proxy generator used to support member function
calls on objects located in remote address spaces1.
A set of run-time systems used to support all kinds of operations
involving remote communication. Such operations include reductions,
barrier synchronization, remote method call etc.
What follows is a detailed technical overview of the various features
supported by HPC++, including its run-time and execution models, various
run-time systems it supports (and associated issues of performance, security
etc.), the HPC++ stub compiler, and the current status of HPC++-lib. It also
includes some code samples. Please refer to the HPC++ Reference Manual for more detailed
information about HPC++'s API including its public classes and templates.