From 3e9ab53c7d0c03258c947b34d99669c5bb887525 Mon Sep 17 00:00:00 2001 From: Marco Vela <36453977+characat0@users.noreply.github.com> Date: Thu, 16 May 2024 22:29:52 -0500 Subject: [PATCH] [cmake] switch to FindCUDAToolkit (#6457) --- CMakeLists.txt | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2bb8e6b4179..ea25c778709 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -200,32 +200,28 @@ if(__INTEGRATE_OPENCL) endif() if(USE_CUDA) - find_package(CUDA 11.0 REQUIRED) - include_directories(${CUDA_INCLUDE_DIRS}) + find_package(CUDAToolkit 11.0 REQUIRED) + include_directories(${CUDAToolkit_INCLUDE_DIRS}) set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=${OpenMP_CXX_FLAGS} -Xcompiler=-fPIC -Xcompiler=-Wall") # reference for mapping of CUDA toolkit component versions to supported architectures ("compute capabilities"): # https://en.wikipedia.org/wiki/CUDA#GPUs_supported - set(CUDA_ARCHS "6.0" "6.1" "6.2" "7.0" "7.5") - if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0") - list(APPEND CUDA_ARCHS "8.0") + set(CUDA_ARCHS "60" "61" "62" "70" "75") + if(CUDA_VERSION VERSION_GREATER_EQUAL "110") + list(APPEND CUDA_ARCHS "80") endif() - if(CUDA_VERSION VERSION_GREATER_EQUAL "11.1") - list(APPEND CUDA_ARCHS "8.6") + if(CUDA_VERSION VERSION_GREATER_EQUAL "111") + list(APPEND CUDA_ARCHS "86") endif() - if(CUDA_VERSION VERSION_GREATER_EQUAL "11.5") - list(APPEND CUDA_ARCHS "8.7") + if(CUDA_VERSION VERSION_GREATER_EQUAL "115") + list(APPEND CUDA_ARCHS "87") endif() - if(CUDA_VERSION VERSION_GREATER_EQUAL "11.8") - list(APPEND CUDA_ARCHS "8.9") - list(APPEND CUDA_ARCHS "9.0") + if(CUDA_VERSION VERSION_GREATER_EQUAL "118") + list(APPEND CUDA_ARCHS "89") + list(APPEND CUDA_ARCHS "90") endif() list(POP_BACK CUDA_ARCHS CUDA_LAST_SUPPORTED_ARCH) list(APPEND CUDA_ARCHS "${CUDA_LAST_SUPPORTED_ARCH}+PTX") - cuda_select_nvcc_arch_flags(CUDA_ARCH_FLAGS ${CUDA_ARCHS}) - string(REPLACE ";" " " CUDA_ARCH_FLAGS "${CUDA_ARCH_FLAGS}") - - set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} ${CUDA_ARCH_FLAGS}") if(USE_DEBUG) set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -g") else() @@ -262,7 +258,7 @@ if(USE_CUDA) function(add_histogram hsize hname hadd hconst hdir) add_library(histo${hsize}${hname} OBJECT src/treelearner/kernels/histogram${hsize}.cu) set_target_properties(histo${hsize}${hname} PROPERTIES CUDA_SEPARABLE_COMPILATION ON) - set_target_properties(histo${hsize}${hname} PROPERTIES CUDA_ARCHITECTURES OFF) + set_target_properties(histo${hsize}${hname} PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCHS}) if(hadd) list(APPEND histograms histo${hsize}${hname}) set(histograms ${histograms} PARENT_SCOPE) @@ -608,13 +604,10 @@ if(__INTEGRATE_OPENCL) endif() if(USE_CUDA) - # Disable cmake warning about policy CMP0104. Refer to issue #3754 and PR #4268. - # Custom target properties does not propagate, thus we need to specify for - # each target that contains or depends on cuda source. - set_target_properties(lightgbm_objs PROPERTIES CUDA_ARCHITECTURES OFF) - set_target_properties(_lightgbm PROPERTIES CUDA_ARCHITECTURES OFF) + set_target_properties(lightgbm_objs PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCHS}) + set_target_properties(_lightgbm PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCHS}) if(BUILD_CLI) - set_target_properties(lightgbm PROPERTIES CUDA_ARCHITECTURES OFF) + set_target_properties(lightgbm PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCHS}) endif() set_target_properties(lightgbm_objs PROPERTIES CUDA_SEPARABLE_COMPILATION ON)