From 411c8466bd383662a448a6a6be585c1b12b8c2e2 Mon Sep 17 00:00:00 2001 From: Philip Hyunsu Cho Date: Tue, 23 Jul 2024 18:42:54 -0700 Subject: [PATCH] [CMake] Explicitly link with CCCL (standalone or CTK) (#10624) --- CMakeLists.txt | 18 ++++++++++++++++++ cmake/Utils.cmake | 4 ++-- tests/buildkite/build-cuda-with-rmm.sh | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 034d52164ad2..6e6207055347 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -221,6 +221,24 @@ if(USE_CUDA) add_subdirectory(${PROJECT_SOURCE_DIR}/gputreeshap) find_package(CUDAToolkit REQUIRED) + find_package(CCCL CONFIG) + if(NOT CCCL_FOUND) + message(STATUS "Standalone CCCL not found. Attempting to use CCCL from CUDA Toolkit...") + find_package(CCCL CONFIG + HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake) + if(NOT CCCL_FOUND) + message(STATUS "Could not locate CCCL from CUDA Toolkit. Using Thrust and CUB from CUDA Toolkit...") + find_package(libcudacxx CONFIG REQUIRED + HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake) + find_package(CUB CONFIG REQUIRED + HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake) + find_package(Thrust CONFIG REQUIRED + HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake) + thrust_create_target(Thrust HOST CPP DEVICE CUDA) + add_library(CCCL::CCCL INTERFACE IMPORTED GLOBAL) + target_link_libraries(CCCL::CCCL INTERFACE libcudacxx::libcudacxx CUB::CUB Thrust) + endif() + endif() endif() if(FORCE_COLORED_OUTPUT AND (CMAKE_GENERATOR STREQUAL "Ninja") AND diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake index 266cf29b38b2..a00bb7a9239e 100644 --- a/cmake/Utils.cmake +++ b/cmake/Utils.cmake @@ -104,11 +104,11 @@ function(xgboost_set_cuda_flags target) target_compile_definitions(${target} PRIVATE -DXGBOOST_USE_NVTX=1) endif() + target_link_libraries(${target} PRIVATE CCCL::CCCL) target_compile_definitions(${target} PRIVATE -DXGBOOST_USE_CUDA=1) target_include_directories( ${target} PRIVATE - ${xgboost_SOURCE_DIR}/gputreeshap - ${CUDAToolkit_INCLUDE_DIRS}) + ${xgboost_SOURCE_DIR}/gputreeshap) if(MSVC) target_compile_options(${target} PRIVATE diff --git a/tests/buildkite/build-cuda-with-rmm.sh b/tests/buildkite/build-cuda-with-rmm.sh index 126bc6b3f28b..f1d3f1b1c91a 100755 --- a/tests/buildkite/build-cuda-with-rmm.sh +++ b/tests/buildkite/build-cuda-with-rmm.sh @@ -22,7 +22,7 @@ command_wrapper="tests/ci_build/ci_build.sh gpu_build_rockylinux8 --build-arg "` echo "--- Build libxgboost from the source" $command_wrapper tests/ci_build/build_via_cmake.sh \ - -DCMAKE_PREFIX_PATH="/opt/grpc;/opt/rmm" \ + -DCMAKE_PREFIX_PATH="/opt/grpc;/opt/rmm;/opt/rmm/lib64/rapids/cmake" \ -DUSE_CUDA=ON \ -DUSE_OPENMP=ON \ -DHIDE_CXX_SYMBOLS=ON \