Update minimum tested CUDA to 11.0
authorMark Abraham <mark.j.abraham@gmail.com>
Thu, 6 Aug 2020 12:19:46 +0000 (12:19 +0000)
committerM. Eric Irrgang <mei2n@virginia.edu>
Thu, 6 Aug 2020 12:19:46 +0000 (12:19 +0000)
Generate code for valid compute capabilities.

Suppressed a warning about codegen for deprecated architectures.

Fixes #3609

admin/containers/buildall.sh
admin/containers/utility.py
admin/gitlab-ci/gromacs.gitlab-ci.yml
cmake/gmxManageNvccConfig.cmake

index 590b3b88c870738f03a9284e204d3708657583d5..16863e2309b67bbb290891c5495f40c6e23d892b 100644 (file)
@@ -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
index 73e6a85e2eebcb58478be781bc388b3b6f69f2a4..3626b728edb0b7f85fd886f18744efbeda1a6fe0 100644 (file)
@@ -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,
index 4c38a6f15dca829fbb4b75caaae75f48b2546b72..0cdf11cee8e5fe8f2bbc418c7d542ce0c3bbe4c8 100644 (file)
@@ -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:
index d7b8d4fe1ef6a33d157f9ea09263e5c4234be4cc..7945ec4c7e17ad2fc5bbb36f0a928810332c34e7 100644 (file)
@@ -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)