Unfortunately, this causes a lot of errors in testing ParFORM, mainly by the combination of Valgrind + MPI, due to (hopefully harmless) memory issues caused by dependent libraries of OpenMPI/MPICH.
We have some options to resove this problem:
Explicitly fix the image version as ubuntu-20.04, instead of ubuntu-latest, and continue using MPICH.
Switch from Valgrind to the compiler sanitizers. MemorySanitizer may require a major effort because all dependent libraries should be built with MSan.
For now, I would adopt the 1st option, which should be valid at least for 2 years, until ubuntu-20.04 is deprecated. If the Valgrind + MPI memory issues have not been fixed by then, we have to revisit this problem.
To see the ParFORM test failures, one can try the Ubuntu 22.04 Docker image as follows:
docker run -it --rm ubuntu:22.04
# with OpenMPI
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y automake build-essential git libgmp-dev libopenmpi-dev ruby valgrind zlib1g-dev
git clone https://github.com/vermaseren/form.git
cd form
autoreconf -i
./configure --enable-parform --enable-debug
make -C sources parvorm
./check/check.rb --mpirun-opt='--allow-run-as-root --oversubscribe' valgrind ./sources/parvorm
# with MPICH
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y automake build-essential git libgmp-dev libmpich-dev ruby valgrind zlib1g-dev
git clone https://github.com/vermaseren/form.git
cd form
autoreconf -i
./configure --enable-parform --enable-debug
make -C sources parvorm
./check/check.rb valgrind ./sources/parvorm
If I use the 20.04 image, MPICH cleanly works (while OpenMPI triggers many Valgrind errors).
On GitHub Actions, the
ubuntu-latest
label is now starting to useubuntu-22.04
:Unfortunately, this causes a lot of errors in testing ParFORM, mainly by the combination of Valgrind + MPI, due to (hopefully harmless) memory issues caused by dependent libraries of OpenMPI/MPICH.
We have some options to resove this problem:
Explicitly fix the image version as
ubuntu-20.04
, instead ofubuntu-latest
, and continue using MPICH.Generate a Valgrind suppression file and use it. Valgrind options in the test suite (
check.rb
) can be configured by--valgrind-opts
andFORM_CHECK_VALGRIND_OPTS
introduced in https://github.com/vermaseren/form/commit/3a2282a4d1ecea15a2493013d6df6dfc5f1c1f43.Switch from Valgrind to the compiler sanitizers. MemorySanitizer may require a major effort because all dependent libraries should be built with MSan.
For now, I would adopt the 1st option, which should be valid at least for 2 years, until
ubuntu-20.04
is deprecated. If the Valgrind + MPI memory issues have not been fixed by then, we have to revisit this problem.To see the ParFORM test failures, one can try the Ubuntu 22.04 Docker image as follows:
If I use the 20.04 image, MPICH cleanly works (while OpenMPI triggers many Valgrind errors).