Parallel Languages/Paradigms: AMPI - Adaptive Message Passing Interface
Parallel applications in Computational Science and Engineering (CSE) 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. On the other hand, 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 multithreading for MPI applications.

Our approach and implementation are based on the user-level migrating threads and load balancing capabilities provided by the Charm++ framework. Conversion from legacy MPI codes to this scheme is straightforward even for large legacy codes (e.g. we have converted 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 in legacy Fortran/C/C++ 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 recent talk on AMPI and the latest AMPI Tutorial.
People
Papers/Talks
13-16
2013
[Paper]
Parallel Science and Engineering Applications: The Charm++ Approach [Book 2013]
11-23
2011
[Paper]
Automatic Handling of Global Variables for Multi-threaded MPI Programs [ICPADS 2011]
10-26
2011
[Paper]
A Comparative Analysis of Load Balancing Algorithms Applied to a Weather Forecast Model [SBAC-PAD 2011]
| Eduardo Rodrigues | Philippe Navaux | Jairo Panetta | Alvaro Fazenda | Celso Mendes | Laxmikant Kale
10-21
2010
[Paper]
Optimizing an MPI Weather Forecasting Model via Processor Virtualization [HiPC 2010]
| Eduardo Rodrigues | Philippe Navaux | Jairo Panetta | Celso Mendes | Laxmikant Kale
10-14
2010
[Paper]
Automatic MPI to AMPI Program Transformation using Photran [PROPER 2010]
| Stas Negara | Gengbin Zheng | Kuo-Chuan Pan | Natasha Negara | Ralph Johnson | Laxmikant Kale | Paul Ricker
10-09
2010
[Paper]
Automatic MPI to AMPI Program Transformation [Charm++ Workshop 2010]
| Stas Negara | Kuo-Chuan Pan | Gengbin Zheng | Natasha Negara | Ralph Johnson | Laxmikant Kale | Paul Ricker
08-13
2008
[Paper]
A Case Study in Tightly Coupled Multi-paradigm Parallel Programming [LCPC 2008]
07-08
2007
[Paper]
Supporting Adaptivity in MPI for Dynamic Parallel Applications [PPL Technical Report 2007]
07-04
2007
[Paper]
Programming Petascale Applications with Charm++ and AMPI [Petascale Computing: Algorithms and Applications 2007]
06-05
2006
[Paper]
Multiple Flows of Control in Migratable Parallel Programs [HPSEC 2006]
05-06
2005
[PhD Thesis]
Achieving High Performance on Extremely Large Parallel Machines: Performance Prediction and Load Balancing [Thesis 2005]
05-04
2006
[Paper]
Performance Evaluation of Adaptive MPI [PPoPP 2006]
03-07
2003
[Paper]
Adaptive MPI [LCPC 2003]
02-05
2002
[Paper]
Adaptive MPI [PPL Technical Report 2002]
00-03
2001
[Paper]
Object-Based Adaptive Load Balancing for MPI Programs [ICCS 2001]
| Milind Bhandarkar | Laxmikant Kale | Eric Sturler | Jay Hoeflinger