From: Mark Abraham Date: Thu, 6 Aug 2020 12:19:46 +0000 (+0000) Subject: Update minimum tested CUDA to 11.0 X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=commitdiff_plain;h=67bffc21cd7f10c0a6a2278274435031562e1719;p=alexxy%2Fgromacs.git Update minimum tested CUDA to 11.0 Generate code for valid compute capabilities. Suppressed a warning about codegen for deprecated architectures. Fixes #3609 --- diff --git a/admin/containers/buildall.sh b/admin/containers/buildall.sh index 590b3b88c8..16863e2309 100644 --- a/admin/containers/buildall.sh +++ b/admin/containers/buildall.sh @@ -9,9 +9,9 @@ SCRIPT=$PWD/scripted_gmx_docker_builds.py # images needed, because the same one can test library, # thread and no MPI configurations. -tag="gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master" +tag="gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master" tags[${#tags[@]}]=$tag -python3 $SCRIPT --cmake 3.15.7 --gcc 8 --cuda 10.1 --opencl --clfft --mpi openmpi \ +python3 $SCRIPT --cmake 3.15.7 --gcc 8 --cuda 11.0 --opencl --clfft --mpi openmpi \ | docker build -t $tag - tag="gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master" @@ -26,9 +26,9 @@ tag="gromacs/cmake-3.15.7-llvm-8-cuda-10.0-openmpi-master" tags[${#tags[@]}]=$tag python3 $SCRIPT --cmake 3.15.7 --llvm 8 --cuda 10.0 --mpi openmpi | docker build -t $tag - -tag="gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master" +tag="gromacs/cmake-3.15.7-llvm-8-cuda-11.0-openmpi-master" tags[${#tags[@]}]=$tag -python3 $SCRIPT --cmake 3.15.7 --llvm 8 --cuda 10.1 --mpi openmpi | docker build -t $tag - +python3 $SCRIPT --cmake 3.15.7 --llvm 8 --cuda 11.0 --mpi openmpi | docker build -t $tag - tag="gromacs/cmake-3.15.7-llvm-9-openmpi-master" tags[${#tags[@]}]=$tag diff --git a/admin/containers/utility.py b/admin/containers/utility.py index 73e6a85e2e..3626b728ed 100644 --- a/admin/containers/utility.py +++ b/admin/containers/utility.py @@ -76,15 +76,15 @@ compiler_group.add_argument('--icc', type=int, nargs='?', const=19, default=None 'Some checking is implemented to avoid incompatible combinations') linux_group = parser.add_mutually_exclusive_group() -linux_group.add_argument('--ubuntu', type=str, nargs='?', const='18.04', default='18.04', - choices=['16.04', '18.04'], - help='Select Ubuntu Linux base image. (default: ubuntu 18.04)') +linux_group.add_argument('--ubuntu', type=str, nargs='?', const='18.04', default='20.04', + choices=['16.04', '18.04', '20.04'], + help='Select Ubuntu Linux base image. (default: ubuntu 20.04)') linux_group.add_argument('--centos', type=str, nargs='?', const='7', default=None, choices=['6', '7'], help='Select Centos Linux base image.') parser.add_argument('--cuda', type=str, nargs='?', const='10.2', default=None, - choices=['9.0', '10.0', '10.1', '10.2'], + choices=['9.0', '10.0', '10.1', '10.2', '11.0'], help='Select a CUDA version for a base Linux image from NVIDIA.') parser.add_argument('--mpi', type=str, nargs='?', const='openmpi', default=None, diff --git a/admin/gitlab-ci/gromacs.gitlab-ci.yml b/admin/gitlab-ci/gromacs.gitlab-ci.yml index 4c38a6f15d..0cdf11cee8 100644 --- a/admin/gitlab-ci/gromacs.gitlab-ci.yml +++ b/admin/gitlab-ci/gromacs.gitlab-ci.yml @@ -228,13 +228,13 @@ gromacs:gcc-7:configure: CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON" COMPILER_MAJOR_VERSION: 7 -gromacs:gcc-8-cuda-10.1:configure: +gromacs:gcc-8-cuda-11.0:configure: extends: - .gromacs:base:configure - .use-gcc:base - .use-cuda - .rules:merge-requests - image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master + image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master variables: CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1" COMPILER_MAJOR_VERSION: 8 @@ -300,14 +300,14 @@ gromacs:clang-UBSAN:configure: COMPILER_MAJOR_VERSION: 8 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN" -gromacs:gcc-8-cuda-10.1:release:configure: +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: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master + image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master variables: COMPILER_MAJOR_VERSION: 8 RELEASE_BUILD_DIR: release-builds-gcc @@ -410,16 +410,16 @@ gromacs:gcc-7:build: - job: gromacs:gcc-7:configure artifacts: true -gromacs:gcc-8-cuda-10.1:build: +gromacs:gcc-8-cuda-11.0:build: extends: - .variables:default - .gromacs:base:build - .before_script:default - .use-ccache - .rules:merge-requests - image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master + image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master needs: - - job: gromacs:gcc-8-cuda-10.1:configure + - job: gromacs:gcc-8-cuda-11.0:configure gromacs:clang-TSAN:build: extends: @@ -493,7 +493,7 @@ gromacs:clang-9-mpi:build: needs: - job: gromacs:clang-9-mpi:configure -gromacs:gcc-8-cuda-10.1:release:build: +gromacs:gcc-8-cuda-11.0:release:build: extends: - .variables:default - .gromacs:base:build @@ -503,9 +503,9 @@ gromacs:gcc-8-cuda-10.1:release:build: stage: release-build variables: BUILD_DIR: release-builds-gcc - image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master + image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master needs: - - job: gromacs:gcc-8-cuda-10.1:release:configure + - job: gromacs:gcc-8-cuda-11.0:release:configure gromacs:gcc-7:release:build: extends: @@ -631,18 +631,18 @@ gromacs:gcc-7:test: needs: - job: gromacs:gcc-7:build -gromacs:gcc-8-cuda-10.1:test: +gromacs:gcc-8-cuda-11.0:test: extends: - .gromacs:base:test - .rules:merge-requests - image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master + image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master variables: KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 tags: - k8s-scilifelab needs: - - job: gromacs:gcc-8-cuda-10.1:build + - job: gromacs:gcc-8-cuda-11.0:build gromacs:clang-8:test: extends: @@ -711,11 +711,11 @@ gromacs:gcc-7:regressiontest: - job: gromacs:gcc-7:build - job: regressiontests:prepare -gromacs:gcc-8-cuda-10.1:regressiontest: +gromacs:gcc-8-cuda-11.0:regressiontest: extends: - .gromacs:base:regressiontest - .rules:merge-requests - image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master + image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master variables: KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 @@ -725,7 +725,7 @@ gromacs:gcc-8-cuda-10.1:regressiontest: tags: - k8s-scilifelab needs: - - job: gromacs:gcc-8-cuda-10.1:build + - job: gromacs:gcc-8-cuda-11.0:build - job: regressiontests:prepare gromacs:clang-8:regressiontest: @@ -776,12 +776,12 @@ gromacs:clang-9:regressiontest: - job: gromacs:clang-9-mpi:build - job: regressiontests:prepare -gromacs:gcc-8-cuda-10.1:release:test: +gromacs:gcc-8-cuda-11.0:release:test: extends: - .gromacs:base:test - .rules:nightly-only-for-release stage: release-tests - image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master + image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master variables: KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1 @@ -789,8 +789,8 @@ gromacs:gcc-8-cuda-10.1:release:test: tags: - k8s-scilifelab needs: - - job: gromacs:gcc-8-cuda-10.1:release:configure - - job: gromacs:gcc-8-cuda-10.1:release:build + - job: gromacs:gcc-8-cuda-11.0:release:configure + - job: gromacs:gcc-8-cuda-11.0:release:build gromacs:gcc-7:release:test: extends: diff --git a/cmake/gmxManageNvccConfig.cmake b/cmake/gmxManageNvccConfig.cmake index d7b8d4fe1e..7945ec4c7e 100644 --- a/cmake/gmxManageNvccConfig.cmake +++ b/cmake/gmxManageNvccConfig.cmake @@ -86,8 +86,8 @@ endif() # If any of these manual override variables for target CUDA GPU architectures # or virtual architecture is set, parse the values and assemble the nvcc # command line for these. Otherwise use our defaults. -# Note that the manual override variables require a semicolon separated -# architectures codes. +# Note that the manual override variables require a semicolon separating +# architecture codes. if (GMX_CUDA_TARGET_SM OR GMX_CUDA_TARGET_COMPUTE) set(GMX_CUDA_NVCC_GENCODE_FLAGS) set(_target_sm_list ${GMX_CUDA_TARGET_SM}) @@ -104,9 +104,13 @@ else() # => compile sm_30, sm_35, sm_37, sm_50, sm_52, sm_60, sm_61, sm_70 SASS, and compute_70 PTX # - with CUDA >=10.0 CC 7.5 is supported # => compile sm_30, sm_35, sm_37, sm_50, sm_52, sm_60, sm_61, sm_70, sm_75 SASS, and compute_75 PTX + # - with CUDA >=11.0 CC 8.0 is supported + # => compile sm_35, sm_37, sm_50, sm_52, sm_60, sm_61, sm_70, sm_75, sm_80 SASS, and compute_80 PTX # First add flags that trigger SASS (binary) code generation for physical arch - list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_30,code=sm_30") + if(CUDA_VERSION VERSION_LESS "11.0") + list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_30,code=sm_30") + endif() list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_35,code=sm_35") list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_37,code=sm_37") list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_50,code=sm_50") @@ -114,6 +118,11 @@ else() list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_60,code=sm_60") list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_61,code=sm_61") list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_70,code=sm_70") + if(NOT CUDA_VERSION VERSION_LESS "11.0") + # Requesting sm or compute 35, 37, or 50 triggers deprecation messages with + # nvcc 11.0, which we need to suppress for use in CI + list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-Wno-deprecated-gpu-targets") + endif() # Next add flags that trigger PTX code generation for the newest supported virtual arch # that's useful to JIT to future architectures @@ -126,6 +135,9 @@ else() if(NOT CUDA_VERSION VERSION_LESS "10.0") list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_75,code=compute_75") endif() + if(NOT CUDA_VERSION VERSION_LESS "11.0") + list (APPEND GMX_CUDA_NVCC_GENCODE_FLAGS "-gencode;arch=compute_80,code=compute_80") + endif() endif() if (GMX_CUDA_TARGET_SM)