|
|
@@ -30,7 +30,27 @@ if(CMAKE_CUDA_ABI_COMPILED)
|
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
|
)
|
|
|
if(_CUDA_ARCHS_RESULT EQUAL 0)
|
|
|
- set(CMAKE_CUDA_ARCHITECTURES_NATIVE "${_CUDA_ARCHS_OUTPUT}")
|
|
|
+ if("$ENV{CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP}")
|
|
|
+ # Undocumented hook used by CMake's CI.
|
|
|
+ # Clamp native architecture to version range supported by this CUDA.
|
|
|
+ list(GET CMAKE_CUDA_ARCHITECTURES_ALL 0 _CUDA_ARCH_MIN)
|
|
|
+ list(GET CMAKE_CUDA_ARCHITECTURES_ALL -1 _CUDA_ARCH_MAX)
|
|
|
+ set(CMAKE_CUDA_ARCHITECTURES_NATIVE "")
|
|
|
+ foreach(_CUDA_ARCH IN LISTS _CUDA_ARCHS_OUTPUT)
|
|
|
+ if(_CUDA_ARCH LESS _CUDA_ARCH_MIN)
|
|
|
+ set(_CUDA_ARCH "${_CUDA_ARCH_MIN}")
|
|
|
+ endif()
|
|
|
+ if(_CUDA_ARCH GREATER _CUDA_ARCH_MAX)
|
|
|
+ set(_CUDA_ARCH "${_CUDA_ARCH_MAX}")
|
|
|
+ endif()
|
|
|
+ list(APPEND CMAKE_CUDA_ARCHITECTURES_NATIVE ${_CUDA_ARCH})
|
|
|
+ endforeach()
|
|
|
+ unset(_CUDA_ARCH)
|
|
|
+ unset(_CUDA_ARCH_MIN)
|
|
|
+ unset(_CUDA_ARCH_MAX)
|
|
|
+ else()
|
|
|
+ set(CMAKE_CUDA_ARCHITECTURES_NATIVE "${_CUDA_ARCHS_OUTPUT}")
|
|
|
+ endif()
|
|
|
list(REMOVE_DUPLICATES CMAKE_CUDA_ARCHITECTURES_NATIVE)
|
|
|
else()
|
|
|
if(NOT _CUDA_ARCHS_RESULT MATCHES "[0-9]+")
|