1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-15 03:48:02 +08:00

ci: Tell CudaOnly.Architecture test what specific architecture to use

CUDA 12.8 deprecates architectures below 75.  Presumably a future
version will remove it.  Prepare infrastructure to avoid relying on
hard-coded arch 52 in this test.
This commit is contained in:
Brad King
2025-04-21 18:03:46 -04:00
parent 7b16db932a
commit 63a5460faf
13 changed files with 27 additions and 5 deletions

View File

@@ -1,4 +1,5 @@
set(CMake_TEST_CUDA "Clang" CACHE STRING "")
set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

View File

@@ -1,4 +1,5 @@
set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

View File

@@ -1,3 +1,4 @@
set(CMake_TEST_CUDA "Clang" CACHE STRING "")
set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

View File

@@ -1,4 +1,5 @@
set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

View File

@@ -1,3 +1,4 @@
set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

View File

@@ -1,3 +1,4 @@
set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

View File

@@ -1,4 +1,5 @@
set(CMake_TEST_CUDA "Clang" CACHE STRING "")
set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
set(CMake_TEST_CUDA_STANDARDS "03;11;14;17;20;23" CACHE STRING "")
set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "")
set(CMake_TEST_FindOpenMP_CUDA "ON" CACHE BOOL "")

View File

@@ -1,4 +1,5 @@
set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
set(CMake_TEST_CUDA_STANDARDS "03;11;14;17;20" CACHE STRING "")
set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "")

View File

@@ -1,3 +1,4 @@
set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
set(CMake_TEST_CUDA_ARCH "30" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")

View File

@@ -1,4 +1,5 @@
set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "")
set(CMake_TEST_CUDA_ARCH "52" CACHE STRING "")
set(CMake_TEST_CUDA_CUPTI "ON" CACHE STRING "")
set(configure_no_sccache 1)

View File

@@ -1,14 +1,21 @@
cmake_minimum_required(VERSION 3.18)
project(Architecture CUDA)
if(CMake_TEST_CUDA_ARCH)
set(arch ${CMake_TEST_CUDA_ARCH})
else()
set(arch 52)
endif()
add_compile_definitions(EXPECT_CUDA_ARCH=${arch})
add_executable(Architecture main.cu)
set_property(TARGET Architecture PROPERTY CUDA_ARCHITECTURES 52)
set_property(TARGET Architecture PROPERTY CUDA_ARCHITECTURES ${arch})
# Make sure CMake doesn't pass architectures if CUDA_ARCHITECTURES is OFF.
if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA")
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -arch=sm_52")
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -arch=sm_${arch}")
elseif(CMAKE_CUDA_COMPILER_ID STREQUAL "Clang")
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --cuda-gpu-arch=sm_52")
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --cuda-gpu-arch=sm_${arch}")
endif()
add_executable(ArchitectureOff main.cu)

View File

@@ -1,9 +1,13 @@
#ifndef EXPECT_CUDA_ARCH
# error "EXPECT_CUDA_ARCH not defined!"
#endif
#ifdef __CUDA_ARCH__
# if __CUDA_ARCH__ != 520
# error "Passed architecture 52, but got something else."
# if __CUDA_ARCH__ != (EXPECT_CUDA_ARCH * 10)
# error "__CUDA_ARCH__ does not match CUDA_ARCHITECTURES"
# endif
#endif
int main()
{
return 0;
}

View File

@@ -4,6 +4,7 @@ macro (add_cuda_test_macro name)
PROPERTY LABELS "CUDA")
endmacro ()
set(CudaOnly.Architecture_BUILD_OPTIONS -DCMake_TEST_CUDA_ARCH=${CMake_TEST_CUDA_ARCH})
add_cuda_test_macro(CudaOnly.Architecture Architecture)
add_cuda_test_macro(CudaOnly.ArchSpecial CudaOnlyArchSpecial)
add_cuda_test_macro(CudaOnly.CompileFlags CudaOnlyCompileFlags)