Programs written using this system will run unchanged on MIMD machines with or without a shared memory. It provides high-level mechanisms and strategies to facilitate the task of developing even highly complex parallel applications. Charm programs are written in C with a few syntactic extensions. We plan to port it to the KSR-1, Cray T3D, Convex Exemplar and other parallel machines as they become available.
Portability is an essential catalyst for the development of reusable parallel software.
The programming model induces better data locality, allowing it to support machine independence without losing efficiency. This means when a process blocks, waiting for a message, another process may execute on the processor. It also means that a single process may block for any number of distinct messages, and will be awakened when any of these messages arrive. Thus, it forms an effective way of scheduling a processor in the presence of potentially large latencies. A major activity in a parallel computation is creation and sharing of information.