Reintroduce CI job descriptions
authorAndrey Alekseenko <al42and@gmail.com>
Thu, 28 Jan 2021 08:48:27 +0000 (08:48 +0000)
committerPaul Bauer <paul.bauer.q@gmail.com>
Thu, 28 Jan 2021 08:48:27 +0000 (08:48 +0000)
GitLab does not allow adding custom fields to YAML files, so comments
were used. I tried to make the descriptions grep'able (not for the
wqhole matrix, but at least for individual settings), human-readable,
and possibly machine-parseable at the same time.

22 files changed:
.gitlab-ci.yml
admin/gitlab-ci/gromacs.gitlab-ci.yml
admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.0.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.1-release.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.clang-8.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-mpi.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-release.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.clang-ASAN.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.clang-TSAN.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.clang-UBSAN.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.clang-static-analyzer.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.gcc-10.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.gcc-7-cuda-10.2.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0-release.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.gcc-9-release.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.icc-2021.1.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl-release.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-sycl.gitlab-ci.yml [new file with mode: 0644]
docs/install-guide/index.rst

index ee10cc660d7d4d405288c21090725d6811f9588a..033b5eef4509306cc3d9dda19c6d5789bf80ea6e 100644 (file)
@@ -51,6 +51,7 @@ include:
   # To do: Consider expanding matrix here to improve transparency and reduce file sizes.
   # E.g. '/admin/gitlab-ci/matrix/clang-8.gitlab-ci.yml
   - local: '/admin/gitlab-ci/gromacs.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml'
   # Repository cleanliness. Source tidiness, linting, and policy compliance.
   - local: '/admin/gitlab-ci/lint.gitlab-ci.yml'
   # Web page and manual.
index 582be7e014e1b42975c6a9f44199a8000722be8c..b2e2dd56e78080b982ed3a17201f1904a7a2f635 100644 (file)
@@ -1,7 +1,19 @@
-# Build, test, and install variously configured GROMACS installations.
+# Test goal: Initial build with close-to-default settings that always needs to pass before follow-up CI stages run
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: Clang
+#   Build type: Debug
+#   GPU: no
+#   SIMD: no
+#   Scope: configure, build, unit tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Compiler: Clang 9
+#   FFT: FFTW3
+#   Parallelism nt/ntomp: 4/2
 
-# Initial build that always needs to pass before follow-up stages run
 simple-build:
+  # Test scope: configure, build, unit tests
   extends:
     - .variables:default
     - .use-ccache
@@ -77,1260 +89,3 @@ simple-build:
       - $BUILD_DIR/*log
     when: always
     expire_in: 1 week
-
-# Jobs running in first pre-build stage
-
-.gromacs:base:configure:
-  extends:
-    - .variables:default
-  stage: configure-build
-  cache: {}
-  variables:
-    KUBERNETES_CPU_LIMIT: 1
-    KUBERNETES_CPU_REQUEST: 1
-    KUBERNETES_MEMORY_REQUEST: 2Gi
-    CMAKE_COMPILER_SCRIPT: ""
-    CMAKE_EXTRA_OPTIONS: ""
-    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
-    CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
-    CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
-    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
-    CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
-  script:
-    - CMAKE=${CMAKE:-$(which cmake)}
-    - echo $CMAKE_COMPILER_SCRIPT
-    - echo $CMAKE_EXTRA_OPTIONS
-    - echo $CMAKE_SIMD_OPTIONS
-    - echo $CMAKE_GPU_OPTIONS
-    - echo $CMAKE_MPI_OPTIONS
-    - echo $CMAKE_PRECISION_OPTIONS
-    - echo $CMAKE_BUILD_TYPE_OPTIONS
-    - echo $CMAKE_GMXAPI_OPTIONS
-    - if [[ -d $BUILD_DIR ]] ; then
-      rm -rf $BUILD_DIR && mkdir $BUILD_DIR ;
-      else
-      echo "Preparing new build directory" ;
-      mkdir $BUILD_DIR ;
-      fi
-    - cd $BUILD_DIR
-    - $CMAKE ..
-      -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-      $CMAKE_COMPILER_SCRIPT
-      $CMAKE_EXTRA_OPTIONS
-      $CMAKE_SIMD_OPTIONS
-      $CMAKE_MPI_OPTIONS
-      $CMAKE_PRECISION_OPTIONS
-      $CMAKE_BUILD_TYPE_OPTIONS
-      $CMAKE_GPU_OPTIONS
-      $CMAKE_GMXAPI_OPTIONS
-      -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
-      2>&1 | tee cmakeLog.log
-    - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
-    - if [ -s cmakeErrors.log  ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
-    - cd ..
-  artifacts:
-    when: always
-    paths:
-      - $BUILD_DIR
-
-.gromacs:base:release:configure:
-  extends:
-    - .variables:default
-  stage: release-configure
-  cache: {}
-  variables:
-    KUBERNETES_CPU_LIMIT: 1
-    KUBERNETES_CPU_REQUEST: 1
-    KUBERNETES_MEMORY_REQUEST: 2Gi
-    CMAKE_COMPILER_SCRIPT: ""
-    CMAKE_EXTRA_OPTIONS: ""
-    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
-    CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
-    CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
-    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
-    CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
-    CMAKE_REGRESSIONTEST_OPTIONS: "-DREGRESSIONTEST_PATH=../\\$RELEASE_REGRESSIONTESTS"
-    RELEASE_BUILD_DIR: release-builds
-    RELEASE_SOURCE: release-source-from-tarball
-    RELEASE_REGRESSIONTESTS: release-regressiontests-from-tarball
-  script:
-    - CMAKE=${CMAKE:-$(which cmake)}
-    - VERSION=`cat version.json |
-      python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
-    - if [[ $GROMACS_RELEASE != "true" ]] ; then
-      VERSION=$VERSION-dev ;
-      fi
-    - SOURCENAME=gromacs-$VERSION
-    - SOURCETARBALL=$SOURCENAME.tar.gz
-    - REGTESTNAME=regressiontests-$VERSION
-    - REGTESTTARBALL=$REGTESTNAME.tar.gz
-    - echo "$SOURCETARBALL"
-    - echo "$REGTESTTARBALL"
-    - RELEASE_TARBALLS=release-tarballs
-    - rm -rf $RELEASE_TARBALLS $RELEASE_SOURCE $RELEASE_REGRESSIONTESTS && mkdir $RELEASE_TARBALLS
-    - mv $SOURCETARBALL $RELEASE_TARBALLS
-    - mv $REGTESTTARBALL $RELEASE_TARBALLS
-    - cd $RELEASE_TARBALLS
-    # We rename the source and regressiontest directories
-    # to have names for them that don't change for different versions.
-    - tar -xf $SOURCETARBALL
-    - mv $SOURCENAME ../$RELEASE_SOURCE
-    - tar -xf $REGTESTTARBALL
-    - mv $REGTESTNAME ../$RELEASE_REGRESSIONTESTS
-    - rm $SOURCETARBALL $REGTESTTARBALL
-    - cd ..
-    - echo $CMAKE_COMPILER_SCRIPT
-    - echo $CMAKE_EXTRA_OPTIONS
-    - echo $CMAKE_SIMD_OPTIONS
-    - echo $CMAKE_GPU_OPTIONS
-    - echo $CMAKE_MPI_OPTIONS
-    - echo $CMAKE_PRECISION_OPTIONS
-    - echo $CMAKE_BUILD_TYPE_OPTIONS
-    - echo $CMAKE_GMXAPI_OPTIONS
-    - if [[ -d $RELEASE_BUILD_DIR ]] ; then
-      echo "Cleaning up build directory" ;
-      rm -rf $RELEASE_BUILD_DIR && mkdir $RELEASE_BUILD_DIR ;
-      else
-      echo "Preparing new build directory" ;
-      mkdir $RELEASE_BUILD_DIR ;
-      fi
-    - cd $RELEASE_BUILD_DIR
-    - cmake ../$RELEASE_SOURCE/
-      -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-      $CMAKE_COMPILER_SCRIPT
-      $CMAKE_EXTRA_OPTIONS
-      $CMAKE_SIMD_OPTIONS
-      $CMAKE_MPI_OPTIONS
-      $CMAKE_PRECISION_OPTIONS
-      $CMAKE_BUILD_TYPE_OPTIONS
-      $CMAKE_GPU_OPTIONS
-      $CMAKE_GMXAPI_OPTIONS
-      $CMAKE_REGRESSIONTEST_OPTIONS
-      -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR
-      2>&1 | tee cmakeLog.log
-    - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
-    - if [ -s cmakeErrors.log  ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
-    - cd ..
-  artifacts:
-    when: always
-    paths:
-      - $RELEASE_BUILD_DIR
-      - $RELEASE_REGRESSIONTESTS
-      - $RELEASE_SOURCE
-
-# Templates for configuration stage
-
-gromacs:gcc-10:configure:
-  extends:
-    - .gromacs:base:configure
-    - .use-gcc:base
-    - .use-opencl
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
-    CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
-    COMPILER_MAJOR_VERSION: 10
-
-gromacs:clang-8-cuda-10.0:configure:
-  extends:
-    - .gromacs:base:configure
-    - .use-clang:base
-    - .use-cuda
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    CMAKE_SIMD_OPTIONS: "-DGMX_USE_SIMD_KERNELS=off"
-    CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_CUDA=ON"
-    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
-    COMPILER_MAJOR_VERSION: 8
-
-gromacs:gcc-7-cuda-10.2:configure:
-  extends:
-    - .gromacs:base:configure
-    - .use-gcc:base
-    - .use-cuda
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
-    COMPILER_MAJOR_VERSION: 7
-
-gromacs:gcc-8-cuda-11.0:configureMPI:
-  extends:
-    - .gromacs:base:configure
-    - .use-gcc:base
-    - .use-cuda
-    - .use-mpi
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
-    COMPILER_MAJOR_VERSION: 8
-
-gromacs:clang-TSAN:configure:
-  extends:
-    - .gromacs:base:configure
-    - .use-clang:base
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    COMPILER_MAJOR_VERSION: 8
-    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
-
-gromacs:icc-2021.1:configure:
-  extends:
-   - .gromacs:base:configure
-   - .use-icc-oneapi:base
-   - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-    COMPILER_MAJOR_VERSION: 2021
-
-gromacs:clang-8:configure:
-  extends:
-    - .gromacs:base:configure
-    - .use-clang:base
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
-  variables:
-    COMPILER_MAJOR_VERSION: 8
-
-gromacs:clang-9-mpi:configure:
-  extends:
-   - .gromacs:base:configure
-   - .use-clang:base
-   - .use-mpi
-   - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    COMPILER_MAJOR_VERSION: 9
-    CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
-
-gromacs:clang-static-analyzer:configure:
-  extends:
-    - .gromacs:base:configure
-    - .use-clang:base
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    CMAKE_COMPILER_SCRIPT: "-DCMAKE_CXX_COMPILER=/usr/local/libexec/c++-analyzer -DCMAKE_C_COMPILER=gcc"
-    CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_ANALYZER=ON -DGMX_OPENMP=OFF -DGMX_USE_RDTSCP=OFF -DGMX_FFT_LIBRARY=fftpack -DGMX_DEVELOPER_BUILD=ON"
-    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
-
-gromacs:clang-ASAN:configure:
-  extends:
-    - .gromacs:base:configure
-    - .use-clang:base
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    COMPILER_MAJOR_VERSION: 8
-    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
-
-gromacs:oneapi-2021.1.1-opencl:configure:
-  extends:
-   - .gromacs:base:configure
-   - .use-oneapi:base
-   - .use-opencl
-   - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-    COMPILER_MAJOR_VERSION: 2021
-
-gromacs:oneapi-2021.1.1-sycl:configure:
-  extends:
-   - .gromacs:base:configure
-   - .use-oneapi:base
-   - .use-sycl
-   - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-    COMPILER_MAJOR_VERSION: 2021
-
-gromacs:clang-UBSAN:configure:
-  extends:
-    - .gromacs:base:configure
-    - .use-clang:base
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    COMPILER_MAJOR_VERSION: 8
-    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN"
-
-gromacs:gcc-8-cuda-11.0:release:configure:
-  extends:
-    - .gromacs:base:release:configure
-    - .use-gcc:base
-    - .use-mpi
-    - .use-cuda
-    - .rules:nightly-only-for-release
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    COMPILER_MAJOR_VERSION: 8
-    RELEASE_BUILD_DIR: release-builds-gcc
-    CMAKE_EXTRA_OPTIONS: "-DGMX_BUILD_MDRUN_ONLY=ON"
-    CMAKE_BUILD_TYPE_OPTIONS : "-DCMAKE_BUILD_TYPE=RelWithAssert"
-    CMAKE_REGRESSIONTEST_OPTIONS: ""
-  dependencies:
-    - archive:package
-    - regressiontests:package
-    - prepare-release-version
-
-gromacs:gcc-9:release:configure:
-  extends:
-    - .gromacs:base:release:configure
-    - .use-gcc:base
-    - .use-opencl
-    - .rules:nightly-only-for-release
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    COMPILER_MAJOR_VERSION: 9
-    RELEASE_BUILD_DIR: release-builds-gcc
-    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
-  dependencies:
-    - archive:package
-    - regressiontests:package
-    - prepare-release-version
-
-gromacs:clang-9:release:configure:
-  extends:
-    - .gromacs:base:release:configure
-    - .use-clang:base
-    - .use-mpi
-    - .rules:nightly-only-for-release
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    COMPILER_MAJOR_VERSION: 9
-    RELEASE_BUILD_DIR: release-builds-clang
-    CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=ON"
-    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
-  dependencies:
-    - archive:package
-    - regressiontests:package
-    - prepare-release-version
-
-gromacs:clang-8-cuda-10.1:release:configure:
-  extends:
-    - .gromacs:base:release:configure
-    - .use-clang:base
-    - .use-cuda
-    - .rules:nightly-only-for-release
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1
-  variables:
-    COMPILER_MAJOR_VERSION: 8
-    RELEASE_BUILD_DIR: release-builds-clang
-    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
-
-gromacs:oneapi-2021.1.1-opencl:release:configure:
-  extends:
-   - .gromacs:base:release:configure
-   - .use-oneapi:base
-   - .use-opencl
-   - .rules:nightly-only-for-release
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-    COMPILER_MAJOR_VERSION: 2021
-    RELEASE_BUILD_DIR: release-builds-oneapi
-
-# Jobs running during build stage
-
-.gromacs:base:build:
-  stage: build
-  script:
-    - CMAKE=${CMAKE:-$(which cmake)}
-    - cd $BUILD_DIR
-    - $CMAKE --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
-    - $CMAKE --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
-    - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
-      | grep -v "CMake" | tee buildErrors.log || true
-    - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
-    - $CMAKE --build . --target install 2>&1 | tee installBuildLogFile.log
-    - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
-    - for file in `find . -mindepth 1 -name "*.o" ! -type l` ; do echo $file ; rm $file ; done 2>&1 > remove-build-objects.log
-    - cd ..
-  artifacts:
-    when: always
-    paths:
-      - $BUILD_DIR
-      - $INSTALL_DIR/
-
-.gromacs:static-analyzer-build:
-  stage: build
-  script:
-    - CMAKE=${CMAKE:-$(which cmake)}
-    - cd $BUILD_DIR
-    - scan-build -o scan_html $CMAKE --build . -- -j8 2>&1 | tee buildLogFile.log
-    - awk '/warning/,/warning.*generated|^$/' buildLogFile.log
-      | grep -v "CMake" | tee buildErrors.log || true
-    - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true
-    - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
-    - cd ..
-  artifacts:
-    when: always
-    paths:
-      - $BUILD_DIR/scan_html
-
-gromacs:gcc-10:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .before_script:default
-    - .use-ccache
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-  needs:
-    - job: gromacs:gcc-10:configure
-
-gromacs:clang-8-cuda-10.0:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .use-clang:base
-    - .use-ccache
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-  needs:
-    - job: gromacs:clang-8-cuda-10.0:configure
-
-gromacs:gcc-7-cuda-10.2:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .before_script:default
-    - .use-ccache
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-  needs:
-    - job: gromacs:gcc-7-cuda-10.2:configure
-
-gromacs:gcc-8-cuda-11.0:buildMPI:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .before_script:default
-    - .use-ccache
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-  needs:
-    - job: gromacs:gcc-8-cuda-11.0:configureMPI
-
-gromacs:clang-TSAN:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .use-clang:base
-    - .use-ccache
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-  needs:
-    - job: gromacs:clang-TSAN:configure
-
-gromacs:icc-2021.1:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .use-icc-oneapi:base
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-  needs:
-    - job: gromacs:icc-2021.1:configure
-
-gromacs:clang-ASAN:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .use-clang:base
-    - .use-ccache
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-ASAN:configure
-
-gromacs:clang-UBSAN:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .use-clang:base
-    - .use-ccache
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-UBSAN:configure
-
-gromacs:clang-static-analyzer:build:
-  extends:
-    - .variables:default
-    - .gromacs:static-analyzer-build
-    - .use-clang:base
-    - .use-ccache
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-static-analyzer:configure
-
-gromacs:clang-8:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .before_script:default
-    - .use-ccache
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
-  needs:
-    - job: gromacs:clang-8:configure
-
-gromacs:oneapi-2021.1.1-opencl:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .use-ccache
-    - .use-oneapi:base
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-  needs:
-    - job: gromacs:oneapi-2021.1.1-opencl:configure
-
-gromacs:oneapi-2021.1.1-sycl:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .use-ccache
-    - .use-oneapi:base
-    - .rules:merge-and-post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-  needs:
-    - job: gromacs:oneapi-2021.1.1-sycl:configure
-
-gromacs:clang-9-mpi:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .before_script:default
-    - .use-ccache
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-  needs:
-    - job: gromacs:clang-9-mpi:configure
-
-gromacs:gcc-8-cuda-11.0:release:build:
-  extends:
-    - .variables:default  
-    - .gromacs:base:build
-    - .before_script:default
-    - .use-ccache
-    - .rules:nightly-only-for-release
-  stage: release-build
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    BUILD_DIR: release-builds-gcc
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
-  needs:
-    - job: gromacs:gcc-8-cuda-11.0:release:configure
-
-gromacs:gcc-9:release:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .before_script:default
-    - .use-ccache
-    - .rules:nightly-only-for-release
-  stage: release-build
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    BUILD_DIR: release-builds-gcc
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9
-  needs:
-    - job: gromacs:gcc-9:release:configure
-
-gromacs:clang-9:release:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .before_script:default
-    - .use-ccache
-    - .rules:nightly-only-for-release
-  stage: release-build
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    BUILD_DIR: release-builds-clang
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
-  needs:
-    - job: gromacs:clang-9:release:configure
-
-gromacs:clang-8-cuda-10.1:release:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .before_script:default
-    - .use-ccache
-    - .rules:nightly-only-for-release
-  stage: release-build
-  variables:
-    BUILD_DIR: release-builds-clang
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1
-  needs:
-    - job: gromacs:clang-8-cuda-10.1:release:configure
-
-gromacs:oneapi-2021.1.1-opencl:release:build:
-  extends:
-    - .variables:default
-    - .gromacs:base:build
-    - .use-oneapi:base
-    - .use-opencl
-    - .use-ccache
-    - .rules:nightly-only-for-release
-  stage: release-build
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-    BUILD_DIR: release-builds-oneapi
-    COMPILER_MAJOR_VERSION: 2021
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  needs:
-    - job: gromacs:oneapi-2021.1.1-opencl:release:configure
-
-# Jobs running during test stage
-
-.gromacs:base:test:
-  extends:
-    - .variables:default
-  stage: test
-  cache: {}
-  retry:
-    max: 1
-  variables:
-    CTEST_RUN_MODE: "ExperimentalTest"
-  script:
-    - CMAKE=${CMAKE:-$(which cmake)}
-    - cd $BUILD_DIR
-    - export UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1:suppressions=$CI_PROJECT_DIR/admin/ubsan-suppressions.txt
-    # Needed to run MPI enabled code in the docker images, until we set up different users
-    - export OMPI_ALLOW_RUN_AS_ROOT=1
-    - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
-    - export ASAN_OPTIONS="check_initialization_order=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true:detect_stack_use_after_return=true"
-    # If $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES is not set and we have GPUs, set it
-    - if [ -z $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES ] && [ -n $KUBERNETES_EXTENDED_RESOURCE_NAME ] ; then
-      if grep -q '/gpu$' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
-      echo "export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES=\"$KUBERNETES_EXTENDED_RESOURCE_LIMIT\"";
-      export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES="$KUBERNETES_EXTENDED_RESOURCE_LIMIT";
-      fi
-      fi
-    - if grep -qF 'nvidia.com/gpu' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
-      nvidia-smi || true;
-      fi
-    - ctest -D $CTEST_RUN_MODE --output-on-failure | tee ctestLog.log || true
-    - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
-      ctestLog.log | tee ctestErrors.log
-    - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/*.xml > JUnitTestResults.xml
-    - if [ -s ctestErrors.log ] ; then
-      echo "Error during running ctest";
-      exit 1;
-      fi
-    - cd ..
-  artifacts:
-    reports:
-      junit: $BUILD_DIR/JUnitTestResults.xml
-    paths:
-      - $BUILD_DIR/Testing
-      - $BUILD_DIR/tests
-    when: always
-    expire_in: 1 week
-
-.gromacs:base:regressiontest:
-  extends:
-    - .variables:default
-  variables:
-    KUBERNETES_CPU_LIMIT: 4
-    KUBERNETES_CPU_REQUEST: 4
-    KUBERNETES_MEMORY_REQUEST: 4Gi
-    REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
-    REGRESSIONTEST_OMP_RANK_NUMBER: 2
-    REGRESSIONTEST_PME_RANK_NUMBER: 1
-    REGRESSIONTEST_MPI_RUN_COMMAND: ""
-    REGRESSIONTEST_DOUBLE: ""
-    REGRESSIONTEST_PARALLEL: "-nt"
-  stage: test
-  cache: {}
-  retry:
-    max: 1
-  script:
-    - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0"
-    - export ASAN_OPTIONS="check_initialization_order=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true:detect_stack_use_after_return=true"
-    # Needed to run MPI enabled code in the docker images, until we set up different users
-    - export OMPI_ALLOW_RUN_AS_ROOT=1
-    - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
-    - tar xzf gmx-regressiontests.tar.gz
-    - source $INSTALL_DIR/bin/GMXRC
-    - cd regressiontests
-    - perl gmxtest.pl $REGRESSIONTEST_PARALLEL $REGRESSIONTEST_TOTAL_RANK_NUMBER -ntomp $REGRESSIONTEST_OMP_RANK_NUMBER -npme $REGRESSIONTEST_PME_RANK_NUMBER $REGRESSIONTEST_DOUBLE $REGRESSIONTEST_MPI_RUN_COMMAND -xml all
-  artifacts:
-    paths:
-      - regressiontests/gmxtest.xml
-    when: always
-    expire_in: 1 week
-
-gromacs:gcc-10:test:
-  extends:
-    - .gromacs:base:test
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-    LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-10:build
-
-gromacs:clang-8-cuda-10.0:test:
-  extends:
-    - .gromacs:base:test
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-8-cuda-10.0:build
-
-gromacs:gcc-7-cuda-10.2:test:
-  extends:
-    - .gromacs:base:test
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-7-cuda-10.2:build
-
-gromacs:gcc-8-cuda-10.2:test-gpucommupd:
-  extends:
-    - .gromacs:base:test
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-    GMX_GPU_DD_COMMS: 1
-    GMX_GPU_PME_PP_COMMS: 1
-    GMX_FORCE_UPDATE_DEFAULT_GPU: 1
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-7-cuda-10.2:build
-
-gromacs:clang-8:test:
-  extends:
-    - .gromacs:base:test
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
-  needs:
-    - job: gromacs:clang-8:build
-
-gromacs:clang-TSAN:test:
-  extends:
-    - .gromacs:base:test
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-  needs:
-    - job: gromacs:clang-TSAN:build
-
-gromacs:icc-2021.1:test:
-  extends:
-    - .gromacs:base:test
-    - .use-icc-oneapi:base
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-  needs:
-    - job: gromacs:icc-2021.1:build
-
-gromacs:clang-ASAN:test:
-  extends:
-    - .gromacs:base:test
-    - .use-clang:base
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    CTEST_RUN_MODE: "ExperimentalMemCheck"
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-ASAN:build
-
-gromacs:clang-UBSAN:test:
-  extends:
-    - .gromacs:base:test
-    - .use-clang:base
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-UBSAN:build
-
-gromacs:oneapi-2021.1.1-opencl:test:
-  extends:
-    - .gromacs:base:test
-    - .use-oneapi:base
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-  needs:
-    - job: gromacs:oneapi-2021.1.1-opencl:build
-
-gromacs:oneapi-2021.1.1-sycl:test:
-  extends:
-    - .gromacs:base:test
-    - .use-oneapi:base
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-  needs:
-    - job: gromacs:oneapi-2021.1.1-sycl:build
-
-gromacs:clang-9-mpi:test:
-  extends:
-    - .gromacs:base:test
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-9-mpi:build
-
-gromacs:gcc-10:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-    REGRESSIONTEST_PME_RANK_NUMBER: 0
-    REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
-    REGRESSIONTEST_OMP_RANK_NUMBER: 1
-    LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-10:build
-    - job: regressiontests:prepare
-
-gromacs:clang-8-cuda-10.0:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-    REGRESSIONTEST_PME_RANK_NUMBER: 0
-    REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
-    REGRESSIONTEST_OMP_RANK_NUMBER: 1
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-8-cuda-10.0:build
-    - job: regressiontests:prepare
-
-
-gromacs:gcc-7-cuda-10.2:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-    REGRESSIONTEST_PME_RANK_NUMBER: 0
-    REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
-    REGRESSIONTEST_OMP_RANK_NUMBER: 1
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-7-cuda-10.2:build
-    - job: regressiontests:prepare
-
-gromacs:gcc-7-cuda-10.2:regressiontest-gpucommupd-tMPI:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
-    REGRESSIONTEST_PME_RANK_NUMBER: 0
-    REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
-    REGRESSIONTEST_OMP_RANK_NUMBER: 1
-    GMX_GPU_DD_COMMS: 1
-    GMX_GPU_PME_PP_COMMS: 1
-    GMX_FORCE_UPDATE_DEFAULT_GPU: 1
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-7-cuda-10.2:build
-    - job: regressiontests:prepare
-  artifacts:
-    paths:
-      - regressiontests
-    when: always
-    expire_in: 1 week
-
-gromacs:gcc-7-cuda-10.2:regressiontest-upd-tMPI:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
-  variables:
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
-    REGRESSIONTEST_PME_RANK_NUMBER: 0
-    REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
-    REGRESSIONTEST_OMP_RANK_NUMBER: 1
-    GMX_FORCE_UPDATE_DEFAULT_GPU: 1
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-7-cuda-10.2:build
-    - job: regressiontests:prepare
-  artifacts:
-    paths:
-      - regressiontests
-    when: always
-    expire_in: 1 week
-
-gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-MPI:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
-    REGRESSIONTEST_PME_RANK_NUMBER: 0
-    REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
-    REGRESSIONTEST_OMP_RANK_NUMBER: 1
-    REGRESSIONTEST_PARALLEL: "-np"
-    GMX_GPU_DD_COMMS: 1  
-    GMX_GPU_PME_PP_COMMS: 1
-    GMX_FORCE_UPDATE_DEFAULT_GPU: 1
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-8-cuda-11.0:buildMPI
-    - job: regressiontests:prepare
-  artifacts:
-    paths:
-      - regressiontests
-    when: always
-    expire_in: 1 week
-
-gromacs:clang-8:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-8:build
-    - job: regressiontests:prepare
-
-gromacs:clang-TSAN:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-TSAN:build
-    - job: regressiontests:prepare
-
-gromacs:icc-2021.1:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .use-icc-oneapi:base
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-  needs:
-    - job: gromacs:icc-2021.1:build
-    - job: regressiontests:prepare
-
-gromacs:clang-ASAN:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .use-clang:base
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-ASAN:build
-    - job: regressiontests:prepare
-
-gromacs:clang-9:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    REGRESSIONTEST_DOUBLE: "-double"
-    REGRESSIONTEST_PARALLEL: "-np"
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-9-mpi:build
-    - job: regressiontests:prepare
-
-gromacs:oneapi-2021.1.1-opencl:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .use-oneapi:base
-    - .rules:merge-requests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-  needs:
-    - job: gromacs:oneapi-2021.1.1-opencl:build
-    - job: regressiontests:prepare
-
-gromacs:oneapi-2021.1.1-sycl:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .use-oneapi:base
-    - .rules:post-merge-acceptance
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-  needs:
-    - job: gromacs:oneapi-2021.1.1-sycl:build
-    - job: regressiontests:prepare
-
-gromacs:gcc-8-cuda-11.0:release:test:
-  extends:
-    - .gromacs:base:test
-    - .rules:nightly-only-for-release
-  stage: release-tests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-    BUILD_DIR: release-builds-gcc
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-8-cuda-11.0:release:configure
-    - job: gromacs:gcc-8-cuda-11.0:release:build
-
-gromacs:gcc-9:release:test:
-  extends:
-    - .gromacs:base:test
-    - .rules:nightly-only-for-release
-  stage: release-tests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    BUILD_DIR: release-builds-gcc
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-    LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-9:release:configure
-    - job: gromacs:gcc-9:release:build
-
-gromacs:clang-9:release:test:
-  extends:
-    - .gromacs:base:test
-    - .rules:nightly-only-for-release
-  stage: release-tests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    BUILD_DIR: release-builds-clang
-  needs:
-    - job: gromacs:clang-9:release:configure
-    - job: gromacs:clang-9:release:build
-
-gromacs:clang-8-cuda-10.1:release:test:
-  extends:
-    - .gromacs:base:test
-    - .rules:nightly-only-for-release
-  stage: release-tests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1
-  variables:
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-    BUILD_DIR: release-builds-clang
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-8-cuda-10.1:release:configure
-    - job: gromacs:clang-8-cuda-10.1:release:build
-
-gromacs:oneapi-2021.1.1-opencl:release:test:
-  extends:
-    - .gromacs:base:test
-    - .use-oneapi:base
-    - .rules:nightly-only-for-release
-  stage: release-tests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-    BUILD_DIR: release-builds-oneapi
-  needs:
-    - job: gromacs:oneapi-2021.1.1-opencl:release:configure
-    - job: gromacs:oneapi-2021.1.1-opencl:release:build
-
-gromacs:gcc-9:release:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:nightly-only-for-release
-  stage: release-tests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9
-  variables:
-    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
-    BUILD_DIR: release-builds-gcc
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-    LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:gcc-9:release:build
-    - job: regressiontests:package
-
-gromacs:clang-9:release:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:nightly-only-for-release
-  stage: release-tests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
-  variables:
-    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
-    BUILD_DIR: release-builds-clang
-    REGRESSIONTEST_DOUBLE: "-double"
-    REGRESSIONTEST_PARALLEL: "-np"
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-9:release:build
-    - job: regressiontests:package
-
-gromacs:clang-8-cuda-10.1:release:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .rules:nightly-only-for-release
-  stage: release-tests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1
-  variables:
-    BUILD_DIR: release-builds-clang
-    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
-    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
-    REGRESSIONTEST_PME_RANK_NUMBER: 0
-    REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
-    REGRESSIONTEST_OMP_RANK_NUMBER: 1
-  tags:
-    - k8s-scilifelab
-  needs:
-    - job: gromacs:clang-8-cuda-10.1:release:build
-    - job: regressiontests:package
-
-gromacs:oneapi-2021.1.1-opencl:release:regressiontest:
-  extends:
-    - .gromacs:base:regressiontest
-    - .use-oneapi:base
-    - .rules:nightly-only-for-release
-  stage: release-tests
-  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
-  variables:
-    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
-    BUILD_DIR: release-builds-oneapi
-    REGRESSIONTEST_PME_RANK_NUMBER: 0
-    REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
-    REGRESSIONTEST_OMP_RANK_NUMBER: 1
-  needs:
-    - job: gromacs:oneapi-2021.1.1-opencl:release:build
-    - job: regressiontests:package
diff --git a/admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..4a7e1ae
--- /dev/null
@@ -0,0 +1,276 @@
+# Build, test, and install variously configured GROMACS installations.
+#
+# This file contains job templates. Actual job configurations are inside gromacs.matrix/ directory.
+
+.gromacs:base:configure:
+  extends:
+    - .variables:default
+  stage: configure-build
+  cache: {}
+  variables:
+    KUBERNETES_CPU_LIMIT: 1
+    KUBERNETES_CPU_REQUEST: 1
+    KUBERNETES_MEMORY_REQUEST: 2Gi
+    CMAKE_COMPILER_SCRIPT: ""
+    CMAKE_EXTRA_OPTIONS: ""
+    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
+    CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
+    CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
+    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
+    CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
+  script:
+    - CMAKE=${CMAKE:-$(which cmake)}
+    - echo $CMAKE_COMPILER_SCRIPT
+    - echo $CMAKE_EXTRA_OPTIONS
+    - echo $CMAKE_SIMD_OPTIONS
+    - echo $CMAKE_GPU_OPTIONS
+    - echo $CMAKE_MPI_OPTIONS
+    - echo $CMAKE_PRECISION_OPTIONS
+    - echo $CMAKE_BUILD_TYPE_OPTIONS
+    - echo $CMAKE_GMXAPI_OPTIONS
+    - if [[ -d $BUILD_DIR ]] ; then
+      rm -rf $BUILD_DIR && mkdir $BUILD_DIR ;
+      else
+      echo "Preparing new build directory" ;
+      mkdir $BUILD_DIR ;
+      fi
+    - cd $BUILD_DIR
+    - $CMAKE ..
+      -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
+      $CMAKE_COMPILER_SCRIPT
+      $CMAKE_EXTRA_OPTIONS
+      $CMAKE_SIMD_OPTIONS
+      $CMAKE_MPI_OPTIONS
+      $CMAKE_PRECISION_OPTIONS
+      $CMAKE_BUILD_TYPE_OPTIONS
+      $CMAKE_GPU_OPTIONS
+      $CMAKE_GMXAPI_OPTIONS
+      -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
+      2>&1 | tee cmakeLog.log
+    - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
+    - if [ -s cmakeErrors.log  ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
+    - cd ..
+  artifacts:
+    when: always
+    paths:
+      - $BUILD_DIR
+
+.gromacs:base:release:configure:
+  extends:
+    - .variables:default
+  stage: release-configure
+  cache: {}
+  variables:
+    KUBERNETES_CPU_LIMIT: 1
+    KUBERNETES_CPU_REQUEST: 1
+    KUBERNETES_MEMORY_REQUEST: 2Gi
+    CMAKE_COMPILER_SCRIPT: ""
+    CMAKE_EXTRA_OPTIONS: ""
+    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
+    CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
+    CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
+    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
+    CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
+    CMAKE_REGRESSIONTEST_OPTIONS: "-DREGRESSIONTEST_PATH=../\\$RELEASE_REGRESSIONTESTS"
+    RELEASE_BUILD_DIR: release-builds
+    RELEASE_SOURCE: release-source-from-tarball
+    RELEASE_REGRESSIONTESTS: release-regressiontests-from-tarball
+  script:
+    - CMAKE=${CMAKE:-$(which cmake)}
+    - VERSION=`cat version.json |
+      python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
+    - if [[ $GROMACS_RELEASE != "true" ]] ; then
+      VERSION=$VERSION-dev ;
+      fi
+    - SOURCENAME=gromacs-$VERSION
+    - SOURCETARBALL=$SOURCENAME.tar.gz
+    - REGTESTNAME=regressiontests-$VERSION
+    - REGTESTTARBALL=$REGTESTNAME.tar.gz
+    - echo "$SOURCETARBALL"
+    - echo "$REGTESTTARBALL"
+    - RELEASE_TARBALLS=release-tarballs
+    - rm -rf $RELEASE_TARBALLS $RELEASE_SOURCE $RELEASE_REGRESSIONTESTS && mkdir $RELEASE_TARBALLS
+    - mv $SOURCETARBALL $RELEASE_TARBALLS
+    - mv $REGTESTTARBALL $RELEASE_TARBALLS
+    - cd $RELEASE_TARBALLS
+    # We rename the source and regressiontest directories
+    # to have names for them that don't change for different versions.
+    - tar -xf $SOURCETARBALL
+    - mv $SOURCENAME ../$RELEASE_SOURCE
+    - tar -xf $REGTESTTARBALL
+    - mv $REGTESTNAME ../$RELEASE_REGRESSIONTESTS
+    - rm $SOURCETARBALL $REGTESTTARBALL
+    - cd ..
+    - echo $CMAKE_COMPILER_SCRIPT
+    - echo $CMAKE_EXTRA_OPTIONS
+    - echo $CMAKE_SIMD_OPTIONS
+    - echo $CMAKE_GPU_OPTIONS
+    - echo $CMAKE_MPI_OPTIONS
+    - echo $CMAKE_PRECISION_OPTIONS
+    - echo $CMAKE_BUILD_TYPE_OPTIONS
+    - echo $CMAKE_GMXAPI_OPTIONS
+    - if [[ -d $RELEASE_BUILD_DIR ]] ; then
+      echo "Cleaning up build directory" ;
+      rm -rf $RELEASE_BUILD_DIR && mkdir $RELEASE_BUILD_DIR ;
+      else
+      echo "Preparing new build directory" ;
+      mkdir $RELEASE_BUILD_DIR ;
+      fi
+    - cd $RELEASE_BUILD_DIR
+    - cmake ../$RELEASE_SOURCE/
+      -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
+      $CMAKE_COMPILER_SCRIPT
+      $CMAKE_EXTRA_OPTIONS
+      $CMAKE_SIMD_OPTIONS
+      $CMAKE_MPI_OPTIONS
+      $CMAKE_PRECISION_OPTIONS
+      $CMAKE_BUILD_TYPE_OPTIONS
+      $CMAKE_GPU_OPTIONS
+      $CMAKE_GMXAPI_OPTIONS
+      $CMAKE_REGRESSIONTEST_OPTIONS
+      -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR
+      2>&1 | tee cmakeLog.log
+    - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
+    - if [ -s cmakeErrors.log  ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
+    - cd ..
+  artifacts:
+    when: always
+    paths:
+      - $RELEASE_BUILD_DIR
+      - $RELEASE_REGRESSIONTESTS
+      - $RELEASE_SOURCE
+
+.gromacs:base:build:
+  stage: build
+  script:
+    - CMAKE=${CMAKE:-$(which cmake)}
+    - cd $BUILD_DIR
+    - $CMAKE --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
+    - $CMAKE --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
+    - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
+      | grep -v "CMake" | tee buildErrors.log || true
+    - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
+    - $CMAKE --build . --target install 2>&1 | tee installBuildLogFile.log
+    - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
+    - for file in `find . -mindepth 1 -name "*.o" ! -type l` ; do echo $file ; rm $file ; done 2>&1 > remove-build-objects.log
+    - cd ..
+  artifacts:
+    when: always
+    paths:
+      - $BUILD_DIR
+      - $INSTALL_DIR/
+
+.gromacs:static-analyzer-build:
+  stage: build
+  script:
+    - CMAKE=${CMAKE:-$(which cmake)}
+    - cd $BUILD_DIR
+    - scan-build -o scan_html $CMAKE --build . -- -j8 2>&1 | tee buildLogFile.log
+    - awk '/warning/,/warning.*generated|^$/' buildLogFile.log
+      | grep -v "CMake" | tee buildErrors.log || true
+    - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true
+    - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
+    - cd ..
+  artifacts:
+    when: always
+    paths:
+      - $BUILD_DIR/scan_html
+
+.gromacs:base:test:
+  extends:
+    - .variables:default
+  stage: test
+  cache: {}
+  retry:
+    max: 1
+  variables:
+    CTEST_RUN_MODE: "ExperimentalTest"
+  script:
+    - CMAKE=${CMAKE:-$(which cmake)}
+    - cd $BUILD_DIR
+    - export UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1:suppressions=$CI_PROJECT_DIR/admin/ubsan-suppressions.txt
+    # Needed to run MPI enabled code in the docker images, until we set up different users
+    - export OMPI_ALLOW_RUN_AS_ROOT=1
+    - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
+    - export ASAN_OPTIONS="check_initialization_order=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true:detect_stack_use_after_return=true"
+    # If $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES is not set and we have GPUs, set it
+    - if [ -z $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES ] && [ -n $KUBERNETES_EXTENDED_RESOURCE_NAME ] ; then
+      if grep -q '/gpu$' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
+      echo "export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES=\"$KUBERNETES_EXTENDED_RESOURCE_LIMIT\"";
+      export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES="$KUBERNETES_EXTENDED_RESOURCE_LIMIT";
+      fi
+      fi
+    - if grep -qF 'nvidia.com/gpu' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
+      nvidia-smi || true;
+      fi
+    - ctest -D $CTEST_RUN_MODE --output-on-failure | tee ctestLog.log || true
+    - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
+      ctestLog.log | tee ctestErrors.log
+    - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/*.xml > JUnitTestResults.xml
+    - if [ -s ctestErrors.log ] ; then
+      echo "Error during running ctest";
+      exit 1;
+      fi
+    - cd ..
+  artifacts:
+    reports:
+      junit: $BUILD_DIR/JUnitTestResults.xml
+    paths:
+      - $BUILD_DIR/Testing
+      - $BUILD_DIR/tests
+    when: always
+    expire_in: 1 week
+
+.gromacs:base:regressiontest:
+  extends:
+    - .variables:default
+  variables:
+    KUBERNETES_CPU_LIMIT: 4
+    KUBERNETES_CPU_REQUEST: 4
+    KUBERNETES_MEMORY_REQUEST: 4Gi
+    REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
+    REGRESSIONTEST_OMP_RANK_NUMBER: 2
+    REGRESSIONTEST_PME_RANK_NUMBER: 1
+    REGRESSIONTEST_MPI_RUN_COMMAND: ""
+    REGRESSIONTEST_DOUBLE: ""
+    REGRESSIONTEST_PARALLEL: "-nt"
+  stage: test
+  cache: {}
+  retry:
+    max: 1
+  script:
+    - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0"
+    - export ASAN_OPTIONS="check_initialization_order=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true:detect_stack_use_after_return=true"
+    # Needed to run MPI enabled code in the docker images, until we set up different users
+    - export OMPI_ALLOW_RUN_AS_ROOT=1
+    - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
+    - tar xzf gmx-regressiontests.tar.gz
+    - source $INSTALL_DIR/bin/GMXRC
+    - cd regressiontests
+    - perl gmxtest.pl $REGRESSIONTEST_PARALLEL $REGRESSIONTEST_TOTAL_RANK_NUMBER -ntomp $REGRESSIONTEST_OMP_RANK_NUMBER -npme $REGRESSIONTEST_PME_RANK_NUMBER $REGRESSIONTEST_DOUBLE $REGRESSIONTEST_MPI_RUN_COMMAND -xml all
+  artifacts:
+    paths:
+      - regressiontests/gmxtest.xml
+    when: always
+    expire_in: 1 week
+
+include:
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.0.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.1-release.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-mpi.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-release.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-ASAN.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-static-analyzer.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-TSAN.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-UBSAN.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-10.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-7-cuda-10.2.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0-release.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-9-release.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.icc-2021.1.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl-release.gitlab-ci.yml'
+  - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-sycl.gitlab-ci.yml'
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.0.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.0.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..acedae2
--- /dev/null
@@ -0,0 +1,75 @@
+# Test goal: Clang-CUDA build
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   GPU: Clang CUDA
+#   HW: NVIDIA GPU
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: RelWithDebInfo
+#   Compiler: Clang 8
+#   MPI: thread_MPI
+#   GPU: Clang CUDA 10.0, CUDA 10.0
+#   SIMD: AVX2_256, no kernels
+#   FFT: FFTW3
+#   Parallelism nt/ntomp: 4/2 (unit tests)
+#   Parallelism nt/ntomp: 2/1 (regression tests)
+
+gromacs:clang-8-cuda-10.0:configure:
+  extends:
+    - .gromacs:base:configure
+    - .use-clang:base
+    - .use-cuda
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    CMAKE_SIMD_OPTIONS: "-DGMX_USE_SIMD_KERNELS=off"
+    CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_CUDA=ON"
+    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
+    COMPILER_MAJOR_VERSION: 8
+
+gromacs:clang-8-cuda-10.0:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .use-clang:base
+    - .use-ccache
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+  needs:
+    - job: gromacs:clang-8-cuda-10.0:configure
+
+gromacs:clang-8-cuda-10.0:test:
+  extends:
+    - .gromacs:base:test
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-8-cuda-10.0:build
+
+gromacs:clang-8-cuda-10.0:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+    REGRESSIONTEST_PME_RANK_NUMBER: 0
+    REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
+    REGRESSIONTEST_OMP_RANK_NUMBER: 1
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-8-cuda-10.0:build
+    - job: regressiontests:prepare
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.1-release.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.1-release.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..e6ea818
--- /dev/null
@@ -0,0 +1,78 @@
+# Test goal: old Clang with old CUDA
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   GPU: CUDA oldest supported
+#   HW: NVIDIA GPU
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: RelWithAssert
+#   Compiler: Clang 8
+#   GPU: CUDA 10.1
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   FFT: FFTW3
+#   Parallelism nt/ntomp: 4/2 (unit tests)
+#   Parallelism nt/ntomp: 2/1 (regression tests)
+
+gromacs:clang-8-cuda-10.1:release:configure:
+  extends:
+    - .gromacs:base:release:configure
+    - .use-clang:base
+    - .use-cuda
+    - .rules:nightly-only-for-release
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1
+  variables:
+    COMPILER_MAJOR_VERSION: 8
+    RELEASE_BUILD_DIR: release-builds-clang
+    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
+
+gromacs:clang-8-cuda-10.1:release:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .before_script:default
+    - .use-ccache
+    - .rules:nightly-only-for-release
+  stage: release-build
+  variables:
+    BUILD_DIR: release-builds-clang
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1
+  needs:
+    - job: gromacs:clang-8-cuda-10.1:release:configure
+
+gromacs:clang-8-cuda-10.1:release:test:
+  extends:
+    - .gromacs:base:test
+    - .rules:nightly-only-for-release
+  stage: release-tests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1
+  variables:
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+    BUILD_DIR: release-builds-clang
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-8-cuda-10.1:release:configure
+    - job: gromacs:clang-8-cuda-10.1:release:build
+
+gromacs:clang-8-cuda-10.1:release:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:nightly-only-for-release
+  stage: release-tests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1
+  variables:
+    BUILD_DIR: release-builds-clang
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+    REGRESSIONTEST_PME_RANK_NUMBER: 0
+    REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
+    REGRESSIONTEST_OMP_RANK_NUMBER: 1
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-8-cuda-10.1:release:build
+    - job: regressiontests:package
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..5a590b9
--- /dev/null
@@ -0,0 +1,54 @@
+# Test goal: Simple Clang build with no GPU
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: Clang
+#   GPU: no
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: Debug
+#   Compiler: Clang 8
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   FFT: FFTW3
+#   Parallelism nt/ntomp: 4/2
+
+gromacs:clang-8:configure:
+  extends:
+    - .gromacs:base:configure
+    - .use-clang:base
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
+  variables:
+    COMPILER_MAJOR_VERSION: 8
+
+gromacs:clang-8:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .before_script:default
+    - .use-ccache
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
+  needs:
+    - job: gromacs:clang-8:configure
+
+gromacs:clang-8:test:
+  extends:
+    - .gromacs:base:test
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
+  needs:
+    - job: gromacs:clang-8:build
+
+gromacs:clang-8:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-8:build
+    - job: regressiontests:prepare
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-mpi.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-mpi.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..81f3e1f
--- /dev/null
@@ -0,0 +1,71 @@
+# Test goal: Clang build with MPI and double precision
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: Clang
+#   GPU: no
+#   MPI: OpenMPI
+#   Features: double precision FP
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: Debug
+#   Compiler: Clang 9
+#   MPI: OpenMPI 3.1
+#   SIMD: AVX2_256
+#   FFT: FFTW3
+#   Parallelism np/ntomp: 4/2
+
+gromacs:clang-9-mpi:configure:
+  extends:
+   - .gromacs:base:configure
+   - .use-clang:base
+   - .use-mpi
+   - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    COMPILER_MAJOR_VERSION: 9
+    CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
+
+gromacs:clang-9-mpi:build:
+  # Test using configuration: gromacs:clang-9-mpi:configure
+  # Test scope: build
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .before_script:default
+    - .use-ccache
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+  needs:
+    - job: gromacs:clang-9-mpi:configure
+
+gromacs:clang-9-mpi:test:
+  extends:
+    - .gromacs:base:test
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-9-mpi:build
+
+gromacs:clang-9:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    REGRESSIONTEST_DOUBLE: "-double"
+    REGRESSIONTEST_PARALLEL: "-np"
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-9-mpi:build
+    - job: regressiontests:prepare
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-release.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-release.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..c6c7768
--- /dev/null
@@ -0,0 +1,80 @@
+# Test goal: Release build with Clang, MPI, and double-precision
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: Clang
+#   MPI: OpenMPI
+#   GPU: no
+#   Features: double precision FP
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: RelWithAssert
+#   Compiler: Clang 9
+#   MPI: OpenMPI 3.1
+#   SIMD: AVX2_256
+#   FFT: FFTW3
+#   Parallelism np/ntomp: 4/2
+
+gromacs:clang-9:release:configure:
+  extends:
+    - .gromacs:base:release:configure
+    - .use-clang:base
+    - .use-mpi
+    - .rules:nightly-only-for-release
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    COMPILER_MAJOR_VERSION: 9
+    RELEASE_BUILD_DIR: release-builds-clang
+    CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=ON"
+    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
+  dependencies:
+    - archive:package
+    - regressiontests:package
+    - prepare-release-version
+
+gromacs:clang-9:release:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .before_script:default
+    - .use-ccache
+    - .rules:nightly-only-for-release
+  stage: release-build
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    BUILD_DIR: release-builds-clang
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
+  needs:
+    - job: gromacs:clang-9:release:configure
+
+gromacs:clang-9:release:test:
+  extends:
+    - .gromacs:base:test
+    - .rules:nightly-only-for-release
+  stage: release-tests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    BUILD_DIR: release-builds-clang
+  needs:
+    - job: gromacs:clang-9:release:configure
+    - job: gromacs:clang-9:release:build
+
+gromacs:clang-9:release:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:nightly-only-for-release
+  stage: release-tests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    BUILD_DIR: release-builds-clang
+    REGRESSIONTEST_DOUBLE: "-double"
+    REGRESSIONTEST_PARALLEL: "-np"
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-9:release:build
+    - job: regressiontests:package
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.clang-ASAN.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-ASAN.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..3052a62
--- /dev/null
@@ -0,0 +1,69 @@
+# Test goal: Clang AddressSanitizer build
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: Clang
+#   Build type: ASAN
+#   GPU: no
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Compiler: Clang 8
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   FFT: FFTW3
+#   Parallelism nt/ntomp: 4/2
+
+gromacs:clang-ASAN:configure:
+  extends:
+    - .gromacs:base:configure
+    - .use-clang:base
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    COMPILER_MAJOR_VERSION: 8
+    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
+
+gromacs:clang-ASAN:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .use-clang:base
+    - .use-ccache
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-ASAN:configure
+
+gromacs:clang-ASAN:test:
+  extends:
+    - .gromacs:base:test
+    - .use-clang:base
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    CTEST_RUN_MODE: "ExperimentalMemCheck"
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-ASAN:build
+
+gromacs:clang-ASAN:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .use-clang:base
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-ASAN:build
+    - job: regressiontests:prepare
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.clang-TSAN.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-TSAN.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..64834ff
--- /dev/null
@@ -0,0 +1,62 @@
+# Test goal: Clang ThreadSanitizer
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: Clang
+#   Build type: TSAN
+#   GPU: None
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Compiler: Clang 8
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   FFT: FFTW3
+#   Parallelism nt/ntomp: 4/2
+
+gromacs:clang-TSAN:configure:
+  extends:
+    - .gromacs:base:configure
+    - .use-clang:base
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    COMPILER_MAJOR_VERSION: 8
+    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
+
+gromacs:clang-TSAN:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .use-clang:base
+    - .use-ccache
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+  needs:
+    - job: gromacs:clang-TSAN:configure
+
+gromacs:clang-TSAN:test:
+  extends:
+    - .gromacs:base:test
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+  needs:
+    - job: gromacs:clang-TSAN:build
+
+gromacs:clang-TSAN:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-TSAN:build
+    - job: regressiontests:prepare
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.clang-UBSAN.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-UBSAN.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..8676952
--- /dev/null
@@ -0,0 +1,54 @@
+# Test goal: Clang UndefinedBehaviorSanitizer build
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: Clang
+#   Build type: UBSAN
+#   GPU: no
+#   Scope: configure, build, unit tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Compiler: Clang 8
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   FFT: FFTW3
+#   Parallelism nt/ntomp: 4/2
+
+gromacs:clang-UBSAN:configure:
+  extends:
+    - .gromacs:base:configure
+    - .use-clang:base
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    COMPILER_MAJOR_VERSION: 8
+    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN"
+
+gromacs:clang-UBSAN:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .use-clang:base
+    - .use-ccache
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-UBSAN:configure
+
+gromacs:clang-UBSAN:test:
+  extends:
+    - .gromacs:base:test
+    - .use-clang:base
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-UBSAN:build
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.clang-static-analyzer.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-static-analyzer.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..0d6624c
--- /dev/null
@@ -0,0 +1,41 @@
+# Test goal: Clang static analyzer build
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: Clang
+#   Build type: Static Analuzer
+#   GPU: no
+#   SIMD: no
+#   FFT: fftpack
+#   MPI: thread_MPI
+#   Scope: configure, build
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Compiler: Clang 8
+
+gromacs:clang-static-analyzer:configure:
+  extends:
+    - .gromacs:base:configure
+    - .use-clang:base
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    CMAKE_COMPILER_SCRIPT: "-DCMAKE_CXX_COMPILER=/usr/local/libexec/c++-analyzer -DCMAKE_C_COMPILER=gcc"
+    CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_ANALYZER=ON -DGMX_OPENMP=OFF -DGMX_USE_RDTSCP=OFF -DGMX_FFT_LIBRARY=fftpack -DGMX_DEVELOPER_BUILD=ON"
+    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
+
+gromacs:clang-static-analyzer:build:
+  extends:
+    - .variables:default
+    - .gromacs:static-analyzer-build
+    - .use-clang:base
+    - .use-ccache
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:clang-static-analyzer:configure
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-10.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-10.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..0b4f7a7
--- /dev/null
@@ -0,0 +1,77 @@
+# Test goal: newest GCC with OpenCL
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu newest supported
+#   Compiler: GCC newest supported
+#   GPU: OpenCL
+#   FFT: CLFFT
+#   HW: AMD GPU
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 20.04
+#   Build type: Debug
+#   Compiler: GCC 10
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   Parallelism nt/ntomp: 4/2 (unit tests)
+#   Parallelism nt/ntomp: 2/1 (regression tests)
+
+gromacs:gcc-10:configure:
+  extends:
+    - .gromacs:base:configure
+    - .use-gcc:base
+    - .use-opencl
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
+    CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
+    COMPILER_MAJOR_VERSION: 10
+
+gromacs:gcc-10:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .before_script:default
+    - .use-ccache
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+  needs:
+    - job: gromacs:gcc-10:configure
+
+gromacs:gcc-10:test:
+  extends:
+    - .gromacs:base:test
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+    LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-10:build
+
+gromacs:gcc-10:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+    REGRESSIONTEST_PME_RANK_NUMBER: 0
+    REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
+    REGRESSIONTEST_OMP_RANK_NUMBER: 1
+    LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-10:build
+    - job: regressiontests:prepare
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-7-cuda-10.2.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-7-cuda-10.2.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..41ed398
--- /dev/null
@@ -0,0 +1,144 @@
+# Test goal: old versions of GCC with CUDA; GPU communications with tMPI
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: GCC oldest supported
+#   GPU: CUDA oldest supported
+#   HW: NVIDIA GPU, dual NVIDIA GPU
+#   MPI: thread_MPI
+#   Features: GPU direct communications + update (unit tests)
+#   Features: GPU direct communications + update (regression tests with dual GPU)
+#   Features: GPU update (regression tests with dual GPU)
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: Debug
+#   Compiler: GCC 7
+#   GPU: CUDA 10.2
+#   SIMD: SSE 4.1
+#   FFT: FFTW3
+#   Parallelism nt/ntomp: 4/2 (unit tests)
+#   Parallelism nt/ntomp: 2/1 (regression tests)
+#   Parallelism nt/ntomp: 4/1 (regression tests with dual GPU)
+
+gromacs:gcc-7-cuda-10.2:configure:
+  extends:
+    - .gromacs:base:configure
+    - .use-gcc:base
+    - .use-cuda
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
+    COMPILER_MAJOR_VERSION: 7
+
+gromacs:gcc-7-cuda-10.2:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .before_script:default
+    - .use-ccache
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+  needs:
+    - job: gromacs:gcc-7-cuda-10.2:configure
+
+gromacs:gcc-7-cuda-10.2:test:
+  extends:
+    - .gromacs:base:test
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-7-cuda-10.2:build
+
+gromacs:gcc-7-cuda-10.2:test-gpucommupd:
+  extends:
+    - .gromacs:base:test
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+    GMX_GPU_DD_COMMS: 1
+    GMX_GPU_PME_PP_COMMS: 1
+    GMX_FORCE_UPDATE_DEFAULT_GPU: 1
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-7-cuda-10.2:build
+
+gromacs:gcc-7-cuda-10.2:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+    REGRESSIONTEST_PME_RANK_NUMBER: 0
+    REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
+    REGRESSIONTEST_OMP_RANK_NUMBER: 1
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-7-cuda-10.2:build
+    - job: regressiontests:prepare
+
+gromacs:gcc-7-cuda-10.2:regressiontest-gpucommupd-tMPI:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
+    REGRESSIONTEST_PME_RANK_NUMBER: 0
+    REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
+    REGRESSIONTEST_OMP_RANK_NUMBER: 1
+    GMX_GPU_DD_COMMS: 1
+    GMX_GPU_PME_PP_COMMS: 1
+    GMX_FORCE_UPDATE_DEFAULT_GPU: 1
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-7-cuda-10.2:build
+    - job: regressiontests:prepare
+  artifacts:
+    paths:
+      - regressiontests
+    when: always
+    expire_in: 1 week
+
+gromacs:gcc-7-cuda-10.2:regressiontest-upd-tMPI:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2
+  variables:
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
+    REGRESSIONTEST_PME_RANK_NUMBER: 0
+    REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
+    REGRESSIONTEST_OMP_RANK_NUMBER: 1
+    GMX_FORCE_UPDATE_DEFAULT_GPU: 1
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-7-cuda-10.2:build
+    - job: regressiontests:prepare
+  artifacts:
+    paths:
+      - regressiontests
+    when: always
+    expire_in: 1 week
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0-release.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0-release.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..b2e302b
--- /dev/null
@@ -0,0 +1,69 @@
+# Test goal: GCC with newest CUDA; Mdrun-only build
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   GPU: CUDA newest supported
+#   HW: NVIDIA GPU
+#   Features: Mdrun-only build
+#   Scope: configure, build, unit tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: RelWithAssert
+#   Compiler: GCC 8
+#   MPI: thread_MPI
+#   GPU: CUDA 11.0
+#   SIMD: AVX2_256
+#   FFT: FFTW3
+#   Parallelism nt/ntomp: 4/2 (unit tests)
+
+gromacs:gcc-8-cuda-11.0:release:configure:
+  extends:
+    - .gromacs:base:release:configure
+    - .use-gcc:base
+    - .use-mpi
+    - .use-cuda
+    - .rules:nightly-only-for-release
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    COMPILER_MAJOR_VERSION: 8
+    RELEASE_BUILD_DIR: release-builds-gcc
+    CMAKE_EXTRA_OPTIONS: "-DGMX_BUILD_MDRUN_ONLY=ON"
+    CMAKE_BUILD_TYPE_OPTIONS : "-DCMAKE_BUILD_TYPE=RelWithAssert"
+    CMAKE_REGRESSIONTEST_OPTIONS: ""
+  dependencies:
+    - archive:package
+    - regressiontests:package
+    - prepare-release-version
+
+gromacs:gcc-8-cuda-11.0:release:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .before_script:default
+    - .use-ccache
+    - .rules:nightly-only-for-release
+  stage: release-build
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    BUILD_DIR: release-builds-gcc
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
+  needs:
+    - job: gromacs:gcc-8-cuda-11.0:release:configure
+
+gromacs:gcc-8-cuda-11.0:release:test:
+  extends:
+    - .gromacs:base:test
+    - .rules:nightly-only-for-release
+  stage: release-tests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+    BUILD_DIR: release-builds-gcc
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-8-cuda-11.0:release:configure
+    - job: gromacs:gcc-8-cuda-11.0:release:build
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..59a8e11
--- /dev/null
@@ -0,0 +1,72 @@
+# Test goal: CUDA GPU communications with OpenMPI
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   GPU: CUDA newest supported
+#   HW: dual NVIDIA GPU
+#   MPI: OpenMPI
+#   Features: GPU direct communications + update (regression tests with dual GPU)
+#   Scope: configure, build, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: RelWithDebInfo
+#   Compiler: GCC 8
+#   GPU: CUDA 11.0
+#   SIMD: SSE 4.1
+#   FFT: FFTW3
+#   Parallelism np/ntomp: 4/1 (regression tests with dual GPU)
+
+gromacs:gcc-8-cuda-11.0:configureMPI:
+  extends:
+    - .gromacs:base:configure
+    - .use-gcc:base
+    - .use-cuda
+    - .use-mpi
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
+    COMPILER_MAJOR_VERSION: 8
+
+gromacs:gcc-8-cuda-11.0:buildMPI:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .before_script:default
+    - .use-ccache
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+  needs:
+    - job: gromacs:gcc-8-cuda-11.0:configureMPI
+
+gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-MPI:
+  # Test parallelism np/ntomp: 4/1
+  # Test parallelism GPU: direct communications, update
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
+  variables:
+    CMAKE: /usr/local/cmake-3.15.7/bin/cmake
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
+    REGRESSIONTEST_PME_RANK_NUMBER: 0
+    REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
+    REGRESSIONTEST_OMP_RANK_NUMBER: 1
+    REGRESSIONTEST_PARALLEL: "-np"
+    GMX_GPU_DD_COMMS: 1  
+    GMX_GPU_PME_PP_COMMS: 1
+    GMX_FORCE_UPDATE_DEFAULT_GPU: 1
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-8-cuda-11.0:buildMPI
+    - job: regressiontests:prepare
+  artifacts:
+    paths:
+      - regressiontests
+    when: always
+    expire_in: 1 week
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-9-release.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-9-release.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..4e05b53
--- /dev/null
@@ -0,0 +1,86 @@
+# Test goal: Release build with GCC and OpenCL
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: GCC
+#   GPU: OpenCL
+#   HW: AMD GPU
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: RelWithAssert
+#   Compiler: GCC 9
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   FFT: FFTW3
+#   Parallelism nt/ntomp: 4/2
+
+gromacs:gcc-9:release:configure:
+  extends:
+    - .gromacs:base:release:configure
+    - .use-gcc:base
+    - .use-opencl
+    - .rules:nightly-only-for-release
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    COMPILER_MAJOR_VERSION: 9
+    RELEASE_BUILD_DIR: release-builds-gcc
+    CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
+  dependencies:
+    - archive:package
+    - regressiontests:package
+    - prepare-release-version
+
+gromacs:gcc-9:release:build:
+  # Test using configuration: gromacs:gcc-9:release:configure
+  # Test scope: build
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .before_script:default
+    - .use-ccache
+    - .rules:nightly-only-for-release
+  stage: release-build
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    BUILD_DIR: release-builds-gcc
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9
+  needs:
+    - job: gromacs:gcc-9:release:configure
+
+gromacs:gcc-9:release:test:
+  extends:
+    - .gromacs:base:test
+    - .rules:nightly-only-for-release
+  stage: release-tests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    BUILD_DIR: release-builds-gcc
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+    LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-9:release:configure
+    - job: gromacs:gcc-9:release:build
+
+gromacs:gcc-9:release:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .rules:nightly-only-for-release
+  stage: release-tests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9
+  variables:
+    CMAKE: /usr/local/cmake-3.13.0/bin/cmake
+    BUILD_DIR: release-builds-gcc
+    KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
+    KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
+    LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
+  tags:
+    - k8s-scilifelab
+  needs:
+    - job: gromacs:gcc-9:release:build
+    - job: regressiontests:package
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.icc-2021.1.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.icc-2021.1.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..849eb19
--- /dev/null
@@ -0,0 +1,63 @@
+# Test goal: Newest ICC CPU-only build
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: ICC newest supported
+#   FFT: MKL
+#   GPU: no
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: Debug
+#   Compiler: ICC 2021.1
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   Parallelism nt/ntomp: 4/2
+
+gromacs:icc-2021.1:configure:
+  # Test SIMD: AVX2_256
+  # Test FFT: MKL
+  # Test scope: configure
+  extends:
+   - .gromacs:base:configure
+   - .use-icc-oneapi:base
+   - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+    COMPILER_MAJOR_VERSION: 2021
+
+gromacs:icc-2021.1:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .use-icc-oneapi:base
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+  needs:
+    - job: gromacs:icc-2021.1:configure
+
+gromacs:icc-2021.1:test:
+  extends:
+    - .gromacs:base:test
+    - .use-icc-oneapi:base
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+  needs:
+    - job: gromacs:icc-2021.1:build
+
+gromacs:icc-2021.1:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .use-icc-oneapi:base
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+  needs:
+    - job: gromacs:icc-2021.1:build
+    - job: regressiontests:prepare
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl-release.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl-release.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..db672a5
--- /dev/null
@@ -0,0 +1,75 @@
+# Test goal: Newest ICPX build with OpenCL, release build
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: ICPX newest supported
+#   Build type: RelWithAssert
+#   FFT: MKL
+#   GPU: OpenCL
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Compiler: ICPX 2021.1
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   Parallelism nt/ntomp: 4/2 (unit tests)
+#   Parallelism nt/ntomp: 2/1 (regression tests)
+
+gromacs:oneapi-2021.1.1-opencl:release:configure:
+  extends:
+   - .gromacs:base:release:configure
+   - .use-oneapi:base
+   - .use-opencl
+   - .rules:nightly-only-for-release
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+    COMPILER_MAJOR_VERSION: 2021
+    RELEASE_BUILD_DIR: release-builds-oneapi
+
+gromacs:oneapi-2021.1.1-opencl:release:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .use-oneapi:base
+    - .use-opencl
+    - .use-ccache
+    - .rules:nightly-only-for-release
+  stage: release-build
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+    BUILD_DIR: release-builds-oneapi
+    COMPILER_MAJOR_VERSION: 2021
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  needs:
+    - job: gromacs:oneapi-2021.1.1-opencl:release:configure
+
+gromacs:oneapi-2021.1.1-opencl:release:test:
+  extends:
+    - .gromacs:base:test
+    - .use-oneapi:base
+    - .rules:nightly-only-for-release
+  stage: release-tests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+    BUILD_DIR: release-builds-oneapi
+  needs:
+    - job: gromacs:oneapi-2021.1.1-opencl:release:configure
+    - job: gromacs:oneapi-2021.1.1-opencl:release:build
+
+gromacs:oneapi-2021.1.1-opencl:release:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .use-oneapi:base
+    - .rules:nightly-only-for-release
+  stage: release-tests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+    BUILD_DIR: release-builds-oneapi
+    REGRESSIONTEST_PME_RANK_NUMBER: 0
+    REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
+    REGRESSIONTEST_OMP_RANK_NUMBER: 1
+  needs:
+    - job: gromacs:oneapi-2021.1.1-opencl:release:build
+    - job: regressiontests:package
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..4f304b8
--- /dev/null
@@ -0,0 +1,62 @@
+# Test goal: Newest ICPX build with OpenCL
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: ICPX newest supported
+#   FFT: MKL
+#   GPU: OpenCL
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: Debug
+#   Compiler: ICPX 2021.1
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   Parallelism nt/ntomp: 4/2
+
+gromacs:oneapi-2021.1.1-opencl:configure:
+  extends:
+   - .gromacs:base:configure
+   - .use-oneapi:base
+   - .use-opencl
+   - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+    COMPILER_MAJOR_VERSION: 2021
+
+gromacs:oneapi-2021.1.1-opencl:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .use-ccache
+    - .use-oneapi:base
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+  needs:
+    - job: gromacs:oneapi-2021.1.1-opencl:configure
+
+gromacs:oneapi-2021.1.1-opencl:test:
+  extends:
+    - .gromacs:base:test
+    - .use-oneapi:base
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+  needs:
+    - job: gromacs:oneapi-2021.1.1-opencl:build
+
+gromacs:oneapi-2021.1.1-opencl:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .use-oneapi:base
+    - .rules:merge-requests
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+  needs:
+    - job: gromacs:oneapi-2021.1.1-opencl:build
+    - job: regressiontests:prepare
+
diff --git a/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-sycl.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-sycl.gitlab-ci.yml
new file mode 100644 (file)
index 0000000..5f01e0d
--- /dev/null
@@ -0,0 +1,62 @@
+# Test goal: Newest ICPX build with SYCL
+# Test intents (should change rarely and conservatively):
+#   OS: Ubuntu oldest supported
+#   Compiler: ICPX newest supported
+#   FFT: MKL
+#   GPU: SYCL
+#   Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+#   OS: Ubuntu 18.04
+#   Build type: Debug
+#   Compiler: ICPX 2021.1
+#   MPI: thread_MPI
+#   SIMD: AVX2_256
+#   Parallelism nt/ntomp: 4/2
+
+gromacs:oneapi-2021.1.1-sycl:configure:
+  extends:
+   - .gromacs:base:configure
+   - .use-oneapi:base
+   - .use-sycl
+   - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+    COMPILER_MAJOR_VERSION: 2021
+
+gromacs:oneapi-2021.1.1-sycl:build:
+  extends:
+    - .variables:default
+    - .gromacs:base:build
+    - .use-ccache
+    - .use-oneapi:base
+    - .rules:merge-and-post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+  needs:
+    - job: gromacs:oneapi-2021.1.1-sycl:configure
+
+gromacs:oneapi-2021.1.1-sycl:test:
+  extends:
+    - .gromacs:base:test
+    - .use-oneapi:base
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+  needs:
+    - job: gromacs:oneapi-2021.1.1-sycl:build
+
+gromacs:oneapi-2021.1.1-sycl:regressiontest:
+  extends:
+    - .gromacs:base:regressiontest
+    - .use-oneapi:base
+    - .rules:post-merge-acceptance
+  image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
+  variables:
+    CMAKE: /usr/local/cmake-3.17.2/bin/cmake
+  needs:
+    - job: gromacs:oneapi-2021.1.1-sycl:build
+    - job: regressiontests:prepare
+
index 420c40271c03abd56ae90dff70130582fc54292c..24911f03ee82e2a4d91ecc86a0ecbd23f56d3d35 100644 (file)
@@ -70,7 +70,7 @@ using the following `CMake options`_ with the
 appropriate value instead of ``xxx`` :
 
 * ``-DCMAKE_C_COMPILER=xxx`` equal to the name of the C99 `Compiler`_ you wish to use (or the environment variable ``CC``)
-* ``-DCMAKE_CXX_COMPILER=xxx`` equal to the name of the C++98 `compiler`_ you wish to use (or the environment variable ``CXX``)
+* ``-DCMAKE_CXX_COMPILER=xxx`` equal to the name of the C++17 `compiler`_ you wish to use (or the environment variable ``CXX``)
 * ``-DGMX_MPI=on`` to build using `MPI support`_ (generally good to combine with `building only mdrun`_)
 * ``-DGMX_GPU=CUDA`` to build with NVIDIA CUDA support enabled.
 * ``-DGMX_GPU=OpenCL`` to build with OpenCL_ support enabled.
@@ -144,7 +144,7 @@ particular libstdc++ library, provide the path to g++ with
 ``-DGMX_GPLUSPLUS_PATH=/path/to/g++``.
 
 On Windows with the Intel compiler, the MSVC standard library is used,
-and at least MSVC 2017 15.7 is required. Load the enviroment variables with
+and at least MSVC 2017 15.7 is required. Load the environment variables with
 vcvarsall.bat.
 
 To build with clang and llvm's libcxx standard library, use