]> https://gitweb.dealii.org/ - dealii.git/commitdiff
CMake: add a TEST_THREAD_LIMIT variable to enforce thread limits
authorMatthias Maier <tamiko@43-1.org>
Tue, 8 Feb 2022 23:20:10 +0000 (17:20 -0600)
committerMatthias Maier <tamiko@43-1.org>
Wed, 9 Feb 2022 09:42:45 +0000 (03:42 -0600)
cmake/macros/macro_deal_ii_add_test.cmake
cmake/macros/macro_deal_ii_pickup_tests.cmake
cmake/scripts/run_test.sh

index 3c460fba5cd9f3d9e3e6178a88de32092232afdf..97d5a77b2f7e2acfcc3cdf140db6dc06f3cd3982 100644 (file)
 #       to run
 #
 #   TEST_MPI_RANK_LIMIT
-#     - specifying the maximal number of MPI ranks that can be used. If a
+#     - Specifies the maximal number of MPI ranks that can be used. If a
 #       test variant configures a larger number of MPI ranks (via
 #       .mpirun=N. in the output file) than this limit the test will be
-#       dropped. The special value "0" enforces no limit.
+#       dropped. The special value 0 enforces no limit. Defaults to 0.
+#   TEST_THREAD_LIMIT
+#     - Specifies the maximal number of worker threads that can be used by
+#       the threading backend. Defaults to 3.
 #
 # Usage:
 #     DEAL_II_ADD_TEST(category test_name comparison_file)
@@ -323,7 +326,8 @@ FUNCTION(DEAL_II_ADD_TEST _category _test_name _comparison_file)
       #
 
       ADD_CUSTOM_COMMAND(OUTPUT ${_test_directory}/output
-        COMMAND sh ${DEAL_II_PATH}/${DEAL_II_SHARE_RELDIR}/scripts/run_test.sh
+        COMMAND TEST_THREAD_LIMIT=${TEST_THREAD_LIMIT}
+          sh ${DEAL_II_PATH}/${DEAL_II_SHARE_RELDIR}/scripts/run_test.sh
           run "${_test_full}" ${_run_args}
         COMMAND ${PERL_EXECUTABLE}
           -pi ${DEAL_II_PATH}/${DEAL_II_SHARE_RELDIR}/scripts/normalize.pl
index 2722cb2a5916ed4b775fbfe1b6b4426b80e791c3..3655ca1bc648557c16214841a0465e85f17327be 100644 (file)
 #     TEST_LIBRARIES
 #     TEST_LIBRARIES_DEBUG
 #     TEST_LIBRARIES_RELEASE
-#       - specifying additional libraries (and targets) to link against.
+#       - Specify additional libraries (and targets) to link against.
 #
 #     TEST_TARGET or
 #     TEST_TARGET_DEBUG and TEST_TARGET_RELEASE
-#       - specifying a test target to be executed for a parameter run.
+#       - Specifies a test target to be executed for a parameter run.
 #
 #     TEST_TIME_LIMIT
 #       - Specifies the maximal wall clock time in seconds a test is
 #         allowed to run. Defaults to 600.
 #     TEST_MPI_RANK_LIMIT
-#       - specifying the maximal number of MPI ranks that can be used. If a
+#       - Specifies the maximal number of MPI ranks that can be used. If a
 #         test variant configures a larger number of MPI ranks (via
 #         .mpirun=N. in the output file) than this limit the test will be
-#         dropped. The special value "0" enforces no limit.
+#         dropped. The special value 0 enforces no limit. Defaults to 0.
+#     TEST_THREAD_LIMIT
+#       - Specifies the maximal number of worker threads that can be used
+#         by the threading backend. Defaults to 3.
 #
 #     TEST_PICKUP_REGEX
 #       - A regular expression to select only a subset of tests during setup.
@@ -184,6 +187,9 @@ MACRO(DEAL_II_PICKUP_TESTS)
   SET_IF_EMPTY(TEST_MPI_RANK_LIMIT "$ENV{TEST_MPI_RANK_LIMIT}")
   SET_IF_EMPTY(TEST_MPI_RANK_LIMIT 0)
 
+  SET_IF_EMPTY(TEST_THREAD_LIMIT "$ENV{TEST_THREAD_LIMIT}")
+  SET_IF_EMPTY(TEST_THREAD_LIMIT 3)
+
   #
   # ... and finally pick up tests:
   #
index f5f31626868c3b98f4a696dd2cf00882f3c84d64..6643c31e4d5bb1e69226d7c4a8701639bce7c68a 100644 (file)
@@ -31,10 +31,6 @@ shift 2
 
 # Ensure uniform sorting for pathname expansion
 export LC_ALL=C
-# Prevent OpenMP from creating additional threads
-export OMP_NUM_THREADS=2
-# Allow oversubscription for MPI (needed for Openmpi@3.0)
-export OMPI_MCA_rmaps_base_oversubscribe=1
 
 case $STAGE in
   run)
@@ -47,6 +43,15 @@ case $STAGE in
     #     failing_output
     ##
 
+    # Limit the deal.II thread pool to TEST_THREAD_LIMIT threads.
+    export DEAL_II_NUM_THREADS="${TEST_THREAD_LIMIT}"
+
+    # Limit the OpenMP pool to two threads.
+    export OMP_NUM_THREADS="2"
+
+    # Allow oversubscription for MPI (needed for Openmpi@3.0)
+    export OMPI_MCA_rmaps_base_oversubscribe=1
+
     rm -f failing_output
     rm -f output
     rm -f stdout

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.