MPC++ version 1.0, an extension of C++, has been designed for parallel/distributed programming. Instead of setting several language extensions, we have designed low-level parallel description primitives and the MPC++ metalevel architecture to realize an extendable/modifiable programming language system. Higher parallel/distributed constructs, such as data parallel statements and distributed active objects, are implemented using the extendable feature.
The parallel description primitives were designed to form a system programming language on the RWC-1 massively parallel machine that supports multi-threads and message driven execution. These primitives are i) a "function instance" which is an abstraction of thread invocation by message passing and ii) "message entry" and "token" which are abstractions of communication among threads. Primitives are realized as language extensions using the metalevel architecture.
MPC++ Version 2 is designed in two levels, level 0 and level 1. The level 0 specifies parallel description primitives realized by the C++ template feature without any language extensions, that define the MPC++ basic parallel execution model. The level 1 specifies the MPC++ metalevel architecture and application specific extensions.
The MPC++ metalevel architecture in level 1 defines an abstract compiler described in C++ and its modification facility called MPC++ metaobject protocol. Programmers can easily introduce new syntax notation and redefine default code generation using the MPC++ metaobject protocol. Using this capability, we will develop new parallel/distributed constructs with optimizer and make the system portable. These programs will constitute the metalevel object libraries (MOLs). A user can select or modify a MOL to suit the situation.
MPC++ Version 2 has been running on a Sun workstation cluster connected with a fast network system called myrinet. We will also present a preliminary evaluation on the workstation cluster.