🤖 AI Summary
This work addresses the challenge of MPI application portability and fault tolerance stemming from ABI incompatibility, which binds applications at compile time to specific MPI implementations and hinders cross-library migration and restart. We propose a fault-tolerant MPI runtime framework supporting ABI interoperability. Methodologically, we pioneer the tight integration of MPI ABI interoperability with transparent checkpointing—leveraging the Mukautuva ABI specification and the MANA checkpointing framework—via dynamic symbol redirection and runtime interface adaptation to decouple application compilation, MPI library selection, and checkpoint tooling. Our key contribution is establishing a tripartite fault-tolerance paradigm balancing performance, portability, and elasticity: experiments demonstrate seamless cross-library checkpointing and recovery between OpenMPI and MPICH, with <2% runtime overhead, no dependency on any particular checkpointing tool, and full support for “compile once, run and restart across libraries.”
📝 Abstract
There is new momentum behind an interoperable ABI for MPI, which will be a major component of MPI-5. This capability brings true separation of concerns to a running MPI computation. The linking and compilation of an MPI application becomes completely independent of the choice of MPI library. The MPI application is compiled once, and runs everywhere. This ABI allows users to independently choose: the compiler for the MPI application; the MPI runtime library; and, with this work, the transparent checkpointing package. Arbitrary combinations of the above are supported. The result is a"three-legged stool", which supports performance, portability, and resilience for long-running computations. An experimental proof-of-concept is presented, using the MANA checkpointing package and the Mukautuva ABI library for MPI interoperability. The result demonstrates that the combination of an ABI-compliant MPI and transparent checkpointing can bring extra flexibility in portability and dynamic resource management at runtime without compromising performance. For example, an MPI application can execute and checkpoint under one MPI library, and later restart under another MPI library. The work is not specific to the MANA package, since the approach using Mukautuva can be adapted to other transparent checkpointing packages.