Enabling Practical Transparent Checkpointing for MPI: A Topological Sort Approach
<|reference_start|>Enabling Practical Transparent Checkpointing for MPI: A Topological Sort Approach: MPI is the de facto standard for parallel computing on a cluster of computers. Checkpointing is an important component in any strategy for software resilience and for long-running jobs that must be executed by chaining together time-bounded resource allocations. This work solves an old problem: a practical and general algorithm for transparent checkpointing of MPI that is both efficient and compatible with most of the latest network software. Transparent checkpointing is attractive due to its generality and ease of use for most MPI application developers. Earlier efforts at transparent checkpointing for MPI, one decade ago, had two difficult problems: (i) by relying on a specific MPI implementation tied to a specific network technology; and (ii) by failing to demonstrate sufficiently low runtime overhead.   Problem (i) (network dependence) was already solved in 2019 by MANA's introduction of split processes. Problem (ii) (efficient runtime overhead) is solved in this work. This paper introduces an approach that avoids these limitations, employing a novel topological sort to algorithmically determine a safe future synchronization point. The algorithm is valid for both blocking and non-blocking collective communication in MPI. We demonstrate the efficacy and scalability of our approach through both micro-benchmarks and a set of five real-world MPI applications, notably including the widely used VASP (Vienna Ab Initio Simulation Package), which is responsible for 11% of the workload on the Perlmutter supercomputer at Lawrence Berkley National Laboratory. VASP was previously cited as a special challenge for checkpointing, in part due to its multi-algorithm codes.<|reference_end|>
@article{xu2024enabling,
    title={Enabling Practical Transparent Checkpointing for MPI: A Topological Sort
  Approach},
    author={Yao Xu and Gene Cooperman},
    journal={arXiv preprint arXiv:2408.02218},
    year={2024},
    archivePrefix={arXiv},
    eprint={2408.02218},
    primaryClass={cs.DC}
}