AMPI utilizes the dynamic load balancing capabilities of CHARM++ by associating a ``user-level'' thread with each CHARM++ migratable object. User's code runs inside this thread, so that it can issue blocking receive calls similar to MPI, and still present the underlying scheduler an opportunity to schedule other computations on the same processor. The runtime system keeps track of computation loads of each thread as well as communication graph between AMPI threads, and can migrate these threads in order to balance the overall load while simultaneously minimizing communication overhead.
January 17, 2008
AMPI Homepage
Charm Homepage