Skip to content

Commit 4efda2c

Browse files
committed
Use RMM's pached CCCL
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 dec7f58 commit 4efda2c

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)