Browse Source

Merge topic 'cuda_13_support' into release-4.0

3ff777de12 CUDA: Update CUDA tests to handle CUDA 13 deprecations
bbf732525a CUDA: Add CUDA 13.0 support to 'all' and 'all-major' architecture tables

Acked-by: Kitware Robot <[email protected]>
Merge-request: !11015
Brad King 7 months ago
parent
commit
f9af4e50c4

+ 77 - 68
Modules/Internal/CMakeCUDAArchitecturesAll.cmake

@@ -5,92 +5,101 @@
 # https://en.wikipedia.org/wiki/CUDA#GPUs_supported
 
 function(cmake_cuda_architectures_all lang lang_var_)
-  # Initial set based on CUDA 7.0.
-  set(CMAKE_CUDA_ARCHITECTURES_ALL 20 21 30 35 37 50 52 53)
-  set(CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 20 30 35 50)
 
-  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 8.0)
-    list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 60 61 62)
-    list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 60)
-  endif()
-
-  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 9.0)
-    if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
-        OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
-        )
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 70 72)
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 70)
+  # We bificurated at CUDA 13.0, since everything offered
+  # in CUDA 7.0 is now not supported in 13
+  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 13.0)
+    # Initial set based on CUDA 13.0.
+    set(CMAKE_CUDA_ARCHITECTURES_ALL 75 80 86 87 88 89 90 100 103 110 120 121)
+    set(CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 75 80 90 100 110 120)
+  else()
+    # Initial set based on CUDA 7.0.
+    set(CMAKE_CUDA_ARCHITECTURES_ALL 20 21 30 35 37 50 52 53)
+    set(CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 20 30 35 50)
+
+    if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 8.0)
+      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 60 61 62)
+      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 60)
     endif()
 
-    list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL 20 21)
-    list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 20)
-  endif()
+    if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 9.0)
+      if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
+          OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
+          )
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 70 72)
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 70)
+      endif()
 
-  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 10.0)
-    if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
-        OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0)
-        )
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 75)
+      list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL 20 21)
+      list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 20)
     endif()
-  endif()
 
-  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 11.0)
-    if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
-        OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 11.0)
-        )
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 80)
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 80)
+    if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 10.0)
+      if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
+          OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0)
+          )
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 75)
+      endif()
     endif()
 
-    list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL 30)
-    list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 30)
-  endif()
+    if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 11.0)
+      if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
+          OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 11.0)
+          )
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 80)
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 80)
+      endif()
 
-  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 11.1)
-    if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
-        OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
-        )
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 86)
+      list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL 30)
+      list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 30)
     endif()
-  endif()
 
-  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 11.4)
-    if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
-        OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
-        )
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 87)
+    if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 11.1)
+      if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
+          OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
+          )
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 86)
+      endif()
     endif()
-  endif()
 
-  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 11.8)
-    if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
-        OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
-        )
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 89 90)
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 90)
+    if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 11.4)
+      if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
+          OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
+          )
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 87)
+      endif()
     endif()
-  endif()
 
-  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 12.0)
-    list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL 35 37)
-    list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 35)
-  endif()
+    if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 11.8)
+      if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
+          OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
+          )
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 89 90)
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 90)
+      endif()
+    endif()
 
-  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 12.8 AND ${lang_var_}TOOLKIT_VERSION VERSION_LESS 12.9)
-    if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
-        OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 20.1)
-        )
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 100 101 120)
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 100 120)
+    if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 12.0)
+      list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL 35 37)
+      list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 35)
+    endif()
+
+    if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 12.8 AND ${lang_var_}TOOLKIT_VERSION VERSION_LESS 12.9)
+      if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
+          OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 20.1)
+          )
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 100 101 120)
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 100 120)
+      endif()
     endif()
-  endif()
 
-  if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 12.9)
-    if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
-        OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 21.1)
-        )
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 100 101 103 120 121)
-      list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 100 120)
+    if(${lang_var_}TOOLKIT_VERSION VERSION_GREATER_EQUAL 12.9)
+      if(CMAKE_${lang}_COMPILER_ID STREQUAL "NVIDIA"
+          OR (CMAKE_${lang}_COMPILER_ID STREQUAL "Clang" AND CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 21.1)
+          )
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 100 101 103 120 121)
+        list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 100 120)
+      endif()
     endif()
   endif()
 

+ 7 - 0
Tests/CudaOnly/CUBIN/main.cu

@@ -36,7 +36,14 @@ int main()
   cuDeviceGet(&device, 0);
 
   CUcontext context;
+#if defined(__CUDACC_VER_MAJOR__) && __CUDACC_VER_MAJOR__ >= 13
+  CUctxCreateParams params;
+  params.execAffinityParams = nullptr;
+  params.numExecAffinityParams = 0;
+  cuCtxCreate(&context, &params, 0, device);
+#else
   cuCtxCreate(&context, 0, device);
+#endif
 
   CUmodule module;
   for (auto p : actual_paths) {

+ 7 - 1
Tests/CudaOnly/Fatbin/main.cu

@@ -36,8 +36,14 @@ int main()
   cuDeviceGet(&device, 0);
 
   CUcontext context;
+#if defined(__CUDACC_VER_MAJOR__) && __CUDACC_VER_MAJOR__ >= 13
+  CUctxCreateParams params;
+  params.execAffinityParams = nullptr;
+  params.numExecAffinityParams = 0;
+  cuCtxCreate(&context, &params, 0, device);
+#else
   cuCtxCreate(&context, 0, device);
-
+#endif
   CUmodule module;
   for (auto p : actual_paths) {
     if (p.find(".fatbin") == std::string::npos) {

+ 7 - 0
Tests/CudaOnly/SeparateCompilationPTX/main.cu

@@ -18,7 +18,14 @@ int main()
   cuDeviceGet(&device, 0);
 
   CUcontext context;
+#if defined(__CUDACC_VER_MAJOR__) && __CUDACC_VER_MAJOR__ >= 13
+  CUctxCreateParams params;
+  params.execAffinityParams = nullptr;
+  params.numExecAffinityParams = 0;
+  cuCtxCreate(&context, &params, 0, device);
+#else
   cuCtxCreate(&context, 0, device);
+#endif
 
   CUmodule module;
   CUresult result = cuModuleLoadData(&module, kernels);