Indexed Parallel Programming

The Message Passing Model (MPI) has been an enormously successful programming model for high performance/scalable computing. Unfortunately it is very difficult to write MPI programs to manage dynamic data structures (say for unstructured finite element or finite volume adaptive mesh refinement) that grow and shrink during the simulation and require rebalancing of the data across the nodes of the parallel computer. In addition, MPI has limited support for handling lack of reliability of the hardware and requires stopping and restarting an entire simulation upon a failure within even a single node instead of allow migration of just the data from that one failed node.

The Indexed Parallel Programming (IPM) model is a post-MPI parallel programming where the runtime system, rather than the programmer, manages the placement and movement of all the simulation data. The user need only provide graphs representing the data dependencies of each phase of the simulation and the runtime is response for insuring the needed data is available for each computational kernel when it is launched. User code with IPM can be written in standard Fortran, C, or C++.

The goal of this project is to refine the programming model, provide a prototype implementation, and provide a full adaptive mesh refinement simulation demonstrating the programming model.