| ||
Parallel Computational Science and Engineering (CSE) applications often exhibit irregular structure and dynamic load patterns. Many such applications have been developed using procedural languages (e.g. Fortran) in message passing parallel programming paradigms (e.g. MPI) for 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. Object-based parallel programming languages, such as Charm++, support efficient dynamic load balancing using object migration for irregular and dynamic applications, as well as deal with external factors that cause load imbalance. However, converting legacy MPI applications to such object-based paradigms is cumbersome. AMPI is an implementation of MPI that supports dynamic load balancing and multi-threading for MPI applications. Our approach and implementation is based on the user-level migratable threads and load balancing capabilities provided by Charm++'s run-time system. Conversion from legacy codes to this platform is straightforward even for large legacy codes. We have converted various benchmark programs and legacy codebases, as well as the component codes ROCFLO and ROCSOLID of a Rocket Simulation application to AMPI. Our experience shows that with a minimal overhead and effort, one can incorporate dynamic load balancing capabilities into legacy Fortran-MPI codes. An introductory tutorial about how to convert existing Fortran 90 codes to AMPI by hand can be found here.
Also, please refer to the talk on AMPI
and
AMPI Tutorial.
| ||
Software | ||
AMPI has been integrated into the Charm++/Converse distribution. Please download the source distribution. And install AMPI by specifying the target "AMPI" to the Charm++ build command. (For details, see the README file in the source distribution.) Also, see the Adaptive MPI Manual. [postscript] [PDF] [html] | ||
People | ||
Papers | ||
| ||
Related Links | ||
|