From a426830eb2be82b900f1204d1fb190a0b8b58197 Mon Sep 17 00:00:00 2001 From: jakirkham Date: Thu, 20 Mar 2025 09:38:32 -0700 Subject: [PATCH] Use RMM's pached CCCL (3.0.x) Make sure to search for RMM if it will be used. This should pick up the patched CCCL from RMM. If RMM is not being used and this is a CUDA build, search for CCCL explicitly. --- CMakeLists.txt | 52 +++++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8dfe7dd9e048..091440ab6814 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -229,30 +229,6 @@ if(USE_CUDA) endif() find_package(CUDAToolkit REQUIRED) - find_package(CCCL CONFIG) - if(CCCL_FOUND) - message(STATUS "Standalone CCCL found.") - else() - 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() - # Define guard macros to prevent windows.h from conflicting with winsock2.h - if(WIN32) - target_compile_definitions(CCCL::CCCL INTERFACE NOMINMAX WIN32_LEAN_AND_MEAN _WINSOCKAPI_) - endif() endif() if(FORCE_COLORED_OUTPUT AND (CMAKE_GENERATOR STREQUAL "Ninja") AND @@ -338,6 +314,34 @@ if(PLUGIN_RMM) list(REMOVE_ITEM rmm_link_libs CUDA::cudart) list(APPEND rmm_link_libs CUDA::cudart_static) set_target_properties(rmm::rmm PROPERTIES INTERFACE_LINK_LIBRARIES "${rmm_link_libs}") + + # Pick up patched CCCL from RMM +elseif(USE_CUDA) + # If using CUDA and not RMM, search for CCCL. + find_package(CCCL CONFIG) + if(CCCL_FOUND) + message(STATUS "Standalone CCCL found.") + else() + 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() + # Define guard macros to prevent windows.h from conflicting with winsock2.h + if(WIN32) + target_compile_definitions(CCCL::CCCL INTERFACE NOMINMAX WIN32_LEAN_AND_MEAN _WINSOCKAPI_) + endif() endif() if(PLUGIN_SYCL)