Regression Test "make check" Compilation Failure

GROMACS version: 2021.5
GROMACS modification: No

This is not a failed regression test itself… this is a failure to compile the regression test. More specifically, it’s a failure to link:

[ 65%] Linking CXX executable ../../../../../bin/workflow-details-mpi-test
cd ${WORKDIR}/gromacs-2021.5/build/src/api/cpp/workflow/tests && ${CMAKE_PREFIX}/bin/cmake -E cmake_link_script CMakeFiles/workflow-details-mpi-test.dir/link.txt --verbose=1
${GCC_PREFIX}/bin/g++ -march=znver2 -mtune=znver2 -O2 -pipe -O3 -DNDEBUG  -Wl,-rpath -Wl,${OPENMPI_PREFIX}/lib64 -Wl,-rpath -Wl,${HWLOC_PREFIX}/lib64 -Wl,-rpath -Wl,/usr/lib64 -Wl,-rpath -Wl,${HCOLL_PREFIX}/lib -Wl,--enable-new-dtags -L${OPENMPI_PREFIX}/lib64 -L${HWLOC_PREFIX}/lib64 -L/usr/lib64 -L${HCOLL_PREFIX}/lib -pthread   CMakeFiles/workflow-details-mpi-test.dir/workflow.cpp.o CMakeFiles/workflow-details-mpi-test.dir/__/__/__/__/testutils/unittest_main.cpp.o ../../../../programs/CMakeFiles/mdrun_objlib.dir/mdrun/mdrun.cpp.o ../../../../programs/CMakeFiles/mdrun_objlib.dir/mdrun/nonbonded_bench.cpp.o -o ../../../../../bin/workflow-details-mpi-test  -Wl,-rpath,${WORKDIR}/gromacs-2021.5/build/lib ../../../../../lib/libtestutils.a ${OPENMPI_PREFIX}/lib64/libmpi.so ../../../../../lib/libgmxapi_mpi.so.0.2.1 ../../../../../lib/libmdrun_test_infrastructure.a ../../../../../lib/libtestutils.a ../../../../../lib/libgromacs_mpi.so.6.0.0 -lm ${GCC_PREFIX}/lib64/libgomp.so /lib64/libpthread.so ${OPENMPI_PREFIX}/lib64/libmpi.so ../../../../../lib/libgmock.so ../../../../../lib/libgtest.so -lpthread 
${GCC_PREFIX}/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: ../../../../../lib/libgmxapi_mpi.so.0.2.1: undefined reference to `ompi_mpi_cxx_op_intercept'
${GCC_PREFIX}/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: ../../../../../lib/libgmxapi_mpi.so.0.2.1: undefined reference to `MPI::Datatype::Free()'
${GCC_PREFIX}/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: ../../../../../lib/libgmxapi_mpi.so.0.2.1: undefined reference to `MPI::Comm::Comm()'
${GCC_PREFIX}/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: ../../../../../lib/libgmxapi_mpi.so.0.2.1: undefined reference to `MPI::Win::Free()'
collect2: error: ld returned 1 exit status
make[3]: *** [src/api/cpp/workflow/tests/CMakeFiles/workflow-details-mpi-test.dir/build.make:128: bin/workflow-details-mpi-test] Error 1
make[3]: Leaving directory '${WORKDIR}/gromacs-2021.5/build'
make[2]: *** [CMakeFiles/Makefile2:6604: src/api/cpp/workflow/tests/CMakeFiles/workflow-details-mpi-test.dir/all] Error 2
make[2]: Leaving directory '${WORKDIR}/gromacs-2021.5/build'
make[1]: *** [CMakeFiles/Makefile2:3152: CMakeFiles/check.dir/rule] Error 2
make[1]: Leaving directory '${WORKDIR}/gromacs-2021.5/build'
make: *** [Makefile:628: check] Error 2

The GROMACS compilation was prepared using:

cmake -DCMAKE_INSTALL_PREFIX=${GROMACS_PREFIX} -DGMX_FFT_LIBRARY=fftw3 \
    -DGMX_BUILD_OWN_FFTW=ON -DGMX_HWLOC=ON -DGMX_SIMD=None -DGMX_MPI=ON \
    -DGMX_BUILD_OWN_FFTW_URL=${DISTDIR}/fftw-3.3.8.tar.gz \
    -DREGRESSIONTEST_PATH=${WORKDIR}/regressiontests-2021.5 \
    -DGMX_EXTERNAL_BLAS=ON -DGMX_EXTERNAL_LAPACK=ON ..
make -j128
make VERBOSE=1 check

I’m using GCC 11.2.0 and Open MPI 4.1.2 (plus a few irrelevant dependencies), the latter of which was configured with:

./configure --prefix=${OPENMPI_PREFIX} --enable-shared --enable-static \
    --enable-mpi-cxx --with-ucx --without-lsf --with-hcoll=${HCOLL_PREFIX} \
    --enable-mca-no-build=btl-usnic,btl-uct --with-libfabric=/usr \
    --with-platform=contrib/platform/mellanox/optimized \
    --with-ofi-libdir=/usr/lib64 --with-slurm --with-pmix \
    --with-hwloc=${HWLOC_PREFIX} --with-hwloc-libdir=${HWLOC_PREFIX}/lib64 \
    --with-wrapper-cflags="-march=znver2 -mtune=znver2" \
    --with-wrapper-cxxflags="-march=znver2 -mtune=znver2"

Any idea what might be causing this problem? Thanks!

Just saw the release of 2022, so I’m testing that now. It does not appear to have the same issue.
Since 2021.5 is still a supported release, I think there will still be interest in finding a solution.

UPDATE: I can confirm that the 2022 release does not exhibit this same issue. Unfortunately, my regression tests are failing, but I’ll create a separate post for that.

Hello,

I’ll try to have a look into this. Can you reproduce the issues in 2021.5 for other versions of OpenMPI as well?

Cheers

Paul

Also, I think it would be best to open an issue for this in gitlab (gitlab.com/gromacs/gromacs/-/issues), targeted at 2021.6

I’ll test some other versions of OpenMPI and move it to gitlab, thanks!