An object-oriented message-passing class library in C++, called PPI++,
for portable parallel programming has been developed. PPI++ (parallel
portability interface in C++) is designed to serve as a stable (uncha
nging) interface between the client parallel code and the rapidly evol
ving distributed computing environments. By taking advantage of encaps
ulation, inheritance, and polymorphism supported by C++, PPI++ provide
s a clean and consistent programming interface, which helps improve th
e clarity and expressiveness of client parallel codes and hides implem
entation details and complexity from the user to ease parallel program
ming tasks. In addition, the use of strong type-checking in C++ allows
the detection of potential misuses of the library at compile time, an
d thus promotes code reliability. This paper describes the object-orie
nted design and implementation of PPI++. Evaluation of PPI++ on import
ant performance issues, such as portability, ease-of-use, extensibilit
y, and efficiency, is also discussed.