commit a00aafaca0f141d902d368962e7c5309c10849f4
parent 7d4d7b2a9887cdbb0eab2f41d5893fc3a4007dbc
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Thu, 2 Dec 2021 10:28:55 +0100
Tune how the solve_probe2 test is run
When Stardis-Solver is built with MPI support, the test is run 2 times,
once using MPI and once without it.
Diffstat:
2 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
@@ -218,7 +218,6 @@ if(NOT NO_TEST)
new_test(test_sdis_solid_random_walk_robustness)
new_test(test_sdis_solve_camera)
new_test(test_sdis_solve_probe)
- new_test(test_sdis_solve_probe2)
new_test(test_sdis_solve_probe3)
new_test(test_sdis_solve_probe_2d)
new_test(test_sdis_solve_probe2_2d)
@@ -232,6 +231,8 @@ if(NOT NO_TEST)
new_test(test_sdis_volumic_power)
new_test(test_sdis_volumic_power4)
+ build_test(test_sdis_solve_probe2)
+
# Additionnal tests
build_test(test_sdis_volumic_power2)
build_test(test_sdis_volumic_power2_2d)
@@ -250,13 +251,18 @@ if(NOT NO_TEST)
target_link_libraries(test_sdis_solve_probe3_2d ${MATH_LIB})
target_link_libraries(test_sdis_solve_camera Star3DUT)
- if(ENABLE_MPI)
+ if(NOT ENABLE_MPI)
+ add_test(test_sdis_solve_probe2 test_sdis_solve_probe2)
+ else()
set_target_properties(test_sdis PROPERTIES
COMPILE_DEFINITIONS "SDIS_ENABLE_MPI")
set_target_properties(test_sdis_device PROPERTIES
COMPILE_DEFINITIONS "SDIS_ENABLE_MPI")
set_target_properties(test_sdis_solve_probe2 PROPERTIES
COMPILE_DEFINITIONS "SDIS_ENABLE_MPI")
+
+ add_test(test_sdis_solve_probe2_mpi_on mpirun -n 2 test_sdis_solve_probe2 mpi)
+ add_test(test_sdis_solve_probe2_mpi_off test_sdis_solve_probe2)
endif()
rcmake_copy_runtime_libraries(test_sdis_solid_random_walk_robustness)
diff --git a/src/test_sdis_solve_probe2.c b/src/test_sdis_solve_probe2.c
@@ -18,8 +18,10 @@
#include <rsys/math.h>
+#include <string.h>
+
#ifdef SDIS_ENABLE_MPI
-#include <mpi.h>
+ #include <mpi.h>
#endif
/*
@@ -189,10 +191,15 @@ main(int argc, char** argv)
CHK(MPI_Init_thread(&argc, &argv, MPI_THREAD_SERIALIZED, &mpi_thread_support)
== MPI_SUCCESS);
CHK(mpi_thread_support >= MPI_THREAD_SERIALIZED);
- dev_args.use_mpi = 1;
+ dev_args.use_mpi = argc >= 2 && !strcmp(argv[1], "mpi");
OK(sdis_device_create(&dev_args, &dev));
- OK(sdis_device_get_mpi_rank(dev, &mpi_rank));
- is_master_process = mpi_rank == 0;
+ if(dev_args.use_mpi) {
+ OK(sdis_device_get_mpi_rank(dev, &mpi_rank));
+ is_master_process = mpi_rank == 0;
+ } else {
+ CHK(sdis_device_get_mpi_rank(dev, &mpi_rank) == RES_BAD_OP);
+ is_master_process = 1;
+ }
#endif
/* Create the fluid medium */