Specify OMP_NUM_THREADS for Pyhon CI scripts.
authorM. Eric Irrgang <ericirrgang@gmail.com>
Tue, 29 Sep 2020 14:27:03 +0000 (17:27 +0300)
committerM. Eric Irrgang <ericirrgang@gmail.com>
Wed, 30 Sep 2020 12:42:21 +0000 (15:42 +0300)
* Explicitly propagate OMP_NUM_THREADS through mpiexec.
* Apply self-consistent CI memory parameters.
* Only use 1 OMP thread for gmxapi Python tests. We want to use two tMPI
  ranks, and no extra threads. tMPI threads are set separately.

Refs #3704

admin/ci-scripts/build-and-test-py-gmxapi-0.1.sh
admin/ci-scripts/build-and-test-py-gmxapi-0.2.sh
admin/ci-scripts/build-and-test-sample_restraint-2020.sh
admin/ci-scripts/build-and-test-sample_restraint-2021.sh
admin/gitlab-ci/python-gmxapi.gitlab-ci.yml
admin/gitlab-ci/sample_restraint-regression.gitlab-ci.yml
admin/gitlab-ci/sample_restraint.gitlab-ci.yml

index f2a4c2a14164180228506264bc5ffa93fcd66997..a48cd4ca19ba70276277bac53b7e25641eab4604 100644 (file)
@@ -48,6 +48,7 @@ PROGRAM=(`which python` -m mpi4py -m pytest \
 if [ -x `which mpiexec` ]; then
     PYTHONDONTWRITEBYTECODE=1 \
     mpiexec --allow-run-as-root \
+      -x OMP_NUM_THREADS=1 \
       --mca opal_warn_on_missing_libcuda 0 \
       --mca orte_base_help_aggregate 0 \
       -n 1 ${PROGRAM[@]} --junitxml=$PLUGIN_MPI_TEST_XML : \
@@ -68,6 +69,7 @@ PROGRAM=(`which python` -m mpi4py -m pytest \
 if [ -x `which mpiexec` ]; then
     PYTHONDONTWRITEBYTECODE=1 \
     mpiexec --allow-run-as-root \
+      -x OMP_NUM_THREADS=1 \
       --mca opal_warn_on_missing_libcuda 0 \
       --mca orte_base_help_aggregate 0 \
       -n 1 ${PROGRAM[@]} --junitxml=$PLUGIN_MPI_TEST_XML : \
index b0b623cc52e473798ad939a349439a4e1b98d5ce..e7512e13e85072725ecdaaa28ddd63ccc0072f2d 100644 (file)
@@ -52,6 +52,7 @@ PROGRAM=(`which python` -m mpi4py -m pytest \
 if [ -x `which mpiexec` ]; then
     PYTHONDONTWRITEBYTECODE=1 \
     mpiexec --allow-run-as-root \
+      -x OMP_NUM_THREADS=1 \
       --mca opal_warn_on_missing_libcuda 0 \
       --mca orte_base_help_aggregate 0 \
       -n 1 ${PROGRAM[@]} --junitxml=$PLUGIN_MPI_TEST_XML : \
@@ -72,6 +73,7 @@ PROGRAM=(`which python` -m mpi4py -m pytest \
 if [ -x `which mpiexec` ]; then
     PYTHONDONTWRITEBYTECODE=1 \
     mpiexec --allow-run-as-root \
+      -x OMP_NUM_THREADS=1 \
       --mca opal_warn_on_missing_libcuda 0 \
       --mca orte_base_help_aggregate 0 \
       -n 1 ${PROGRAM[@]} --junitxml=$PLUGIN_MPI_TEST_XML : \
index f7bf6eaac261fb4a85437729a55aa89e43f3bebe..e82ffe71d924471fbeeaaa4c9e615d14d9b77265 100644 (file)
@@ -52,6 +52,7 @@ pushd python_packaging/sample_restraint
   if [ -x `which mpiexec` ]; then
       PYTHONDONTWRITEBYTECODE=1 \
       mpiexec --allow-run-as-root \
+        -x OMP_NUM_THREADS=1 \
         --mca opal_warn_on_missing_libcuda 0 \
         --mca orte_base_help_aggregate 0 \
         -n 1 ${PROGRAM[@]} --junitxml=$PLUGIN_MPI_TEST_XML : \
index ab9b0d2d1962d7dfdc0e2841b3d126828b76a6a9..8de02b527024b95a3bab59b4c2587e3fea35943a 100644 (file)
@@ -78,6 +78,7 @@ pushd python_packaging/sample_restraint
   if [ -x `which mpiexec` ]; then
       PYTHONDONTWRITEBYTECODE=1 \
       mpiexec --allow-run-as-root \
+        -x OMP_NUM_THREADS=1 \
         --mca opal_warn_on_missing_libcuda 0 \
         --mca orte_base_help_aggregate 0 \
         -n 1 ${PROGRAM[@]} --junitxml=$PLUGIN_MPI_TEST_XML : \
index 682a951e588bee7ba2d4f59e4f07c0cbfafcfc5f..a9801ec3898ef75c67693a751a99f0837f36854a 100644 (file)
@@ -13,6 +13,7 @@
     KUBERNETES_CPU_LIMIT: 2
     KUBERNETES_CPU_REQUEST: 2
     KUBERNETES_MEMORY_LIMIT: 2Gi
+    KUBERNETES_MEMORY_REQUEST: 2Gi
     PY_UNIT_TEST_XML: $CI_PROJECT_DIR/py-JUnitTestResults.xml
     PY_MPI_UNIT_TEST_XML: $CI_PROJECT_DIR/py-mpi-JUnitTestResults.xml
     PY_ACCEPTANCE_TEST_XML: $CI_PROJECT_DIR/gmxapi-acceptance-JUnitTestResults.xml
@@ -20,7 +21,7 @@
     EXTRA_INSTALLS: "curl libbz2-dev libffi-dev liblzma-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev llvm python-openssl tk-dev zlib1g-dev"
   script:
     - source $INSTALL_DIR/bin/GMXRC
-    - source $VENVPATH/bin/activate && INSTALL_DIR=$PWD/$INSTALL_DIR bash admin/ci-scripts/build-and-test-py-gmxapi-0.1.sh
+    - source $VENVPATH/bin/activate && INSTALL_DIR=$PWD/$INSTALL_DIR OMP_NUM_THREADS=1 bash admin/ci-scripts/build-and-test-py-gmxapi-0.1.sh
   # Note that the XML output is concatenated when multiple reports are produced
   # by a single job. If this presents problems, we may have to split the tests
   # into multiple jobs. In particular, test names will appear once for MPI and
@@ -81,13 +82,17 @@ gmxapi-0.1:clang-8:py-3.8.2:
   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
   stage: test
   variables:
+    KUBERNETES_CPU_LIMIT: 2
+    KUBERNETES_CPU_REQUEST: 2
+    KUBERNETES_MEMORY_LIMIT: 2Gi
+    KUBERNETES_MEMORY_REQUEST: 2Gi
     PY_UNIT_TEST_XML: $CI_PROJECT_DIR/py-JUnitTestResults.xml
     PY_MPI_UNIT_TEST_XML: $CI_PROJECT_DIR/py-mpi-JUnitTestResults.xml
     PY_ACCEPTANCE_TEST_XML: $CI_PROJECT_DIR/gmxapi-acceptance-JUnitTestResults.xml
     PY_MPI_ACCEPTANCE_TEST_XML: $CI_PROJECT_DIR/gmxapi-acceptance-mpi-JUnitTestResults.xml
   script:
     - source $INSTALL_DIR/bin/GMXRC
-    - source $VENVPATH/bin/activate && INSTALL_DIR=$PWD/$INSTALL_DIR bash admin/ci-scripts/build-and-test-py-gmxapi-0.2.sh
+    - source $VENVPATH/bin/activate && INSTALL_DIR=$PWD/$INSTALL_DIR OMP_NUM_THREADS=1 bash admin/ci-scripts/build-and-test-py-gmxapi-0.2.sh
   artifacts:
     reports:
       junit:
index 7fd4fc9b2a181bf3df469800a24b2cbac38ec20c..f7c7f60efb0c9c85d834ede7e3caf3da990953ff 100644 (file)
     KUBERNETES_CPU_LIMIT: 2
     KUBERNETES_CPU_REQUEST: 2
     KUBERNETES_MEMORY_LIMIT: 2Gi
+    KUBERNETES_MEMORY_REQUEST: 2Gi
     PLUGIN_TEST_XML: $CI_PROJECT_DIR/py-JUnitTestResults.xml
     PLUGIN_MPI_TEST_XML: $CI_PROJECT_DIR/py-mpi-JUnitTestResults.xml
     EXTRA_INSTALLS: "curl libbz2-dev libffi-dev liblzma-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev llvm python-openssl tk-dev zlib1g-dev"
   script:
     - source $INSTALL_DIR/bin/GMXRC
-    - source $VENVPATH/bin/activate && INSTALL_DIR=$PWD/$INSTALL_DIR bash admin/ci-scripts/build-and-test-sample_restraint-2020.sh
+    - source $VENVPATH/bin/activate && INSTALL_DIR=$PWD/$INSTALL_DIR OMP_NUM_THREADS=1 bash admin/ci-scripts/build-and-test-sample_restraint-2020.sh
   artifacts:
     reports:
       junit:
index 1c99c8fb97dc51c3d182505651c311fd192e288d..3488feed78eebe1ac8c2515b2cd27506ca030bc8 100644 (file)
@@ -6,12 +6,16 @@
   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
   stage: test
   variables:
+    KUBERNETES_CPU_LIMIT: 2
+    KUBERNETES_CPU_REQUEST: 2
+    KUBERNETES_MEMORY_LIMIT: 2Gi
+    KUBERNETES_MEMORY_REQUEST: 2Gi
     PLUGIN_TEST_XML: $CI_PROJECT_DIR/py-JUnitTestResults.xml
     PLUGIN_MPI_TEST_XML: $CI_PROJECT_DIR/py-mpi-JUnitTestResults.xml
     EXTRA_INSTALLS: "curl libbz2-dev libffi-dev liblzma-dev libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev llvm python-openssl tk-dev zlib1g-dev"
   script:
     - source $INSTALL_DIR/bin/GMXRC
-    - source $VENVPATH/bin/activate && INSTALL_DIR=$PWD/$INSTALL_DIR bash admin/ci-scripts/build-and-test-sample_restraint-2020.sh
+    - source $VENVPATH/bin/activate && INSTALL_DIR=$PWD/$INSTALL_DIR OMP_NUM_THREADS=1 bash admin/ci-scripts/build-and-test-sample_restraint-2020.sh
   artifacts:
     reports:
       junit: