Center for Petascale Computing  
A collaboration led by Laxmikant Kalé (Computer Science) and Duane Johnson (Materials Science and Engineering) on a research theme within IACAT

Charm++

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.

AMPI

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

Charm++ Information

Charm++ Download

Charm++ Manual

Charm++ Tutorial

Charm++ Wiki

AMPI Information

AMPI Manual