From 43e6d86fa6251af1ab38241fd8c0802140a15741 Mon Sep 17 00:00:00 2001 From: Andrey Alekseenko Date: Thu, 28 Jan 2021 08:48:27 +0000 Subject: [PATCH] Reintroduce CI job descriptions 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. --- .gitlab-ci.yml | 1 + admin/gitlab-ci/gromacs.gitlab-ci.yml | 1273 +---------------- admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml | 276 ++++ .../gromacs.clang-8-cuda-10.0.gitlab-ci.yml | 75 + ...cs.clang-8-cuda-10.1-release.gitlab-ci.yml | 78 + .../gromacs.clang-8.gitlab-ci.yml | 54 + .../gromacs.clang-9-mpi.gitlab-ci.yml | 71 + .../gromacs.clang-9-release.gitlab-ci.yml | 80 ++ .../gromacs.clang-ASAN.gitlab-ci.yml | 69 + .../gromacs.clang-TSAN.gitlab-ci.yml | 62 + .../gromacs.clang-UBSAN.gitlab-ci.yml | 54 + ...romacs.clang-static-analyzer.gitlab-ci.yml | 41 + .../gromacs.gcc-10.gitlab-ci.yml | 77 + .../gromacs.gcc-7-cuda-10.2.gitlab-ci.yml | 144 ++ ...macs.gcc-8-cuda-11.0-release.gitlab-ci.yml | 69 + .../gromacs.gcc-8-cuda-11.0.gitlab-ci.yml | 72 + .../gromacs.gcc-9-release.gitlab-ci.yml | 86 ++ .../gromacs.icc-2021.1.gitlab-ci.yml | 63 + ...eapi-2021.1.1-opencl-release.gitlab-ci.yml | 75 + ...omacs.oneapi-2021.1.1-opencl.gitlab-ci.yml | 62 + ...gromacs.oneapi-2021.1.1-sycl.gitlab-ci.yml | 62 + docs/install-guide/index.rst | 4 +- 22 files changed, 1587 insertions(+), 1261 deletions(-) create mode 100644 admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.0.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.1-release.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.clang-8.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-mpi.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-release.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.clang-ASAN.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.clang-TSAN.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.clang-UBSAN.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.clang-static-analyzer.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.gcc-10.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.gcc-7-cuda-10.2.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0-release.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.gcc-9-release.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.icc-2021.1.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl-release.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl.gitlab-ci.yml create mode 100644 admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-sycl.gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee10cc660d..033b5eef45 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -51,6 +51,7 @@ include: # To do: Consider expanding matrix here to improve transparency and reduce file sizes. # E.g. '/admin/gitlab-ci/matrix/clang-8.gitlab-ci.yml - local: '/admin/gitlab-ci/gromacs.gitlab-ci.yml' + - local: '/admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml' # Repository cleanliness. Source tidiness, linting, and policy compliance. - local: '/admin/gitlab-ci/lint.gitlab-ci.yml' # Web page and manual. diff --git a/admin/gitlab-ci/gromacs.gitlab-ci.yml b/admin/gitlab-ci/gromacs.gitlab-ci.yml index 582be7e014..b2e2dd56e7 100644 --- a/admin/gitlab-ci/gromacs.gitlab-ci.yml +++ b/admin/gitlab-ci/gromacs.gitlab-ci.yml @@ -1,7 +1,19 @@ -# Build, test, and install variously configured GROMACS installations. +# Test goal: Initial build with close-to-default settings that always needs to pass before follow-up CI stages run +# Test intents (should change rarely and conservatively): +# OS: Ubuntu oldest supported +# Compiler: Clang +# Build type: Debug +# GPU: no +# SIMD: no +# Scope: configure, build, unit tests +# Test implementation choices (free to change as needed): +# OS: Ubuntu 18.04 +# Compiler: Clang 9 +# FFT: FFTW3 +# Parallelism nt/ntomp: 4/2 -# Initial build that always needs to pass before follow-up stages run simple-build: + # Test scope: configure, build, unit tests extends: - .variables:default - .use-ccache @@ -77,1260 +89,3 @@ simple-build: - $BUILD_DIR/*log when: always expire_in: 1 week - -# Jobs running in first pre-build stage - -.gromacs:base:configure: - extends: - - .variables:default - stage: configure-build - cache: {} - variables: - KUBERNETES_CPU_LIMIT: 1 - KUBERNETES_CPU_REQUEST: 1 - KUBERNETES_MEMORY_REQUEST: 2Gi - CMAKE_COMPILER_SCRIPT: "" - CMAKE_EXTRA_OPTIONS: "" - CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256" - CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON" - CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF" - CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug" - CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF" - script: - - CMAKE=${CMAKE:-$(which cmake)} - - echo $CMAKE_COMPILER_SCRIPT - - echo $CMAKE_EXTRA_OPTIONS - - echo $CMAKE_SIMD_OPTIONS - - echo $CMAKE_GPU_OPTIONS - - echo $CMAKE_MPI_OPTIONS - - echo $CMAKE_PRECISION_OPTIONS - - echo $CMAKE_BUILD_TYPE_OPTIONS - - echo $CMAKE_GMXAPI_OPTIONS - - if [[ -d $BUILD_DIR ]] ; then - rm -rf $BUILD_DIR && mkdir $BUILD_DIR ; - else - echo "Preparing new build directory" ; - mkdir $BUILD_DIR ; - fi - - cd $BUILD_DIR - - $CMAKE .. - -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - $CMAKE_COMPILER_SCRIPT - $CMAKE_EXTRA_OPTIONS - $CMAKE_SIMD_OPTIONS - $CMAKE_MPI_OPTIONS - $CMAKE_PRECISION_OPTIONS - $CMAKE_BUILD_TYPE_OPTIONS - $CMAKE_GPU_OPTIONS - $CMAKE_GMXAPI_OPTIONS - -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON - 2>&1 | tee cmakeLog.log - - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log - - if [ -s cmakeErrors.log ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi - - cd .. - artifacts: - when: always - paths: - - $BUILD_DIR - -.gromacs:base:release:configure: - extends: - - .variables:default - stage: release-configure - cache: {} - variables: - KUBERNETES_CPU_LIMIT: 1 - KUBERNETES_CPU_REQUEST: 1 - KUBERNETES_MEMORY_REQUEST: 2Gi - CMAKE_COMPILER_SCRIPT: "" - CMAKE_EXTRA_OPTIONS: "" - CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256" - CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON" - CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF" - CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert" - CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF" - CMAKE_REGRESSIONTEST_OPTIONS: "-DREGRESSIONTEST_PATH=../\\$RELEASE_REGRESSIONTESTS" - RELEASE_BUILD_DIR: release-builds - RELEASE_SOURCE: release-source-from-tarball - RELEASE_REGRESSIONTESTS: release-regressiontests-from-tarball - script: - - CMAKE=${CMAKE:-$(which cmake)} - - VERSION=`cat version.json | - python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"` - - if [[ $GROMACS_RELEASE != "true" ]] ; then - VERSION=$VERSION-dev ; - fi - - SOURCENAME=gromacs-$VERSION - - SOURCETARBALL=$SOURCENAME.tar.gz - - REGTESTNAME=regressiontests-$VERSION - - REGTESTTARBALL=$REGTESTNAME.tar.gz - - echo "$SOURCETARBALL" - - echo "$REGTESTTARBALL" - - RELEASE_TARBALLS=release-tarballs - - rm -rf $RELEASE_TARBALLS $RELEASE_SOURCE $RELEASE_REGRESSIONTESTS && mkdir $RELEASE_TARBALLS - - mv $SOURCETARBALL $RELEASE_TARBALLS - - mv $REGTESTTARBALL $RELEASE_TARBALLS - - cd $RELEASE_TARBALLS - # We rename the source and regressiontest directories - # to have names for them that don't change for different versions. - - tar -xf $SOURCETARBALL - - mv $SOURCENAME ../$RELEASE_SOURCE - - tar -xf $REGTESTTARBALL - - mv $REGTESTNAME ../$RELEASE_REGRESSIONTESTS - - rm $SOURCETARBALL $REGTESTTARBALL - - cd .. - - echo $CMAKE_COMPILER_SCRIPT - - echo $CMAKE_EXTRA_OPTIONS - - echo $CMAKE_SIMD_OPTIONS - - echo $CMAKE_GPU_OPTIONS - - echo $CMAKE_MPI_OPTIONS - - echo $CMAKE_PRECISION_OPTIONS - - echo $CMAKE_BUILD_TYPE_OPTIONS - - echo $CMAKE_GMXAPI_OPTIONS - - if [[ -d $RELEASE_BUILD_DIR ]] ; then - echo "Cleaning up build directory" ; - rm -rf $RELEASE_BUILD_DIR && mkdir $RELEASE_BUILD_DIR ; - else - echo "Preparing new build directory" ; - mkdir $RELEASE_BUILD_DIR ; - fi - - cd $RELEASE_BUILD_DIR - - cmake ../$RELEASE_SOURCE/ - -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - $CMAKE_COMPILER_SCRIPT - $CMAKE_EXTRA_OPTIONS - $CMAKE_SIMD_OPTIONS - $CMAKE_MPI_OPTIONS - $CMAKE_PRECISION_OPTIONS - $CMAKE_BUILD_TYPE_OPTIONS - $CMAKE_GPU_OPTIONS - $CMAKE_GMXAPI_OPTIONS - $CMAKE_REGRESSIONTEST_OPTIONS - -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR - 2>&1 | tee cmakeLog.log - - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log - - if [ -s cmakeErrors.log ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi - - cd .. - artifacts: - when: always - paths: - - $RELEASE_BUILD_DIR - - $RELEASE_REGRESSIONTESTS - - $RELEASE_SOURCE - -# Templates for configuration stage - -gromacs:gcc-10:configure: - extends: - - .gromacs:base:configure - - .use-gcc:base - - .use-opencl - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256" - CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON" - COMPILER_MAJOR_VERSION: 10 - -gromacs:clang-8-cuda-10.0:configure: - extends: - - .gromacs:base:configure - - .use-clang:base - - .use-cuda - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - CMAKE_SIMD_OPTIONS: "-DGMX_USE_SIMD_KERNELS=off" - CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_CUDA=ON" - CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithDebInfo" - COMPILER_MAJOR_VERSION: 8 - -gromacs:gcc-7-cuda-10.2:configure: - extends: - - .gromacs:base:configure - - .use-gcc:base - - .use-cuda - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1" - COMPILER_MAJOR_VERSION: 7 - -gromacs:gcc-8-cuda-11.0:configureMPI: - extends: - - .gromacs:base:configure - - .use-gcc:base - - .use-cuda - - .use-mpi - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1" - COMPILER_MAJOR_VERSION: 8 - -gromacs:clang-TSAN:configure: - extends: - - .gromacs:base:configure - - .use-clang:base - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - COMPILER_MAJOR_VERSION: 8 - CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN" - -gromacs:icc-2021.1:configure: - extends: - - .gromacs:base:configure - - .use-icc-oneapi:base - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - COMPILER_MAJOR_VERSION: 2021 - -gromacs:clang-8:configure: - extends: - - .gromacs:base:configure - - .use-clang:base - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0 - variables: - COMPILER_MAJOR_VERSION: 8 - -gromacs:clang-9-mpi:configure: - extends: - - .gromacs:base:configure - - .use-clang:base - - .use-mpi - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - COMPILER_MAJOR_VERSION: 9 - CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON - -gromacs:clang-static-analyzer:configure: - extends: - - .gromacs:base:configure - - .use-clang:base - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - CMAKE_COMPILER_SCRIPT: "-DCMAKE_CXX_COMPILER=/usr/local/libexec/c++-analyzer -DCMAKE_C_COMPILER=gcc" - CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_ANALYZER=ON -DGMX_OPENMP=OFF -DGMX_USE_RDTSCP=OFF -DGMX_FFT_LIBRARY=fftpack -DGMX_DEVELOPER_BUILD=ON" - CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None" - -gromacs:clang-ASAN:configure: - extends: - - .gromacs:base:configure - - .use-clang:base - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - COMPILER_MAJOR_VERSION: 8 - CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN" - -gromacs:oneapi-2021.1.1-opencl:configure: - extends: - - .gromacs:base:configure - - .use-oneapi:base - - .use-opencl - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - COMPILER_MAJOR_VERSION: 2021 - -gromacs:oneapi-2021.1.1-sycl:configure: - extends: - - .gromacs:base:configure - - .use-oneapi:base - - .use-sycl - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - COMPILER_MAJOR_VERSION: 2021 - -gromacs:clang-UBSAN:configure: - extends: - - .gromacs:base:configure - - .use-clang:base - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - COMPILER_MAJOR_VERSION: 8 - CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN" - -gromacs:gcc-8-cuda-11.0:release:configure: - extends: - - .gromacs:base:release:configure - - .use-gcc:base - - .use-mpi - - .use-cuda - - .rules:nightly-only-for-release - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - COMPILER_MAJOR_VERSION: 8 - RELEASE_BUILD_DIR: release-builds-gcc - CMAKE_EXTRA_OPTIONS: "-DGMX_BUILD_MDRUN_ONLY=ON" - CMAKE_BUILD_TYPE_OPTIONS : "-DCMAKE_BUILD_TYPE=RelWithAssert" - CMAKE_REGRESSIONTEST_OPTIONS: "" - dependencies: - - archive:package - - regressiontests:package - - prepare-release-version - -gromacs:gcc-9:release:configure: - extends: - - .gromacs:base:release:configure - - .use-gcc:base - - .use-opencl - - .rules:nightly-only-for-release - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - COMPILER_MAJOR_VERSION: 9 - RELEASE_BUILD_DIR: release-builds-gcc - CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert" - dependencies: - - archive:package - - regressiontests:package - - prepare-release-version - -gromacs:clang-9:release:configure: - extends: - - .gromacs:base:release:configure - - .use-clang:base - - .use-mpi - - .rules:nightly-only-for-release - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - COMPILER_MAJOR_VERSION: 9 - RELEASE_BUILD_DIR: release-builds-clang - CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=ON" - CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert" - dependencies: - - archive:package - - regressiontests:package - - prepare-release-version - -gromacs:clang-8-cuda-10.1:release:configure: - extends: - - .gromacs:base:release:configure - - .use-clang:base - - .use-cuda - - .rules:nightly-only-for-release - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1 - variables: - COMPILER_MAJOR_VERSION: 8 - RELEASE_BUILD_DIR: release-builds-clang - CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert" - -gromacs:oneapi-2021.1.1-opencl:release:configure: - extends: - - .gromacs:base:release:configure - - .use-oneapi:base - - .use-opencl - - .rules:nightly-only-for-release - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - COMPILER_MAJOR_VERSION: 2021 - RELEASE_BUILD_DIR: release-builds-oneapi - -# Jobs running during build stage - -.gromacs:base:build: - stage: build - script: - - CMAKE=${CMAKE:-$(which cmake)} - - cd $BUILD_DIR - - $CMAKE --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log - - $CMAKE --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log - - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log - | grep -v "CMake" | tee buildErrors.log || true - - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true - - $CMAKE --build . --target install 2>&1 | tee installBuildLogFile.log - - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi - - for file in `find . -mindepth 1 -name "*.o" ! -type l` ; do echo $file ; rm $file ; done 2>&1 > remove-build-objects.log - - cd .. - artifacts: - when: always - paths: - - $BUILD_DIR - - $INSTALL_DIR/ - -.gromacs:static-analyzer-build: - stage: build - script: - - CMAKE=${CMAKE:-$(which cmake)} - - cd $BUILD_DIR - - scan-build -o scan_html $CMAKE --build . -- -j8 2>&1 | tee buildLogFile.log - - awk '/warning/,/warning.*generated|^$/' buildLogFile.log - | grep -v "CMake" | tee buildErrors.log || true - - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true - - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi - - cd .. - artifacts: - when: always - paths: - - $BUILD_DIR/scan_html - -gromacs:gcc-10:build: - extends: - - .variables:default - - .gromacs:base:build - - .before_script:default - - .use-ccache - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - needs: - - job: gromacs:gcc-10:configure - -gromacs:clang-8-cuda-10.0:build: - extends: - - .variables:default - - .gromacs:base:build - - .use-clang:base - - .use-ccache - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - needs: - - job: gromacs:clang-8-cuda-10.0:configure - -gromacs:gcc-7-cuda-10.2:build: - extends: - - .variables:default - - .gromacs:base:build - - .before_script:default - - .use-ccache - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - needs: - - job: gromacs:gcc-7-cuda-10.2:configure - -gromacs:gcc-8-cuda-11.0:buildMPI: - extends: - - .variables:default - - .gromacs:base:build - - .before_script:default - - .use-ccache - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - needs: - - job: gromacs:gcc-8-cuda-11.0:configureMPI - -gromacs:clang-TSAN:build: - extends: - - .variables:default - - .gromacs:base:build - - .use-clang:base - - .use-ccache - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - needs: - - job: gromacs:clang-TSAN:configure - -gromacs:icc-2021.1:build: - extends: - - .variables:default - - .gromacs:base:build - - .use-icc-oneapi:base - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - needs: - - job: gromacs:icc-2021.1:configure - -gromacs:clang-ASAN:build: - extends: - - .variables:default - - .gromacs:base:build - - .use-clang:base - - .use-ccache - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-ASAN:configure - -gromacs:clang-UBSAN:build: - extends: - - .variables:default - - .gromacs:base:build - - .use-clang:base - - .use-ccache - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-UBSAN:configure - -gromacs:clang-static-analyzer:build: - extends: - - .variables:default - - .gromacs:static-analyzer-build - - .use-clang:base - - .use-ccache - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-static-analyzer:configure - -gromacs:clang-8:build: - extends: - - .variables:default - - .gromacs:base:build - - .before_script:default - - .use-ccache - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0 - needs: - - job: gromacs:clang-8:configure - -gromacs:oneapi-2021.1.1-opencl:build: - extends: - - .variables:default - - .gromacs:base:build - - .use-ccache - - .use-oneapi:base - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - needs: - - job: gromacs:oneapi-2021.1.1-opencl:configure - -gromacs:oneapi-2021.1.1-sycl:build: - extends: - - .variables:default - - .gromacs:base:build - - .use-ccache - - .use-oneapi:base - - .rules:merge-and-post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - needs: - - job: gromacs:oneapi-2021.1.1-sycl:configure - -gromacs:clang-9-mpi:build: - extends: - - .variables:default - - .gromacs:base:build - - .before_script:default - - .use-ccache - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - needs: - - job: gromacs:clang-9-mpi:configure - -gromacs:gcc-8-cuda-11.0:release:build: - extends: - - .variables:default - - .gromacs:base:build - - .before_script:default - - .use-ccache - - .rules:nightly-only-for-release - stage: release-build - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - BUILD_DIR: release-builds-gcc - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0 - needs: - - job: gromacs:gcc-8-cuda-11.0:release:configure - -gromacs:gcc-9:release:build: - extends: - - .variables:default - - .gromacs:base:build - - .before_script:default - - .use-ccache - - .rules:nightly-only-for-release - stage: release-build - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - BUILD_DIR: release-builds-gcc - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9 - needs: - - job: gromacs:gcc-9:release:configure - -gromacs:clang-9:release:build: - extends: - - .variables:default - - .gromacs:base:build - - .before_script:default - - .use-ccache - - .rules:nightly-only-for-release - stage: release-build - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - BUILD_DIR: release-builds-clang - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9 - needs: - - job: gromacs:clang-9:release:configure - -gromacs:clang-8-cuda-10.1:release:build: - extends: - - .variables:default - - .gromacs:base:build - - .before_script:default - - .use-ccache - - .rules:nightly-only-for-release - stage: release-build - variables: - BUILD_DIR: release-builds-clang - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1 - needs: - - job: gromacs:clang-8-cuda-10.1:release:configure - -gromacs:oneapi-2021.1.1-opencl:release:build: - extends: - - .variables:default - - .gromacs:base:build - - .use-oneapi:base - - .use-opencl - - .use-ccache - - .rules:nightly-only-for-release - stage: release-build - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - BUILD_DIR: release-builds-oneapi - COMPILER_MAJOR_VERSION: 2021 - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - needs: - - job: gromacs:oneapi-2021.1.1-opencl:release:configure - -# Jobs running during test stage - -.gromacs:base:test: - extends: - - .variables:default - stage: test - cache: {} - retry: - max: 1 - variables: - CTEST_RUN_MODE: "ExperimentalTest" - script: - - CMAKE=${CMAKE:-$(which cmake)} - - cd $BUILD_DIR - - export UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1:suppressions=$CI_PROJECT_DIR/admin/ubsan-suppressions.txt - # Needed to run MPI enabled code in the docker images, until we set up different users - - export OMPI_ALLOW_RUN_AS_ROOT=1 - - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 - - export ASAN_OPTIONS="check_initialization_order=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true:detect_stack_use_after_return=true" - # If $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES is not set and we have GPUs, set it - - if [ -z $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES ] && [ -n $KUBERNETES_EXTENDED_RESOURCE_NAME ] ; then - if grep -q '/gpu$' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then - echo "export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES=\"$KUBERNETES_EXTENDED_RESOURCE_LIMIT\""; - export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES="$KUBERNETES_EXTENDED_RESOURCE_LIMIT"; - fi - fi - - if grep -qF 'nvidia.com/gpu' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then - nvidia-smi || true; - fi - - ctest -D $CTEST_RUN_MODE --output-on-failure | tee ctestLog.log || true - - awk '/The following tests FAILED/,/^Errors while running CTest|^$/' - ctestLog.log | tee ctestErrors.log - - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/*.xml > JUnitTestResults.xml - - if [ -s ctestErrors.log ] ; then - echo "Error during running ctest"; - exit 1; - fi - - cd .. - artifacts: - reports: - junit: $BUILD_DIR/JUnitTestResults.xml - paths: - - $BUILD_DIR/Testing - - $BUILD_DIR/tests - when: always - expire_in: 1 week - -.gromacs:base:regressiontest: - extends: - - .variables:default - variables: - KUBERNETES_CPU_LIMIT: 4 - KUBERNETES_CPU_REQUEST: 4 - KUBERNETES_MEMORY_REQUEST: 4Gi - REGRESSIONTEST_TOTAL_RANK_NUMBER: 4 - REGRESSIONTEST_OMP_RANK_NUMBER: 2 - REGRESSIONTEST_PME_RANK_NUMBER: 1 - REGRESSIONTEST_MPI_RUN_COMMAND: "" - REGRESSIONTEST_DOUBLE: "" - REGRESSIONTEST_PARALLEL: "-nt" - stage: test - cache: {} - retry: - max: 1 - script: - - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0" - - export ASAN_OPTIONS="check_initialization_order=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true:detect_stack_use_after_return=true" - # Needed to run MPI enabled code in the docker images, until we set up different users - - export OMPI_ALLOW_RUN_AS_ROOT=1 - - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 - - tar xzf gmx-regressiontests.tar.gz - - source $INSTALL_DIR/bin/GMXRC - - cd regressiontests - - perl gmxtest.pl $REGRESSIONTEST_PARALLEL $REGRESSIONTEST_TOTAL_RANK_NUMBER -ntomp $REGRESSIONTEST_OMP_RANK_NUMBER -npme $REGRESSIONTEST_PME_RANK_NUMBER $REGRESSIONTEST_DOUBLE $REGRESSIONTEST_MPI_RUN_COMMAND -xml all - artifacts: - paths: - - regressiontests/gmxtest.xml - when: always - expire_in: 1 week - -gromacs:gcc-10:test: - extends: - - .gromacs:base:test - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib" - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-10:build - -gromacs:clang-8-cuda-10.0:test: - extends: - - .gromacs:base:test - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-8-cuda-10.0:build - -gromacs:gcc-7-cuda-10.2:test: - extends: - - .gromacs:base:test - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-7-cuda-10.2:build - -gromacs:gcc-8-cuda-10.2:test-gpucommupd: - extends: - - .gromacs:base:test - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - GMX_GPU_DD_COMMS: 1 - GMX_GPU_PME_PP_COMMS: 1 - GMX_FORCE_UPDATE_DEFAULT_GPU: 1 - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-7-cuda-10.2:build - -gromacs:clang-8:test: - extends: - - .gromacs:base:test - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0 - needs: - - job: gromacs:clang-8:build - -gromacs:clang-TSAN:test: - extends: - - .gromacs:base:test - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - needs: - - job: gromacs:clang-TSAN:build - -gromacs:icc-2021.1:test: - extends: - - .gromacs:base:test - - .use-icc-oneapi:base - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - needs: - - job: gromacs:icc-2021.1:build - -gromacs:clang-ASAN:test: - extends: - - .gromacs:base:test - - .use-clang:base - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - CTEST_RUN_MODE: "ExperimentalMemCheck" - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-ASAN:build - -gromacs:clang-UBSAN:test: - extends: - - .gromacs:base:test - - .use-clang:base - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-UBSAN:build - -gromacs:oneapi-2021.1.1-opencl:test: - extends: - - .gromacs:base:test - - .use-oneapi:base - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - needs: - - job: gromacs:oneapi-2021.1.1-opencl:build - -gromacs:oneapi-2021.1.1-sycl:test: - extends: - - .gromacs:base:test - - .use-oneapi:base - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - needs: - - job: gromacs:oneapi-2021.1.1-sycl:build - -gromacs:clang-9-mpi:test: - extends: - - .gromacs:base:test - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-9-mpi:build - -gromacs:gcc-10:regressiontest: - extends: - - .gromacs:base:regressiontest - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-10 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - REGRESSIONTEST_PME_RANK_NUMBER: 0 - REGRESSIONTEST_TOTAL_RANK_NUMBER: 2 - REGRESSIONTEST_OMP_RANK_NUMBER: 1 - LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib" - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-10:build - - job: regressiontests:prepare - -gromacs:clang-8-cuda-10.0:regressiontest: - extends: - - .gromacs:base:regressiontest - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - REGRESSIONTEST_PME_RANK_NUMBER: 0 - REGRESSIONTEST_TOTAL_RANK_NUMBER: 2 - REGRESSIONTEST_OMP_RANK_NUMBER: 1 - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-8-cuda-10.0:build - - job: regressiontests:prepare - - -gromacs:gcc-7-cuda-10.2:regressiontest: - extends: - - .gromacs:base:regressiontest - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - REGRESSIONTEST_PME_RANK_NUMBER: 0 - REGRESSIONTEST_TOTAL_RANK_NUMBER: 2 - REGRESSIONTEST_OMP_RANK_NUMBER: 1 - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-7-cuda-10.2:build - - job: regressiontests:prepare - -gromacs:gcc-7-cuda-10.2:regressiontest-gpucommupd-tMPI: - extends: - - .gromacs:base:regressiontest - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2 - REGRESSIONTEST_PME_RANK_NUMBER: 0 - REGRESSIONTEST_TOTAL_RANK_NUMBER: 4 - REGRESSIONTEST_OMP_RANK_NUMBER: 1 - GMX_GPU_DD_COMMS: 1 - GMX_GPU_PME_PP_COMMS: 1 - GMX_FORCE_UPDATE_DEFAULT_GPU: 1 - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-7-cuda-10.2:build - - job: regressiontests:prepare - artifacts: - paths: - - regressiontests - when: always - expire_in: 1 week - -gromacs:gcc-7-cuda-10.2:regressiontest-upd-tMPI: - extends: - - .gromacs:base:regressiontest - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-cuda-10.2 - variables: - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2 - REGRESSIONTEST_PME_RANK_NUMBER: 0 - REGRESSIONTEST_TOTAL_RANK_NUMBER: 4 - REGRESSIONTEST_OMP_RANK_NUMBER: 1 - GMX_FORCE_UPDATE_DEFAULT_GPU: 1 - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-7-cuda-10.2:build - - job: regressiontests:prepare - artifacts: - paths: - - regressiontests - when: always - expire_in: 1 week - -gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-MPI: - extends: - - .gromacs:base:regressiontest - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2 - REGRESSIONTEST_PME_RANK_NUMBER: 0 - REGRESSIONTEST_TOTAL_RANK_NUMBER: 4 - REGRESSIONTEST_OMP_RANK_NUMBER: 1 - REGRESSIONTEST_PARALLEL: "-np" - GMX_GPU_DD_COMMS: 1 - GMX_GPU_PME_PP_COMMS: 1 - GMX_FORCE_UPDATE_DEFAULT_GPU: 1 - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-8-cuda-11.0:buildMPI - - job: regressiontests:prepare - artifacts: - paths: - - regressiontests - when: always - expire_in: 1 week - -gromacs:clang-8:regressiontest: - extends: - - .gromacs:base:regressiontest - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0 - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-8:build - - job: regressiontests:prepare - -gromacs:clang-TSAN:regressiontest: - extends: - - .gromacs:base:regressiontest - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-TSAN:build - - job: regressiontests:prepare - -gromacs:icc-2021.1:regressiontest: - extends: - - .gromacs:base:regressiontest - - .use-icc-oneapi:base - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - needs: - - job: gromacs:icc-2021.1:build - - job: regressiontests:prepare - -gromacs:clang-ASAN:regressiontest: - extends: - - .gromacs:base:regressiontest - - .use-clang:base - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-tsan - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-ASAN:build - - job: regressiontests:prepare - -gromacs:clang-9:regressiontest: - extends: - - .gromacs:base:regressiontest - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - REGRESSIONTEST_DOUBLE: "-double" - REGRESSIONTEST_PARALLEL: "-np" - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-9-mpi:build - - job: regressiontests:prepare - -gromacs:oneapi-2021.1.1-opencl:regressiontest: - extends: - - .gromacs:base:regressiontest - - .use-oneapi:base - - .rules:merge-requests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - needs: - - job: gromacs:oneapi-2021.1.1-opencl:build - - job: regressiontests:prepare - -gromacs:oneapi-2021.1.1-sycl:regressiontest: - extends: - - .gromacs:base:regressiontest - - .use-oneapi:base - - .rules:post-merge-acceptance - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - needs: - - job: gromacs:oneapi-2021.1.1-sycl:build - - job: regressiontests:prepare - -gromacs:gcc-8-cuda-11.0:release:test: - extends: - - .gromacs:base:test - - .rules:nightly-only-for-release - stage: release-tests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - BUILD_DIR: release-builds-gcc - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-8-cuda-11.0:release:configure - - job: gromacs:gcc-8-cuda-11.0:release:build - -gromacs:gcc-9:release:test: - extends: - - .gromacs:base:test - - .rules:nightly-only-for-release - stage: release-tests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - BUILD_DIR: release-builds-gcc - KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib" - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-9:release:configure - - job: gromacs:gcc-9:release:build - -gromacs:clang-9:release:test: - extends: - - .gromacs:base:test - - .rules:nightly-only-for-release - stage: release-tests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - BUILD_DIR: release-builds-clang - needs: - - job: gromacs:clang-9:release:configure - - job: gromacs:clang-9:release:build - -gromacs:clang-8-cuda-10.1:release:test: - extends: - - .gromacs:base:test - - .rules:nightly-only-for-release - stage: release-tests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1 - variables: - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - BUILD_DIR: release-builds-clang - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-8-cuda-10.1:release:configure - - job: gromacs:clang-8-cuda-10.1:release:build - -gromacs:oneapi-2021.1.1-opencl:release:test: - extends: - - .gromacs:base:test - - .use-oneapi:base - - .rules:nightly-only-for-release - stage: release-tests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - BUILD_DIR: release-builds-oneapi - needs: - - job: gromacs:oneapi-2021.1.1-opencl:release:configure - - job: gromacs:oneapi-2021.1.1-opencl:release:build - -gromacs:gcc-9:release:regressiontest: - extends: - - .gromacs:base:regressiontest - - .rules:nightly-only-for-release - stage: release-tests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-9 - variables: - CMAKE: /usr/local/cmake-3.13.0/bin/cmake - BUILD_DIR: release-builds-gcc - KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib" - tags: - - k8s-scilifelab - needs: - - job: gromacs:gcc-9:release:build - - job: regressiontests:package - -gromacs:clang-9:release:regressiontest: - extends: - - .gromacs:base:regressiontest - - .rules:nightly-only-for-release - stage: release-tests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-9 - variables: - CMAKE: /usr/local/cmake-3.15.7/bin/cmake - BUILD_DIR: release-builds-clang - REGRESSIONTEST_DOUBLE: "-double" - REGRESSIONTEST_PARALLEL: "-np" - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-9:release:build - - job: regressiontests:package - -gromacs:clang-8-cuda-10.1:release:regressiontest: - extends: - - .gromacs:base:regressiontest - - .rules:nightly-only-for-release - stage: release-tests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.1 - variables: - BUILD_DIR: release-builds-clang - KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" - KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 - REGRESSIONTEST_PME_RANK_NUMBER: 0 - REGRESSIONTEST_TOTAL_RANK_NUMBER: 2 - REGRESSIONTEST_OMP_RANK_NUMBER: 1 - tags: - - k8s-scilifelab - needs: - - job: gromacs:clang-8-cuda-10.1:release:build - - job: regressiontests:package - -gromacs:oneapi-2021.1.1-opencl:release:regressiontest: - extends: - - .gromacs:base:regressiontest - - .use-oneapi:base - - .rules:nightly-only-for-release - stage: release-tests - image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1 - variables: - CMAKE: /usr/local/cmake-3.17.2/bin/cmake - BUILD_DIR: release-builds-oneapi - REGRESSIONTEST_PME_RANK_NUMBER: 0 - REGRESSIONTEST_TOTAL_RANK_NUMBER: 2 - REGRESSIONTEST_OMP_RANK_NUMBER: 1 - needs: - - job: gromacs:oneapi-2021.1.1-opencl:release:build - - job: regressiontests:package diff --git a/admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml b/admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml new file mode 100644 index 0000000000..4a7e1aeb56 --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml @@ -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 index 0000000000..acedae27df --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.0.gitlab-ci.yml @@ -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 index 0000000000..e6ea8183bf --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-10.1-release.gitlab-ci.yml @@ -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 index 0000000000..5a590b9701 --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8.gitlab-ci.yml @@ -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 index 0000000000..81f3e1f98a --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-mpi.gitlab-ci.yml @@ -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 index 0000000000..c6c77685b3 --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-9-release.gitlab-ci.yml @@ -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 index 0000000000..3052a6298f --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-ASAN.gitlab-ci.yml @@ -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 index 0000000000..64834ff427 --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-TSAN.gitlab-ci.yml @@ -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 index 0000000000..8676952bee --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-UBSAN.gitlab-ci.yml @@ -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 index 0000000000..0d6624c59c --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.clang-static-analyzer.gitlab-ci.yml @@ -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 index 0000000000..0b4f7a7f9b --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-10.gitlab-ci.yml @@ -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 index 0000000000..41ed3989a0 --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-7-cuda-10.2.gitlab-ci.yml @@ -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 index 0000000000..b2e302b486 --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0-release.gitlab-ci.yml @@ -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 index 0000000000..59a8e11160 --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-8-cuda-11.0.gitlab-ci.yml @@ -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 index 0000000000..4e05b53ede --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-9-release.gitlab-ci.yml @@ -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 index 0000000000..849eb19aea --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.icc-2021.1.gitlab-ci.yml @@ -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 index 0000000000..db672a5f23 --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl-release.gitlab-ci.yml @@ -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 index 0000000000..4f304b8372 --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-opencl.gitlab-ci.yml @@ -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 index 0000000000..5f01e0d579 --- /dev/null +++ b/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.1.1-sycl.gitlab-ci.yml @@ -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 + diff --git a/docs/install-guide/index.rst b/docs/install-guide/index.rst index 420c40271c..24911f03ee 100644 --- a/docs/install-guide/index.rst +++ b/docs/install-guide/index.rst @@ -70,7 +70,7 @@ using the following `CMake options`_ with the appropriate value instead of ``xxx`` : * ``-DCMAKE_C_COMPILER=xxx`` equal to the name of the C99 `Compiler`_ you wish to use (or the environment variable ``CC``) -* ``-DCMAKE_CXX_COMPILER=xxx`` equal to the name of the C++98 `compiler`_ you wish to use (or the environment variable ``CXX``) +* ``-DCMAKE_CXX_COMPILER=xxx`` equal to the name of the C++17 `compiler`_ you wish to use (or the environment variable ``CXX``) * ``-DGMX_MPI=on`` to build using `MPI support`_ (generally good to combine with `building only mdrun`_) * ``-DGMX_GPU=CUDA`` to build with NVIDIA CUDA support enabled. * ``-DGMX_GPU=OpenCL`` to build with OpenCL_ support enabled. @@ -144,7 +144,7 @@ particular libstdc++ library, provide the path to g++ with ``-DGMX_GPLUSPLUS_PATH=/path/to/g++``. On Windows with the Intel compiler, the MSVC standard library is used, -and at least MSVC 2017 15.7 is required. Load the enviroment variables with +and at least MSVC 2017 15.7 is required. Load the environment variables with vcvarsall.bat. To build with clang and llvm's libcxx standard library, use -- 2.22.0