AMPI - Adaptive Message Passing Interface

Parallel simulations in Computational Science and Engineering often exhibit irregular structure and dynamic load patterns. Most such existing applications have been developed in C/C++ or Fortran using MPI for scalable parallelism on distributed-memory machines. Incorporating dynamic load balancing techniques at the application-level involves significant changes to the design and structure of applications, because traditional run-time systems for MPI do not support dynamic load balancing in an application-independent way. Charm++ supports efficient dynamic load balancing using object migration for irregular and dynamic applications, and the same mechanisms help adapt to external factors that cause load imbalance. However, converting legacy MPI applications to an object-based paradigm can be cumbersome. AMPI is an implementation of MPI that supports dynamic load balancing, processor virtualization, and fault tolerance for MPI applications.

AMPI implements MPI ranks as lightweight user-level migratable threads rather than operating system processes. Charm++'s runtime system takes care of scheduling multiple ranks per core in a message-driven manner, automatically overlapping communication and computation. The runtime system provides support for migrating ranks between nodes to balance the computational load, as well as for tolerating hard faults via checkpoint/restart-based schemes. AMPI defines extensions to the MPI standard that make using these features in existing applications easy. See the AMPI manual here for more information on AMPI, as well as the papers/talks below.

Papers / Talks