diff --git a/.gitlab/ci/configure_cuda10.2_clang.cmake b/.gitlab/ci/configure_cuda10.2_clang.cmake index e2d5a9c9f2..686e783e39 100644 --- a/.gitlab/ci/configure_cuda10.2_clang.cmake +++ b/.gitlab/ci/configure_cuda10.2_clang.cmake @@ -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") diff --git a/.gitlab/ci/configure_cuda10.2_nvidia.cmake b/.gitlab/ci/configure_cuda10.2_nvidia.cmake index 2cb2950457..a6c6fdbbe2 100644 --- a/.gitlab/ci/configure_cuda10.2_nvidia.cmake +++ b/.gitlab/ci/configure_cuda10.2_nvidia.cmake @@ -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") diff --git a/.gitlab/ci/configure_cuda11.6_clang.cmake b/.gitlab/ci/configure_cuda11.6_clang.cmake index e13ca881d6..f9490c7bab 100644 --- a/.gitlab/ci/configure_cuda11.6_clang.cmake +++ b/.gitlab/ci/configure_cuda11.6_clang.cmake @@ -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") diff --git a/.gitlab/ci/configure_cuda11.6_nvidia.cmake b/.gitlab/ci/configure_cuda11.6_nvidia.cmake index 2cb2950457..a6c6fdbbe2 100644 --- a/.gitlab/ci/configure_cuda11.6_nvidia.cmake +++ b/.gitlab/ci/configure_cuda11.6_nvidia.cmake @@ -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") diff --git a/.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake b/.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake index 519699b0cc..b25bc1f547 100644 --- a/.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake +++ b/.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake @@ -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") diff --git a/.gitlab/ci/configure_cuda11.8_splayed_nvidia.cmake b/.gitlab/ci/configure_cuda11.8_splayed_nvidia.cmake index 519699b0cc..b25bc1f547 100644 --- a/.gitlab/ci/configure_cuda11.8_splayed_nvidia.cmake +++ b/.gitlab/ci/configure_cuda11.8_splayed_nvidia.cmake @@ -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") diff --git a/.gitlab/ci/configure_cuda12.2_clang.cmake b/.gitlab/ci/configure_cuda12.2_clang.cmake index ce4afaa33d..ed53d1beae 100644 --- a/.gitlab/ci/configure_cuda12.2_clang.cmake +++ b/.gitlab/ci/configure_cuda12.2_clang.cmake @@ -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 "") diff --git a/.gitlab/ci/configure_cuda12.2_nvidia_common.cmake b/.gitlab/ci/configure_cuda12.2_nvidia_common.cmake index 5dc178863c..392d6695cf 100644 --- a/.gitlab/ci/configure_cuda12.2_nvidia_common.cmake +++ b/.gitlab/ci/configure_cuda12.2_nvidia_common.cmake @@ -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 "") diff --git a/.gitlab/ci/configure_cuda12.6_clang.cmake b/.gitlab/ci/configure_cuda12.6_clang.cmake index ce4afaa33d..ed53d1beae 100644 --- a/.gitlab/ci/configure_cuda12.6_clang.cmake +++ b/.gitlab/ci/configure_cuda12.6_clang.cmake @@ -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 "") diff --git a/.gitlab/ci/configure_cuda12.6_nvidia_common.cmake b/.gitlab/ci/configure_cuda12.6_nvidia_common.cmake index 5dc178863c..392d6695cf 100644 --- a/.gitlab/ci/configure_cuda12.6_nvidia_common.cmake +++ b/.gitlab/ci/configure_cuda12.6_nvidia_common.cmake @@ -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 "") diff --git a/.gitlab/ci/configure_cuda9.2_nvidia.cmake b/.gitlab/ci/configure_cuda9.2_nvidia.cmake index 519699b0cc..68e73b6469 100644 --- a/.gitlab/ci/configure_cuda9.2_nvidia.cmake +++ b/.gitlab/ci/configure_cuda9.2_nvidia.cmake @@ -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") diff --git a/.gitlab/ci/configure_nvhpc_ninja.cmake b/.gitlab/ci/configure_nvhpc_ninja.cmake index 03038ee486..e25ff7280c 100644 --- a/.gitlab/ci/configure_nvhpc_ninja.cmake +++ b/.gitlab/ci/configure_nvhpc_ninja.cmake @@ -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_C_STANDARDS "90;99;11;17" CACHE STRING "") diff --git a/Tests/CudaOnly/Architecture/CMakeLists.txt b/Tests/CudaOnly/Architecture/CMakeLists.txt index 03e972fcaa..379b11a4bc 100644 --- a/Tests/CudaOnly/Architecture/CMakeLists.txt +++ b/Tests/CudaOnly/Architecture/CMakeLists.txt @@ -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) diff --git a/Tests/CudaOnly/Architecture/main.cu b/Tests/CudaOnly/Architecture/main.cu index 8c817d5a0c..f685890d4b 100644 --- a/Tests/CudaOnly/Architecture/main.cu +++ b/Tests/CudaOnly/Architecture/main.cu @@ -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; } diff --git a/Tests/CudaOnly/CMakeLists.txt b/Tests/CudaOnly/CMakeLists.txt index 77061a9425..ba31fd565f 100644 --- a/Tests/CudaOnly/CMakeLists.txt +++ b/Tests/CudaOnly/CMakeLists.txt @@ -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)