diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0db65997336..5bd8707ba17 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -63,3 +63,29 @@ repos: hooks: - id: rapids-dependency-file-generator args: ["--clean"] + - repo: local + hooks: + - id: cmake-format + name: cmake-format + entry: ./cpp/scripts/run-cmake-format.sh cmake-format + language: python + types: [cmake] + exclude: .*/thirdparty/.* + # Note that pre-commit autoupdate does not update the versions + # of dependencies, so we'll have to update this manually. + additional_dependencies: + - cmakelang==0.6.13 + verbose: true + require_serial: true + - id: cmake-lint + name: cmake-lint + entry: ./cpp/scripts/run-cmake-format.sh cmake-lint + language: python + types: [cmake] + exclude: .*/thirdparty/.* + # Note that pre-commit autoupdate does not update the versions + # of dependencies, so we'll have to update this manually. + additional_dependencies: + - cmakelang==0.6.13 + verbose: true + require_serial: true diff --git a/ci/check_style.sh b/ci/check_style.sh index b81b36ddb45..cdaee40a829 100755 --- a/ci/check_style.sh +++ b/ci/check_style.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) 2020-2024, NVIDIA CORPORATION. +# Copyright (c) 2020-2025, NVIDIA CORPORATION. set -euo pipefail @@ -14,5 +14,12 @@ rapids-dependency-file-generator \ rapids-mamba-retry env create --yes -f env.yaml -n checks conda activate checks +# get config for cmake-format checks +RAPIDS_VERSION_MAJOR_MINOR="$(rapids-version-major-minor)" +FORMAT_FILE_URL="https://raw.githubusercontent.com/rapidsai/rapids-cmake/branch-${RAPIDS_VERSION_MAJOR_MINOR}/cmake-format-rapids-cmake.json" +export RAPIDS_CMAKE_FORMAT_FILE=/tmp/rapids_cmake_ci/cmake-formats-rapids-cmake.json +mkdir -p $(dirname ${RAPIDS_CMAKE_FORMAT_FILE}) +wget -O ${RAPIDS_CMAKE_FORMAT_FILE} ${FORMAT_FILE_URL} + # Run pre-commit checks pre-commit run --hook-stage manual --all-files --show-diff-on-failure diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index f1dda42ad9d..ea78a94dbbb 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -25,16 +25,18 @@ include(rapids-find) rapids_cuda_init_architectures(CUGRAPH) -project(CUGRAPH VERSION "${RAPIDS_VERSION}" LANGUAGES C CXX CUDA) +project( + CUGRAPH + VERSION "${RAPIDS_VERSION}" + LANGUAGES C CXX CUDA +) -if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA" AND - CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.0) - message(FATAL_ERROR "CUDA compiler version must be at least 11.0") +if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA" AND CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.0) + message(FATAL_ERROR "CUDA compiler version must be at least 11.0") endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND - CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.3) - message(FATAL_ERROR "GCC compiler must be at least 9.3") +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.3) + message(FATAL_ERROR "GCC compiler must be at least 9.3") endif() # Write the version header @@ -52,7 +54,9 @@ rapids_cmake_build_type(Release) option(BUILD_SHARED_LIBS "Build cuGraph shared libraries" ON) option(BUILD_CUGRAPH_MG_TESTS "Build cuGraph multigpu algorithm tests" OFF) -option(CMAKE_CUDA_LINEINFO "Enable the -lineinfo option for nvcc (useful for cuda-memcheck / profiler" OFF) +option(CMAKE_CUDA_LINEINFO + "Enable the -lineinfo option for nvcc (useful for cuda-memcheck / profiler" OFF +) option(BUILD_TESTS "Configure CMake to build tests" ON) option(USE_RAFT_STATIC "Build raft as a static library" OFF) option(CUGRAPH_COMPILE_RAFT_LIB "Compile the raft library instead of using it header-only" ON) @@ -66,19 +70,20 @@ message(VERBOSE "CUGRAPH: CUDA_STATIC_RUNTIME=${CUDA_STATIC_RUNTIME}") # CUDA runtime rapids_cuda_init_runtime(USE_STATIC ${CUDA_STATIC_RUNTIME}) -rapids_find_package(CUDAToolkit REQUIRED - BUILD_EXPORT_SET cugraph-exports - INSTALL_EXPORT_SET cugraph-exports - ) +rapids_find_package( + CUDAToolkit REQUIRED + BUILD_EXPORT_SET cugraph-exports + INSTALL_EXPORT_SET cugraph-exports +) -if (BUILD_CUGRAPH_MTMG_TESTS) - if(NOT TARGET ucx::ucp) - find_package(ucx REQUIRED) - endif() +if(BUILD_CUGRAPH_MTMG_TESTS) + if(NOT TARGET ucx::ucp) + find_package(ucx REQUIRED) + endif() - if(NOT TARGET ucxx::ucxx) - find_package(ucxx REQUIRED) - endif() + if(NOT TARGET ucxx::ucxx) + find_package(ucxx REQUIRED) + endif() endif() set(CUGRAPH_C_FLAGS "") @@ -86,27 +91,32 @@ set(CUGRAPH_CXX_FLAGS "") set(CUGRAPH_CUDA_FLAGS "") if(CMAKE_COMPILER_IS_GNUCXX) - list(APPEND CUGRAPH_CXX_FLAGS -Werror -Wno-error=deprecated-declarations -Wno-deprecated-declarations -DRAFT_HIDE_DEPRECATION_WARNINGS) + list(APPEND CUGRAPH_CXX_FLAGS -Werror -Wno-error=deprecated-declarations + -Wno-deprecated-declarations -DRAFT_HIDE_DEPRECATION_WARNINGS + ) endif(CMAKE_COMPILER_IS_GNUCXX) - message("-- Building for GPU_ARCHS = ${CMAKE_CUDA_ARCHITECTURES}") list(APPEND CUGRAPH_CUDA_FLAGS --expt-extended-lambda --expt-relaxed-constexpr) -list(APPEND CUGRAPH_CUDA_FLAGS -Werror=cross-execution-space-call -Wno-deprecated-declarations -DRAFT_HIDE_DEPRECATION_WARNINGS -Xptxas=--disable-warnings) -list(APPEND CUGRAPH_CUDA_FLAGS -Xcompiler=-Wall,-Wno-error=sign-compare,-Wno-error=unused-but-set-variable) +list(APPEND CUGRAPH_CUDA_FLAGS -Werror=cross-execution-space-call -Wno-deprecated-declarations + -DRAFT_HIDE_DEPRECATION_WARNINGS -Xptxas=--disable-warnings +) +list(APPEND CUGRAPH_CUDA_FLAGS + -Xcompiler=-Wall,-Wno-error=sign-compare,-Wno-error=unused-but-set-variable +) list(APPEND CUGRAPH_CUDA_FLAGS -Xfatbin=-compress-all) # Option to enable line info in CUDA device compilation to allow introspection when profiling / # memchecking -if (CMAKE_CUDA_LINEINFO) - list(APPEND CUGRAPH_CUDA_FLAGS -lineinfo) +if(CMAKE_CUDA_LINEINFO) + list(APPEND CUGRAPH_CUDA_FLAGS -lineinfo) endif() # Debug options if(CMAKE_BUILD_TYPE MATCHES Debug) - message(STATUS "Building with debugging flags") - list(APPEND CUGRAPH_CUDA_FLAGS -G -Xcompiler=-rdynamic) + message(STATUS "Building with debugging flags") + list(APPEND CUGRAPH_CUDA_FLAGS -G -Xcompiler=-rdynamic) endif() ################################################################################################### @@ -431,35 +441,38 @@ set(CUGRAPH_SOURCES add_library(cugraph ${CUGRAPH_SOURCES}) -set_target_properties(cugraph - PROPERTIES BUILD_RPATH "\$ORIGIN" - INSTALL_RPATH "\$ORIGIN" - # set target compile options - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED ON - CUDA_STANDARD 17 - CUDA_STANDARD_REQUIRED ON - POSITION_INDEPENDENT_CODE ON - INTERFACE_POSITION_INDEPENDENT_CODE ON +set_target_properties( + cugraph + PROPERTIES BUILD_RPATH "\$ORIGIN" + INSTALL_RPATH "\$ORIGIN" + # set target compile options + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + CUDA_STANDARD 17 + CUDA_STANDARD_REQUIRED ON + POSITION_INDEPENDENT_CODE ON + INTERFACE_POSITION_INDEPENDENT_CODE ON ) -target_compile_options(cugraph - PRIVATE "$<$:${CUGRAPH_CXX_FLAGS}>" - "$<$:${CUGRAPH_CUDA_FLAGS}>" +target_compile_options( + cugraph PRIVATE "$<$:${CUGRAPH_CXX_FLAGS}>" + "$<$:${CUGRAPH_CUDA_FLAGS}>" ) # Per-thread default stream option see https://docs.nvidia.com/cuda/cuda-runtime-api/stream-sync-behavior.html # The per-thread default stream does not synchronize with other streams target_compile_definitions(cugraph PUBLIC CUDA_API_PER_THREAD_DEFAULT_STREAM) -file(WRITE "${CUGRAPH_BINARY_DIR}/fatbin.ld" -[=[ +file( + WRITE "${CUGRAPH_BINARY_DIR}/fatbin.ld" + [=[ SECTIONS { .nvFatBinSegment : { *(.nvFatBinSegment) } .nv_fatbin : { *(.nv_fatbin) } } -]=]) +]=] +) target_link_options(cugraph PRIVATE "${CUGRAPH_BINARY_DIR}/fatbin.ld") add_library(cugraph::cugraph ALIAS cugraph) @@ -467,16 +480,13 @@ add_library(cugraph::cugraph ALIAS cugraph) ################################################################################ # - include paths -------------------------------------------------------------- -target_include_directories(cugraph - PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty" - "${CMAKE_CURRENT_SOURCE_DIR}/src" - PUBLIC - "$" - "$" +target_include_directories( + cugraph + PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty" "${CMAKE_CURRENT_SOURCE_DIR}/src" + PUBLIC "$" "$" ) -set(COMPILED_RAFT_LIB ) +set(COMPILED_RAFT_LIB) if(CUGRAPH_COMPILE_RAFT_LIB) set(COMPILED_RAFT_LIB raft::compiled) if(USE_RAFT_STATIC) @@ -486,88 +496,84 @@ endif() ################################################################################ # - link libraries ------------------------------------------------------------- -target_link_libraries(cugraph - PUBLIC - rmm::rmm - raft::raft - $ - PRIVATE - ${COMPILED_RAFT_LIB} - cuco::cuco - rmm::rmm_logger_impl - raft::raft_logger_impl - ) +target_link_libraries( + cugraph + PUBLIC rmm::rmm raft::raft $ + PRIVATE ${COMPILED_RAFT_LIB} cuco::cuco rmm::rmm_logger_impl raft::raft_logger_impl +) ################################################################################ # - C-API library -------------------------------------------------------------- -add_library(cugraph_c - src/c_api/resource_handle.cpp - src/c_api/array.cpp - src/c_api/degrees.cu - src/c_api/degrees_result.cpp - src/c_api/error.cpp - src/c_api/graph_sg.cpp - src/c_api/graph_mg.cpp - src/c_api/graph_functions.cpp - src/c_api/pagerank.cpp - src/c_api/katz.cpp - src/c_api/centrality_result.cpp - src/c_api/eigenvector_centrality.cpp - src/c_api/betweenness_centrality.cpp - src/c_api/core_number.cpp - src/c_api/k_truss.cpp - src/c_api/core_result.cpp - src/c_api/extract_ego.cpp - src/c_api/ecg.cpp - src/c_api/k_core.cpp - src/c_api/hierarchical_clustering_result.cpp - src/c_api/induced_subgraph.cpp - src/c_api/capi_helper.cu - src/c_api/legacy_spectral.cpp - src/c_api/graph_helper_sg.cu - src/c_api/graph_helper_mg.cu - src/c_api/graph_generators.cpp - src/c_api/induced_subgraph_result.cpp - src/c_api/hits.cpp - src/c_api/bfs.cpp - src/c_api/sssp.cpp - src/c_api/extract_paths.cpp - src/c_api/random_walks.cpp - src/c_api/random.cpp - src/c_api/similarity.cpp - src/c_api/leiden.cpp - src/c_api/lookup_src_dst.cpp - src/c_api/louvain.cpp - src/c_api/triangle_count.cpp - src/c_api/neighbor_sampling.cpp - src/c_api/negative_sampling.cpp - src/c_api/labeling_result.cpp - src/c_api/weakly_connected_components.cpp - src/c_api/strongly_connected_components.cpp - src/c_api/allgather.cpp - src/c_api/decompress_to_edgelist.cpp - src/c_api/edgelist.cpp - ) +add_library( + cugraph_c + src/c_api/resource_handle.cpp + src/c_api/array.cpp + src/c_api/degrees.cu + src/c_api/degrees_result.cpp + src/c_api/error.cpp + src/c_api/graph_sg.cpp + src/c_api/graph_mg.cpp + src/c_api/graph_functions.cpp + src/c_api/pagerank.cpp + src/c_api/katz.cpp + src/c_api/centrality_result.cpp + src/c_api/eigenvector_centrality.cpp + src/c_api/betweenness_centrality.cpp + src/c_api/core_number.cpp + src/c_api/k_truss.cpp + src/c_api/core_result.cpp + src/c_api/extract_ego.cpp + src/c_api/ecg.cpp + src/c_api/k_core.cpp + src/c_api/hierarchical_clustering_result.cpp + src/c_api/induced_subgraph.cpp + src/c_api/capi_helper.cu + src/c_api/legacy_spectral.cpp + src/c_api/graph_helper_sg.cu + src/c_api/graph_helper_mg.cu + src/c_api/graph_generators.cpp + src/c_api/induced_subgraph_result.cpp + src/c_api/hits.cpp + src/c_api/bfs.cpp + src/c_api/sssp.cpp + src/c_api/extract_paths.cpp + src/c_api/random_walks.cpp + src/c_api/random.cpp + src/c_api/similarity.cpp + src/c_api/leiden.cpp + src/c_api/lookup_src_dst.cpp + src/c_api/louvain.cpp + src/c_api/triangle_count.cpp + src/c_api/neighbor_sampling.cpp + src/c_api/negative_sampling.cpp + src/c_api/labeling_result.cpp + src/c_api/weakly_connected_components.cpp + src/c_api/strongly_connected_components.cpp + src/c_api/allgather.cpp + src/c_api/decompress_to_edgelist.cpp + src/c_api/edgelist.cpp +) add_library(cugraph::cugraph_c ALIAS cugraph_c) # Currently presuming we aren't calling any CUDA kernels in cugraph_c -set_target_properties(cugraph_c - PROPERTIES BUILD_RPATH "\$ORIGIN" - INSTALL_RPATH "\$ORIGIN" - # set target compile options - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED ON - CUDA_STANDARD 17 - CUDA_STANDARD_REQUIRED ON - POSITION_INDEPENDENT_CODE ON - INTERFACE_POSITION_INDEPENDENT_CODE ON +set_target_properties( + cugraph_c + PROPERTIES BUILD_RPATH "\$ORIGIN" + INSTALL_RPATH "\$ORIGIN" + # set target compile options + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + CUDA_STANDARD 17 + CUDA_STANDARD_REQUIRED ON + POSITION_INDEPENDENT_CODE ON + INTERFACE_POSITION_INDEPENDENT_CODE ON ) -target_compile_options(cugraph_c - PRIVATE "$<$:${CUGRAPH_CXX_FLAGS}>" - "$<$:${CUGRAPH_CUDA_FLAGS}>" +target_compile_options( + cugraph_c PRIVATE "$<$:${CUGRAPH_CXX_FLAGS}>" + "$<$:${CUGRAPH_CUDA_FLAGS}>" ) # Per-thread default stream option see https://docs.nvidia.com/cuda/cuda-runtime-api/stream-sync-behavior.html @@ -578,12 +584,10 @@ target_link_options(cugraph_c PRIVATE "${CUGRAPH_BINARY_DIR}/fatbin.ld") ################################################################################ # - C-API include paths -------------------------------------------------------- -target_include_directories(cugraph_c - PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/src" - PUBLIC - "$" - "$" +target_include_directories( + cugraph_c + PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src" + PUBLIC "$" "$" ) ################################################################################ @@ -600,56 +604,63 @@ endif() ################################################################################ # - install targets ------------------------------------------------------------ -rapids_cmake_install_lib_dir( lib_dir ) +rapids_cmake_install_lib_dir(lib_dir) include(CPack) -install(TARGETS cugraph - DESTINATION ${lib_dir} - EXPORT cugraph-exports) +install( + TARGETS cugraph + DESTINATION ${lib_dir} + EXPORT cugraph-exports +) -install(DIRECTORY include/cugraph/ - DESTINATION include/cugraph) +install(DIRECTORY include/cugraph/ DESTINATION include/cugraph) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/cugraph/version_config.hpp - DESTINATION include/cugraph) + DESTINATION include/cugraph +) -install(TARGETS cugraph_c - DESTINATION ${lib_dir} - EXPORT cugraph-exports) +install( + TARGETS cugraph_c + DESTINATION ${lib_dir} + EXPORT cugraph-exports +) -install(DIRECTORY include/cugraph_c/ - DESTINATION include/cugraph_c) +install(DIRECTORY include/cugraph_c/ DESTINATION include/cugraph_c) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/cugraph_c/version_config.hpp - DESTINATION include/cugraph_c) + DESTINATION include/cugraph_c +) ################################################################################ # - install export ------------------------------------------------------------- set(doc_string -[=[ + [=[ Provide targets for cuGraph. cuGraph library is a collection of GPU accelerated graph algorithms that process data found in [GPU DataFrames](https://github.com/rapidsai/cudf). -]=]) +]=] +) -rapids_export(INSTALL cugraph - EXPORT_SET cugraph-exports - GLOBAL_TARGETS cugraph cugraph_c - NAMESPACE cugraph:: - DOCUMENTATION doc_string - ) +rapids_export( + INSTALL cugraph + EXPORT_SET cugraph-exports + GLOBAL_TARGETS cugraph cugraph_c + NAMESPACE cugraph:: + DOCUMENTATION doc_string +) ################################################################################ # - build export --------------------------------------------------------------- -rapids_export(BUILD cugraph - EXPORT_SET cugraph-exports - GLOBAL_TARGETS cugraph cugraph_c - NAMESPACE cugraph:: - DOCUMENTATION doc_string - ) +rapids_export( + BUILD cugraph + EXPORT_SET cugraph-exports + GLOBAL_TARGETS cugraph cugraph_c + NAMESPACE cugraph:: + DOCUMENTATION doc_string +) ################################################################################ # - make documentation --------------------------------------------------------- @@ -659,10 +670,13 @@ rapids_export(BUILD cugraph # doc targets for cugraph find_package(Doxygen 1.8.11) if(Doxygen_FOUND) - add_custom_command(OUTPUT CUGRAPH_DOXYGEN - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen - COMMAND ${CMAKE_COMMAND} -E env "RAPIDS_VERSION_MAJOR_MINOR=${RAPIDS_VERSION_MAJOR_MINOR}" doxygen Doxyfile - VERBATIM) - - add_custom_target(docs_cugraph DEPENDS CUGRAPH_DOXYGEN) + add_custom_command( + OUTPUT CUGRAPH_DOXYGEN + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen + COMMAND ${CMAKE_COMMAND} -E env "RAPIDS_VERSION_MAJOR_MINOR=${RAPIDS_VERSION_MAJOR_MINOR}" + doxygen Doxyfile + VERBATIM + ) + + add_custom_target(docs_cugraph DEPENDS CUGRAPH_DOXYGEN) endif() diff --git a/cpp/cmake/config.json b/cpp/cmake/config.json new file mode 100644 index 00000000000..304b4dad067 --- /dev/null +++ b/cpp/cmake/config.json @@ -0,0 +1,50 @@ +{ + "parse": { + "additional_commands": { + "CPMFindPackage": { + "kwargs": { + "NAME": 1, + "GITHUB_REPOSITORY": "?", + "GIT_TAG": "?", + "VERSION": "?", + "GIT_SHALLOW": "?", + "OPTIONS": "*", + "FIND_PACKAGE_ARGUMENTS": "*" + } + }, + "rapids_cython_create_modules": { + "kwargs": { + "SOURCE_FILES": "?", + "LINKED_LIBRARIES": "?", + "MODULE_PREFIX": "?", + "ASSOCIATED_TARGETS": "?" + } + } + } + }, + "markup": { + "enable_markup": false + }, + "format": { + "line_width": 100, + "tab_size": 2, + "command_case": "unchanged", + "max_lines_hwrap": 1, + "max_pargs_hwrap": 999, + "dangle_parens": true + }, + "lint": { + "disabled_codes": [ + "C0111", "C0113", "C0301" + ], + "function_pattern": "[0-9A-z_]+", + "macro_pattern": "[0-9A-z_]+", + "global_var_pattern": "[A-z][0-9A-z_]+", + "internal_var_pattern": "_[A-z][0-9A-z_]+", + "local_var_pattern": "[A-z][A-z0-9_]+", + "private_var_pattern": "_[0-9A-z_]+", + "public_var_pattern": "[A-z][0-9A-z_]+", + "argument_var_pattern": "[A-z][A-z0-9_]+", + "keyword_pattern": "[A-z][0-9A-z_]+" + } +} diff --git a/cpp/examples/developers/graph_operations/CMakeLists.txt b/cpp/examples/developers/graph_operations/CMakeLists.txt index db573592aff..17636b5c94b 100644 --- a/cpp/examples/developers/graph_operations/CMakeLists.txt +++ b/cpp/examples/developers/graph_operations/CMakeLists.txt @@ -1,5 +1,5 @@ #============================================================================= -# Copyright (c) 2024, NVIDIA CORPORATION. +# Copyright (c) 2024-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -29,10 +29,7 @@ include(../../../cmake/thirdparty/get_nccl.cmake) add_executable(graph_operations graph_operations.cu) -target_include_directories(graph_operations - PRIVATE - "../../../src" -) +target_include_directories(graph_operations PRIVATE "../../../src") set_target_properties(graph_operations PROPERTIES CUDA_ARCHITECTURES "native") target_link_libraries(graph_operations PRIVATE cugraph::cugraph NCCL::NCCL MPI::MPI_CXX) diff --git a/cpp/libcugraph_etl/CMakeLists.txt b/cpp/libcugraph_etl/CMakeLists.txt index fd04f1fbcdc..106817f64fb 100644 --- a/cpp/libcugraph_etl/CMakeLists.txt +++ b/cpp/libcugraph_etl/CMakeLists.txt @@ -1,5 +1,5 @@ #============================================================================= -# Copyright (c) 2021-2024, NVIDIA CORPORATION. +# Copyright (c) 2021-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,16 +25,18 @@ include(rapids-find) rapids_cuda_init_architectures(CUGRAPH_ETL) -project(CUGRAPH_ETL VERSION "${RAPIDS_VERSION}" LANGUAGES C CXX CUDA) +project( + CUGRAPH_ETL + VERSION "${RAPIDS_VERSION}" + LANGUAGES C CXX CUDA +) -if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA" AND - CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.0) - message(FATAL_ERROR "CUDA compiler version must be at least 11.0") +if(CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA" AND CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.0) + message(FATAL_ERROR "CUDA compiler version must be at least 11.0") endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND - CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.3) - message(FATAL_ERROR "GCC compiler must be at least 9.3") +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.3) + message(FATAL_ERROR "GCC compiler must be at least 9.3") endif() # Write the version header @@ -51,7 +53,9 @@ rapids_cmake_build_type(Release) option(BUILD_SHARED_LIBS "Build cuGraph shared libraries" ON) option(BUILD_CUGRAPH_ETL_MG_TESTS "Build cuGraph multigpu algorithm tests" OFF) -option(CMAKE_CUDA_LINEINFO "Enable the -lineinfo option for nvcc (useful for cuda-memcheck / profiler" OFF) +option(CMAKE_CUDA_LINEINFO + "Enable the -lineinfo option for nvcc (useful for cuda-memcheck / profiler" OFF +) option(BUILD_TESTS "Configure CMake to build tests" ON) option(CUDA_STATIC_RUNTIME "Statically link the CUDA runtime" OFF) option(CUDA_STATIC_MATH_LIBRARIES "Statically link the CUDA math libraries" OFF) @@ -67,36 +71,40 @@ endif() # CUDA runtime rapids_cuda_init_runtime(USE_STATIC ${CUDA_STATIC_RUNTIME}) -rapids_find_package(CUDAToolkit REQUIRED - BUILD_EXPORT_SET cugraph_etl-exports - INSTALL_EXPORT_SET cugraph_etl-exports - ) +rapids_find_package( + CUDAToolkit REQUIRED + BUILD_EXPORT_SET cugraph_etl-exports + INSTALL_EXPORT_SET cugraph_etl-exports +) set(CUGRAPH_ETL_CXX_FLAGS "") set(CUGRAPH_ETL_CUDA_FLAGS "") if(CMAKE_COMPILER_IS_GNUCXX) - list(APPEND CUGRAPH_ETL_CXX_FLAGS -Werror -Wno-error=deprecated-declarations) + list(APPEND CUGRAPH_ETL_CXX_FLAGS -Werror -Wno-error=deprecated-declarations) endif(CMAKE_COMPILER_IS_GNUCXX) - message("-- Building for GPU_ARCHS = ${CMAKE_CUDA_ARCHITECTURES}") list(APPEND CUGRAPH_ETL_CUDA_FLAGS --expt-extended-lambda --expt-relaxed-constexpr) -list(APPEND CUGRAPH_ETL_CUDA_FLAGS -Werror=cross-execution-space-call -Wno-deprecated-declarations -Xptxas=--disable-warnings) -list(APPEND CUGRAPH_ETL_CUDA_FLAGS -Xcompiler=-Wall,-Wno-error=sign-compare,-Wno-error=unused-but-set-variable) +list(APPEND CUGRAPH_ETL_CUDA_FLAGS -Werror=cross-execution-space-call -Wno-deprecated-declarations + -Xptxas=--disable-warnings +) +list(APPEND CUGRAPH_ETL_CUDA_FLAGS + -Xcompiler=-Wall,-Wno-error=sign-compare,-Wno-error=unused-but-set-variable +) list(APPEND CUGRAPH_ETL_CUDA_FLAGS -Xfatbin=-compress-all) # Option to enable line info in CUDA device compilation to allow introspection when profiling / # memchecking -if (CMAKE_CUDA_LINEINFO) - list(APPEND CUGRAPH_ETL_CUDA_FLAGS -lineinfo) +if(CMAKE_CUDA_LINEINFO) + list(APPEND CUGRAPH_ETL_CUDA_FLAGS -lineinfo) endif() # Debug options if(CMAKE_BUILD_TYPE MATCHES Debug) - message(STATUS "Building with debugging flags") - list(APPEND CUGRAPH_ETL_CUDA_FLAGS -G -Xcompiler=-rdynamic) + message(STATUS "Building with debugging flags") + list(APPEND CUGRAPH_ETL_CUDA_FLAGS -G -Xcompiler=-rdynamic) endif() ################################################################################ @@ -110,90 +118,84 @@ include(cmake/thirdparty/get_cudf.cmake) ################################################################################ # - ETL library -------------------------------------------------------------- -add_library(cugraph_etl - src/renumbering.cu - ) +add_library(cugraph_etl src/renumbering.cu) add_library(cugraph::cugraph_etl ALIAS cugraph_etl) -set_target_properties(cugraph_etl - PROPERTIES BUILD_RPATH "\$ORIGIN" - INSTALL_RPATH "\$ORIGIN" - # set target compile options - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED ON - CUDA_STANDARD 17 - CUDA_STANDARD_REQUIRED ON - POSITION_INDEPENDENT_CODE ON - INTERFACE_POSITION_INDEPENDENT_CODE ON +set_target_properties( + cugraph_etl + PROPERTIES BUILD_RPATH "\$ORIGIN" + INSTALL_RPATH "\$ORIGIN" + # set target compile options + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + CUDA_STANDARD 17 + CUDA_STANDARD_REQUIRED ON + POSITION_INDEPENDENT_CODE ON + INTERFACE_POSITION_INDEPENDENT_CODE ON ) -target_compile_options(cugraph_etl - PRIVATE "$<$:${CUGRAPH_ETL_CXX_FLAGS}>" -) +target_compile_options(cugraph_etl PRIVATE "$<$:${CUGRAPH_ETL_CXX_FLAGS}>") -target_compile_options(cugraph_etl - PRIVATE "$<$:${CUGRAPH_ETL_CUDA_FLAGS}>") +target_compile_options(cugraph_etl PRIVATE "$<$:${CUGRAPH_ETL_CUDA_FLAGS}>") ################################################################################ # - ETL include paths -------------------------------------------------------- -target_include_directories(cugraph_etl - PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/src" - PUBLIC - "$" - "$" +target_include_directories( + cugraph_etl + PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src" + PUBLIC "$" "$" ) ################################################################################ # - ETL link libraries ------------------------------------------------------- -target_link_libraries(cugraph_etl - PUBLIC - CUDA::cublas${_ctk_static_suffix} - CUDA::curand${_ctk_static_suffix} - CUDA::cusolver${_ctk_static_suffix} - CUDA::cusparse${_ctk_static_suffix} - PRIVATE - cugraph::cugraph - cudf::cudf +target_link_libraries( + cugraph_etl + PUBLIC CUDA::cublas${_ctk_static_suffix} CUDA::curand${_ctk_static_suffix} + CUDA::cusolver${_ctk_static_suffix} CUDA::cusparse${_ctk_static_suffix} + PRIVATE cugraph::cugraph cudf::cudf ) ################################################################################ # - install targets ------------------------------------------------------------ -rapids_cmake_install_lib_dir( lib_dir ) +rapids_cmake_install_lib_dir(lib_dir) include(CPack) -install(TARGETS cugraph_etl - DESTINATION ${lib_dir} - EXPORT cugraph_etl-exports +install( + TARGETS cugraph_etl + DESTINATION ${lib_dir} + EXPORT cugraph_etl-exports ) -install(DIRECTORY include/cugraph_etl/ - DESTINATION include/cugraph_etl) +install(DIRECTORY include/cugraph_etl/ DESTINATION include/cugraph_etl) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/cugraph_etl/version_config.hpp - DESTINATION include/cugraph_etl) + DESTINATION include/cugraph_etl +) ################################################################################ # - install export ------------------------------------------------------------- set(doc_string -[=[ + [=[ cuGraph_etl library is a collection of GPU accelerated ETL functions specifically for cuGraph. -]=]) +]=] +) -rapids_export(INSTALL cugraph_etl - EXPORT_SET cugraph_etl-exports - GLOBAL_TARGETS cugraph_etl - NAMESPACE cugraph:: - DOCUMENTATION doc_string - ) +rapids_export( + INSTALL cugraph_etl + EXPORT_SET cugraph_etl-exports + GLOBAL_TARGETS cugraph_etl + NAMESPACE cugraph:: + DOCUMENTATION doc_string +) ################################################################################ # - build export --------------------------------------------------------------- -rapids_export(BUILD cugraph_etl - EXPORT_SET cugraph_etl-exports - GLOBAL_TARGETS cugraph cugraph_c cugraph_etl - NAMESPACE cugraph:: - DOCUMENTATION doc_string - ) +rapids_export( + BUILD cugraph_etl + EXPORT_SET cugraph_etl-exports + GLOBAL_TARGETS cugraph cugraph_c cugraph_etl + NAMESPACE cugraph:: + DOCUMENTATION doc_string +) diff --git a/cpp/scripts/run-cmake-format.sh b/cpp/scripts/run-cmake-format.sh new file mode 100755 index 00000000000..3c657b2d909 --- /dev/null +++ b/cpp/scripts/run-cmake-format.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Copyright (c) 2022-2025, NVIDIA CORPORATION. + +# copied from: https://github.com/rapidsai/rapids-cmake/blob/branch-25.02/ci/checks/run-cmake-format.sh +# +# This script is a wrapper for cmakelang that may be used with pre-commit. The +# wrapping is necessary because RAPIDS libraries split configuration for +# cmakelang linters between a local config file and a second config file that's +# shared across all of RAPIDS via rapids-cmake. We need a way to invoke CMake linting commands +# without causing pre-commit failures (which could block local commits or CI), +# while also being sufficiently flexible to allow users to maintain the config +# file independently of a build directory. +# +# This script provides the minimal functionality to enable those use cases. It +# searches in a number of predefined locations for the rapids-cmake config file +# and exits gracefully if the file is not found. If a user wishes to specify a +# config file at a nonstandard location, they may do so by setting the +# environment variable RAPIDS_CMAKE_FORMAT_FILE. +# +# This script can be invoked directly anywhere within the project repository. +# Alternatively, it may be invoked as a pre-commit hook via +# `pre-commit run (cmake-format)|(cmake-lint)`. +# +# Usage: +# bash run-cmake-format.sh {cmake-format,cmake-lint} infile [infile ...] + +status=0 +if [ -z ${CUGRAPH_ROOT:+PLACEHOLDER} ]; then + CUGRAPH_BUILD_DIR=$(git rev-parse --show-toplevel 2>&1)/cpp/build + status=$? +else + CUGRAPH_BUILD_DIR=${CUGRAPH_ROOT} +fi + +if ! [ ${status} -eq 0 ]; then + if [[ ${CUGRAPH_BUILD_DIR} == *"not a git repository"* ]]; then + echo "This script must be run inside the cugraph repository, or the CUGRAPH_ROOT environment variable must be set." + else + echo "Script failed with unknown error attempting to determine project root:" + echo ${CUGRAPH_BUILD_DIR} + fi + exit 1 +fi + +DEFAULT_FORMAT_FILE_LOCATIONS=( + "${CUGRAPH_BUILD_DIR:-${HOME}}/_deps/rapids-cmake-src/cmake-format-rapids-cmake.json" +) + +if [ -z ${RAPIDS_CMAKE_FORMAT_FILE:+PLACEHOLDER} ]; then + for file_path in "${DEFAULT_FORMAT_FILE_LOCATIONS[@]}"; do + if [ -f ${file_path} ]; then + RAPIDS_CMAKE_FORMAT_FILE=${file_path} + break + fi + done +fi + +if [ -z ${RAPIDS_CMAKE_FORMAT_FILE:+PLACEHOLDER} ]; then + echo "The rapids-cmake cmake-format configuration file was not found at any of the default search locations: " + echo "" + ( IFS=$'\n'; echo "${DEFAULT_FORMAT_FILE_LOCATIONS[*]}" ) + echo "" + echo "Try setting the environment variable RAPIDS_CMAKE_FORMAT_FILE to the path to the config file." + exit 0 +else + echo "Using format file ${RAPIDS_CMAKE_FORMAT_FILE}" +fi + +if [[ $1 == "cmake-format" ]]; then + cmake-format -i --config-files cpp/cmake/config.json ${RAPIDS_CMAKE_FORMAT_FILE} -- "${@:2}" +elif [[ $1 == "cmake-lint" ]]; then + # Since the pre-commit hook is verbose, we have to be careful to only + # present cmake-lint's output (which is quite verbose) if we actually + # observe a failure. + OUTPUT=$(cmake-lint --config-files cpp/cmake/config.json ${RAPIDS_CMAKE_FORMAT_FILE} -- "${@:2}") + status=$? + + if ! [ ${status} -eq 0 ]; then + echo "${OUTPUT}" + fi + exit ${status} +fi diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index 6800b9c4769..09156440c56 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -1,4 +1,4 @@ -#============================================================================= +#============================================================================= # Copyright (c) 2019-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -22,302 +22,264 @@ rapids_test_init() ################################################################################################### # - set rapids dataset path ---------------------------------------------------------------------- if(RAPIDS_DATASET_ROOT_DIR) - message(STATUS "setting default RAPIDS_DATASET_ROOT_DIR to: ${RAPIDS_DATASET_ROOT_DIR}") - string(CONCAT CMAKE_C_FLAGS ${CMAKE_C_FLAGS} " -DRAPIDS_DATASET_ROOT_DIR=" "\\\"" ${RAPIDS_DATASET_ROOT_DIR} "\\\"") - string(CONCAT CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} " -DRAPIDS_DATASET_ROOT_DIR=" "\\\"" ${RAPIDS_DATASET_ROOT_DIR} "\\\"") - string(CONCAT CMAKE_CUDA_FLAGS ${CMAKE_CUDA_FLAGS} " -DRAPIDS_DATASET_ROOT_DIR=" "\\\"" ${RAPIDS_DATASET_ROOT_DIR} "\\\"") + message(STATUS "setting default RAPIDS_DATASET_ROOT_DIR to: ${RAPIDS_DATASET_ROOT_DIR}") + string(CONCAT CMAKE_C_FLAGS ${CMAKE_C_FLAGS} " -DRAPIDS_DATASET_ROOT_DIR=" "\\\"" + ${RAPIDS_DATASET_ROOT_DIR} "\\\"" + ) + string(CONCAT CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} " -DRAPIDS_DATASET_ROOT_DIR=" "\\\"" + ${RAPIDS_DATASET_ROOT_DIR} "\\\"" + ) + string(CONCAT CMAKE_CUDA_FLAGS ${CMAKE_CUDA_FLAGS} " -DRAPIDS_DATASET_ROOT_DIR=" "\\\"" + ${RAPIDS_DATASET_ROOT_DIR} "\\\"" + ) endif(RAPIDS_DATASET_ROOT_DIR) ################################################################################################### # - common C++ test utils ----------------------------------------------------------------------------- -add_library(cugraphtestutil STATIC - utilities/matrix_market_file_utilities.cu - utilities/csv_file_utilities.cu - utilities/property_generator_utilities_sg.cu - utilities/thrust_wrapper.cu - utilities/misc_utilities.cpp - utilities/conversion_utilities_sg.cu - utilities/debug_utilities_sg.cpp - utilities/validation_utilities.cu - link_prediction/similarity_compare.cpp - centrality/betweenness_centrality_validate.cu - community/egonet_validate.cu - cores/k_core_validate.cu - structure/induced_subgraph_validate.cu - sampling/random_walks_check_sg.cu - sampling/detail/nbr_sampling_validate.cu - sampling/detail/sampling_post_processing_validate.cu - ../../thirdparty/mmio/mmio.c) - -target_compile_options(cugraphtestutil - PUBLIC "$<$:${CUGRAPH_CXX_FLAGS}>" - "$<$:${CUGRAPH_CUDA_FLAGS}>" +add_library( + cugraphtestutil STATIC + utilities/matrix_market_file_utilities.cu + utilities/csv_file_utilities.cu + utilities/property_generator_utilities_sg.cu + utilities/thrust_wrapper.cu + utilities/misc_utilities.cpp + utilities/conversion_utilities_sg.cu + utilities/debug_utilities_sg.cpp + utilities/validation_utilities.cu + link_prediction/similarity_compare.cpp + centrality/betweenness_centrality_validate.cu + community/egonet_validate.cu + cores/k_core_validate.cu + structure/induced_subgraph_validate.cu + sampling/random_walks_check_sg.cu + sampling/detail/nbr_sampling_validate.cu + sampling/detail/sampling_post_processing_validate.cu + ../../thirdparty/mmio/mmio.c +) + +target_compile_options( + cugraphtestutil PUBLIC "$<$:${CUGRAPH_CXX_FLAGS}>" + "$<$:${CUGRAPH_CUDA_FLAGS}>" ) set_property(TARGET cugraphtestutil PROPERTY POSITION_INDEPENDENT_CODE ON) -target_include_directories(cugraphtestutil - PUBLIC - "${CMAKE_CURRENT_SOURCE_DIR}" - "${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/mmio" - PRIVATE - "${CUGRAPH_SOURCE_DIR}/src" +target_include_directories( + cugraphtestutil + PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../../thirdparty/mmio" + PRIVATE "${CUGRAPH_SOURCE_DIR}/src" ) -target_link_libraries(cugraphtestutil - PUBLIC - cugraph::cugraph - PRIVATE - GTest::gtest +target_link_libraries( + cugraphtestutil + PUBLIC cugraph::cugraph + PRIVATE GTest::gtest ) - ################################################################################################### # - common C API test utils ----------------------------------------------------------------------- -add_library(cugraph_c_testutil STATIC - c_api/test_utils.cpp) +add_library(cugraph_c_testutil STATIC c_api/test_utils.cpp) -target_compile_options(cugraph_c_testutil - PUBLIC "$<$:${CUGRAPH_C_FLAGS}>" - "$<$:${CUGRAPH_CXX_FLAGS}>" - "$<$:${CUGRAPH_CUDA_FLAGS}>" +target_compile_options( + cugraph_c_testutil + PUBLIC "$<$:${CUGRAPH_C_FLAGS}>" + "$<$:${CUGRAPH_CXX_FLAGS}>" + "$<$:${CUGRAPH_CUDA_FLAGS}>" ) -target_include_directories(cugraph_c_testutil - PRIVATE - "${CUGRAPH_SOURCE_DIR}/src" -) +target_include_directories(cugraph_c_testutil PRIVATE "${CUGRAPH_SOURCE_DIR}/src") set_property(TARGET cugraph_c_testutil PROPERTY POSITION_INDEPENDENT_CODE ON) -target_link_libraries(cugraph_c_testutil - PUBLIC - CUDA::toolkit - PRIVATE - cugraph::cugraph_c - cugraph::cugraph +target_link_libraries( + cugraph_c_testutil + PUBLIC CUDA::toolkit + PRIVATE cugraph::cugraph_c cugraph::cugraph ) if(BUILD_CUGRAPH_MG_TESTS) - include(../cmake/thirdparty/get_nccl.cmake) - - ############################################################################################### - # - find MPI - only enabled if MG tests are to be built - find_package(MPI REQUIRED COMPONENTS CXX) - - - ################################################################################################### - # - common C++ mg test utils ----------------------------------------------------------------------- - add_library(cugraphmgtestutil STATIC - utilities/device_comm_wrapper.cu - utilities/mg_utilities.cpp - utilities/conversion_utilities_mg.cu - utilities/property_generator_utilities_mg.cu - utilities/debug_utilities_mg.cpp - sampling/random_walks_check_mg.cu - c_api/mg_test_utils.cpp - ) - - set_property(TARGET cugraphmgtestutil PROPERTY POSITION_INDEPENDENT_CODE ON) - - target_compile_options(cugraphmgtestutil - PUBLIC "$<$:${CUGRAPH_CXX_FLAGS}>" - "$<$:${CUGRAPH_CUDA_FLAGS}>" - ) - - target_include_directories(cugraphmgtestutil - PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/../include" - "${CMAKE_CURRENT_SOURCE_DIR}" - "${CUGRAPH_SOURCE_DIR}/src" - ) - - target_link_libraries(cugraphmgtestutil - PRIVATE - cugraph::cugraph - NCCL::NCCL - MPI::MPI_CXX - GTest::gtest - ) + include(../cmake/thirdparty/get_nccl.cmake) + + ############################################################################################### + # - find MPI - only enabled if MG tests are to be built + find_package(MPI REQUIRED COMPONENTS CXX) + + ################################################################################################### + # - common C++ mg test utils ----------------------------------------------------------------------- + add_library( + cugraphmgtestutil STATIC + utilities/device_comm_wrapper.cu + utilities/mg_utilities.cpp + utilities/conversion_utilities_mg.cu + utilities/property_generator_utilities_mg.cu + utilities/debug_utilities_mg.cpp + sampling/random_walks_check_mg.cu + c_api/mg_test_utils.cpp + ) + + set_property(TARGET cugraphmgtestutil PROPERTY POSITION_INDEPENDENT_CODE ON) + + target_compile_options( + cugraphmgtestutil PUBLIC "$<$:${CUGRAPH_CXX_FLAGS}>" + "$<$:${CUGRAPH_CUDA_FLAGS}>" + ) + + target_include_directories( + cugraphmgtestutil PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../include" + "${CMAKE_CURRENT_SOURCE_DIR}" "${CUGRAPH_SOURCE_DIR}/src" + ) + + target_link_libraries( + cugraphmgtestutil PRIVATE cugraph::cugraph NCCL::NCCL MPI::MPI_CXX GTest::gtest + ) endif() ################################################################################################### # - compiler function ----------------------------------------------------------------------------- function(ConfigureTest CMAKE_TEST_NAME) - set(options) - set(one_value GPUS PERCENT) - set(multi_value) - cmake_parse_arguments(_CUGRAPH_TEST "${options}" "${one_value}" "${multi_value}" ${ARGN}) - if(NOT DEFINED _CUGRAPH_TEST_GPUS AND NOT DEFINED _CUGRAPH_TEST_PERCENT) - set(_CUGRAPH_TEST_GPUS 1) - set(_CUGRAPH_TEST_PERCENT 25) - endif() - if(NOT DEFINED _CUGRAPH_TEST_GPUS) - set(_CUGRAPH_TEST_GPUS 1) - endif() - if(NOT DEFINED _CUGRAPH_TEST_PERCENT) - set(_CUGRAPH_TEST_PERCENT 100) - endif() - - add_executable(${CMAKE_TEST_NAME} ${_CUGRAPH_TEST_UNPARSED_ARGUMENTS}) - - target_link_libraries(${CMAKE_TEST_NAME} - PRIVATE - cugraphtestutil - GTest::gtest - GTest::gtest_main - test_logger_impls - ) - set_target_properties( - ${CMAKE_TEST_NAME} - PROPERTIES INSTALL_RPATH "\$ORIGIN/../../../lib" - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED ON - CUDA_STANDARD 17 - CUDA_STANDARD_REQUIRED ON) - - rapids_test_add( - NAME ${CMAKE_TEST_NAME} - COMMAND ${CMAKE_TEST_NAME} - GPUS ${_CUGRAPH_TEST_GPUS} - PERCENT ${_CUGRAPH_TEST_PERCENT} - INSTALL_COMPONENT_SET testing - ) - set_tests_properties(${CMAKE_TEST_NAME} PROPERTIES LABELS "CUGRAPH") + set(options) + set(one_value GPUS PERCENT) + set(multi_value) + cmake_parse_arguments(_CUGRAPH_TEST "${options}" "${one_value}" "${multi_value}" ${ARGN}) + if(NOT DEFINED _CUGRAPH_TEST_GPUS AND NOT DEFINED _CUGRAPH_TEST_PERCENT) + set(_CUGRAPH_TEST_GPUS 1) + set(_CUGRAPH_TEST_PERCENT 25) + endif() + if(NOT DEFINED _CUGRAPH_TEST_GPUS) + set(_CUGRAPH_TEST_GPUS 1) + endif() + if(NOT DEFINED _CUGRAPH_TEST_PERCENT) + set(_CUGRAPH_TEST_PERCENT 100) + endif() + + add_executable(${CMAKE_TEST_NAME} ${_CUGRAPH_TEST_UNPARSED_ARGUMENTS}) + + target_link_libraries( + ${CMAKE_TEST_NAME} PRIVATE cugraphtestutil GTest::gtest GTest::gtest_main test_logger_impls + ) + set_target_properties( + ${CMAKE_TEST_NAME} + PROPERTIES INSTALL_RPATH "\$ORIGIN/../../../lib" + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + CUDA_STANDARD 17 + CUDA_STANDARD_REQUIRED ON + ) + + rapids_test_add( + NAME ${CMAKE_TEST_NAME} + COMMAND ${CMAKE_TEST_NAME} + GPUS ${_CUGRAPH_TEST_GPUS} + PERCENT ${_CUGRAPH_TEST_PERCENT} + INSTALL_COMPONENT_SET testing + ) + set_tests_properties(${CMAKE_TEST_NAME} PROPERTIES LABELS "CUGRAPH") endfunction() function(ConfigureTestMG CMAKE_TEST_NAME) - add_executable(${CMAKE_TEST_NAME} ${ARGN}) - target_include_directories(${CMAKE_TEST_NAME} PRIVATE "${CUGRAPH_SOURCE_DIR}/src") - target_link_libraries(${CMAKE_TEST_NAME} - PRIVATE - cugraphmgtestutil - cugraphtestutil - GTest::gtest - GTest::gtest_main - NCCL::NCCL - MPI::MPI_CXX - test_logger_impls - ) - set_target_properties( - ${CMAKE_TEST_NAME} - PROPERTIES INSTALL_RPATH "\$ORIGIN/../../../lib" - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED ON - CUDA_STANDARD 17 - CUDA_STANDARD_REQUIRED ON) - - rapids_test_add( - NAME ${CMAKE_TEST_NAME} - COMMAND ${MPIEXEC_EXECUTABLE} - "--noprefix" - ${MPIEXEC_NUMPROC_FLAG} - ${GPU_COUNT} - ${MPIEXEC_PREFLAGS} - ${CMAKE_TEST_NAME} - ${MPIEXEC_POSTFLAGS} - GPUS ${GPU_COUNT} - PERCENT 100 - INSTALL_COMPONENT_SET testing_mg - INSTALL_TARGET ${CMAKE_TEST_NAME} - ) - set_tests_properties(${CMAKE_TEST_NAME} PROPERTIES LABELS "CUGRAPH_MG") + add_executable(${CMAKE_TEST_NAME} ${ARGN}) + target_include_directories(${CMAKE_TEST_NAME} PRIVATE "${CUGRAPH_SOURCE_DIR}/src") + target_link_libraries( + ${CMAKE_TEST_NAME} PRIVATE cugraphmgtestutil cugraphtestutil GTest::gtest GTest::gtest_main + NCCL::NCCL MPI::MPI_CXX test_logger_impls + ) + set_target_properties( + ${CMAKE_TEST_NAME} + PROPERTIES INSTALL_RPATH "\$ORIGIN/../../../lib" + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + CUDA_STANDARD 17 + CUDA_STANDARD_REQUIRED ON + ) + + rapids_test_add( + NAME ${CMAKE_TEST_NAME} + COMMAND ${MPIEXEC_EXECUTABLE} "--noprefix" ${MPIEXEC_NUMPROC_FLAG} ${GPU_COUNT} + ${MPIEXEC_PREFLAGS} ${CMAKE_TEST_NAME} ${MPIEXEC_POSTFLAGS} + GPUS ${GPU_COUNT} + PERCENT 100 + INSTALL_COMPONENT_SET testing_mg INSTALL_TARGET ${CMAKE_TEST_NAME} + ) + set_tests_properties(${CMAKE_TEST_NAME} PROPERTIES LABELS "CUGRAPH_MG") endfunction() function(ConfigureCTest CMAKE_TEST_NAME) - set(options) - set(one_value GPUS PERCENT) - set(multi_value) - cmake_parse_arguments(_CUGRAPH_TEST "${options}" "${one_value}" "${multi_value}" ${ARGN}) - if(NOT DEFINED _CUGRAPH_TEST_GPUS AND NOT DEFINED _CUGRAPH_TEST_PERCENT) - set(_CUGRAPH_TEST_GPUS 1) - set(_CUGRAPH_TEST_PERCENT 25) - endif() - if(NOT DEFINED _CUGRAPH_TEST_GPUS) - set(_CUGRAPH_TEST_GPUS 1) - endif() - if(NOT DEFINED _CUGRAPH_TEST_PERCENT) - set(_CUGRAPH_TEST_PERCENT 100) - endif() - - add_executable(${CMAKE_TEST_NAME} ${_CUGRAPH_TEST_UNPARSED_ARGUMENTS}) - - target_link_libraries(${CMAKE_TEST_NAME} - PRIVATE - cugraph::cugraph_c - cugraph_c_testutil - GTest::gtest - GTest::gtest_main - test_logger_impls - ) - set_target_properties( - ${CMAKE_TEST_NAME} - PROPERTIES INSTALL_RPATH "\$ORIGIN/../../../lib" - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED ON - CUDA_STANDARD 17 - CUDA_STANDARD_REQUIRED ON) - - rapids_test_add( - NAME ${CMAKE_TEST_NAME} - COMMAND ${CMAKE_TEST_NAME} - GPUS ${_CUGRAPH_TEST_GPUS} - PERCENT ${_CUGRAPH_TEST_PERCENT} - INSTALL_COMPONENT_SET testing_c - ) - set_tests_properties(${CMAKE_TEST_NAME} PROPERTIES LABELS "CUGRAPH_C") + set(options) + set(one_value GPUS PERCENT) + set(multi_value) + cmake_parse_arguments(_CUGRAPH_TEST "${options}" "${one_value}" "${multi_value}" ${ARGN}) + if(NOT DEFINED _CUGRAPH_TEST_GPUS AND NOT DEFINED _CUGRAPH_TEST_PERCENT) + set(_CUGRAPH_TEST_GPUS 1) + set(_CUGRAPH_TEST_PERCENT 25) + endif() + if(NOT DEFINED _CUGRAPH_TEST_GPUS) + set(_CUGRAPH_TEST_GPUS 1) + endif() + if(NOT DEFINED _CUGRAPH_TEST_PERCENT) + set(_CUGRAPH_TEST_PERCENT 100) + endif() + + add_executable(${CMAKE_TEST_NAME} ${_CUGRAPH_TEST_UNPARSED_ARGUMENTS}) + + target_link_libraries( + ${CMAKE_TEST_NAME} PRIVATE cugraph::cugraph_c cugraph_c_testutil GTest::gtest GTest::gtest_main + test_logger_impls + ) + set_target_properties( + ${CMAKE_TEST_NAME} + PROPERTIES INSTALL_RPATH "\$ORIGIN/../../../lib" + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + CUDA_STANDARD 17 + CUDA_STANDARD_REQUIRED ON + ) + + rapids_test_add( + NAME ${CMAKE_TEST_NAME} + COMMAND ${CMAKE_TEST_NAME} + GPUS ${_CUGRAPH_TEST_GPUS} + PERCENT ${_CUGRAPH_TEST_PERCENT} + INSTALL_COMPONENT_SET testing_c + ) + set_tests_properties(${CMAKE_TEST_NAME} PROPERTIES LABELS "CUGRAPH_C") endfunction() function(ConfigureCTestMG CMAKE_TEST_NAME) - add_executable(${CMAKE_TEST_NAME} ${ARGN}) - - target_link_libraries(${CMAKE_TEST_NAME} - PRIVATE - cugraph::cugraph_c - cugraph_c_testutil - cugraphmgtestutil - GTest::gtest - GTest::gtest_main - NCCL::NCCL - MPI::MPI_CXX - test_logger_impls - ) - set_target_properties( - ${CMAKE_TEST_NAME} - PROPERTIES INSTALL_RPATH "\$ORIGIN/../../../lib" - CXX_STANDARD 17 - CXX_STANDARD_REQUIRED ON - CUDA_STANDARD 17 - CUDA_STANDARD_REQUIRED ON) - - rapids_test_add( - NAME ${CMAKE_TEST_NAME} - COMMAND ${MPIEXEC_EXECUTABLE} - "--noprefix" - ${MPIEXEC_NUMPROC_FLAG} - ${GPU_COUNT} - ${MPIEXEC_PREFLAGS} - ${CMAKE_TEST_NAME} - ${MPIEXEC_POSTFLAGS} - GPUS ${GPU_COUNT} - PERCENT 100 - INSTALL_COMPONENT_SET testing_mg - INSTALL_TARGET ${CMAKE_TEST_NAME} - ) - set_tests_properties(${CMAKE_TEST_NAME} PROPERTIES LABELS "CUGRAPH_C_MG") - + add_executable(${CMAKE_TEST_NAME} ${ARGN}) + + target_link_libraries( + ${CMAKE_TEST_NAME} PRIVATE cugraph::cugraph_c cugraph_c_testutil cugraphmgtestutil GTest::gtest + GTest::gtest_main NCCL::NCCL MPI::MPI_CXX test_logger_impls + ) + set_target_properties( + ${CMAKE_TEST_NAME} + PROPERTIES INSTALL_RPATH "\$ORIGIN/../../../lib" + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + CUDA_STANDARD 17 + CUDA_STANDARD_REQUIRED ON + ) + + rapids_test_add( + NAME ${CMAKE_TEST_NAME} + COMMAND ${MPIEXEC_EXECUTABLE} "--noprefix" ${MPIEXEC_NUMPROC_FLAG} ${GPU_COUNT} + ${MPIEXEC_PREFLAGS} ${CMAKE_TEST_NAME} ${MPIEXEC_POSTFLAGS} + GPUS ${GPU_COUNT} + PERCENT 100 + INSTALL_COMPONENT_SET testing_mg INSTALL_TARGET ${CMAKE_TEST_NAME} + ) + set_tests_properties(${CMAKE_TEST_NAME} PROPERTIES LABELS "CUGRAPH_C_MG") endfunction() add_library(test_logger_impls OBJECT) target_link_libraries(test_logger_impls PRIVATE raft::raft_logger_impl) - ################################################################################################### ### test sources ################################################################################## ################################################################################################### @@ -377,8 +339,9 @@ ConfigureTest(GENERATE_RMAT_TEST generators/generate_rmat_test.cpp) ################################################################################################### # - Bipartite R-mat graph generation tests -------------------------------------------------------- -ConfigureTest(GENERATE_BIPARTITE_RMAT_TEST generators/generate_bipartite_rmat_test.cpp - GPUS 1 PERCENT 100) +ConfigureTest( + GENERATE_BIPARTITE_RMAT_TEST generators/generate_bipartite_rmat_test.cpp GPUS 1 PERCENT 100 +) ################################################################################################### # - Symmetrize tests ------------------------------------------------------------------------------ @@ -402,13 +365,15 @@ ConfigureTest(DEGREE_TEST structure/degree_test.cpp) ################################################################################################### # - Count self-loops and multi-edges tests -------------------------------------------------------- -ConfigureTest(COUNT_SELF_LOOPS_AND_MULTI_EDGES_TEST - "structure/count_self_loops_and_multi_edges_test.cpp") +ConfigureTest( + COUNT_SELF_LOOPS_AND_MULTI_EDGES_TEST "structure/count_self_loops_and_multi_edges_test.cpp" +) ################################################################################################### # - Query edge existence and multiplicity tests --------------------------------------------------- -ConfigureTest(HAS_EDGE_AND_COMPUTE_MULTIPLICITY_TEST - "structure/has_edge_and_compute_multiplicity_test.cpp") +ConfigureTest( + HAS_EDGE_AND_COMPUTE_MULTIPLICITY_TEST "structure/has_edge_and_compute_multiplicity_test.cpp" +) ################################################################################################### # - Coarsening tests ------------------------------------------------------------------------------ @@ -428,8 +393,7 @@ ConfigureTest(BFS_TEST traversal/bfs_test.cpp) ################################################################################################### # - Extract BFS Paths tests ----------------------------------------------------------------------- -ConfigureTest(EXTRACT_BFS_PATHS_TEST - traversal/extract_bfs_paths_test.cu) +ConfigureTest(EXTRACT_BFS_PATHS_TEST traversal/extract_bfs_paths_test.cu) ################################################################################################### # - Multi-source BFS tests ------------------------------------------------------------------------ @@ -497,11 +461,13 @@ ConfigureTest(UNIFORM_NEIGHBOR_SAMPLING_TEST sampling/uniform_neighbor_sampling. # - HOMOGENEOUS UNIFORM NBR SAMPLING tests -------------------------------------------------------- ConfigureTest( - HOMOGENEOUS_UNIFORM_NEIGHBOR_SAMPLING_TEST sampling/homogeneous_uniform_neighbor_sampling.cpp) + HOMOGENEOUS_UNIFORM_NEIGHBOR_SAMPLING_TEST sampling/homogeneous_uniform_neighbor_sampling.cpp +) # - HETEROGENEOUS UNIFORM NBR SAMPLING tests ----------------------------------------------------- ConfigureTest( - HETEROGENEOUS_UNIFORM_NEIGHBOR_SAMPLING_TEST sampling/heterogeneous_uniform_neighbor_sampling.cpp) + HETEROGENEOUS_UNIFORM_NEIGHBOR_SAMPLING_TEST sampling/heterogeneous_uniform_neighbor_sampling.cpp +) ################################################################################################### # - BIASED NBR SAMPLING tests --------------------------------------------------------------------- @@ -510,13 +476,15 @@ ConfigureTest(BIASED_NEIGHBOR_SAMPLING_TEST sampling/biased_neighbor_sampling.cp ################################################################################################### # - HOMOGENEOUS BIASED NBR SAMPLING tests --------------------------------------------------------- ConfigureTest( - HOMOGENEOUS_BIASED_NEIGHBOR_SAMPLING_TEST sampling/homogeneous_biased_neighbor_sampling.cpp) + HOMOGENEOUS_BIASED_NEIGHBOR_SAMPLING_TEST sampling/homogeneous_biased_neighbor_sampling.cpp +) ################################################################################################### # - HETEROGENEOUS BIASED NBR SAMPLING tests ------------------------------------------------------- ConfigureTest( - HETEROGENEOUS_BIASED_NEIGHBOR_SAMPLING_TESTT sampling/heterogeneous_biased_neighbor_sampling.cpp - GPUS 1 PERCENT 75) + HETEROGENEOUS_BIASED_NEIGHBOR_SAMPLING_TESTT sampling/heterogeneous_biased_neighbor_sampling.cpp + GPUS 1 PERCENT 75 +) ################################################################################################### # - SAMPLING_POST_PROCESSING tests ---------------------------------------------------------------- @@ -524,8 +492,10 @@ ConfigureTest(SAMPLING_POST_PROCESSING_TEST sampling/sampling_post_processing_te ################################################################################################### # - SAMPLING_HETEROGENEOUS_POST_PROCESSING tests -------------------------------------------------- -ConfigureTest(SAMPLING_HETEROGENEOUS_POST_PROCESSING_TEST - sampling/sampling_heterogeneous_post_processing_test.cpp) +ConfigureTest( + SAMPLING_HETEROGENEOUS_POST_PROCESSING_TEST + sampling/sampling_heterogeneous_post_processing_test.cpp +) ################################################################################################### # - NEGATIVE SAMPLING tests -------------------------------------------------------------------- @@ -563,308 +533,343 @@ ConfigureTest(LOOKUP_SRC_DST_TEST lookup/lookup_src_dst_test.cpp) # - K-hop Neighbors tests ------------------------------------------------------------------------- ConfigureTest(K_HOP_NBRS_TEST traversal/k_hop_nbrs_test.cpp) - ################################################################################################### # - install tests --------------------------------------------------------------------------------- rapids_test_install_relocatable(INSTALL_COMPONENT_SET testing DESTINATION bin/gtests/libcugraph) - ################################################################################################### # - MG tests -------------------------------------------------------------------------------------- if(BUILD_CUGRAPH_MG_TESTS) - # Set the GPU count to 1. If the caller wants to execute MG tests using - # more than 1, override from the command line using -DGPU_COUNT= - if (NOT DEFINED GPU_COUNT) - set(GPU_COUNT "1") - endif() - - ############################################################################################### - # - MG SYMMETRIZE tests ----------------------------------------------------------------------- - ConfigureTestMG(MG_SYMMETRIZE_TEST structure/mg_symmetrize_test.cpp) - - ############################################################################################### - # - MG Temporal Graph tests ----------------------------------------------------------------------- - ConfigureTestMG(MG_TEMPORAL_GRAPH_TEST structure/mg_temporal_graph_test.cpp) - - ############################################################################################### - # - MG Transpose tests ------------------------------------------------------------------------ - ConfigureTestMG(MG_TRANSPOSE_TEST structure/mg_transpose_test.cpp) - - ############################################################################################### - # - MG Transpose Storage tests ---------------------------------------------------------------- - ConfigureTestMG(MG_TRANSPOSE_STORAGE_TEST structure/mg_transpose_storage_test.cpp) - - ############################################################################################### - # - MG Count self-loops and multi-edges tests ------------------------------------------------- - ConfigureTestMG(MG_COUNT_SELF_LOOPS_AND_MULTI_EDGES_TEST - "structure/mg_count_self_loops_and_multi_edges_test.cpp") - - ############################################################################################### - # - MG Query edge existence and multiplicity tests -------------------------------------------- - ConfigureTestMG(MG_HAS_EDGE_AND_COMPUTE_MULTIPLICITY_TEST - "structure/mg_has_edge_and_compute_multiplicity_test.cpp") - - ############################################################################################### - # - MG PAGERANK tests ------------------------------------------------------------------------- - ConfigureTestMG(MG_PAGERANK_TEST link_analysis/mg_pagerank_test.cpp) - - ############################################################################################### - # - MG HITS tests ----------------------------------------------------------------------------- - ConfigureTestMG(MG_HITS_TEST link_analysis/mg_hits_test.cpp) - - ############################################################################################### - # - MG KATZ CENTRALITY tests ------------------------------------------------------------------ - ConfigureTestMG(MG_KATZ_CENTRALITY_TEST centrality/mg_katz_centrality_test.cpp) - - ############################################################################################### - # - MG EIGENVECTOR CENTRALITY tests ----------------------------------------------------------- - ConfigureTestMG(MG_EIGENVECTOR_CENTRALITY_TEST centrality/mg_eigenvector_centrality_test.cpp) - - ############################################################################################### - # - MG BETWEENNESS CENTRALITY tests ----------------------------------------------------------- - ConfigureTestMG(MG_BETWEENNESS_CENTRALITY_TEST centrality/mg_betweenness_centrality_test.cpp) - ConfigureTestMG(MG_EDGE_BETWEENNESS_CENTRALITY_TEST - centrality/mg_edge_betweenness_centrality_test.cpp) - - ############################################################################################### - # - MG BFS tests ------------------------------------------------------------------------------ - ConfigureTestMG(MG_BFS_TEST traversal/mg_bfs_test.cpp) - - ############################################################################################### - # - Extract BFS Paths tests ------------------------------------------------------------------- - ConfigureTestMG(MG_EXTRACT_BFS_PATHS_TEST - traversal/mg_extract_bfs_paths_test.cu) - - ############################################################################################### - # - MG SSSP tests ----------------------------------------------------------------------------- - ConfigureTestMG(MG_SSSP_TEST traversal/mg_sssp_test.cpp) - - ############################################################################################### - # - MG LOUVAIN tests -------------------------------------------------------------------------- - ConfigureTestMG(MG_LOUVAIN_TEST community/mg_louvain_test.cpp) - - ############################################################################################### - # - MG LEIDEN tests -------------------------------------------------------------------------- - ConfigureTestMG(MG_LEIDEN_TEST community/mg_leiden_test.cpp) - - ############################################################################################### - # - MG WEIGHTED MATCHING tests ---------------------------------------------------------------- - ConfigureTestMG(MG_WEIGHTED_MATCHING_TEST community/mg_weighted_matching_test.cpp) - - ############################################################################################### - # - MG ECG tests -------------------------------------------------------------------------- - ConfigureTestMG(MG_ECG_TEST community/mg_ecg_test.cpp) - - ############################################################################################### - # - MG SELECT RANDOM VERTICES tests ----------------------------------------------------------- - ConfigureTestMG(MG_SELECT_RANDOM_VERTICES structure/mg_select_random_vertices_test.cpp) - - ############################################################################################### - # - MG LOUVAIN tests -------------------------------------------------------------------------- - ConfigureTestMG(MG_EGONET_TEST community/mg_egonet_test.cu) - - ############################################################################################### - # - MG EDGE TRIANGLE COUNT tests -------------------------------------------------------------- - ConfigureTestMG(MG_EDGE_TRIANGLE_COUNT_TEST community/mg_edge_triangle_count_test.cpp) - - ############################################################################################### - # - MG K-TRUSS tests -------------------------------------------------------------------------- - ConfigureTestMG(MG_K_TRUSS_TEST community/mg_k_truss_test.cpp) - - ############################################################################################### - # - MG WEAKLY CONNECTED COMPONENTS tests ------------------------------------------------------ - ConfigureTestMG(MG_WEAKLY_CONNECTED_COMPONENTS_TEST - components/mg_weakly_connected_components_test.cpp) - - ############################################################################################### - # - MG EDGE SOURCE DESTINATION LOOKUP tests --------------------------------------------------- - ConfigureTestMG(MG_LOOKUP_SRC_DST_TEST lookup/mg_lookup_src_dst_test.cpp) - - ############################################################################################### - # - MG MIS tests ------------------------------------------------------------------------------ - ConfigureTestMG(MG_MIS_TEST components/mg_mis_test.cu) - - ############################################################################################### - # - MG VERTEX COLORING tests ------------------------------------------------------------------- - ConfigureTestMG(MG_VERTEX_COLORING_TEST components/mg_vertex_coloring_test.cu) - - ############################################################################################### - # - MG Core Number tests ---------------------------------------------------------------------- - ConfigureTestMG(MG_CORE_NUMBER_TEST cores/mg_core_number_test.cpp) - - ############################################################################################### - # - MG K Core tests --------------------------------------------------------------------------- - ConfigureTestMG(MG_K_CORE_TEST cores/mg_k_core_test.cpp) - - ############################################################################################### - # - MG TRIANGLE COUNT tests ------------------------------------------------------------------- - ConfigureTestMG(MG_TRIANGLE_COUNT_TEST community/mg_triangle_count_test.cpp) - - ############################################################################################### - # - MG coarsening tests ----------------------------------------------------------------------- - ConfigureTestMG(MG_COARSEN_GRAPH_TEST structure/mg_coarsen_graph_test.cpp) - - ############################################################################################### - # - MG INDUCED SUBGRAPH tests ----------------------------------------------------------------- - ConfigureTestMG(MG_INDUCED_SUBGRAPH_TEST structure/mg_induced_subgraph_test.cu) - - ############################################################################################### - # - MG PRIMS COUNT_IF_V tests ----------------------------------------------------------------- - ConfigureTestMG(MG_COUNT_IF_V_TEST prims/mg_count_if_v.cu) - - ############################################################################################### - # - MG PRIMS TRANSFORM_REDUCE_V_FRONTIER_OUTGOING_E_BY_DST tests ------------------------------ - ConfigureTestMG(MG_TRANSFORM_REDUCE_V_FRONTIER_OUTGOING_E_BY_DST_TEST - prims/mg_transform_reduce_v_frontier_outgoing_e_by_dst.cu) - - ############################################################################################### - # - MG PRIMS REDUCE_V tests ------------------------------------------------------------------- - ConfigureTestMG(MG_REDUCE_V_TEST prims/mg_reduce_v.cu) - - ############################################################################################### - # - MG PRIMS TRANSFORM_REDUCE_V tests --------------------------------------------------------- - ConfigureTestMG(MG_TRANSFORM_REDUCE_V_TEST prims/mg_transform_reduce_v.cu) - - ############################################################################################### - # - MG PRIMS TRANSFORM_REDUCE_E tests --------------------------------------------------------- - ConfigureTestMG(MG_TRANSFORM_REDUCE_E_TEST prims/mg_transform_reduce_e.cu) - - ############################################################################################### - # - MG PRIMS TRANSFORM_REDUCE_E _BY_SRC_DST_KEY tests ----------------------------------------- - ConfigureTestMG(MG_TRANSFORM_REDUCE_E_BY_SRC_DST_KEY_TEST - prims/mg_transform_reduce_e_by_src_dst_key.cu) - - ############################################################################################### - # - MG PRIMS TRANSFORM_E tests ---------------------------------------------------------------- - ConfigureTestMG(MG_TRANSFORM_E_TEST prims/mg_transform_e.cu) - - ############################################################################################### - # - MG PRIMS COUNT_IF_E tests ----------------------------------------------------------------- - ConfigureTestMG(MG_COUNT_IF_E_TEST prims/mg_count_if_e.cu) - - ############################################################################################### - # - MG PRIMS PER_V_TRANSFORM_REDUCE_INCOMING_OUTGOING_E tests --------------------------------- - ConfigureTestMG(MG_PER_V_TRANSFORM_REDUCE_INCOMING_OUTGOING_E_TEST - prims/mg_per_v_transform_reduce_incoming_outgoing_e.cu) - - ############################################################################################### - # - MG PRIMS PER_V_TRANSFORM_REDUCE_DST_KEY_AGGREGATED_OUTGOING_E tests ----------------------- - ConfigureTestMG(MG_PER_V_TRANSFORM_REDUCE_DST_KEY_AGGREGATED_OUTGOING_E_TEST - prims/mg_per_v_transform_reduce_dst_key_aggregated_outgoing_e.cu) - - ############################################################################################### - # - MG PRIMS EXTRACT_TRANSFORM_E tests -------------------------------------------------------- - ConfigureTestMG(MG_EXTRACT_TRANSFORM_E_TEST prims/mg_extract_transform_e.cu) - - ############################################################################################### - # - MG PRIMS EXTRACT_TRANSFORM_V_FRONTIER_OUTGOING_E tests ------------------------------------ - ConfigureTestMG(MG_EXTRACT_TRANSFORM_V_FRONTIER_OUTGOING_E_TEST - prims/mg_extract_transform_v_frontier_outgoing_e.cu) - - ############################################################################################### - # - MG PRIMS PER_V_RANDOM_SELECT_TRANSFORM_OUTGOING_E tests ----------------------------------- - ConfigureTestMG(MG_PER_V_RANDOM_SELECT_TRANSFORM_OUTGOING_E_TEST - prims/mg_per_v_random_select_transform_outgoing_e.cu) - - ############################################################################################### - # - MG PRIMS PER_V_PAIR_TRANSFORM_DST_NBR_INTERSECTION tests ---------------------------------- - ConfigureTestMG(MG_PER_V_PAIR_TRANSFORM_DST_NBR_INTERSECTION_TEST - prims/mg_per_v_pair_transform_dst_nbr_intersection.cu) - - ############################################################################################### - # - MG PRIMS TRANSFORM_REDUCE_DST_NBR_INTERSECTION OF_E_ENDPOINTS_BY_V tests ------------------ - ConfigureTestMG(MG_TRANSFORM_REDUCE_DST_NBR_INTERSECTION_BY_E_ENDPOINTS_BY_V_TEST - prims/mg_transform_reduce_dst_nbr_intersection_of_e_endpoints_by_v.cu) - - ############################################################################################### - # - MG PRIMS PER_V_PAIR_TRANSFORM_DST_NBR_WEIGHTED_INTERSECTION tests ------------------------- - ConfigureTestMG(MG_PER_V_PAIR_TRANSFORM_DST_NBR_WEIGHTED_INTERSECTION_TEST - prims/mg_per_v_pair_transform_dst_nbr_weighted_intersection.cu) - - ############################################################################################### - # - MG UNIFORM NBR SAMPLING tests ------------------------------------------------------------- - ConfigureTestMG(MG_UNIFORM_NEIGHBOR_SAMPLING_TEST sampling/mg_uniform_neighbor_sampling.cpp) - - ############################################################################################### - # - MG HOMOGENEOUS UNIFORM NBR SAMPLING tests ------------------------------------------------- - ConfigureTestMG( - MG_HOMOGENEOUS_UNIFORM_NEIGHBOR_SAMPLING_TEST sampling/mg_homogeneous_uniform_neighbor_sampling.cpp) - - ############################################################################################### - # - MG HETEROGENEOUS UNIFORM NBR SAMPLING tests ------------------------------------------------- - ConfigureTestMG( - MG_HETEROGENEOUS_UNIFORM_NEIGHBOR_SAMPLING_TEST sampling/mg_heterogeneous_uniform_neighbor_sampling.cpp) - - ############################################################################################### - # - MG HOMOGENEOUS BIASED NBR SAMPLING tests -------------------------------------------------- - ConfigureTestMG( - MG_HOMOGENEOUS_BIASED_NEIGHBOR_SAMPLING_TEST sampling/mg_homogeneous_biased_neighbor_sampling.cpp) - - ############################################################################################### - # - MG HETEROGENEOUS BIASED NBR SAMPLING tests -------------------------------------------------- - ConfigureTestMG( - MG_HETEROGENEOUS_BIASED_NEIGHBOR_SAMPLING_TEST sampling/mg_heterogeneous_biased_neighbor_sampling.cpp) - - ############################################################################################### - # - MG BIASED NBR SAMPLING tests -------------------------------------------------------------- - ConfigureTestMG(MG_BIASED_NEIGHBOR_SAMPLING_TEST sampling/mg_biased_neighbor_sampling.cpp) - - ################################################################################################### - # - NEGATIVE SAMPLING tests -------------------------------------------------------------------- - ConfigureTestMG(MG_NEGATIVE_SAMPLING_TEST sampling/mg_negative_sampling.cpp) - - - ############################################################################################### - # - MG RANDOM_WALKS tests --------------------------------------------------------------------- - ConfigureTestMG(MG_RANDOM_WALKS_TEST sampling/mg_random_walks_test.cpp) - - ############################################################################################### - # - MG WEIGHTED_SIMILARITY tests -------------------------------------------------------------- - ConfigureTestMG(MG_WEIGHTED_SIMILARITY_TEST link_prediction/mg_weighted_similarity_test.cpp) - - ############################################################################################### - # - MG SIMILARITY tests ----------------------------------------------------------------------- - ConfigureTestMG(MG_SIMILARITY_TEST link_prediction/mg_similarity_test.cpp) - - ############################################################################################### - # - MG K_HOP_NBRS tests ----------------------------------------------------------------------- - ConfigureTestMG(MG_K_HOP_NBRS_TEST traversal/mg_k_hop_nbrs_test.cpp) - - ############################################################################################### - # - MG C API tests ---------------------------------------------------------------------------- - ConfigureCTestMG(MG_CAPI_CREATE_GRAPH_TEST c_api/mg_create_graph_test.c) - ConfigureCTestMG(MG_CAPI_GENERATE_RMAT_TEST c_api/mg_generate_rmat_test.c) - ConfigureCTestMG(MG_CAPI_PAGERANK_TEST c_api/mg_pagerank_test.c) - ConfigureCTestMG(MG_CAPI_BFS_TEST c_api/mg_bfs_test.c) - ConfigureCTestMG(MG_CAPI_SSSP_TEST c_api/mg_sssp_test.c) - ConfigureCTestMG(MG_CAPI_WEAKLY_CONNECTED_COMPONENTS_TEST c_api/mg_weakly_connected_components_test.c) - ConfigureCTestMG(MG_CAPI_STRONGLY_CONNECTED_COMPONENTS_TEST c_api/mg_strongly_connected_components_test.c) - ConfigureCTestMG(MG_CAPI_KATZ_TEST c_api/mg_katz_test.c) - ConfigureCTestMG(MG_CAPI_EIGENVECTOR_CENTRALITY_TEST c_api/mg_eigenvector_centrality_test.c) - ConfigureCTestMG(MG_CAPI_BETWEENNESS_CENTRALITY_TEST c_api/mg_betweenness_centrality_test.c) - ConfigureCTestMG(MG_CAPI_EDGE_BETWEENNESS_CENTRALITY_TEST c_api/mg_edge_betweenness_centrality_test.c) - ConfigureCTestMG(MG_CAPI_HITS_TEST c_api/mg_hits_test.c) - ConfigureCTestMG(MG_CAPI_UNIFORM_NEIGHBOR_SAMPLE_TEST c_api/mg_uniform_neighbor_sample_test.c) - ConfigureCTestMG(MG_CAPI_BIASED_NEIGHBOR_SAMPLE_TEST c_api/mg_biased_neighbor_sample_test.c) - ConfigureCTestMG(MG_CAPI_NEGATIVE_SAMPLING_TEST c_api/mg_negative_sampling_test.c) - ConfigureCTestMG(MG_CAPI_LOOKUP_SRC_DST_TEST c_api/mg_lookup_src_dst_test.c) - ConfigureCTestMG(MG_CAPI_RANDOM_WALKS_TEST c_api/mg_random_walks_test.c) - ConfigureCTestMG(MG_CAPI_TRIANGLE_COUNT_TEST c_api/mg_triangle_count_test.c) - ConfigureCTestMG(MG_CAPI_LOUVAIN_TEST c_api/mg_louvain_test.c) - ConfigureCTestMG(MG_CAPI_LEIDEN_TEST c_api/mg_leiden_test.c) - ConfigureCTestMG(MG_CAPI_ECG_TEST c_api/mg_ecg_test.c) - ConfigureCTestMG(MG_CAPI_CORE_NUMBER_TEST c_api/mg_core_number_test.c) - ConfigureCTestMG(MG_CAPI_SIMILARITY_TEST c_api/mg_similarity_test.c) - ConfigureCTestMG(MG_CAPI_K_CORE_TEST c_api/mg_k_core_test.c) - ConfigureCTestMG(MG_CAPI_INDUCED_SUBGRAPH_TEST c_api/mg_induced_subgraph_test.c) - ConfigureCTestMG(MG_CAPI_DEGREES c_api/mg_degrees_test.c) - ConfigureCTestMG(MG_CAPI_COUNT_MULTI_EDGES c_api/mg_count_multi_edges_test.c) - ConfigureCTestMG(MG_CAPI_EGONET_TEST c_api/mg_egonet_test.c) - ConfigureCTestMG(MG_CAPI_TWO_HOP_NEIGHBORS_TEST c_api/mg_two_hop_neighbors_test.c) - ConfigureCTestMG(MG_CAPI_K_TRUSS c_api/mg_k_truss_test.c) - - rapids_test_install_relocatable(INSTALL_COMPONENT_SET testing_mg DESTINATION bin/gtests/libcugraph_mg) + # Set the GPU count to 1. If the caller wants to execute MG tests using + # more than 1, override from the command line using -DGPU_COUNT= + if(NOT DEFINED GPU_COUNT) + set(GPU_COUNT "1") + endif() + + ############################################################################################### + # - MG SYMMETRIZE tests ----------------------------------------------------------------------- + ConfigureTestMG(MG_SYMMETRIZE_TEST structure/mg_symmetrize_test.cpp) + + ############################################################################################### + # - MG Temporal Graph tests ----------------------------------------------------------------------- + ConfigureTestMG(MG_TEMPORAL_GRAPH_TEST structure/mg_temporal_graph_test.cpp) + + ############################################################################################### + # - MG Transpose tests ------------------------------------------------------------------------ + ConfigureTestMG(MG_TRANSPOSE_TEST structure/mg_transpose_test.cpp) + + ############################################################################################### + # - MG Transpose Storage tests ---------------------------------------------------------------- + ConfigureTestMG(MG_TRANSPOSE_STORAGE_TEST structure/mg_transpose_storage_test.cpp) + + ############################################################################################### + # - MG Count self-loops and multi-edges tests ------------------------------------------------- + ConfigureTestMG( + MG_COUNT_SELF_LOOPS_AND_MULTI_EDGES_TEST + "structure/mg_count_self_loops_and_multi_edges_test.cpp" + ) + + ############################################################################################### + # - MG Query edge existence and multiplicity tests -------------------------------------------- + ConfigureTestMG( + MG_HAS_EDGE_AND_COMPUTE_MULTIPLICITY_TEST + "structure/mg_has_edge_and_compute_multiplicity_test.cpp" + ) + + ############################################################################################### + # - MG PAGERANK tests ------------------------------------------------------------------------- + ConfigureTestMG(MG_PAGERANK_TEST link_analysis/mg_pagerank_test.cpp) + + ############################################################################################### + # - MG HITS tests ----------------------------------------------------------------------------- + ConfigureTestMG(MG_HITS_TEST link_analysis/mg_hits_test.cpp) + + ############################################################################################### + # - MG KATZ CENTRALITY tests ------------------------------------------------------------------ + ConfigureTestMG(MG_KATZ_CENTRALITY_TEST centrality/mg_katz_centrality_test.cpp) + + ############################################################################################### + # - MG EIGENVECTOR CENTRALITY tests ----------------------------------------------------------- + ConfigureTestMG(MG_EIGENVECTOR_CENTRALITY_TEST centrality/mg_eigenvector_centrality_test.cpp) + + ############################################################################################### + # - MG BETWEENNESS CENTRALITY tests ----------------------------------------------------------- + ConfigureTestMG(MG_BETWEENNESS_CENTRALITY_TEST centrality/mg_betweenness_centrality_test.cpp) + ConfigureTestMG( + MG_EDGE_BETWEENNESS_CENTRALITY_TEST centrality/mg_edge_betweenness_centrality_test.cpp + ) + + ############################################################################################### + # - MG BFS tests ------------------------------------------------------------------------------ + ConfigureTestMG(MG_BFS_TEST traversal/mg_bfs_test.cpp) + + ############################################################################################### + # - Extract BFS Paths tests ------------------------------------------------------------------- + ConfigureTestMG(MG_EXTRACT_BFS_PATHS_TEST traversal/mg_extract_bfs_paths_test.cu) + + ############################################################################################### + # - MG SSSP tests ----------------------------------------------------------------------------- + ConfigureTestMG(MG_SSSP_TEST traversal/mg_sssp_test.cpp) + + ############################################################################################### + # - MG LOUVAIN tests -------------------------------------------------------------------------- + ConfigureTestMG(MG_LOUVAIN_TEST community/mg_louvain_test.cpp) + + ############################################################################################### + # - MG LEIDEN tests -------------------------------------------------------------------------- + ConfigureTestMG(MG_LEIDEN_TEST community/mg_leiden_test.cpp) + + ############################################################################################### + # - MG WEIGHTED MATCHING tests ---------------------------------------------------------------- + ConfigureTestMG(MG_WEIGHTED_MATCHING_TEST community/mg_weighted_matching_test.cpp) + + ############################################################################################### + # - MG ECG tests -------------------------------------------------------------------------- + ConfigureTestMG(MG_ECG_TEST community/mg_ecg_test.cpp) + + ############################################################################################### + # - MG SELECT RANDOM VERTICES tests ----------------------------------------------------------- + ConfigureTestMG(MG_SELECT_RANDOM_VERTICES structure/mg_select_random_vertices_test.cpp) + + ############################################################################################### + # - MG LOUVAIN tests -------------------------------------------------------------------------- + ConfigureTestMG(MG_EGONET_TEST community/mg_egonet_test.cu) + + ############################################################################################### + # - MG EDGE TRIANGLE COUNT tests -------------------------------------------------------------- + ConfigureTestMG(MG_EDGE_TRIANGLE_COUNT_TEST community/mg_edge_triangle_count_test.cpp) + + ############################################################################################### + # - MG K-TRUSS tests -------------------------------------------------------------------------- + ConfigureTestMG(MG_K_TRUSS_TEST community/mg_k_truss_test.cpp) + + ############################################################################################### + # - MG WEAKLY CONNECTED COMPONENTS tests ------------------------------------------------------ + ConfigureTestMG( + MG_WEAKLY_CONNECTED_COMPONENTS_TEST components/mg_weakly_connected_components_test.cpp + ) + + ############################################################################################### + # - MG EDGE SOURCE DESTINATION LOOKUP tests --------------------------------------------------- + ConfigureTestMG(MG_LOOKUP_SRC_DST_TEST lookup/mg_lookup_src_dst_test.cpp) + + ############################################################################################### + # - MG MIS tests ------------------------------------------------------------------------------ + ConfigureTestMG(MG_MIS_TEST components/mg_mis_test.cu) + + ############################################################################################### + # - MG VERTEX COLORING tests ------------------------------------------------------------------- + ConfigureTestMG(MG_VERTEX_COLORING_TEST components/mg_vertex_coloring_test.cu) + + ############################################################################################### + # - MG Core Number tests ---------------------------------------------------------------------- + ConfigureTestMG(MG_CORE_NUMBER_TEST cores/mg_core_number_test.cpp) + + ############################################################################################### + # - MG K Core tests --------------------------------------------------------------------------- + ConfigureTestMG(MG_K_CORE_TEST cores/mg_k_core_test.cpp) + + ############################################################################################### + # - MG TRIANGLE COUNT tests ------------------------------------------------------------------- + ConfigureTestMG(MG_TRIANGLE_COUNT_TEST community/mg_triangle_count_test.cpp) + + ############################################################################################### + # - MG coarsening tests ----------------------------------------------------------------------- + ConfigureTestMG(MG_COARSEN_GRAPH_TEST structure/mg_coarsen_graph_test.cpp) + + ############################################################################################### + # - MG INDUCED SUBGRAPH tests ----------------------------------------------------------------- + ConfigureTestMG(MG_INDUCED_SUBGRAPH_TEST structure/mg_induced_subgraph_test.cu) + + ############################################################################################### + # - MG PRIMS COUNT_IF_V tests ----------------------------------------------------------------- + ConfigureTestMG(MG_COUNT_IF_V_TEST prims/mg_count_if_v.cu) + + ############################################################################################### + # - MG PRIMS TRANSFORM_REDUCE_V_FRONTIER_OUTGOING_E_BY_DST tests ------------------------------ + ConfigureTestMG( + MG_TRANSFORM_REDUCE_V_FRONTIER_OUTGOING_E_BY_DST_TEST + prims/mg_transform_reduce_v_frontier_outgoing_e_by_dst.cu + ) + + ############################################################################################### + # - MG PRIMS REDUCE_V tests ------------------------------------------------------------------- + ConfigureTestMG(MG_REDUCE_V_TEST prims/mg_reduce_v.cu) + + ############################################################################################### + # - MG PRIMS TRANSFORM_REDUCE_V tests --------------------------------------------------------- + ConfigureTestMG(MG_TRANSFORM_REDUCE_V_TEST prims/mg_transform_reduce_v.cu) + + ############################################################################################### + # - MG PRIMS TRANSFORM_REDUCE_E tests --------------------------------------------------------- + ConfigureTestMG(MG_TRANSFORM_REDUCE_E_TEST prims/mg_transform_reduce_e.cu) + + ############################################################################################### + # - MG PRIMS TRANSFORM_REDUCE_E _BY_SRC_DST_KEY tests ----------------------------------------- + ConfigureTestMG( + MG_TRANSFORM_REDUCE_E_BY_SRC_DST_KEY_TEST prims/mg_transform_reduce_e_by_src_dst_key.cu + ) + + ############################################################################################### + # - MG PRIMS TRANSFORM_E tests ---------------------------------------------------------------- + ConfigureTestMG(MG_TRANSFORM_E_TEST prims/mg_transform_e.cu) + + ############################################################################################### + # - MG PRIMS COUNT_IF_E tests ----------------------------------------------------------------- + ConfigureTestMG(MG_COUNT_IF_E_TEST prims/mg_count_if_e.cu) + + ############################################################################################### + # - MG PRIMS PER_V_TRANSFORM_REDUCE_INCOMING_OUTGOING_E tests --------------------------------- + ConfigureTestMG( + MG_PER_V_TRANSFORM_REDUCE_INCOMING_OUTGOING_E_TEST + prims/mg_per_v_transform_reduce_incoming_outgoing_e.cu + ) + + ############################################################################################### + # - MG PRIMS PER_V_TRANSFORM_REDUCE_DST_KEY_AGGREGATED_OUTGOING_E tests ----------------------- + ConfigureTestMG( + MG_PER_V_TRANSFORM_REDUCE_DST_KEY_AGGREGATED_OUTGOING_E_TEST + prims/mg_per_v_transform_reduce_dst_key_aggregated_outgoing_e.cu + ) + + ############################################################################################### + # - MG PRIMS EXTRACT_TRANSFORM_E tests -------------------------------------------------------- + ConfigureTestMG(MG_EXTRACT_TRANSFORM_E_TEST prims/mg_extract_transform_e.cu) + + ############################################################################################### + # - MG PRIMS EXTRACT_TRANSFORM_V_FRONTIER_OUTGOING_E tests ------------------------------------ + ConfigureTestMG( + MG_EXTRACT_TRANSFORM_V_FRONTIER_OUTGOING_E_TEST + prims/mg_extract_transform_v_frontier_outgoing_e.cu + ) + + ############################################################################################### + # - MG PRIMS PER_V_RANDOM_SELECT_TRANSFORM_OUTGOING_E tests ----------------------------------- + ConfigureTestMG( + MG_PER_V_RANDOM_SELECT_TRANSFORM_OUTGOING_E_TEST + prims/mg_per_v_random_select_transform_outgoing_e.cu + ) + + ############################################################################################### + # - MG PRIMS PER_V_PAIR_TRANSFORM_DST_NBR_INTERSECTION tests ---------------------------------- + ConfigureTestMG( + MG_PER_V_PAIR_TRANSFORM_DST_NBR_INTERSECTION_TEST + prims/mg_per_v_pair_transform_dst_nbr_intersection.cu + ) + + ############################################################################################### + # - MG PRIMS TRANSFORM_REDUCE_DST_NBR_INTERSECTION OF_E_ENDPOINTS_BY_V tests ------------------ + ConfigureTestMG( + MG_TRANSFORM_REDUCE_DST_NBR_INTERSECTION_BY_E_ENDPOINTS_BY_V_TEST + prims/mg_transform_reduce_dst_nbr_intersection_of_e_endpoints_by_v.cu + ) + + ############################################################################################### + # - MG PRIMS PER_V_PAIR_TRANSFORM_DST_NBR_WEIGHTED_INTERSECTION tests ------------------------- + ConfigureTestMG( + MG_PER_V_PAIR_TRANSFORM_DST_NBR_WEIGHTED_INTERSECTION_TEST + prims/mg_per_v_pair_transform_dst_nbr_weighted_intersection.cu + ) + + ############################################################################################### + # - MG UNIFORM NBR SAMPLING tests ------------------------------------------------------------- + ConfigureTestMG(MG_UNIFORM_NEIGHBOR_SAMPLING_TEST sampling/mg_uniform_neighbor_sampling.cpp) + + ############################################################################################### + # - MG HOMOGENEOUS UNIFORM NBR SAMPLING tests ------------------------------------------------- + ConfigureTestMG( + MG_HOMOGENEOUS_UNIFORM_NEIGHBOR_SAMPLING_TEST + sampling/mg_homogeneous_uniform_neighbor_sampling.cpp + ) + + ############################################################################################### + # - MG HETEROGENEOUS UNIFORM NBR SAMPLING tests ------------------------------------------------- + ConfigureTestMG( + MG_HETEROGENEOUS_UNIFORM_NEIGHBOR_SAMPLING_TEST + sampling/mg_heterogeneous_uniform_neighbor_sampling.cpp + ) + + ############################################################################################### + # - MG HOMOGENEOUS BIASED NBR SAMPLING tests -------------------------------------------------- + ConfigureTestMG( + MG_HOMOGENEOUS_BIASED_NEIGHBOR_SAMPLING_TEST + sampling/mg_homogeneous_biased_neighbor_sampling.cpp + ) + + ############################################################################################### + # - MG HETEROGENEOUS BIASED NBR SAMPLING tests -------------------------------------------------- + ConfigureTestMG( + MG_HETEROGENEOUS_BIASED_NEIGHBOR_SAMPLING_TEST + sampling/mg_heterogeneous_biased_neighbor_sampling.cpp + ) + + ############################################################################################### + # - MG BIASED NBR SAMPLING tests -------------------------------------------------------------- + ConfigureTestMG(MG_BIASED_NEIGHBOR_SAMPLING_TEST sampling/mg_biased_neighbor_sampling.cpp) + + ################################################################################################### + # - NEGATIVE SAMPLING tests -------------------------------------------------------------------- + ConfigureTestMG(MG_NEGATIVE_SAMPLING_TEST sampling/mg_negative_sampling.cpp) + + ############################################################################################### + # - MG RANDOM_WALKS tests --------------------------------------------------------------------- + ConfigureTestMG(MG_RANDOM_WALKS_TEST sampling/mg_random_walks_test.cpp) + + ############################################################################################### + # - MG WEIGHTED_SIMILARITY tests -------------------------------------------------------------- + ConfigureTestMG(MG_WEIGHTED_SIMILARITY_TEST link_prediction/mg_weighted_similarity_test.cpp) + + ############################################################################################### + # - MG SIMILARITY tests ----------------------------------------------------------------------- + ConfigureTestMG(MG_SIMILARITY_TEST link_prediction/mg_similarity_test.cpp) + + ############################################################################################### + # - MG K_HOP_NBRS tests ----------------------------------------------------------------------- + ConfigureTestMG(MG_K_HOP_NBRS_TEST traversal/mg_k_hop_nbrs_test.cpp) + + ############################################################################################### + # - MG C API tests ---------------------------------------------------------------------------- + ConfigureCTestMG(MG_CAPI_CREATE_GRAPH_TEST c_api/mg_create_graph_test.c) + ConfigureCTestMG(MG_CAPI_GENERATE_RMAT_TEST c_api/mg_generate_rmat_test.c) + ConfigureCTestMG(MG_CAPI_PAGERANK_TEST c_api/mg_pagerank_test.c) + ConfigureCTestMG(MG_CAPI_BFS_TEST c_api/mg_bfs_test.c) + ConfigureCTestMG(MG_CAPI_SSSP_TEST c_api/mg_sssp_test.c) + ConfigureCTestMG( + MG_CAPI_WEAKLY_CONNECTED_COMPONENTS_TEST c_api/mg_weakly_connected_components_test.c + ) + ConfigureCTestMG( + MG_CAPI_STRONGLY_CONNECTED_COMPONENTS_TEST c_api/mg_strongly_connected_components_test.c + ) + ConfigureCTestMG(MG_CAPI_KATZ_TEST c_api/mg_katz_test.c) + ConfigureCTestMG(MG_CAPI_EIGENVECTOR_CENTRALITY_TEST c_api/mg_eigenvector_centrality_test.c) + ConfigureCTestMG(MG_CAPI_BETWEENNESS_CENTRALITY_TEST c_api/mg_betweenness_centrality_test.c) + ConfigureCTestMG( + MG_CAPI_EDGE_BETWEENNESS_CENTRALITY_TEST c_api/mg_edge_betweenness_centrality_test.c + ) + ConfigureCTestMG(MG_CAPI_HITS_TEST c_api/mg_hits_test.c) + ConfigureCTestMG(MG_CAPI_UNIFORM_NEIGHBOR_SAMPLE_TEST c_api/mg_uniform_neighbor_sample_test.c) + ConfigureCTestMG(MG_CAPI_BIASED_NEIGHBOR_SAMPLE_TEST c_api/mg_biased_neighbor_sample_test.c) + ConfigureCTestMG(MG_CAPI_NEGATIVE_SAMPLING_TEST c_api/mg_negative_sampling_test.c) + ConfigureCTestMG(MG_CAPI_LOOKUP_SRC_DST_TEST c_api/mg_lookup_src_dst_test.c) + ConfigureCTestMG(MG_CAPI_RANDOM_WALKS_TEST c_api/mg_random_walks_test.c) + ConfigureCTestMG(MG_CAPI_TRIANGLE_COUNT_TEST c_api/mg_triangle_count_test.c) + ConfigureCTestMG(MG_CAPI_LOUVAIN_TEST c_api/mg_louvain_test.c) + ConfigureCTestMG(MG_CAPI_LEIDEN_TEST c_api/mg_leiden_test.c) + ConfigureCTestMG(MG_CAPI_ECG_TEST c_api/mg_ecg_test.c) + ConfigureCTestMG(MG_CAPI_CORE_NUMBER_TEST c_api/mg_core_number_test.c) + ConfigureCTestMG(MG_CAPI_SIMILARITY_TEST c_api/mg_similarity_test.c) + ConfigureCTestMG(MG_CAPI_K_CORE_TEST c_api/mg_k_core_test.c) + ConfigureCTestMG(MG_CAPI_INDUCED_SUBGRAPH_TEST c_api/mg_induced_subgraph_test.c) + ConfigureCTestMG(MG_CAPI_DEGREES c_api/mg_degrees_test.c) + ConfigureCTestMG(MG_CAPI_COUNT_MULTI_EDGES c_api/mg_count_multi_edges_test.c) + ConfigureCTestMG(MG_CAPI_EGONET_TEST c_api/mg_egonet_test.c) + ConfigureCTestMG(MG_CAPI_TWO_HOP_NEIGHBORS_TEST c_api/mg_two_hop_neighbors_test.c) + ConfigureCTestMG(MG_CAPI_K_TRUSS c_api/mg_k_truss_test.c) + + rapids_test_install_relocatable( + INSTALL_COMPONENT_SET testing_mg DESTINATION bin/gtests/libcugraph_mg + ) endif() @@ -911,52 +916,33 @@ ConfigureCTest(CAPI_EGONET_TEST c_api/egonet_test.c) ConfigureCTest(CAPI_TWO_HOP_NEIGHBORS_TEST c_api/two_hop_neighbors_test.c) ConfigureCTest(CAPI_K_TRUSS_TEST c_api/k_truss_test.c) -if (BUILD_CUGRAPH_MTMG_TESTS) - ################################################################################################### - # - MTMG tests ------------------------------------------------------------------------- - ConfigureTest(MTMG_TEST mtmg/threaded_test.cu) - target_link_libraries(MTMG_TEST - PRIVATE - cugraphmgtestutil - ${COMPILED_RAFT_LIB} - ucx::ucp - ucx::ucs - ucxx::ucxx - ) - - ConfigureTest(MTMG_LOUVAIN_TEST mtmg/threaded_test_louvain.cu) - target_link_libraries(MTMG_LOUVAIN_TEST - PRIVATE - cugraphmgtestutil - ${COMPILED_RAFT_LIB} - ucx::ucp - ucx::ucs - ucxx::ucxx - ) - - ConfigureTest(MTMG_JACCARD_TEST mtmg/threaded_test_jaccard.cu) - target_link_libraries(MTMG_JACCARD_TEST - PRIVATE - cugraphmgtestutil - ${COMPILED_RAFT_LIB} - ucx::ucp - ucx::ucs - ucxx::ucxx - ) - - if(BUILD_CUGRAPH_MG_TESTS) - ############################################################################################### - # - Multi-node MTMG tests --------------------------------------------------------------------- - ConfigureTest(MTMG_MULTINODE_TEST mtmg/multi_node_threaded_test.cu utilities/mg_utilities.cpp) - target_link_libraries(MTMG_MULTINODE_TEST - PRIVATE - cugraphmgtestutil - ${COMPILED_RAFT_LIB} - ucx::ucp - ucx::ucs - ucxx::ucxx - ) - endif(BUILD_CUGRAPH_MG_TESTS) +if(BUILD_CUGRAPH_MTMG_TESTS) + ################################################################################################### + # - MTMG tests ------------------------------------------------------------------------- + ConfigureTest(MTMG_TEST mtmg/threaded_test.cu) + target_link_libraries( + MTMG_TEST PRIVATE cugraphmgtestutil ${COMPILED_RAFT_LIB} ucx::ucp ucx::ucs ucxx::ucxx + ) + + ConfigureTest(MTMG_LOUVAIN_TEST mtmg/threaded_test_louvain.cu) + target_link_libraries( + MTMG_LOUVAIN_TEST PRIVATE cugraphmgtestutil ${COMPILED_RAFT_LIB} ucx::ucp ucx::ucs ucxx::ucxx + ) + + ConfigureTest(MTMG_JACCARD_TEST mtmg/threaded_test_jaccard.cu) + target_link_libraries( + MTMG_JACCARD_TEST PRIVATE cugraphmgtestutil ${COMPILED_RAFT_LIB} ucx::ucp ucx::ucs ucxx::ucxx + ) + + if(BUILD_CUGRAPH_MG_TESTS) + ############################################################################################### + # - Multi-node MTMG tests --------------------------------------------------------------------- + ConfigureTest(MTMG_MULTINODE_TEST mtmg/multi_node_threaded_test.cu utilities/mg_utilities.cpp) + target_link_libraries( + MTMG_MULTINODE_TEST PRIVATE cugraphmgtestutil ${COMPILED_RAFT_LIB} ucx::ucp ucx::ucs + ucxx::ucxx + ) + endif(BUILD_CUGRAPH_MG_TESTS) endif(BUILD_CUGRAPH_MTMG_TESTS) rapids_test_install_relocatable(INSTALL_COMPONENT_SET testing_c DESTINATION bin/gtests/libcugraph_c) diff --git a/python/cugraph/cugraph/components/CMakeLists.txt b/python/cugraph/cugraph/components/CMakeLists.txt index 9e325129d07..c1132a5bd6a 100644 --- a/python/cugraph/cugraph/components/CMakeLists.txt +++ b/python/cugraph/cugraph/components/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX components_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX components_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/cugraph/cugraph/dask/comms/CMakeLists.txt b/python/cugraph/cugraph/dask/comms/CMakeLists.txt index 20e1a35881e..1e693063f2a 100644 --- a/python/cugraph/cugraph/dask/comms/CMakeLists.txt +++ b/python/cugraph/cugraph/dask/comms/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX comms_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX comms_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/cugraph/cugraph/dask/components/CMakeLists.txt b/python/cugraph/cugraph/dask/components/CMakeLists.txt index fa6e7955886..650fd025624 100644 --- a/python/cugraph/cugraph/dask/components/CMakeLists.txt +++ b/python/cugraph/cugraph/dask/components/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX components_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX components_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/cugraph/cugraph/dask/structure/CMakeLists.txt b/python/cugraph/cugraph/dask/structure/CMakeLists.txt index 2b6bad59f6a..8ab40dd4c2d 100644 --- a/python/cugraph/cugraph/dask/structure/CMakeLists.txt +++ b/python/cugraph/cugraph/dask/structure/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX structure_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX structure_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/cugraph/cugraph/internals/CMakeLists.txt b/python/cugraph/cugraph/internals/CMakeLists.txt index fcf5ae31793..de547f81e0c 100644 --- a/python/cugraph/cugraph/internals/CMakeLists.txt +++ b/python/cugraph/cugraph/internals/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,7 +17,8 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX internals_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX internals_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/cugraph/cugraph/layout/CMakeLists.txt b/python/cugraph/cugraph/layout/CMakeLists.txt index 62a1f86733e..afe5686efd2 100644 --- a/python/cugraph/cugraph/layout/CMakeLists.txt +++ b/python/cugraph/cugraph/layout/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX layout_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX layout_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/cugraph/cugraph/linear_assignment/CMakeLists.txt b/python/cugraph/cugraph/linear_assignment/CMakeLists.txt index 2e9c6ab1a12..819862ec217 100644 --- a/python/cugraph/cugraph/linear_assignment/CMakeLists.txt +++ b/python/cugraph/cugraph/linear_assignment/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX linear_assignment_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX linear_assignment_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/cugraph/cugraph/sampling/CMakeLists.txt b/python/cugraph/cugraph/sampling/CMakeLists.txt index 725ac6d1f0d..332ff61c5e6 100644 --- a/python/cugraph/cugraph/sampling/CMakeLists.txt +++ b/python/cugraph/cugraph/sampling/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX sampling_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX sampling_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/cugraph/cugraph/structure/CMakeLists.txt b/python/cugraph/cugraph/structure/CMakeLists.txt index f8385a08afd..97e1ab82b27 100644 --- a/python/cugraph/cugraph/structure/CMakeLists.txt +++ b/python/cugraph/cugraph/structure/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022-2023, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX structure_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX structure_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/cugraph/cugraph/tree/CMakeLists.txt b/python/cugraph/cugraph/tree/CMakeLists.txt index 6f5db063af0..8085f757a98 100644 --- a/python/cugraph/cugraph/tree/CMakeLists.txt +++ b/python/cugraph/cugraph/tree/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX tree_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX tree_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/cugraph/cugraph/utilities/CMakeLists.txt b/python/cugraph/cugraph/utilities/CMakeLists.txt index e3976f6aeb7..7d1d9e7f04c 100644 --- a/python/cugraph/cugraph/utilities/CMakeLists.txt +++ b/python/cugraph/cugraph/utilities/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -17,6 +17,7 @@ set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( CXX SOURCE_FILES "${cython_sources}" - LINKED_LIBRARIES "${linked_libraries}" MODULE_PREFIX utilities_ + LINKED_LIBRARIES "${linked_libraries}" + MODULE_PREFIX utilities_ ASSOCIATED_TARGETS cugraph ) diff --git a/python/pylibcugraph/pylibcugraph/components/CMakeLists.txt b/python/pylibcugraph/pylibcugraph/components/CMakeLists.txt index 0d8997e3da4..7fed70ac0f0 100644 --- a/python/pylibcugraph/pylibcugraph/components/CMakeLists.txt +++ b/python/pylibcugraph/pylibcugraph/components/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -12,9 +12,7 @@ # the License. # ============================================================================= -set(cython_sources - _connectivity.pyx -) +set(cython_sources _connectivity.pyx) set(linked_libraries cugraph::cugraph) rapids_cython_create_modules( diff --git a/python/pylibcugraph/pylibcugraph/internal_types/CMakeLists.txt b/python/pylibcugraph/pylibcugraph/internal_types/CMakeLists.txt index 1b0d6ec71a4..fe9c4f56e94 100644 --- a/python/pylibcugraph/pylibcugraph/internal_types/CMakeLists.txt +++ b/python/pylibcugraph/pylibcugraph/internal_types/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022-2024, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -12,11 +12,7 @@ # the License. # ============================================================================= -set(cython_sources - sampling_result.pyx - coo.pyx - edge_id_lookup_result.pyx -) +set(cython_sources sampling_result.pyx coo.pyx edge_id_lookup_result.pyx) set(linked_libraries cugraph::cugraph;cugraph::cugraph_c) rapids_cython_create_modules( diff --git a/python/pylibcugraph/pylibcugraph/testing/CMakeLists.txt b/python/pylibcugraph/pylibcugraph/testing/CMakeLists.txt index 8bf8969b1ac..6908170d9d4 100644 --- a/python/pylibcugraph/pylibcugraph/testing/CMakeLists.txt +++ b/python/pylibcugraph/pylibcugraph/testing/CMakeLists.txt @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2022, NVIDIA CORPORATION. +# Copyright (c) 2022-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -12,9 +12,7 @@ # the License. # ============================================================================= -set(cython_sources - type_utils.pyx -) +set(cython_sources type_utils.pyx) set(linked_libraries cugraph::cugraph;cugraph::cugraph_c) rapids_cython_create_modules( diff --git a/rapids_config.cmake b/rapids_config.cmake index 50b1054b7b9..2aa9bd7d20e 100644 --- a/rapids_config.cmake +++ b/rapids_config.cmake @@ -1,5 +1,5 @@ # ============================================================================= -# Copyright (c) 2018-2024, NVIDIA CORPORATION. +# Copyright (c) 2018-2025, NVIDIA CORPORATION. # # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License at @@ -22,13 +22,15 @@ else() string(REPLACE "\n" "\n " _rapids_version_formatted " ${_rapids_version}") message( FATAL_ERROR - "Could not determine RAPIDS version. Contents of VERSION file:\n${_rapids_version_formatted}") + "Could not determine RAPIDS version. Contents of VERSION file:\n${_rapids_version_formatted}" + ) endif() if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/CUGRAPH_RAPIDS-${RAPIDS_VERSION_MAJOR_MINOR}.cmake") file( DOWNLOAD "https://raw.githubusercontent.com/rapidsai/rapids-cmake/branch-${RAPIDS_VERSION_MAJOR_MINOR}/RAPIDS.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/CUGRAPH_RAPIDS-${RAPIDS_VERSION_MAJOR_MINOR}.cmake") + "${CMAKE_CURRENT_BINARY_DIR}/CUGRAPH_RAPIDS-${RAPIDS_VERSION_MAJOR_MINOR}.cmake" + ) endif() include("${CMAKE_CURRENT_BINARY_DIR}/CUGRAPH_RAPIDS-${RAPIDS_VERSION_MAJOR_MINOR}.cmake")