CUDA: Restore support for CMAKE_CUDA_ARCHITECTURES=OFF

Fixes: #23309
This commit is contained in:
Robert Maynard
2022-03-09 09:14:18 -05:00
committed by Brad King
parent 1aa51fb9e3
commit 2a79b647fa
5 changed files with 9 additions and 3 deletions
+2 -2
View File
@@ -289,7 +289,7 @@ if(NOT CMAKE_CUDA_COMPILER_ID_RUN)
set(architectures_test ${CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR}) set(architectures_test ${CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR})
endif() endif()
endif() endif()
else() elseif(CMAKE_CUDA_ARCHITECTURES OR "${CMAKE_CUDA_ARCHITECTURES}" STREQUAL "")
# Explicit architectures. Test them during detection. # Explicit architectures. Test them during detection.
set(architectures_explicit TRUE) set(architectures_explicit TRUE)
set(architectures_test ${CMAKE_CUDA_ARCHITECTURES}) set(architectures_test ${CMAKE_CUDA_ARCHITECTURES})
@@ -633,7 +633,7 @@ if("${CMAKE_CUDA_ARCHITECTURES}" STREQUAL "")
message(FATAL_ERROR "Failed to detect a default CUDA architecture.\n\nCompiler output:\n${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}") message(FATAL_ERROR "Failed to detect a default CUDA architecture.\n\nCompiler output:\n${CMAKE_CUDA_COMPILER_PRODUCED_OUTPUT}")
endif() endif()
endif() endif()
elseif(NOT "${architectures_tested}" MATCHES "^(all|all-major)$") elseif(CMAKE_CUDA_ARCHITECTURES AND NOT "${architectures_tested}" MATCHES "^(all|all-major)$")
# Sort since order mustn't matter. # Sort since order mustn't matter.
list(SORT architectures_detected) list(SORT architectures_detected)
list(SORT architectures_tested) list(SORT architectures_tested)
+1 -1
View File
@@ -495,7 +495,7 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
if(CMAKE_VS_PLATFORM_NAME STREQUAL x64) if(CMAKE_VS_PLATFORM_NAME STREQUAL x64)
set(cuda_target "<TargetMachinePlatform>64</TargetMachinePlatform>") set(cuda_target "<TargetMachinePlatform>64</TargetMachinePlatform>")
endif() endif()
if(NOT CMAKE_CUDA_ARCHITECTURES MATCHES "^(all|all-major)$") if(CMAKE_CUDA_ARCHITECTURES AND NOT CMAKE_CUDA_ARCHITECTURES MATCHES "^(all|all-major)$")
foreach(arch ${CMAKE_CUDA_ARCHITECTURES}) foreach(arch ${CMAKE_CUDA_ARCHITECTURES})
string(REGEX MATCH "[0-9]+" arch_name "${arch}") string(REGEX MATCH "[0-9]+" arch_name "${arch}")
string(APPEND cuda_codegen "compute_${arch_name},sm_${arch_name};") string(APPEND cuda_codegen "compute_${arch_name},sm_${arch_name};")
@@ -4,3 +4,5 @@ run_cmake(architectures-all)
run_cmake(architectures-all-major) run_cmake(architectures-all-major)
run_cmake(architectures-empty) run_cmake(architectures-empty)
run_cmake(architectures-invalid) run_cmake(architectures-invalid)
run_cmake(architectures-not-set)
run_cmake(architectures-off)
@@ -0,0 +1,2 @@
unset(CMAKE_CUDA_ARCHITECTURES)
enable_language(CUDA)
@@ -0,0 +1,2 @@
set(CMAKE_CUDA_ARCHITECTURES OFF)
enable_language(CUDA)