Skip to content

Commit 3e9ab53

Browse files
authored
[cmake] switch to FindCUDAToolkit (#6457)
1 parent e0ac635 commit 3e9ab53

File tree

1 file changed

+16
-23
lines changed

1 file changed

+16
-23
lines changed

CMakeLists.txt

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -200,32 +200,28 @@ if(__INTEGRATE_OPENCL)
200200
endif()
201201

202202
if(USE_CUDA)
203-
find_package(CUDA 11.0 REQUIRED)
204-
include_directories(${CUDA_INCLUDE_DIRS})
203+
find_package(CUDAToolkit 11.0 REQUIRED)
204+
include_directories(${CUDAToolkit_INCLUDE_DIRS})
205205
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=${OpenMP_CXX_FLAGS} -Xcompiler=-fPIC -Xcompiler=-Wall")
206206

207207
# reference for mapping of CUDA toolkit component versions to supported architectures ("compute capabilities"):
208208
# https://en.wikipedia.org/wiki/CUDA#GPUs_supported
209-
set(CUDA_ARCHS "6.0" "6.1" "6.2" "7.0" "7.5")
210-
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0")
211-
list(APPEND CUDA_ARCHS "8.0")
209+
set(CUDA_ARCHS "60" "61" "62" "70" "75")
210+
if(CUDA_VERSION VERSION_GREATER_EQUAL "110")
211+
list(APPEND CUDA_ARCHS "80")
212212
endif()
213-
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.1")
214-
list(APPEND CUDA_ARCHS "8.6")
213+
if(CUDA_VERSION VERSION_GREATER_EQUAL "111")
214+
list(APPEND CUDA_ARCHS "86")
215215
endif()
216-
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.5")
217-
list(APPEND CUDA_ARCHS "8.7")
216+
if(CUDA_VERSION VERSION_GREATER_EQUAL "115")
217+
list(APPEND CUDA_ARCHS "87")
218218
endif()
219-
if(CUDA_VERSION VERSION_GREATER_EQUAL "11.8")
220-
list(APPEND CUDA_ARCHS "8.9")
221-
list(APPEND CUDA_ARCHS "9.0")
219+
if(CUDA_VERSION VERSION_GREATER_EQUAL "118")
220+
list(APPEND CUDA_ARCHS "89")
221+
list(APPEND CUDA_ARCHS "90")
222222
endif()
223223
list(POP_BACK CUDA_ARCHS CUDA_LAST_SUPPORTED_ARCH)
224224
list(APPEND CUDA_ARCHS "${CUDA_LAST_SUPPORTED_ARCH}+PTX")
225-
cuda_select_nvcc_arch_flags(CUDA_ARCH_FLAGS ${CUDA_ARCHS})
226-
string(REPLACE ";" " " CUDA_ARCH_FLAGS "${CUDA_ARCH_FLAGS}")
227-
228-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} ${CUDA_ARCH_FLAGS}")
229225
if(USE_DEBUG)
230226
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -g")
231227
else()
@@ -262,7 +258,7 @@ if(USE_CUDA)
262258
function(add_histogram hsize hname hadd hconst hdir)
263259
add_library(histo${hsize}${hname} OBJECT src/treelearner/kernels/histogram${hsize}.cu)
264260
set_target_properties(histo${hsize}${hname} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
265-
set_target_properties(histo${hsize}${hname} PROPERTIES CUDA_ARCHITECTURES OFF)
261+
set_target_properties(histo${hsize}${hname} PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCHS})
266262
if(hadd)
267263
list(APPEND histograms histo${hsize}${hname})
268264
set(histograms ${histograms} PARENT_SCOPE)
@@ -608,13 +604,10 @@ if(__INTEGRATE_OPENCL)
608604
endif()
609605

610606
if(USE_CUDA)
611-
# Disable cmake warning about policy CMP0104. Refer to issue #3754 and PR #4268.
612-
# Custom target properties does not propagate, thus we need to specify for
613-
# each target that contains or depends on cuda source.
614-
set_target_properties(lightgbm_objs PROPERTIES CUDA_ARCHITECTURES OFF)
615-
set_target_properties(_lightgbm PROPERTIES CUDA_ARCHITECTURES OFF)
607+
set_target_properties(lightgbm_objs PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCHS})
608+
set_target_properties(_lightgbm PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCHS})
616609
if(BUILD_CLI)
617-
set_target_properties(lightgbm PROPERTIES CUDA_ARCHITECTURES OFF)
610+
set_target_properties(lightgbm PROPERTIES CUDA_ARCHITECTURES ${CUDA_ARCHS})
618611
endif()
619612

620613
set_target_properties(lightgbm_objs PROPERTIES CUDA_SEPARABLE_COMPILATION ON)

0 commit comments

Comments
 (0)