diff --git a/Modules/Internal/CMakeCUDAArchitecturesAll.cmake b/Modules/Internal/CMakeCUDAArchitecturesAll.cmake index f5109612ed..1c095d1559 100644 --- a/Modules/Internal/CMakeCUDAArchitecturesAll.cmake +++ b/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() + # 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 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) + 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) - 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) + list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL 20 21) + list(REMOVE_ITEM CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR 20) 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.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) + 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() - 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.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() + + 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.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.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 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) + 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.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 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.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() + + 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() diff --git a/Tests/CudaOnly/CUBIN/main.cu b/Tests/CudaOnly/CUBIN/main.cu index d69a1e8169..afc828ed1c 100644 --- a/Tests/CudaOnly/CUBIN/main.cu +++ b/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, ¶ms, 0, device); +#else cuCtxCreate(&context, 0, device); +#endif CUmodule module; for (auto p : actual_paths) { diff --git a/Tests/CudaOnly/Fatbin/main.cu b/Tests/CudaOnly/Fatbin/main.cu index bf6fb392f0..55f2f6f124 100644 --- a/Tests/CudaOnly/Fatbin/main.cu +++ b/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, ¶ms, 0, device); +#else cuCtxCreate(&context, 0, device); - +#endif CUmodule module; for (auto p : actual_paths) { if (p.find(".fatbin") == std::string::npos) { diff --git a/Tests/CudaOnly/SeparateCompilationPTX/main.cu b/Tests/CudaOnly/SeparateCompilationPTX/main.cu index f94beff20e..d18ddd7431 100644 --- a/Tests/CudaOnly/SeparateCompilationPTX/main.cu +++ b/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, ¶ms, 0, device); +#else cuCtxCreate(&context, 0, device); +#endif CUmodule module; CUresult result = cuModuleLoadData(&module, kernels);