Browse Source

Merge topic 'cuda-arch-verify'

7bf5200699 CUDA: Restore CMAKE_CUDA_ARCHITECTURES support for -real and -virtual suffixes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewd-by: Raul Tambre <raul@tambre.ee>
Merge-request: !7218
pull/351/head
Brad King 3 years ago
committed by Kitware Robot
parent
commit
252fdfe6e4
  1. 7
      Modules/CMakeDetermineCUDACompiler.cmake
  2. 5
      Tests/RunCMake/CUDA_architectures/RunCMakeTest.cmake
  3. 6
      Tests/RunCMake/CUDA_architectures/architectures-invalid-stderr.txt
  4. 4
      Tests/RunCMake/CUDA_architectures/architectures-suffix-stderr.txt
  5. 4
      Tests/RunCMake/CUDA_architectures/architectures-suffix-stdout.txt
  6. 6
      Tests/RunCMake/CUDA_architectures/architectures-suffix.cmake

7
Modules/CMakeDetermineCUDACompiler.cmake

@ -275,13 +275,14 @@ if(NOT CMAKE_CUDA_COMPILER_ID_RUN)
if(DEFINED CMAKE_CUDA_ARCHITECTURES)
if(CMAKE_CUDA_ARCHITECTURES STREQUAL "")
message(FATAL_ERROR "CMAKE_CUDA_ARCHITECTURES must be non-empty if set.")
elseif(CMAKE_CUDA_ARCHITECTURES AND NOT CMAKE_CUDA_ARCHITECTURES MATCHES "^([0-9]+[;0-9]*|all|all-major|native)$")
elseif(CMAKE_CUDA_ARCHITECTURES AND NOT CMAKE_CUDA_ARCHITECTURES MATCHES "^([0-9]+(-real|-virtual)?(;[0-9]+(-real|-virtual)?|;)*|all|all-major|native)$")
message(FATAL_ERROR
"CMAKE_CUDA_ARCHITECTURES:\n"
" ${CMAKE_CUDA_ARCHITECTURES}\n"
"is not one of the following:\n"
"* a semicolon-separated list of integers\n"
"* a special value: all, all-major, native\n"
" * a semicolon-separated list of integers, each optionally\n"
" followed by '-real' or '-virtual'\n"
" * a special value: all, all-major, native\n"
)
endif()
endif()

5
Tests/RunCMake/CUDA_architectures/RunCMakeTest.cmake

@ -20,3 +20,8 @@ if(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang" AND CMAKE_CUDA_ARCHITECTURES)
endif()
run_cmake(architectures-off)
unset(RunCMake_TEST_OPTIONS)
if(CMAKE_CUDA_ARCHITECTURES MATCHES "([0-9]+)")
set(arch "${CMAKE_MATCH_1}")
run_cmake_with_options(architectures-suffix -Darch=${arch})
endif()

6
Tests/RunCMake/CUDA_architectures/architectures-invalid-stderr.txt

@ -5,9 +5,9 @@
is not one of the following:
\* a semicolon-separated list of integers
\* a special value: all, all-major, native
\* a semicolon-separated list of integers, each optionally
followed by '-real' or '-virtual'
\* a special value: all, all-major, native
Call Stack \(most recent call first\):
architectures-invalid\.cmake:2 \(enable_language\)

4
Tests/RunCMake/CUDA_architectures/architectures-suffix-stderr.txt

@ -0,0 +1,4 @@
^(CMake Warning in [^
]*/Tests/RunCMake/CUDA_architectures/architectures-suffix-build/CMakeFiles/CMakeTmp/CMakeLists.txt:
Clang doesn't support disabling CUDA real code generation.
*)*$

4
Tests/RunCMake/CUDA_architectures/architectures-suffix-stdout.txt

@ -0,0 +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;]+'

6
Tests/RunCMake/CUDA_architectures/architectures-suffix.cmake

@ -0,0 +1,6 @@
set(CMAKE_CUDA_ARCHITECTURES "${arch}-real;${arch}-virtual;")
enable_language(CUDA)
message(STATUS "CMAKE_CUDA_ARCHITECTURES='${CMAKE_CUDA_ARCHITECTURES}'")
message(STATUS "CMAKE_CUDA_ARCHITECTURES_ALL='${CMAKE_CUDA_ARCHITECTURES_ALL}'")
message(STATUS "CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR='${CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR}'")
message(STATUS "CMAKE_CUDA_ARCHITECTURES_NATIVE='${CMAKE_CUDA_ARCHITECTURES_NATIVE}'")
Loading…
Cancel
Save