Release notes

This page summarizes the recent releases. For the full notes of all releases, see CHANGELOG.md and the GitHub releases.

  1. MANA 1.6.0 (2026-11-05)
    1. New
    2. Fixed
    3. Changed
  2. MANA 1.5.0 (2026-10-05)
    1. New
    2. Notes
  3. MANA 1.4.0 (2026-06-28)
  4. Changes for users of MANA 1.4

MANA 1.6.0 (2026-11-05)

New

  • MANA runs with Open MPI 4.1 and 5.0, in C and in Fortran. GitHub Actions now tests MANA with Open MPI too.
  • MANA uses the main branch of DMTCP.
  • MANA wraps MPI_Ssend and MPI_Issend.
  • Attributes work as the MPI standard specifies, in C and in Fortran. This includes the MPI-1 calls MPI_Keyval_create and MPI_Attr_*.

Fixed

  • Checkpoints and restarts could hang after MPI_Comm_free, with non-blocking collectives that started at different times, or with checkpoints one after the other.
  • Checkpoints could hang with non-blocking collectives that started in different orders on two communicators, with MPI_Comm_create_group, or with an MPI_Issend on a freed communicator. Checkpoints were slow after many calls to MPI_Comm_free. Now each communicator has its own Collective Clock.
  • make install installed only DMTCP, and make uninstall failed. Now they install and uninstall MANA too, with --prefix and DESTDIR.
  • Threads that mapped memory at the same time could get overlapping memory, or crash at a checkpoint. Memory that realloc made larger was lost at a restart.
  • MANA did not save the POSIX shared memory of the application. After a restart, argv pointed to the wrong strings.
  • mana_launch and mana_restart on a different node could fail to find the coordinator. The fix is in DMTCP.

Changed

  • To build MANA, you need a C++20 compiler.
  • ./configure no longer accepts --enable-logging or --enable-timing. To see the trace messages of DMTCP, set DMTCP_LOG_LEVEL=trace at run time.
  • The sources moved from mpi-proxy-split/ to src/, test/, examples/ and bench/. The mana_* scripts moved to scripts/. bin/ holds only build output.
  • make builds only MANA. make tests builds the tests, the example and the benchmarks. make check runs the tests.
  • ./configure finds the MPI compilers itself. MPICC, MPICXX and MPIFC select other compilers. This release removes configure-mana.
  • ./configure checks out the DMTCP submodule when dmtcp/ is empty.
  • This release removes mpicc_mana, mana_start_coordinator, the MPI_COLLECTIVE_P2P build mode, and old tools and documents.

MANA 1.5.0 (2026-10-05)

New

  • A new drain of point-to-point messages. A checkpoint no longer hangs when a large message is in transit. Messages are no longer lost or reordered across a restart.
  • MANA_P2P_WAIT selects how MPI_Send and MPI_Recv wait: polling (the default) or blocking. A restart keeps the mode.
  • MANA completes the pending non-blocking collectives before a checkpoint. It wraps MPI_Iallreduce, MPI_Ialltoall, MPI_Iallgather, MPI_Igather, MPI_Iscatter and their variants.
  • The upper half loads a stub in place of the MPI library. A program built with an MPI library of the MPICH family (MPICH, Intel MPI, MVAPICH, Cray MPICH) runs as it is. mana_launch --use-shadowlibs is no longer necessary. This release removes it.
  • MPI calls cost much less under MANA. A table replaces the std::map of virtual handles. To make, commit and free a datatype is about 2.5 times faster.
  • MANA_PRELOAD loads libraries, such as a PMPI tool, before MANA.
  • A test suite checkpoints and restarts 23 programs. GitHub Actions runs it on each pull request. New benchmarks measure the overhead of MANA.

Notes

  • In a container, use --security-opt seccomp=unconfined.
  • With the ch4:ofi device of MPICH and the sockets provider of libfabric, a restart can hang. To prevent this, set FI_PROVIDER=tcp.

MANA 1.4.0 (2026-06-28)

  • A better drain of point-to-point messages.
  • DMTCP with CUDA support, and a fix for Hydra.
  • Python 3.6 or later.
  • Fixes for the address alignment of the lower half, and for the copy of the stack.

Changes for users of MANA 1.4

The old MANA wiki describes MANA 1.4. These items of the wiki are no longer true:

MANA 1.4 MANA 1.6
mpi-proxy-split/ holds the sources and tests. The sources are in src/, the tests in test/, the example in examples/, and the benchmarks in bench/.
Edit configure-mana to select the MPI library. ./configure finds the MPI compilers in PATH. Set MPICC, MPICXX and MPIFC to select others.
git submodule update --init before ./configure. ./configure checks out DMTCP.
A C++14 compiler. A C++20 compiler.
make also builds the tests. make tests builds the tests. make check runs them.
mana_launch --use-shadowlibs, or build with mpicc_mana, if the MPI library has constructors. Not necessary. Build with the normal MPI compiler. Both options are removed.
mana_start_coordinator. Use mana_coordinator.
MANA_P2P_LOG, MANA_P2P_REPLAY and mana_p2p_update_logs for deterministic replay. Removed in 1.5.0.
MANA_USE_ALLREDUCE_REPRODUCIBLE. Removed in 1.5.0.
MPI_COLLECTIVE_P2P. Removed.
Record-replay of MPI calls (LOG_CALL) rebuilds MPI objects at restart. Descriptors of virtual handles rebuild MPI objects. See Virtual handles.
Unit tests in mpi-proxy-split/unit-test/. Removed. test/autotest.py runs end-to-end tests.
Open MPI 4.x and 5.x are in the list of supported libraries. MANA 1.6.0 fixes several bugs with Open MPI. Open MPI 4.1 and 5.0 work, and the continuous integration tests Open MPI.
ExaMPI is in the list of supported libraries. ExaMPI has its own ABI, and MANA 1.6.0 does not build with it.
x86_64, ARM64 and RISC-V. MANA 1.6.0 supports only x86_64.
make install installs only DMTCP. make install installs MANA and DMTCP.