Skip to content

Commit 24f683e

Browse files
authored
[backport] Use RMM's patched CCCL (dmlc#11351) (dmlc#11354)
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.
1 parent aae009b commit 24f683e

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

CMakeLists.txt

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -229,30 +229,6 @@ if(USE_CUDA)
229229
endif()
230230

231231
find_package(CUDAToolkit REQUIRED)
232-
find_package(CCCL CONFIG)
233-
if(CCCL_FOUND)
234-
message(STATUS "Standalone CCCL found.")
235-
else()
236-
message(STATUS "Standalone CCCL not found. Attempting to use CCCL from CUDA Toolkit...")
237-
find_package(CCCL CONFIG
238-
HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake)
239-
if(NOT CCCL_FOUND)
240-
message(STATUS "Could not locate CCCL from CUDA Toolkit. Using Thrust and CUB from CUDA Toolkit...")
241-
find_package(libcudacxx CONFIG REQUIRED
242-
HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake)
243-
find_package(CUB CONFIG REQUIRED
244-
HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake)
245-
find_package(Thrust CONFIG REQUIRED
246-
HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake)
247-
thrust_create_target(Thrust HOST CPP DEVICE CUDA)
248-
add_library(CCCL::CCCL INTERFACE IMPORTED GLOBAL)
249-
target_link_libraries(CCCL::CCCL INTERFACE libcudacxx::libcudacxx CUB::CUB Thrust)
250-
endif()
251-
endif()
252-
# Define guard macros to prevent windows.h from conflicting with winsock2.h
253-
if(WIN32)
254-
target_compile_definitions(CCCL::CCCL INTERFACE NOMINMAX WIN32_LEAN_AND_MEAN _WINSOCKAPI_)
255-
endif()
256232
endif()
257233

258234
if(FORCE_COLORED_OUTPUT AND (CMAKE_GENERATOR STREQUAL "Ninja") AND
@@ -338,6 +314,34 @@ if(PLUGIN_RMM)
338314
list(REMOVE_ITEM rmm_link_libs CUDA::cudart)
339315
list(APPEND rmm_link_libs CUDA::cudart_static)
340316
set_target_properties(rmm::rmm PROPERTIES INTERFACE_LINK_LIBRARIES "${rmm_link_libs}")
317+
318+
# Pick up patched CCCL from RMM
319+
elseif(USE_CUDA)
320+
# If using CUDA and not RMM, search for CCCL.
321+
find_package(CCCL CONFIG)
322+
if(CCCL_FOUND)
323+
message(STATUS "Standalone CCCL found.")
324+
else()
325+
message(STATUS "Standalone CCCL not found. Attempting to use CCCL from CUDA Toolkit...")
326+
find_package(CCCL CONFIG
327+
HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake)
328+
if(NOT CCCL_FOUND)
329+
message(STATUS "Could not locate CCCL from CUDA Toolkit. Using Thrust and CUB from CUDA Toolkit...")
330+
find_package(libcudacxx CONFIG REQUIRED
331+
HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake)
332+
find_package(CUB CONFIG REQUIRED
333+
HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake)
334+
find_package(Thrust CONFIG REQUIRED
335+
HINTS ${CUDAToolkit_LIBRARY_DIR}/cmake)
336+
thrust_create_target(Thrust HOST CPP DEVICE CUDA)
337+
add_library(CCCL::CCCL INTERFACE IMPORTED GLOBAL)
338+
target_link_libraries(CCCL::CCCL INTERFACE libcudacxx::libcudacxx CUB::CUB Thrust)
339+
endif()
340+
endif()
341+
# Define guard macros to prevent windows.h from conflicting with winsock2.h
342+
if(WIN32)
343+
target_compile_definitions(CCCL::CCCL INTERFACE NOMINMAX WIN32_LEAN_AND_MEAN _WINSOCKAPI_)
344+
endif()
341345
endif()
342346

343347
if(PLUGIN_SYCL)

0 commit comments

Comments
 (0)