Browse Source

ci: Tell CudaOnly.Architecture test what specific architecture to use

CUDA 12.8 deprecates architectures below 75.  Presumably a future
version will remove it.  Prepare infrastructure to avoid relying on
hard-coded arch 52 in this test.
Brad King 8 months ago
parent
commit
1395c1e19a

+ 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_cuda12.6_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.6_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(CMake_TEST_C_STANDARDS "90;99;11;17" CACHE STRING "")

+ 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)