Also, backport a change from MR !796 that silences the false-positive ICC
compiler warning.
args[${#args[@]}]="--llvm 8 --cuda 10.1 --clfft --mpi openmpi"
args[${#args[@]}]="--llvm 8 --cuda 11.0 --clfft --mpi openmpi"
args[${#args[@]}]="--llvm 9 --clfft --mpi openmpi --ubuntu 18.04"
args[${#args[@]}]="--llvm 8 --cuda 10.1 --clfft --mpi openmpi"
args[${#args[@]}]="--llvm 8 --cuda 11.0 --clfft --mpi openmpi"
args[${#args[@]}]="--llvm 9 --clfft --mpi openmpi --ubuntu 18.04"
-args[${#args[@]}]="--oneapi 2021.1-beta09"
+args[${#args[@]}]="--oneapi 2021.1.1"
args[${#args[@]}]="--llvm --doxygen"
echo "Building the following images."
args[${#args[@]}]="--llvm --doxygen"
echo "Building the following images."
apt_keys=['https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB'],
apt_repositories=['deb https://apt.repos.intel.com/oneapi all main'],
# Add minimal packages (not the whole HPC toolkit!)
apt_keys=['https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB'],
apt_repositories=['deb https://apt.repos.intel.com/oneapi all main'],
# Add minimal packages (not the whole HPC toolkit!)
- ospackages=['intel-oneapi-dpcpp-cpp-compiler-pro-{}'.format(version),
+ ospackages=['intel-oneapi-dpcpp-cpp-{}'.format(version),
'intel-oneapi-openmp-{}'.format(version),
'intel-oneapi-mkl-{}'.format(version),
'intel-oneapi-mkl-devel-{}'.format(version)]
'intel-oneapi-openmp-{}'.format(version),
'intel-oneapi-mkl-{}'.format(version),
'intel-oneapi-mkl-devel-{}'.format(version)]
# oneAPI makes an official release. Also, the resulting container is a mix
# of packages with different betaXY version numbers, which hopefully works and
# is what Intel intends...
# oneAPI makes an official release. Also, the resulting container is a mix
# of packages with different betaXY version numbers, which hopefully works and
# is what Intel intends...
-compiler_group.add_argument('--oneapi', type=str, nargs='?', const="2021.1-beta09", default=None,
+compiler_group.add_argument('--oneapi', type=str, nargs='?', const="2021.1.1", default=None,
help='Select Intel oneAPI package version.')
linux_group = parser.add_mutually_exclusive_group()
help='Select Intel oneAPI package version.')
linux_group = parser.add_mutually_exclusive_group()
- mkdir -p ccache
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
- mkdir -p ccache
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
+
+# Base definition for using the classic Intel compiler
+.use-icc-oneapi:base:
+ variables:
+ CMAKE_COMPILER_SCRIPT: -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc #-DCMAKE_PREFIX_PATH=/opt/intel/oneapi/compiler/latest/linux
+ CMAKE_EXTRA_OPTIONS: -DGMX_FFT_LIBRARY=mkl
+ before_script:
+ # Necessary to override gitlab default 'set -e' which breaks Intel's
+ # setvar.sh script
+ - set +e
+ - source /opt/intel/oneapi/setvars.sh
+ - set -e
+ - mkdir -p ccache
+# - export CCACHE_BASEDIR=${PWD}
+# - export CCACHE_DIR=${PWD}/ccache
COMPILER_MAJOR_VERSION: 8
CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
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
gromacs:clang-8:configure:
extends:
- .gromacs:base:configure
COMPILER_MAJOR_VERSION: 8
CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
COMPILER_MAJOR_VERSION: 8
CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
-gromacs:oneapi-2021.1-beta09-opencl:configure:
+gromacs:oneapi-2021.1.1-opencl:configure:
extends:
- .gromacs:base:configure
- .use-oneapi:base
- .use-opencl
- .rules:merge-requests
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-beta09
+ 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
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
COMPILER_MAJOR_VERSION: 2021
-gromacs:oneapi-2021.1-beta09-sycl:configure:
+gromacs:oneapi-2021.1.1-sycl:configure:
extends:
- .gromacs:base:configure
- .use-oneapi:base
- .use-sycl
- .rules:merge-and-post-merge-acceptance
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-beta09
+ 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
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
COMPILER_MAJOR_VERSION: 2021
RELEASE_BUILD_DIR: release-builds-clang
CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
RELEASE_BUILD_DIR: release-builds-clang
CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
-gromacs:oneapi-2021.1-beta09-opencl:release:configure:
+gromacs:oneapi-2021.1.1-opencl:release:configure:
extends:
- .gromacs:base:release:configure
- .use-oneapi:base
- .use-opencl
- .rules:nightly-only-for-release
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-beta09
+ 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
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
COMPILER_MAJOR_VERSION: 2021
needs:
- job: gromacs:clang-TSAN:configure
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:clang-ASAN:build:
extends:
- .variables:default
needs:
- job: gromacs:clang-8:configure
needs:
- job: gromacs:clang-8:configure
-gromacs:oneapi-2021.1-beta09-opencl:build:
+gromacs:oneapi-2021.1.1-opencl:build:
extends:
- .variables:default
- .gromacs:base:build
- .use-ccache
- .use-oneapi:base
- .rules:merge-requests
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-beta09
+ 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:
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
needs:
- - job: gromacs:oneapi-2021.1-beta09-opencl:configure
+ - job: gromacs:oneapi-2021.1.1-opencl:configure
-gromacs:oneapi-2021.1-beta09-sycl:build:
+gromacs:oneapi-2021.1.1-sycl:build:
extends:
- .variables:default
- .gromacs:base:build
- .use-ccache
- .use-oneapi:base
- .rules:merge-and-post-merge-acceptance
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-beta09
+ 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:
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
needs:
- - job: gromacs:oneapi-2021.1-beta09-sycl:configure
+ - job: gromacs:oneapi-2021.1.1-sycl:configure
gromacs:clang-9-mpi:build:
extends:
gromacs:clang-9-mpi:build:
extends:
needs:
- job: gromacs:clang-8-cuda-10.1:release:configure
needs:
- job: gromacs:clang-8-cuda-10.1:release:configure
-gromacs:oneapi-2021.1-beta09-opencl:release:build:
+gromacs:oneapi-2021.1.1-opencl:release:build:
extends:
- .variables:default
- .gromacs:base:build
extends:
- .variables:default
- .gromacs:base:build
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
BUILD_DIR: release-builds-oneapi
COMPILER_MAJOR_VERSION: 2021
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-beta09
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1.1
- - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
+ - job: gromacs:oneapi-2021.1.1-opencl:release:configure
# Jobs running during test stage
# Jobs running during test stage
needs:
- job: gromacs:clang-TSAN:build
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
gromacs:clang-ASAN:test:
extends:
- .gromacs:base:test
needs:
- job: gromacs:clang-UBSAN:build
needs:
- job: gromacs:clang-UBSAN:build
-gromacs:oneapi-2021.1-beta09-opencl:test:
+gromacs:oneapi-2021.1.1-opencl:test:
extends:
- .gromacs:base:test
- .use-oneapi:base
- .rules:merge-requests
extends:
- .gromacs:base:test
- .use-oneapi:base
- .rules:merge-requests
- image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
+ 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:
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
needs:
- - job: gromacs:oneapi-2021.1-beta09-opencl:build
+ - job: gromacs:oneapi-2021.1.1-opencl:build
-gromacs:oneapi-2021.1-beta09-sycl:test:
+gromacs:oneapi-2021.1.1-sycl:test:
extends:
- .gromacs:base:test
- .use-oneapi:base
- .rules:post-merge-acceptance
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-beta09
+ 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:
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
needs:
- - job: gromacs:oneapi-2021.1-beta09-sycl:build
+ - job: gromacs:oneapi-2021.1.1-sycl:build
gromacs:clang-9-mpi:test:
extends:
gromacs:clang-9-mpi:test:
extends:
- job: gromacs:clang-TSAN:build
- job: regressiontests:prepare
- 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
gromacs:clang-ASAN:regressiontest:
extends:
- .gromacs:base:regressiontest
- job: gromacs:clang-9-mpi:build
- job: regressiontests:prepare
- job: gromacs:clang-9-mpi:build
- job: regressiontests:prepare
-gromacs:oneapi-2021.1-beta09-opencl:regressiontest:
+gromacs:oneapi-2021.1.1-opencl:regressiontest:
extends:
- .gromacs:base:regressiontest
- .use-oneapi:base
- .rules:merge-requests
extends:
- .gromacs:base:regressiontest
- .use-oneapi:base
- .rules:merge-requests
- image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
+ 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:
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
needs:
- - job: gromacs:oneapi-2021.1-beta09-opencl:build
+ - job: gromacs:oneapi-2021.1.1-opencl:build
- job: regressiontests:prepare
- job: regressiontests:prepare
-gromacs:oneapi-2021.1-beta09-sycl:regressiontest:
+gromacs:oneapi-2021.1.1-sycl:regressiontest:
extends:
- .gromacs:base:regressiontest
- .use-oneapi:base
- .rules:post-merge-acceptance
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-beta09
+ 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:
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
needs:
- - job: gromacs:oneapi-2021.1-beta09-sycl:build
+ - job: gromacs:oneapi-2021.1.1-sycl:build
- job: regressiontests:prepare
gromacs:gcc-8-cuda-11.0:release:test:
- job: regressiontests:prepare
gromacs:gcc-8-cuda-11.0:release:test:
- job: gromacs:clang-8-cuda-10.1:release:configure
- job: gromacs:clang-8-cuda-10.1:release:build
- job: gromacs:clang-8-cuda-10.1:release:configure
- job: gromacs:clang-8-cuda-10.1:release:build
-gromacs:oneapi-2021.1-beta09-opencl:release:test:
+gromacs:oneapi-2021.1.1-opencl:release:test:
extends:
- .gromacs:base:test
- .use-oneapi:base
- .rules:nightly-only-for-release
stage: release-tests
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-beta09
+ 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:
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
BUILD_DIR: release-builds-oneapi
needs:
- - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
- - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
+ - 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:gcc-9:release:regressiontest:
extends:
- job: gromacs:clang-8-cuda-10.1:release:build
- job: regressiontests:package
- job: gromacs:clang-8-cuda-10.1:release:build
- job: regressiontests:package
-gromacs:oneapi-2021.1-beta09-opencl:release:regressiontest:
+gromacs:oneapi-2021.1.1-opencl:release:regressiontest:
extends:
- .gromacs:base:regressiontest
- .use-oneapi:base
- .rules:nightly-only-for-release
stage: release-tests
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-beta09
+ 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
variables:
CMAKE: /usr/local/cmake-3.17.2/bin/cmake
BUILD_DIR: release-builds-oneapi
REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
REGRESSIONTEST_OMP_RANK_NUMBER: 1
needs:
REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
REGRESSIONTEST_OMP_RANK_NUMBER: 1
needs:
- - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
+ - job: gromacs:oneapi-2021.1.1-opencl:release:build
- job: regressiontests:package
- job: regressiontests:package
*/
/* Small grid size array */
*/
/* Small grid size array */
-#define g_initNR 15
-const int grid_init[g_initNR] = { 6, 8, 10, 12, 14, 16, 20, 24, 25, 28, 32, 36, 40, 42, 44 };
+constexpr int g_initNR = 15;
+constexpr int grid_init[g_initNR] = { 6, 8, 10, 12, 14, 16, 20, 24, 25, 28, 32, 36, 40, 42, 44 };
/* For larger grid sizes, a prefactor with any power of 2 can be added.
* Only sizes divisible by 4 should be used, 90 is allowed, 140 not.
*/
/* For larger grid sizes, a prefactor with any power of 2 can be added.
* Only sizes divisible by 4 should be used, 90 is allowed, 140 not.
*/
-#define g_baseNR 14
-const int grid_base[g_baseNR] = { 45, 48, 50, 52, 54, 56, 60, 64, 70, 72, 75, 80, 81, 84 };
+constexpr int g_baseNR = 14;
+constexpr int grid_base[g_baseNR] = { 45, 48, 50, 52, 54, 56, 60, 64, 70, 72, 75, 80, 81, 84 };
real calcFftGrid(FILE* fp, const matrix box, real gridSpacing, int minGridPointsPerDim, int* nx, int* ny, int* nz)
{
real calcFftGrid(FILE* fp, const matrix box, real gridSpacing, int minGridPointsPerDim, int* nx, int* ny, int* nz)
{
gmx_fatal(FARGS, "invalid fourier grid spacing: %g", gridSpacing);
}
gmx_fatal(FARGS, "invalid fourier grid spacing: %g", gridSpacing);
}
- if (grid_base[g_baseNR - 1] % 4 != 0)
- {
- gmx_incons("the last entry in grid_base is not a multiple of 4");
- }
+ static_assert(grid_base[g_baseNR - 1] % 4 == 0,
+ "the last entry in grid_base is not a multiple of 4");
/* New grid calculation setup:
*
/* New grid calculation setup:
*