Release notes
This page summarizes the recent releases. For the full notes of all releases, see CHANGELOG.md and the GitHub releases.
- MANA 1.6.0 (2026-11-05)
- MANA 1.5.0 (2026-10-05)
- MANA 1.4.0 (2026-06-28)
- 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_SsendandMPI_Issend. - Attributes work as the MPI standard specifies, in C and in Fortran. This
includes the MPI-1 calls
MPI_Keyval_createandMPI_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 anMPI_Issendon a freed communicator. Checkpoints were slow after many calls toMPI_Comm_free. Now each communicator has its own Collective Clock. make installinstalled only DMTCP, andmake uninstallfailed. Now they install and uninstall MANA too, with--prefixandDESTDIR.- Threads that mapped memory at the same time could get overlapping memory,
or crash at a checkpoint. Memory that
reallocmade larger was lost at a restart. - MANA did not save the POSIX shared memory of the application. After a
restart,
argvpointed to the wrong strings. mana_launchandmana_restarton a different node could fail to find the coordinator. The fix is in DMTCP.
Changed
- To build MANA, you need a C++20 compiler.
./configureno longer accepts--enable-loggingor--enable-timing. To see the trace messages of DMTCP, setDMTCP_LOG_LEVEL=traceat run time.- The sources moved from
mpi-proxy-split/tosrc/,test/,examples/andbench/. Themana_*scripts moved toscripts/.bin/holds only build output. makebuilds only MANA.make testsbuilds the tests, the example and the benchmarks.make checkruns the tests../configurefinds the MPI compilers itself.MPICC,MPICXXandMPIFCselect other compilers. This release removesconfigure-mana../configurechecks out the DMTCP submodule whendmtcp/is empty.- This release removes
mpicc_mana,mana_start_coordinator, theMPI_COLLECTIVE_P2Pbuild 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_WAITselects howMPI_SendandMPI_Recvwait:polling(the default) orblocking. 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_Iscatterand 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-shadowlibsis no longer necessary. This release removes it. - MPI calls cost much less under MANA. A table replaces the
std::mapof virtual handles. To make, commit and free a datatype is about 2.5 times faster. MANA_PRELOADloads 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:ofidevice of MPICH and thesocketsprovider of libfabric, a restart can hang. To prevent this, setFI_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. |