Browse Source

Merge topic 'backport-ci-cuda' into release-3.31

4f2178c4a8 ci: add tags to tie CUDA jobs to runners with hardware supporting them
63a5460faf ci: Tell CudaOnly.Architecture test what specific architecture to use

Acked-by: Kitware Robot <[email protected]>
Merge-request: !10691
Brad King 8 months ago
parent
commit
ff52aa5b40

+ 12 - 12
.gitlab-ci.yml

@@ -304,7 +304,7 @@ t:nvhpc22.11-ninja:
     extends:
         - .nvhpc_ninja
         - .cmake_test_linux_release
-        - .linux_x86_64_v3_tags_cuda
+        - .linux_x86_64_v3_tags_cuda_arch_52
         - .run_dependent
         - .needs_centos7_x86_64
     variables:
@@ -314,7 +314,7 @@ t:cuda9.2-nvidia:
     extends:
         - .cuda9.2_nvidia
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_30
         - .run_dependent
         - .needs_centos7_x86_64
     variables:
@@ -324,7 +324,7 @@ t:cuda10.2-nvidia:
     extends:
         - .cuda10.2_nvidia
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_52
         - .cmake_junit_artifacts
         - .run_dependent
         - .needs_centos7_x86_64
@@ -335,7 +335,7 @@ t:cuda10.2-clang:
     extends:
         - .cuda10.2_clang
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_52
         - .run_dependent
         - .needs_centos7_x86_64
     variables:
@@ -345,7 +345,7 @@ t:cuda11.6-nvidia:
     extends:
         - .cuda11.6_nvidia
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_52
         - .cmake_junit_artifacts
         - .run_dependent
         - .needs_centos7_x86_64
@@ -356,7 +356,7 @@ t:cuda11.6-clang:
     extends:
         - .cuda11.6_clang
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_52
         - .run_dependent
         - .needs_centos7_x86_64
     variables:
@@ -366,7 +366,7 @@ t:cuda11.8-minimal-ninja:
     extends:
         - .cuda11.8_minimal_nvidia
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_52
         - .run_dependent
         - .needs_centos7_x86_64
     variables:
@@ -376,7 +376,7 @@ t:cuda11.8-minimal-splayed-ninja:
     extends:
         - .cuda11.8_splayed_nvidia
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_52
         - .run_dependent
         - .needs_centos7_x86_64
     variables:
@@ -386,7 +386,7 @@ t:cuda12.2-nvidia:
     extends:
         - .cuda12.2_nvidia
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_52
         - .cmake_junit_artifacts
         - .run_dependent
         - .needs_centos7_x86_64
@@ -395,7 +395,7 @@ t:cuda12.2-nvidia-clang:
     extends:
         - .cuda12.2_nvidia_clang
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_52
         - .cmake_junit_artifacts
         - .run_dependent
         - .needs_centos7_x86_64
@@ -406,7 +406,7 @@ t:cuda12.2-clang:
     extends:
         - .cuda12.2_clang
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_52
         - .run_dependent
         - .needs_centos7_x86_64
     variables:
@@ -416,7 +416,7 @@ t:hip5.5-nvidia:
     extends:
         - .hip5.5_nvidia
         - .cmake_test_linux_release
-        - .linux_x86_64_tags_cuda
+        - .linux_x86_64_tags_cuda_arch_52
         - .run_dependent
         - .needs_centos7_x86_64
     variables:

+ 1 - 0
.gitlab/ci/configure_cuda10.2_clang.cmake

@@ -1,4 +1,5 @@
 set(CMake_TEST_CUDA "Clang" CACHE STRING "")
+set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
 set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 1 - 0
.gitlab/ci/configure_cuda10.2_nvidia.cmake

@@ -1,4 +1,5 @@
 set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
+set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
 set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 1 - 0
.gitlab/ci/configure_cuda11.6_clang.cmake

@@ -1,3 +1,4 @@
 set(CMake_TEST_CUDA "Clang" CACHE STRING "")
+set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 1 - 0
.gitlab/ci/configure_cuda11.6_nvidia.cmake

@@ -1,4 +1,5 @@
 set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
+set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
 set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 1 - 0
.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake

@@ -1,3 +1,4 @@
 set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
+set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 1 - 0
.gitlab/ci/configure_cuda11.8_splayed_nvidia.cmake

@@ -1,3 +1,4 @@
 set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
+set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 1 - 0
.gitlab/ci/configure_cuda12.2_clang.cmake

@@ -1,4 +1,5 @@
 set(CMake_TEST_CUDA "Clang" CACHE STRING "")
+set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
 set(CMake_TEST_CUDA_STANDARDS "03;11;14;17;20;23" CACHE STRING "")
 set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "")
 set(CMake_TEST_FindOpenMP_CUDA "ON" CACHE BOOL "")

+ 1 - 0
.gitlab/ci/configure_cuda12.2_nvidia_common.cmake

@@ -1,4 +1,5 @@
 set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
+set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
 set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
 set(CMake_TEST_CUDA_STANDARDS "03;11;14;17;20" CACHE STRING "")
 set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "")

+ 1 - 0
.gitlab/ci/configure_cuda9.2_nvidia.cmake

@@ -1,3 +1,4 @@
 set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
+set(CMake_TEST_CUDA_ARCH "30" CACHE STRING "")
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

+ 1 - 0
.gitlab/ci/configure_nvhpc_ninja.cmake

@@ -1,4 +1,5 @@
 set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
+set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
 set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
 
 set(configure_no_sccache 1)

+ 11 - 4
.gitlab/os-linux.yml

@@ -491,17 +491,24 @@
         - linux-x86_64
         - x11
 
-.linux_x86_64_tags_cuda:
+.linux_x86_64_tags_cuda_arch_30:
     tags:
         - cmake
-        - cuda-rt
+        - cuda-arch-30
         - docker
         - linux-x86_64
 
-.linux_x86_64_v3_tags_cuda:
+.linux_x86_64_tags_cuda_arch_52:
     tags:
         - cmake
-        - cuda-rt
+        - cuda-arch-52
+        - docker
+        - linux-x86_64
+
+.linux_x86_64_v3_tags_cuda_arch_52:
+    tags:
+        - cmake
+        - cuda-arch-52
         - docker
         - linux-x86_64-v3
 

+ 10 - 3
Tests/CudaOnly/Architecture/CMakeLists.txt

@@ -1,14 +1,21 @@
 cmake_minimum_required(VERSION 3.18)
 project(Architecture CUDA)
 
+if(CMake_TEST_CUDA_ARCH)
+  set(arch ${CMake_TEST_CUDA_ARCH})
+else()
+  set(arch 52)
+endif()
+add_compile_definitions(EXPECT_CUDA_ARCH=${arch})
+
 add_executable(Architecture main.cu)
-set_property(TARGET Architecture PROPERTY CUDA_ARCHITECTURES 52)
+set_property(TARGET Architecture PROPERTY CUDA_ARCHITECTURES ${arch})
 
 # Make sure CMake doesn't pass architectures if CUDA_ARCHITECTURES is OFF.
 if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
-  set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -arch=sm_52")
+  set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -arch=sm_${arch}")
 elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
-  set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --cuda-gpu-arch=sm_52")
+  set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --cuda-gpu-arch=sm_${arch}")
 endif()
 
 add_executable(ArchitectureOff main.cu)

+ 6 - 2
Tests/CudaOnly/Architecture/main.cu

@@ -1,9 +1,13 @@
+#ifndef EXPECT_CUDA_ARCH
+#  error "EXPECT_CUDA_ARCH not defined!"
+#endif
 #ifdef __CUDA_ARCH__
-#  if __CUDA_ARCH__ != 520
-#    error "Passed architecture 52, but got something else."
+#  if __CUDA_ARCH__ != (EXPECT_CUDA_ARCH * 10)
+#    error "__CUDA_ARCH__ does not match CUDA_ARCHITECTURES"
 #  endif
 #endif
 
 int main()
 {
+  return 0;
 }

+ 1 - 0
Tests/CudaOnly/CMakeLists.txt

@@ -4,6 +4,7 @@ macro (add_cuda_test_macro name)
     PROPERTY LABELS "CUDA")
 endmacro ()
 
+set(CudaOnly.Architecture_BUILD_OPTIONS -DCMake_TEST_CUDA_ARCH=${CMake_TEST_CUDA_ARCH})
 add_cuda_test_macro(CudaOnly.Architecture Architecture)
 add_cuda_test_macro(CudaOnly.ArchSpecial CudaOnlyArchSpecial)
 add_cuda_test_macro(CudaOnly.CompileFlags CudaOnlyCompileFlags)