From 7c5a203530f089798858669ea54f379f2edc916b Mon Sep 17 00:00:00 2001
From: Christoph Junghans <junghans@votca.org>
Date: Mon, 4 Nov 2024 19:56:17 -0700
Subject: [PATCH] Make test work on MPICH as well

---
 CMakeLists.txt               |  2 +-
 tests/feature/CMakeLists.txt | 35 ++++-------------------------------
 2 files changed, 5 insertions(+), 32 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 581f0e0..bfe9104 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -75,7 +75,7 @@ find_dependency(MPI)\n"
     )
 
 if(CM_ALL_VTK_OUTPUT)
-    message("Using VTK output")
+    message(STATUS "Using VTK output")
     find_package(VTK)
     if(NOT VTK_FOUND)
         message(FATAL_ERROR "VTK not found, help CMake to find it by setting VTK_LIBRARY and VTK_INCLUDE_DIR")
diff --git a/tests/feature/CMakeLists.txt b/tests/feature/CMakeLists.txt
index f1dc27f..e28ed73 100644
--- a/tests/feature/CMakeLists.txt
+++ b/tests/feature/CMakeLists.txt
@@ -9,26 +9,6 @@ target_compile_options(TestCompare PRIVATE -Wall -Wextra -g)
 # in CMake..
 set(OUTPUTDIR .)
 set(KNOWNGOOD ${CMAKE_CURRENT_SOURCE_DIR}/knowngood)
-# check if openmpi variable in mpi.h is set to find out, if
-# MPI version is openmpi based
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/have_openmpi.c
-"#include <mpi.h>
-int main(void) {
-#ifndef OPEN_MPI
-#error
-#endif
-    return 0;
-}
-")
-try_compile(HAVE_OPENMPI
-    ${CMAKE_CURRENT_BINARY_DIR}
-    ${CMAKE_CURRENT_BINARY_DIR}/have_openmpi.c
-    LINK_LIBRARIES MPI::MPI_C
-    OUTPUT_VARIABLE _try_out)
-if(NOT HAVE_OPENMPI)
-    message(WARNING "DID NOT FIND OPENMPI - skipping tests \n\n${_try_out}")
-    return()
-endif()
 include(FindUnixCommands)
 foreach( FEATURE
 		ALL_Staggered
@@ -41,17 +21,10 @@ foreach( FEATURE
 			)
 		set(OUTPUTFILE ${OUTPUTDIR}/out_${FEATURE}_${NP}.dat)
 		set(GOODFILE ${KNOWNGOOD}/${FEATURE}_${NP}.dat)
-		if (HAVE_OPENMPI)
-			add_test(
-				NAME feature_${FEATURE}_${NP}_setup
-				COMMAND ${BASH} -c "mpirun --oversubscribe -np ${NP} $<TARGET_FILE:${FEATURE}> > ${OUTPUTFILE}; exit $?"
-				)
-		else()
-		add_test(
-			NAME feature_${FEATURE}_${NP}_setup
-			COMMAND ${BASH} -c "mpirun -n ${NP} $<TARGET_FILE:${FEATURE}> > ${OUTPUTFILE}; exit $?"
-			)
-		endif(HAVE_OPENMPI)
+		add_test(NAME feature_${FEATURE}_${NP}_setup
+			COMMAND ${BASH} -c " ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${NP} ${MPIEXEC_PREFLAGS} $<TARGET_FILE:${FEATURE}> ${MPIEXEC_MAX_NUMPROCS} > ${OUTPUTFILE}; exit $?")
+        # tell CMake how many cores a test uses and allow openmpi to oversub cores via env variable
+        set_tests_properties(feature_${FEATURE}_${NP}_setup PROPERTIES PROCESSORS "${NP}" ENVIRONMENT "PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe")
         # todo(s.schulz): This only works with OpenMPI, since the flags
         # are implementation dependant.
 		set_tests_properties(feature_${FEATURE}_${NP}_setup PROPERTIES
-- 
GitLab