MPC++:Massively Parallel, Message Passing, Meta-level Processing C++


The MPC++ is an extension of C++ for parallel/distributed programming. Instead of setting several language extensions, we are trying to design an extendable/modifiable programming language system for C++ with low-level parallel description primitives. Higher parallel/distributed constructs, such as data parallel statements and distributed active objects, are implemented using the extendable feature.
To implement this approach, we designed a metalevel architecture for C++. The MPC++ metalevel architecture 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.
The parallel description primitives are 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.
We have been developing the MPC++ system for RWC-1. We are now porting the system to a Sun workstation cluster connected with a fast network system called myrinet. We will also present a preliminary evaluation on the workstation cluster.