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'
   # 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.
   # 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:
 simple-build:
+  # Test scope: configure, build, unit tests
   extends:
     - .variables:default
     - .use-ccache
   extends:
     - .variables:default
     - .use-ccache
@@ -77,1260 +89,3 @@ simple-build:
       - $BUILD_DIR/*log
     when: always
     expire_in: 1 week
       - $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``)
 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.
 * ``-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,
 ``-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
 vcvarsall.bat.
 
 To build with clang and llvm's libcxx standard library, use