fix: make MPI tests CI friendly

This commit is contained in:
xxq250 2026-06-12 09:50:37 +08:00
parent c80a2a536f
commit f87ce92f0f
1 changed files with 24 additions and 3 deletions

View File

@ -5,6 +5,7 @@ project(hpc_stencil_demo LANGUAGES CXX)
option(ENABLE_MPI "Build MPI executable" ON)
option(ENABLE_TESTS "Build tests" ON)
option(ENABLE_BENCHMARKS "Enable benchmark CTest labels" ON)
option(ENABLE_MPI_OVERSUBSCRIBE "Allow MPI tests to oversubscribe small CI runners" ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@ -49,11 +50,32 @@ if(ENABLE_TESTS)
add_test(NAME stencil_unit_tests COMMAND stencil_unit_tests)
if(ENABLE_MPI)
add_test(NAME stencil_mpi_smoke COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 2 $<TARGET_FILE:stencil_mpi> --size 1000 --steps 20)
set(HPC_DEMO_MPIEXEC_PREFLAGS "")
if(ENABLE_MPI_OVERSUBSCRIBE)
list(APPEND HPC_DEMO_MPIEXEC_PREFLAGS "--oversubscribe")
endif()
function(add_hpc_demo_mpi_test test_name ranks)
add_test(
NAME ${test_name}
COMMAND
${MPIEXEC_EXECUTABLE}
${MPIEXEC_NUMPROC_FLAG} ${ranks}
${HPC_DEMO_MPIEXEC_PREFLAGS}
$<TARGET_FILE:stencil_mpi>
${ARGN}
)
set_tests_properties(${test_name}
PROPERTIES
ENVIRONMENT "OMPI_ALLOW_RUN_AS_ROOT=1;OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1"
)
endfunction()
add_hpc_demo_mpi_test(stencil_mpi_smoke 2 --size 1000 --steps 20)
endif()
if(ENABLE_BENCHMARKS AND ENABLE_MPI)
add_test(NAME benchmark_stencil_mpi COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 4 $<TARGET_FILE:stencil_mpi> --size 200000 --steps 200)
add_hpc_demo_mpi_test(benchmark_stencil_mpi 4 --size 200000 --steps 200)
set_tests_properties(benchmark_stencil_mpi PROPERTIES LABELS benchmark)
endif()
endif()
@ -68,4 +90,3 @@ if(ENABLE_MPI)
endif()
install(DIRECTORY include/ DESTINATION include)