  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.
