diff --git a/.github/workflows/mana-tests.yml b/.github/workflows/mana-tests.yml
index 098517e9c..c890441d9 100644
--- a/.github/workflows/mana-tests.yml
+++ b/.github/workflows/mana-tests.yml
@@ -53,14 +53,14 @@ jobs:
make -j"$(nproc)" mana tests
- name: Test mana_restart wrapper
- run: python3 mpi-proxy-split/test/test-mana-restart.py -v
+ run: python3 test/test-mana-restart.py -v
- name: Test loader debug lookup
- run: python3 mpi-proxy-split/test/test-loader-debug.py -v
+ run: python3 test/test-loader-debug.py -v
- name: Test MANA
run: >
- mpi-proxy-split/test/autotest.py --retry-once
+ test/autotest.py --retry-once
--workdir /tmp/autotest --launcher '${{ matrix.launcher }}'
- name: Keep the logs of failed tests
diff --git a/.gitignore b/.gitignore
index 5098bb194..f5ccf104b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,12 @@
# Made by ./configure and autoreconf.
/Makefile
/manpages/Makefile
+/src/Makefile
+/src/lower-half/Makefile
+/src/mpi-wrappers/Makefile
+/test/Makefile
+/examples/Makefile
+/bench/Makefile
/config.log
/config.status
/aclocal.m4
@@ -12,6 +18,10 @@
/bin/
/lib/
/manpages/mana.1.gz
+/src/lower-half/lower-half
+/examples/ring
+/bench/virtid_bench
+/bench/synthetic_app
*.[oa]
*.d
*.so
@@ -21,6 +31,24 @@
*.pyc
__pycache__/
+# Made by src/mpi-wrappers/Makefile from the generate-*.py scripts.
+/src/mpi-wrappers/mpi_fortran_wrappers.cpp
+/src/mpi-wrappers/mpi_unimplemented_wrappers.cpp
+/src/mpi-wrappers/mpi_stub_wrappers.c
+/src/mpi-wrappers/mpi_stub_objects.c
+/src/mpi-wrappers/*.tmp.*
+
+# The programs of the end-to-end tests have no suffix:
+# ignore all but the sources.
+/test/*
+!/test/*.c
+!/test/*.cpp
+!/test/*.f90
+!/test/*.h
+!/test/*.py
+!/test/*.md
+!/test/Makefile.in
+
# Left by runs in the tree.
ckpt_*.dmtcp
ckpt_rank_*/
diff --git a/Makefile.in b/Makefile.in
index 00780747b..49ec5abcc 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -37,7 +37,7 @@ all: default
MANA_SCRIPTS = mana_coordinator mana_launch mana_restart mana_status
mana: mana_prereqs dmtcp $(MANA_SCRIPTS:%=bin/%)
- cd mpi-proxy-split && $(MAKE) stage
+ cd src && $(MAKE) stage
# bin/ holds the scripts next to DMTCP's programs and the lower half, which
# the scripts run.
@@ -47,11 +47,13 @@ $(MANA_SCRIPTS:%=bin/%): bin/%: scripts/%
# The end-to-end tests, the example and the benchmarks.
tests:
- cd mpi-proxy-split && $(MAKE) tests
+ cd test && $(MAKE)
+ cd examples && $(MAKE)
+ cd bench && $(MAKE)
# Builds the end-to-end tests and runs them (test/autotest.py).
check: mana
- cd mpi-proxy-split && $(MAKE) check
+ cd test && $(MAKE) check
dmtcp: dmtcp/configure
@ # A 'git pull' can change the DMTCP commit that MANA uses, and it
@@ -89,12 +91,11 @@ uninstall:
distclean: clean
- cd ${DMTCP_ROOT} && $(MAKE) distclean
- - cd mpi-proxy-split && $(MAKE) distclean
+ - cd src && $(MAKE) distclean
- cd manpages && $(MAKE) distclean
rm -f Makefile config.log config.status config.status-* config.cache
- rm -f mpi-proxy-split/Makefile mpi-proxy-split/lower-half/Makefile \
- mpi-proxy-split/mpi-wrappers/Makefile mpi-proxy-split/test/Makefile \
- mpi-proxy-split/examples/Makefile
+ rm -f src/Makefile src/lower-half/Makefile src/mpi-wrappers/Makefile \
+ test/Makefile examples/Makefile bench/Makefile
rm -rf autom4te.cache
rm -rf $(top_builddir)/lib $(top_builddir)/bin
@@ -104,7 +105,7 @@ tidy:
rm -f dmtcp_coordinator_db-*.json
clean: tidy
- cd mpi-proxy-split && $(MAKE) clean
+ cd src && $(MAKE) clean
mana_prereqs:
@ if test -n "$$HUGETLB_DEFAULT_PAGE_SIZE"; then \
diff --git a/README.md b/README.md
index 6e0890c18..a7d05ce0f 100644
--- a/README.md
+++ b/README.md
@@ -63,8 +63,8 @@ CI does.
To run MANA's tests, which checkpoint and restart each test program:
make tests # builds them; 'make' does not
- mpi-proxy-split/test/autotest.py # or: make check
- mpi-proxy-split/test/autotest.py --help # e.g. --launcher 'srun -n {n}'
+ test/autotest.py # or: make check
+ test/autotest.py --help # e.g. --launcher 'srun -n {n}'
MANA is free software: you can redistribute it and/or modify it under the
terms of the GNU Lesser General Public License, version 3 or (at your option)
diff --git a/bench/Makefile.in b/bench/Makefile.in
new file mode 100644
index 000000000..011af5204
--- /dev/null
+++ b/bench/Makefile.in
@@ -0,0 +1,23 @@
+# @configure_input@
+
+# The compilers and flags that configure found.
+MPICC = @MPICC@
+MPI_CFLAGS?= @CFLAGS@ -g3 -fPIC
+MPI_LDFLAGS?=
+
+# Benchmarks of MANA's overhead; built with -O2 and not run by 'make check'.
+BENCH_FILES = virtid_bench synthetic_app
+
+default: ${BENCH_FILES}
+
+${BENCH_FILES}: %: %.c
+ $(MPICC) -g -O2 -o $@ $< $(MPI_CFLAGS) ${MPI_LDFLAGS}
+
+clean:
+ rm -f ${BENCH_FILES}
+
+.PHONY: default clean
+
+# Regenerate this Makefile when Makefile.in or config.status is newer.
+Makefile: Makefile.in @top_builddir@/config.status
+ cd @top_builddir@ && ./config.status bench/Makefile
diff --git a/mpi-proxy-split/test/README-synthetic_app.md b/bench/README-synthetic_app.md
similarity index 85%
rename from mpi-proxy-split/test/README-synthetic_app.md
rename to bench/README-synthetic_app.md
index 79ffdb992..10f811c8f 100644
--- a/mpi-proxy-split/test/README-synthetic_app.md
+++ b/bench/README-synthetic_app.md
@@ -23,10 +23,10 @@ same options.
## Usage
```
-make -C mpi-proxy-split/test synthetic_app
-mpirun -np 8 mpi-proxy-split/test/synthetic_app --profile=vasp
+make -C bench synthetic_app
+mpirun -np 8 bench/synthetic_app --profile=vasp
bin/mana_coordinator
-mpirun -np 8 bin/mana_launch mpi-proxy-split/test/synthetic_app --profile=vasp
+mpirun -np 8 bin/mana_launch bench/synthetic_app --profile=vasp
```
The options are listed at the top of `synthetic_app.c`.
diff --git a/mpi-proxy-split/test/synthetic_app.c b/bench/synthetic_app.c
similarity index 100%
rename from mpi-proxy-split/test/synthetic_app.c
rename to bench/synthetic_app.c
diff --git a/mpi-proxy-split/test/virtid_bench.c b/bench/virtid_bench.c
similarity index 100%
rename from mpi-proxy-split/test/virtid_bench.c
rename to bench/virtid_bench.c
diff --git a/configure b/configure
index 4ce5b24b5..721326b6d 100755
--- a/configure
+++ b/configure
@@ -5500,7 +5500,7 @@ ac_configure_args="$ac_configure_args --disable-dlsym-wrapper"
subdirs="$subdirs dmtcp"
-ac_config_files="$ac_config_files Makefile manpages/Makefile mpi-proxy-split/Makefile mpi-proxy-split/lower-half/Makefile mpi-proxy-split/mpi-wrappers/Makefile mpi-proxy-split/test/Makefile mpi-proxy-split/examples/Makefile"
+ac_config_files="$ac_config_files Makefile manpages/Makefile src/Makefile src/lower-half/Makefile src/mpi-wrappers/Makefile test/Makefile examples/Makefile bench/Makefile"
enable_option_checking=fatal
@@ -6298,11 +6298,12 @@ do
case $ac_config_target in
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"manpages/Makefile") CONFIG_FILES="$CONFIG_FILES manpages/Makefile" ;;
- "mpi-proxy-split/Makefile") CONFIG_FILES="$CONFIG_FILES mpi-proxy-split/Makefile" ;;
- "mpi-proxy-split/lower-half/Makefile") CONFIG_FILES="$CONFIG_FILES mpi-proxy-split/lower-half/Makefile" ;;
- "mpi-proxy-split/mpi-wrappers/Makefile") CONFIG_FILES="$CONFIG_FILES mpi-proxy-split/mpi-wrappers/Makefile" ;;
- "mpi-proxy-split/test/Makefile") CONFIG_FILES="$CONFIG_FILES mpi-proxy-split/test/Makefile" ;;
- "mpi-proxy-split/examples/Makefile") CONFIG_FILES="$CONFIG_FILES mpi-proxy-split/examples/Makefile" ;;
+ "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "src/lower-half/Makefile") CONFIG_FILES="$CONFIG_FILES src/lower-half/Makefile" ;;
+ "src/mpi-wrappers/Makefile") CONFIG_FILES="$CONFIG_FILES src/mpi-wrappers/Makefile" ;;
+ "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
+ "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+ "bench/Makefile") CONFIG_FILES="$CONFIG_FILES bench/Makefile" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
diff --git a/configure.ac b/configure.ac
index 583a264d2..399c4b027 100644
--- a/configure.ac
+++ b/configure.ac
@@ -80,11 +80,12 @@ AC_CONFIG_SUBDIRS([dmtcp])
AC_CONFIG_FILES([Makefile \
manpages/Makefile \
- mpi-proxy-split/Makefile \
- mpi-proxy-split/lower-half/Makefile \
- mpi-proxy-split/mpi-wrappers/Makefile \
- mpi-proxy-split/test/Makefile \
- mpi-proxy-split/examples/Makefile])
+ src/Makefile \
+ src/lower-half/Makefile \
+ src/mpi-wrappers/Makefile \
+ test/Makefile \
+ examples/Makefile \
+ bench/Makefile])
dnl Autoconf manual says option checking is set to warn ("yes") by
dnl by default. But it's actually set to "no".
diff --git a/mpi-proxy-split/examples/Makefile.in b/examples/Makefile.in
similarity index 85%
rename from mpi-proxy-split/examples/Makefile.in
rename to examples/Makefile.in
index 6cfc71430..440cf8dbb 100644
--- a/mpi-proxy-split/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -18,4 +18,4 @@ clean:
# Regenerate this Makefile when Makefile.in or config.status is newer.
Makefile: Makefile.in @top_builddir@/config.status
- cd @top_builddir@ && ./config.status mpi-proxy-split/examples/Makefile
+ cd @top_builddir@ && ./config.status examples/Makefile
diff --git a/mpi-proxy-split/examples/ring.c b/examples/ring.c
similarity index 98%
rename from mpi-proxy-split/examples/ring.c
rename to examples/ring.c
index 122f5838e..dec1607dc 100644
--- a/mpi-proxy-split/examples/ring.c
+++ b/examples/ring.c
@@ -34,7 +34,7 @@
// run it under MANA, from MANA's directory:
//
// bin/mana_coordinator
-// mpirun -np 4 bin/mana_launch mpi-proxy-split/examples/ring
+// mpirun -np 4 bin/mana_launch examples/ring
// bin/mana_status --checkpoint (in another shell, while it runs)
//
// Then stop the job (Ctrl-C), and restart it from the checkpoint:
diff --git a/manpages/mana.1 b/manpages/mana.1
index 4d89855ee..8e5820908 100644
--- a/manpages/mana.1
+++ b/manpages/mana.1
@@ -67,10 +67,10 @@ cd dmtcp-mana
\&./configure --enable-debug
make -j mana tests
# Build the program with mpicc as usual; no relinking for MANA is needed.
-# 'make tests' also builds an example: mpi-proxy-split/examples/ring
+# 'make tests' also builds an example: examples/ring
salloc -N 2 -q interactive -C haswell -t 01:00:00
bin/mana_coordinator -i10
-srun -N 2 bin/mana_launch mpi-proxy-split/examples/ring
+srun -N 2 bin/mana_launch examples/ring
bin/mana_coordinator -i10
srun -N 2 bin/mana_restart
\f[R]
diff --git a/manpages/mana.1.md b/manpages/mana.1.md
index 5e6b129f4..b405946ce 100644
--- a/manpages/mana.1.md
+++ b/manpages/mana.1.md
@@ -58,10 +58,10 @@ cd dmtcp-mana
./configure --enable-debug
make -j mana tests
# Build the program with mpicc as usual; no relinking for MANA is needed.
-# 'make tests' also builds an example: mpi-proxy-split/examples/ring
+# 'make tests' also builds an example: examples/ring
salloc -N 2 -q interactive -C haswell -t 01:00:00
bin/mana_coordinator -i10
-srun -N 2 bin/mana_launch mpi-proxy-split/examples/ring
+srun -N 2 bin/mana_launch examples/ring
bin/mana_coordinator -i10
srun -N 2 bin/mana_restart
```
diff --git a/mpi-proxy-split/.gitignore b/mpi-proxy-split/.gitignore
deleted file mode 100644
index ca60bb9e4..000000000
--- a/mpi-proxy-split/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-# The programs of the end-to-end tests and the benchmarks have no suffix:
-# ignore all but the sources.
-test/*
-!test/*.c
-!test/*.cpp
-!test/*.f90
-!test/*.h
-!test/*.py
-!test/*.md
-!test/Makefile.in
-examples/ring
-lower-half/lower-half
-
-# Made by configure from the Makefile.in files.
-/Makefile
-/lower-half/Makefile
-/mpi-wrappers/Makefile
-/examples/Makefile
-
-# Made by mpi-wrappers/Makefile from the generate-*.py scripts.
-mpi-wrappers/mpi_fortran_wrappers.cpp
-mpi-wrappers/mpi_unimplemented_wrappers.cpp
-mpi-wrappers/mpi_stub_wrappers.c
-mpi-wrappers/mpi_stub_objects.c
-mpi-wrappers/*.tmp.*
diff --git a/mpi-proxy-split/p2p_log_replay.cpp b/mpi-proxy-split/p2p_log_replay.cpp
deleted file mode 100644
index ab323efd0..000000000
--- a/mpi-proxy-split/p2p_log_replay.cpp
+++ /dev/null
@@ -1,295 +0,0 @@
-/****************************************************************************
- * Copyright (C) 2019-2021 by Gene Cooperman, Rohan Garg, Yao Xu *
- * gene@ccs.neu.edu, rohgarg@ccs.neu.edu, xu.yao1@northeastern.edu *
- * *
- * This file is part of DMTCP. *
- * *
- * DMTCP is free software: you can redistribute it and/or *
- * modify it under the terms of the GNU Lesser General Public License as *
- * published by the Free Software Foundation, either version 3 of the *
- * License, or (at your option) any later version. *
- * *
- * DMTCP is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License in the files COPYING and COPYING.LESSER. If not, see *
- * . *
- ****************************************************************************/
-
-#include
-#include
-#include
-#include
-#include
-#include