summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Modules/CMakeTestCUDACompiler.cmake1
-rw-r--r--Modules/CUDA/architectures.cmake11
-rw-r--r--Tests/CudaOnly/ArchSpecial/CMakeLists.txt1
-rw-r--r--Tests/RunCMake/CUDA_architectures/architectures-all-major-stdout.txt6
-rw-r--r--Tests/RunCMake/CUDA_architectures/architectures-all-stdout.txt6
-rw-r--r--Tests/RunCMake/CUDA_architectures/architectures-native-stdout.txt6
-rw-r--r--Tests/RunCMake/CUDA_architectures/architectures-suffix-stdout.txt6
7 files changed, 25 insertions, 12 deletions
diff --git a/Modules/CMakeTestCUDACompiler.cmake b/Modules/CMakeTestCUDACompiler.cmake
index ea074822d7..853d65581d 100644
--- a/Modules/CMakeTestCUDACompiler.cmake
+++ b/Modules/CMakeTestCUDACompiler.cmake
@@ -52,6 +52,7 @@ if(CMAKE_CUDA_ABI_COMPILED)
set(CMAKE_CUDA_ARCHITECTURES_NATIVE "${_CUDA_ARCHS_OUTPUT}")
endif()
list(REMOVE_DUPLICATES CMAKE_CUDA_ARCHITECTURES_NATIVE)
+ list(TRANSFORM CMAKE_CUDA_ARCHITECTURES_NATIVE APPEND "-real")
else()
if(NOT _CUDA_ARCHS_RESULT MATCHES "[0-9]+")
set(_CUDA_ARCHS_STATUS " (${_CUDA_ARCHS_RESULT})")
diff --git a/Modules/CUDA/architectures.cmake b/Modules/CUDA/architectures.cmake
index fa3a5a178d..79c1252711 100644
--- a/Modules/CUDA/architectures.cmake
+++ b/Modules/CUDA/architectures.cmake
@@ -44,3 +44,14 @@ if(CMAKE_CUDA_COMPILER_TOOLKIT_VERSION VERSION_GREATER_EQUAL 11.4
AND (NOT CMAKE_CUDA_COMPILER_ID STREQUAL "Clang"))
list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL 87)
endif()
+
+# only generate jit code for the newest arch for all/all-major
+list(POP_BACK CMAKE_CUDA_ARCHITECTURES_ALL _latest_arch)
+list(TRANSFORM CMAKE_CUDA_ARCHITECTURES_ALL APPEND "-real")
+list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL ${_latest_arch})
+
+list(POP_BACK CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR _latest_arch)
+list(TRANSFORM CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR APPEND "-real")
+list(APPEND CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR ${_latest_arch})
+
+unset(_latest_arch)
diff --git a/Tests/CudaOnly/ArchSpecial/CMakeLists.txt b/Tests/CudaOnly/ArchSpecial/CMakeLists.txt
index 46f4adad72..88eff8aebf 100644
--- a/Tests/CudaOnly/ArchSpecial/CMakeLists.txt
+++ b/Tests/CudaOnly/ArchSpecial/CMakeLists.txt
@@ -10,6 +10,7 @@ function(verify_output flag)
string(REPLACE "-" "_" architectures "${flag}")
string(TOUPPER "${architectures}" architectures)
set(architectures "${CMAKE_CUDA_ARCHITECTURES_${architectures}}")
+ list(TRANSFORM architectures REPLACE "-real" "")
if(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
set(match_regex "-target-cpu sm_([0-9]+)")
diff --git a/Tests/RunCMake/CUDA_architectures/architectures-all-major-stdout.txt b/Tests/RunCMake/CUDA_architectures/architectures-all-major-stdout.txt
index ee0a5f73a1..4153699528 100644
--- a/Tests/RunCMake/CUDA_architectures/architectures-all-major-stdout.txt
+++ b/Tests/RunCMake/CUDA_architectures/architectures-all-major-stdout.txt
@@ -1,4 +1,4 @@
-- CMAKE_CUDA_ARCHITECTURES='all-major'
--- CMAKE_CUDA_ARCHITECTURES_ALL='[0-9;]+'
--- CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR='[0-9;]+'
--- CMAKE_CUDA_ARCHITECTURES_NATIVE='[0-9;]+'
+-- CMAKE_CUDA_ARCHITECTURES_ALL='([0-9]+-real;)+[0-9]+'
+-- CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR='([0-9]+-real;)+[0-9]+'
+-- CMAKE_CUDA_ARCHITECTURES_NATIVE='([0-9]+-real;)*[0-9]+-real'
diff --git a/Tests/RunCMake/CUDA_architectures/architectures-all-stdout.txt b/Tests/RunCMake/CUDA_architectures/architectures-all-stdout.txt
index fd738e437a..32c61de052 100644
--- a/Tests/RunCMake/CUDA_architectures/architectures-all-stdout.txt
+++ b/Tests/RunCMake/CUDA_architectures/architectures-all-stdout.txt
@@ -1,4 +1,4 @@
-- CMAKE_CUDA_ARCHITECTURES='all'
--- CMAKE_CUDA_ARCHITECTURES_ALL='[0-9;]+'
--- CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR='[0-9;]+'
--- CMAKE_CUDA_ARCHITECTURES_NATIVE='[0-9;]+'
+-- CMAKE_CUDA_ARCHITECTURES_ALL='([0-9]+-real;)+[0-9]+'
+-- CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR='([0-9]+-real;)+[0-9]+'
+-- CMAKE_CUDA_ARCHITECTURES_NATIVE='([0-9]+-real;)*[0-9]+-real'
diff --git a/Tests/RunCMake/CUDA_architectures/architectures-native-stdout.txt b/Tests/RunCMake/CUDA_architectures/architectures-native-stdout.txt
index af49e00528..7f6f19ee6c 100644
--- a/Tests/RunCMake/CUDA_architectures/architectures-native-stdout.txt
+++ b/Tests/RunCMake/CUDA_architectures/architectures-native-stdout.txt
@@ -1,4 +1,4 @@
-- CMAKE_CUDA_ARCHITECTURES='native'
--- CMAKE_CUDA_ARCHITECTURES_ALL='[0-9;]+'
--- CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR='[0-9;]+'
--- CMAKE_CUDA_ARCHITECTURES_NATIVE='[0-9;]+'
+-- CMAKE_CUDA_ARCHITECTURES_ALL='([0-9]+-real;)+[0-9]+'
+-- CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR='([0-9]+-real;)+[0-9]+'
+-- CMAKE_CUDA_ARCHITECTURES_NATIVE='([0-9]+-real;)*[0-9]+-real'
diff --git a/Tests/RunCMake/CUDA_architectures/architectures-suffix-stdout.txt b/Tests/RunCMake/CUDA_architectures/architectures-suffix-stdout.txt
index 22ed7f6313..90b355209c 100644
--- a/Tests/RunCMake/CUDA_architectures/architectures-suffix-stdout.txt
+++ b/Tests/RunCMake/CUDA_architectures/architectures-suffix-stdout.txt
@@ -1,4 +1,4 @@
-- CMAKE_CUDA_ARCHITECTURES='[0-9]+-real;[0-9]+-virtual;'
--- CMAKE_CUDA_ARCHITECTURES_ALL='[0-9;]+'
--- CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR='[0-9;]+'
--- CMAKE_CUDA_ARCHITECTURES_NATIVE='[0-9;]+'
+-- CMAKE_CUDA_ARCHITECTURES_ALL='([0-9]+-real;)+[0-9]+'
+-- CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR='([0-9]+-real;)+[0-9]+'
+-- CMAKE_CUDA_ARCHITECTURES_NATIVE='([0-9]+-real;)*[0-9]+-real'