Charm++ is a portable C++ based parallel programming language that includes a powerful adaptive RTS. A programmer decomposes a problem into N migratable objects (MO), which are known as chares within Charm++. Chares are C++ objects with special entry methods that are invoked asynchronously from other chares. The N chares will execute on P processors, where ideally N >>P . The application programmer's view of the program is of MOs and their interactions; the underlying RTS keeps track of the mapping of MOs to processors and performs any remapping that might be necessary at run-time.
Most parallel applications are developed with MPI, so it is advantageous to give MPI programs
and programmers the ability to make use of the Charm++ runtime system. Adaptive Message Passing Interface (AMPI) is an MPI
implementation based on Charm++, and thus inherits support for virtualization and automatic
load balancing. Each MPI process is implemented as a user-level (lightweight, non-preemptive)
migratable thread. Most MPI applications can be run using AMPI with little or no change on most
parallel machines.
Investigator: L.V. Kale