From ba5b6f6881c86f8096922fb3d2b9e948dbb8c3d2 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Thu, 8 Jan 2026 09:26:16 -0600 Subject: [PATCH 01/21] prefer CUDA 13.1 devcontainers --- .../cuda13.0-conda/devcontainer.json | 44 ---------------- .devcontainer/cuda13.0-pip/devcontainer.json | 52 ------------------- .github/workflows/pr.yaml | 2 +- 3 files changed, 1 insertion(+), 97 deletions(-) delete mode 100644 .devcontainer/cuda13.0-conda/devcontainer.json delete mode 100644 .devcontainer/cuda13.0-pip/devcontainer.json diff --git a/.devcontainer/cuda13.0-conda/devcontainer.json b/.devcontainer/cuda13.0-conda/devcontainer.json deleted file mode 100644 index 5c0beccf9c..0000000000 --- a/.devcontainer/cuda13.0-conda/devcontainer.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "build": { - "context": "${localWorkspaceFolder}/.devcontainer", - "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", - "args": { - "CUDA": "13.0", - "PYTHON_PACKAGE_MANAGER": "conda", - "BASE": "rapidsai/devcontainers:26.02-cpp-mambaforge" - } - }, - "runArgs": [ - "--rm", - "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.02-cuda13.0-conda", - "--ulimit", - "nofile=500000" - ], - "hostRequirements": {"gpu": "optional"}, - "features": { - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:26.2": {} - }, - "overrideFeatureInstallOrder": [ - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" - ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda13.0-envs}"], - "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"], - "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuvs,type=bind,consistency=consistent", - "mounts": [ - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda13.0-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent" - ], - "customizations": { - "vscode": { - "extensions": [ - "ms-python.flake8", - "nvidia.nsight-vscode-edition" - ] - } - } -} diff --git a/.devcontainer/cuda13.0-pip/devcontainer.json b/.devcontainer/cuda13.0-pip/devcontainer.json deleted file mode 100644 index 88b6bc9def..0000000000 --- a/.devcontainer/cuda13.0-pip/devcontainer.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "build": { - "context": "${localWorkspaceFolder}/.devcontainer", - "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", - "args": { - "CUDA": "13.0", - "PYTHON_PACKAGE_MANAGER": "pip", - "BASE": "rapidsai/devcontainers:26.02-cpp-cuda13.0-ucx1.19.0-openmpi5.0.7" - } - }, - "runArgs": [ - "--rm", - "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-26.02-cuda13.0-pip", - "--ulimit", - "nofile=500000" - ], - "hostRequirements": {"gpu": "optional"}, - "features": { - "ghcr.io/rapidsai/devcontainers/features/cuda:26.2": { - "version": "13.0", - "installcuBLAS": true, - "installcuSOLVER": true, - "installcuRAND": true, - "installcuSPARSE": true - }, - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:26.2": {} - }, - "overrideFeatureInstallOrder": [ - "ghcr.io/rapidsai/devcontainers/features/ucx", - "ghcr.io/rapidsai/devcontainers/features/cuda", - "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" - ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda13.0-venvs}"], - "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"], - "workspaceFolder": "/home/coder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuvs,type=bind,consistency=consistent", - "mounts": [ - "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda13.0-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent" - ], - "customizations": { - "vscode": { - "extensions": [ - "ms-python.flake8", - "nvidia.nsight-vscode-edition" - ] - } - } -} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 22407052e3..c5d598c9c4 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -334,7 +334,7 @@ jobs: uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@cuda-13.1.0 with: arch: '["amd64", "arm64"]' - cuda: '["13.0"]' + cuda: '["13.1"]' node_type: "cpu8" rapids-aux-secret-1: GIST_REPO_READ_ORG_GITHUB_TOKEN env: | From a7f76da07f6776b1193acb45614036005b578f1b Mon Sep 17 00:00:00 2001 From: James Lamb Date: Thu, 8 Jan 2026 10:15:12 -0600 Subject: [PATCH 02/21] export cutlass --- cpp/cmake/thirdparty/get_cutlass.cmake | 30 +++++++++++++++++++++++++- cpp/include/cuvs/neighbors/common.hpp | 2 +- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/cpp/cmake/thirdparty/get_cutlass.cmake b/cpp/cmake/thirdparty/get_cutlass.cmake index 1c12b7ae5f..825d36c95e 100644 --- a/cpp/cmake/thirdparty/get_cutlass.cmake +++ b/cpp/cmake/thirdparty/get_cutlass.cmake @@ -1,6 +1,6 @@ # ============================================================================= # cmake-format: off -# SPDX-FileCopyrightText: Copyright (c) 2021-2025, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. # SPDX-License-Identifier: Apache-2.0 # cmake-format: on # ============================================================================= @@ -49,6 +49,34 @@ function(find_and_configure_cutlass) add_library(nvidia::cutlass::cutlass ALIAS CUTLASS) endif() + # export cutlass so projects that depend on cuVS can find it + if(NvidiaCutlass_ADDED) + rapids_export( + BUILD NvidiaCutlass + EXPORT_SET NvidiaCutlass + GLOBAL_TARGETS nvidia::cutlass::cutlass + NAMESPACE nvidia::cutlass:: + ) + endif() + + rapids_export_package( + BUILD NvidiaCutlass cuvs-exports GLOBAL_TARGETS nvidia::cutlass::cutlass + ) + rapids_export_package( + INSTALL NvidiaCutlass cuvs-exports GLOBAL_TARGETS nvidia::cutlass::cutlass + ) + + # Tell cmake where it can find the generated NvidiaCutlass-config.cmake we wrote. + include("${rapids-cmake-dir}/export/find_package_root.cmake") + rapids_export_find_package_root( + INSTALL NvidiaCutlass [=[${CMAKE_CURRENT_LIST_DIR}/../]=] + EXPORT_SET cuvs-exports + ) + rapids_export_find_package_root( + BUILD NvidiaCutlass [=[${CMAKE_CURRENT_LIST_DIR}]=] + EXPORT_SET cuvs-exports + ) + endfunction() find_and_configure_cutlass() diff --git a/cpp/include/cuvs/neighbors/common.hpp b/cpp/include/cuvs/neighbors/common.hpp index 4f697b3604..c76014a011 100644 --- a/cpp/include/cuvs/neighbors/common.hpp +++ b/cpp/include/cuvs/neighbors/common.hpp @@ -474,7 +474,7 @@ namespace filtering { enum class FilterType { None, Bitmap, Bitset }; struct base_filter { - ~base_filter() = default; + ~base_filter() = default; changes virtual FilterType get_filter_type() const = 0; }; From 3d62f9c46fa3ff68efaccbf93493524d491c5302 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Thu, 8 Jan 2026 10:16:03 -0600 Subject: [PATCH 03/21] fix merge conflict --- cpp/include/cuvs/neighbors/common.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/include/cuvs/neighbors/common.hpp b/cpp/include/cuvs/neighbors/common.hpp index c76014a011..4f697b3604 100644 --- a/cpp/include/cuvs/neighbors/common.hpp +++ b/cpp/include/cuvs/neighbors/common.hpp @@ -474,7 +474,7 @@ namespace filtering { enum class FilterType { None, Bitmap, Bitset }; struct base_filter { - ~base_filter() = default; changes + ~base_filter() = default; virtual FilterType get_filter_type() const = 0; }; From 2813673baeb3b4ad0d1137d222db58aba1bcf811 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Thu, 8 Jan 2026 16:47:36 +0000 Subject: [PATCH 04/21] move dependencies around --- cpp/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index c2ca51e749..fc20524e0a 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -220,7 +220,7 @@ if(NOT BUILD_CPU_ONLY) "$" "$" ) - target_link_libraries(cuvs_cpp_headers INTERFACE raft::raft rmm::rmm) + target_link_libraries(cuvs_cpp_headers INTERFACE nvidia::cutlass::cutlass raft::raft rmm::rmm) add_library( cuvs-cagra-search OBJECT From a0398448acaa45fbe8fd9c6b9cd2a21bbeccaef5 Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 09:16:15 -0800 Subject: [PATCH 05/21] add cutlass utils --- cpp/include/cuvs/util/cutlass_utils.hpp | 43 +++++++++++++++++++ .../detail/fused_distance_nn/cutlass_base.cuh | 4 +- .../detail/pairwise_distance_cutlass_base.cuh | 4 +- 3 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 cpp/include/cuvs/util/cutlass_utils.hpp diff --git a/cpp/include/cuvs/util/cutlass_utils.hpp b/cpp/include/cuvs/util/cutlass_utils.hpp new file mode 100644 index 0000000000..0b23127e9c --- /dev/null +++ b/cpp/include/cuvs/util/cutlass_utils.hpp @@ -0,0 +1,43 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION. + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include + +#include + +namespace raft { + +/** + * @brief Exception thrown when a CUTLASS error is encountered. + */ +struct cutlass_error : public raft::exception { + explicit cutlass_error(char const* const message) : raft::exception(message) {} + explicit cutlass_error(std::string const& message) : raft::exception(message) {} +}; + +} // namespace raft + +/** + * @brief Error checking macro for CUTLASS functions. + * + * Invokes a CUTLASS function call, if the call does not return cutlass::Status::kSuccess, + * throws an exception detailing the CUTLASS error that occurred. + * + */ +#define RAFT_CUTLASS_TRY(call) \ + do { \ + cutlass::Status const status = call; \ + if (status != cutlass::Status::kSuccess) { \ + std::string msg{}; \ + SET_ERROR_MSG(msg, \ + "CUTLASS error encountered at: ", \ + "call='%s', Reason=%s", \ + #call, \ + cutlassGetStatusString(status)); \ + throw raft::cutlass_error(msg); \ + } \ + } while (0) diff --git a/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh b/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh index 6573762875..fb5789dc23 100644 --- a/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh +++ b/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2023-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -17,8 +17,8 @@ #include "epilogue_elementwise.cuh" // FusedDistanceNNEpilogueElementwise #include "gemm.h" // FusedDistanceNNGemm +#include // RAFT_CUTLASS_TRY #include // getMultiProcessorCount -#include // RAFT_CUTLASS_TRY #include diff --git a/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh b/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh index 55728cfbd3..c4cbd3d662 100644 --- a/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh +++ b/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2018-2024, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2018-2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ @@ -19,7 +19,7 @@ #include "pairwise_distance_gemm.h" #include "distance_ops/cutlass.cuh" -#include +#include #include From bfe628f07121f1307636d34624a5dc4c42b44a4d Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 18:42:14 +0000 Subject: [PATCH 06/21] use raft cutlass patches and add cuco --- cpp/CMakeLists.txt | 12 +++++-- ...2-and-13-cccl-header-locations.patch.patch | 31 +++++++++++++++++++ cpp/cmake/patches/cutlass/build-export.patch | 26 ---------------- cpp/cmake/patches/cutlass_override.json | 6 ++-- 4 files changed, 43 insertions(+), 32 deletions(-) create mode 100644 cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch.patch delete mode 100644 cpp/cmake/patches/cutlass/build-export.patch diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index fc20524e0a..147cab81ce 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -192,6 +192,8 @@ if(NOT BUILD_CPU_ONLY) rapids_cpm_cccl(BUILD_EXPORT_SET cuvs-exports INSTALL_EXPORT_SET cuvs-exports) include(cmake/thirdparty/get_raft.cmake) include(cmake/thirdparty/get_cutlass.cmake) + include(${rapids-cmake-dir}/cpm/cuco.cmake) + rapids_cpm_cuco(BUILD_EXPORT_SET cuvs-exports INSTALL_EXPORT_SET cuvs-exports) endif() if(BUILD_TESTS OR BUILD_C_TESTS) @@ -566,8 +568,11 @@ if(NOT BUILD_CPU_ONLY) target_link_libraries( cuvs_objs - PRIVATE cuvs::cuvs_cpp_headers ${CUVS_CTK_MATH_DEPENDENCIES} - $ $ + PRIVATE cuvs::cuvs_cpp_headers + ${CUVS_CTK_MATH_DEPENDENCIES} + $ + $ + $ ) # Endian detection @@ -638,6 +643,7 @@ if(NOT BUILD_CPU_ONLY) $> $<$:CUDA::nvtx3> PRIVATE nvidia::cutlass::cutlass $ + $ ) # ensure CUDA symbols aren't relocated to the middle of the debug build binaries @@ -693,7 +699,7 @@ SECTIONS $ # needs to be public for DT_NEEDED $> # header only PRIVATE nvidia::cutlass::cutlass $ - $<$:CUDA::nvtx3> + $<$:CUDA::nvtx3> $ ) endif() diff --git a/cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch.patch b/cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch.patch new file mode 100644 index 0000000000..489ac69f93 --- /dev/null +++ b/cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch.patch @@ -0,0 +1,31 @@ +From 661c7e679ac72926d619da46834d09f52a727f5e Mon Sep 17 00:00:00 2001 +From: Robert Maynard +Date: Tue, 5 Aug 2025 15:05:57 -0400 +Subject: [PATCH] Support both CUDA 12 and 13 cccl header locations + +--- + CMakeLists.txt | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 38dcca9f..4088b71f 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -704,8 +704,14 @@ target_include_directories( + CUTLASS + SYSTEM INTERFACE + $ +- $ + ) ++if(CUDA_VERSION VERSION_GREATER_EQUAL 13.0) ++ target_include_directories( ++ CUTLASS ++ SYSTEM INTERFACE ++ $ ++ ) ++endif() + + install( + DIRECTORY +-- +2.39.5 (Apple Git-154) diff --git a/cpp/cmake/patches/cutlass/build-export.patch b/cpp/cmake/patches/cutlass/build-export.patch deleted file mode 100644 index 31bbd25102..0000000000 --- a/cpp/cmake/patches/cutlass/build-export.patch +++ /dev/null @@ -1,26 +0,0 @@ -From e0a9597946257a01ae8444200f836ee51d5597ba Mon Sep 17 00:00:00 2001 -From: Kyle Edwards -Date: Wed, 20 Nov 2024 16:37:38 -0500 -Subject: [PATCH] Remove erroneous include directories - -These directories are left over from when CuTe was a separate -CMake project. Remove them. ---- - CMakeLists.txt | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 7419bdf5e..545384d82 100755 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -665,8 +665,6 @@ target_include_directories( - $ - $ - $ -- $ -- $ - ) - - # Mark CTK headers as system to supress warnings from them --- -2.34.1 diff --git a/cpp/cmake/patches/cutlass_override.json b/cpp/cmake/patches/cutlass_override.json index 7bf818987f..bf9791ebd1 100644 --- a/cpp/cmake/patches/cutlass_override.json +++ b/cpp/cmake/patches/cutlass_override.json @@ -1,13 +1,13 @@ { "packages" : { "cutlass" : { - "version": "3.5.1", + "version": "4.1.0", "git_url": "https://github.com/NVIDIA/cutlass.git", "git_tag": "v${version}", "patches" : [ { - "file" : "${current_json_dir}/cutlass/build-export.patch", - "issue" : "Fix build directory export", + "file" : "${current_json_dir}/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch", + "issue" : "Support CUDA 12 CTK layout[https://github.com/NVIDIA/cutlass/pull/2543]", "fixed_in" : "" } ] From 6c0485d8242455216432fefba5dbf5434034a3e9 Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 19:58:25 +0000 Subject: [PATCH 07/21] unconditionally apply cutlass patch --- cpp/cmake/thirdparty/get_cutlass.cmake | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cpp/cmake/thirdparty/get_cutlass.cmake b/cpp/cmake/thirdparty/get_cutlass.cmake index 825d36c95e..e7318a06cc 100644 --- a/cpp/cmake/thirdparty/get_cutlass.cmake +++ b/cpp/cmake/thirdparty/get_cutlass.cmake @@ -24,9 +24,7 @@ function(find_and_configure_cutlass) CACHE BOOL "Disable CUTLASS to build with cuBLAS library." ) - if (CUDA_STATIC_RUNTIME) - set(CUDART_LIBRARY "${CUDA_cudart_static_LIBRARY}" CACHE FILEPATH "fixing cutlass cmake code" FORCE) - endif() + set(CUDART_LIBRARY "${CUDA_cudart_static_LIBRARY}" CACHE FILEPATH "fixing cutlass cmake code" FORCE) include("${rapids-cmake-dir}/cpm/package_override.cmake") rapids_cpm_package_override("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../patches/cutlass_override.json") From 4269580f34cafba48f042ade074a7e40366f2217 Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 20:58:07 +0000 Subject: [PATCH 08/21] rename patch correctly --- ...CUDA-12-and-13-cccl-header-locations.patch | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch diff --git a/cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch b/cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch new file mode 100644 index 0000000000..489ac69f93 --- /dev/null +++ b/cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch @@ -0,0 +1,31 @@ +From 661c7e679ac72926d619da46834d09f52a727f5e Mon Sep 17 00:00:00 2001 +From: Robert Maynard +Date: Tue, 5 Aug 2025 15:05:57 -0400 +Subject: [PATCH] Support both CUDA 12 and 13 cccl header locations + +--- + CMakeLists.txt | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 38dcca9f..4088b71f 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -704,8 +704,14 @@ target_include_directories( + CUTLASS + SYSTEM INTERFACE + $ +- $ + ) ++if(CUDA_VERSION VERSION_GREATER_EQUAL 13.0) ++ target_include_directories( ++ CUTLASS ++ SYSTEM INTERFACE ++ $ ++ ) ++endif() + + install( + DIRECTORY +-- +2.39.5 (Apple Git-154) From 89a5968fa45a73f37666179434c73635cf437cd4 Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 20:59:19 +0000 Subject: [PATCH 09/21] rename --- ...2-and-13-cccl-header-locations.patch.patch | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch.patch diff --git a/cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch.patch b/cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch.patch deleted file mode 100644 index 489ac69f93..0000000000 --- a/cpp/cmake/patches/cutlass/Support-both-CUDA-12-and-13-cccl-header-locations.patch.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 661c7e679ac72926d619da46834d09f52a727f5e Mon Sep 17 00:00:00 2001 -From: Robert Maynard -Date: Tue, 5 Aug 2025 15:05:57 -0400 -Subject: [PATCH] Support both CUDA 12 and 13 cccl header locations - ---- - CMakeLists.txt | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 38dcca9f..4088b71f 100755 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -704,8 +704,14 @@ target_include_directories( - CUTLASS - SYSTEM INTERFACE - $ -- $ - ) -+if(CUDA_VERSION VERSION_GREATER_EQUAL 13.0) -+ target_include_directories( -+ CUTLASS -+ SYSTEM INTERFACE -+ $ -+ ) -+endif() - - install( - DIRECTORY --- -2.39.5 (Apple Git-154) From f0cb5c00f1432a76ad35d4fb89261eeb3a159d52 Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 21:35:26 +0000 Subject: [PATCH 10/21] raft -> cuvs renames --- cpp/include/cuvs/util/cutlass_utils.hpp | 8 ++++---- .../distance/detail/fused_distance_nn/cutlass_base.cuh | 8 ++++---- .../distance/detail/pairwise_distance_cutlass_base.cuh | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cpp/include/cuvs/util/cutlass_utils.hpp b/cpp/include/cuvs/util/cutlass_utils.hpp index 0b23127e9c..7740c48b95 100644 --- a/cpp/include/cuvs/util/cutlass_utils.hpp +++ b/cpp/include/cuvs/util/cutlass_utils.hpp @@ -9,7 +9,7 @@ #include -namespace raft { +namespace cuvs { /** * @brief Exception thrown when a CUTLASS error is encountered. @@ -19,7 +19,7 @@ struct cutlass_error : public raft::exception { explicit cutlass_error(std::string const& message) : raft::exception(message) {} }; -} // namespace raft +} // namespace cuvs /** * @brief Error checking macro for CUTLASS functions. @@ -28,7 +28,7 @@ struct cutlass_error : public raft::exception { * throws an exception detailing the CUTLASS error that occurred. * */ -#define RAFT_CUTLASS_TRY(call) \ +#define CUVS_CUTLASS_TRY(call) \ do { \ cutlass::Status const status = call; \ if (status != cutlass::Status::kSuccess) { \ @@ -38,6 +38,6 @@ struct cutlass_error : public raft::exception { "call='%s', Reason=%s", \ #call, \ cutlassGetStatusString(status)); \ - throw raft::cutlass_error(msg); \ + throw cuvs::cutlass_error(msg); \ } \ } while (0) diff --git a/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh b/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh index fb5789dc23..cea43ca971 100644 --- a/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh +++ b/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh @@ -17,7 +17,7 @@ #include "epilogue_elementwise.cuh" // FusedDistanceNNEpilogueElementwise #include "gemm.h" // FusedDistanceNNGemm -#include // RAFT_CUTLASS_TRY +#include // CUVS_CUTLASS_TRY #include // getMultiProcessorCount #include @@ -152,11 +152,11 @@ void cutlassFusedDistanceNN(const DataT* x, // Instantiate CUTLASS kernel depending on templates fusedDistanceNN fusedDistanceNN_op; // Check the problem size is supported or not - RAFT_CUTLASS_TRY(fusedDistanceNN_op.can_implement(arguments)); + CUVS_CUTLASS_TRY(fusedDistanceNN_op.can_implement(arguments)); // Initialize CUTLASS kernel with arguments and workspace pointer - RAFT_CUTLASS_TRY(fusedDistanceNN_op.initialize(arguments, workspace.data(), stream)); + CUVS_CUTLASS_TRY(fusedDistanceNN_op.initialize(arguments, workspace.data(), stream)); // Launch initialized CUTLASS kernel - RAFT_CUTLASS_TRY(fusedDistanceNN_op.run(stream)); + CUVS_CUTLASS_TRY(fusedDistanceNN_op.run(stream)); } }; // namespace detail diff --git a/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh b/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh index c4cbd3d662..0f23f39796 100644 --- a/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh +++ b/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh @@ -157,13 +157,13 @@ std::enable_if_t::value> cutlassDistanceKernel(const Da // Instantiate CUTLASS kernel depending on templates cutlassDist cutlassDist_op; // Check the problem size is supported or not - RAFT_CUTLASS_TRY(cutlassDist_op.can_implement(arguments)); + CUVS_CUTLASS_TRY(cutlassDist_op.can_implement(arguments)); // Initialize CUTLASS kernel with arguments and workspace pointer - RAFT_CUTLASS_TRY(cutlassDist_op.initialize(arguments, workspace.data(), stream)); + CUVS_CUTLASS_TRY(cutlassDist_op.initialize(arguments, workspace.data(), stream)); // Launch initialized CUTLASS kernel - RAFT_CUTLASS_TRY(cutlassDist_op(stream)); + CUVS_CUTLASS_TRY(cutlassDist_op(stream)); } } From c04b189951b6c2e18a48e30522c065f1174667f4 Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 21:42:41 +0000 Subject: [PATCH 11/21] move cutlass util to source --- cpp/CMakeLists.txt | 2 +- .../distance/detail/fused_distance_nn/cutlass_base.cuh | 8 ++++---- .../distance/detail/pairwise_distance_cutlass_base.cuh | 2 +- cpp/{include/cuvs => src}/util/cutlass_utils.hpp | 0 4 files changed, 6 insertions(+), 6 deletions(-) rename cpp/{include/cuvs => src}/util/cutlass_utils.hpp (100%) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 147cab81ce..6d4ac9973b 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -222,7 +222,7 @@ if(NOT BUILD_CPU_ONLY) "$" "$" ) - target_link_libraries(cuvs_cpp_headers INTERFACE nvidia::cutlass::cutlass raft::raft rmm::rmm) + target_link_libraries(cuvs_cpp_headers INTERFACE raft::raft rmm::rmm) add_library( cuvs-cagra-search OBJECT diff --git a/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh b/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh index cea43ca971..93b2b80daa 100644 --- a/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh +++ b/cpp/src/distance/detail/fused_distance_nn/cutlass_base.cuh @@ -15,10 +15,10 @@ #define cutlass cuvs_cutlass #endif -#include "epilogue_elementwise.cuh" // FusedDistanceNNEpilogueElementwise -#include "gemm.h" // FusedDistanceNNGemm -#include // CUVS_CUTLASS_TRY -#include // getMultiProcessorCount +#include "../../../util/cutlass_utils.hpp" // CUVS_CUTLASS_TRY +#include "epilogue_elementwise.cuh" // FusedDistanceNNEpilogueElementwise +#include "gemm.h" // FusedDistanceNNGemm +#include // getMultiProcessorCount #include diff --git a/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh b/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh index 0f23f39796..d01445c682 100644 --- a/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh +++ b/cpp/src/distance/detail/pairwise_distance_cutlass_base.cuh @@ -18,8 +18,8 @@ #include "pairwise_distance_epilogue_elementwise.h" #include "pairwise_distance_gemm.h" +#include "../../util/cutlass_utils.hpp" #include "distance_ops/cutlass.cuh" -#include #include diff --git a/cpp/include/cuvs/util/cutlass_utils.hpp b/cpp/src/util/cutlass_utils.hpp similarity index 100% rename from cpp/include/cuvs/util/cutlass_utils.hpp rename to cpp/src/util/cutlass_utils.hpp From 1842620118dcf81cc961501bd25ef7edb43e8463 Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 21:47:20 +0000 Subject: [PATCH 12/21] avoid odr violation --- cpp/include/cuvs/util/cutlass_utils.hpp | 19 +++++++++++++++++++ cpp/src/util/cutlass_utils.hpp | 16 +--------------- 2 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 cpp/include/cuvs/util/cutlass_utils.hpp diff --git a/cpp/include/cuvs/util/cutlass_utils.hpp b/cpp/include/cuvs/util/cutlass_utils.hpp new file mode 100644 index 0000000000..e934eb56eb --- /dev/null +++ b/cpp/include/cuvs/util/cutlass_utils.hpp @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION. + * SPDX-License-Identifier: Apache-2.0 + */ +#pragma once + +#include + +namespace cuvs { + +/** + * @brief Exception thrown when a CUTLASS error is encountered. + */ +struct cutlass_error : public raft::exception { + explicit cutlass_error(char const* const message) : raft::exception(message) {} + explicit cutlass_error(std::string const& message) : raft::exception(message) {} +}; + +} // namespace cuvs diff --git a/cpp/src/util/cutlass_utils.hpp b/cpp/src/util/cutlass_utils.hpp index 7740c48b95..d3fa19b1af 100644 --- a/cpp/src/util/cutlass_utils.hpp +++ b/cpp/src/util/cutlass_utils.hpp @@ -1,26 +1,12 @@ /* - * SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION. + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION. * SPDX-License-Identifier: Apache-2.0 */ #pragma once -#include - #include -namespace cuvs { - -/** - * @brief Exception thrown when a CUTLASS error is encountered. - */ -struct cutlass_error : public raft::exception { - explicit cutlass_error(char const* const message) : raft::exception(message) {} - explicit cutlass_error(std::string const& message) : raft::exception(message) {} -}; - -} // namespace cuvs - /** * @brief Error checking macro for CUTLASS functions. * From 76a66eb31d25f87a5f3e66619b729459e53f6afb Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 21:48:13 +0000 Subject: [PATCH 13/21] missing include --- cpp/src/util/cutlass_utils.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/src/util/cutlass_utils.hpp b/cpp/src/util/cutlass_utils.hpp index d3fa19b1af..dc28677470 100644 --- a/cpp/src/util/cutlass_utils.hpp +++ b/cpp/src/util/cutlass_utils.hpp @@ -5,6 +5,8 @@ #pragma once +#include + #include /** From c2dd9495b630c859b0e23749a018c600310b5be0 Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 21:57:04 +0000 Subject: [PATCH 14/21] add cutlass link to cuvs_objs --- cpp/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 6d4ac9973b..abe5ceb347 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -573,6 +573,7 @@ if(NOT BUILD_CPU_ONLY) $ $ $ + $ ) # Endian detection From 4424cbddea2eaaecd5683218f0ee80dfdff92bad Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 21:59:32 +0000 Subject: [PATCH 15/21] add link to cuvs-cagra-search --- cpp/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index abe5ceb347..aa8af91eff 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -317,7 +317,10 @@ if(NOT BUILD_CPU_ONLY) CUDA_SEPARABLE_COMPILATION ON POSITION_INDEPENDENT_CODE ON ) - target_link_libraries(cuvs-cagra-search PRIVATE cuvs::cuvs_cpp_headers) + target_link_libraries( + cuvs-cagra-search PRIVATE cuvs::cuvs_cpp_headers + $ + ) target_compile_options( cuvs-cagra-search PRIVATE "$<$:${CUVS_CXX_FLAGS}>" "$<$:${CUVS_CUDA_FLAGS}>" From 5caac0b54171efdd24fa1245c8553e3d9d18ee7a Mon Sep 17 00:00:00 2001 From: divyegala Date: Thu, 8 Jan 2026 22:43:35 +0000 Subject: [PATCH 16/21] link cutlass to tests --- cpp/src/util/cutlass_utils.hpp | 4 +++- cpp/tests/CMakeLists.txt | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cpp/src/util/cutlass_utils.hpp b/cpp/src/util/cutlass_utils.hpp index dc28677470..470473bd09 100644 --- a/cpp/src/util/cutlass_utils.hpp +++ b/cpp/src/util/cutlass_utils.hpp @@ -13,7 +13,9 @@ * @brief Error checking macro for CUTLASS functions. * * Invokes a CUTLASS function call, if the call does not return cutlass::Status::kSuccess, - * throws an exception detailing the CUTLASS error that occurred. + * throws an exception detailing the CUTLASS error that occurred. This macro + * is only available internally to cuvs and as such the file differs from + * the one found in cuvs/include/util * */ #define CUVS_CUTLASS_TRY(call) \ diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index fed07246cb..3c47db4a16 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -1,6 +1,6 @@ # ============================================================================= # cmake-format: off -# SPDX-FileCopyrightText: Copyright (c) 2021-2025, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. # SPDX-License-Identifier: Apache-2.0 # cmake-format: on # ============================================================================= @@ -49,6 +49,7 @@ function(ConfigureTest) $ $ ${_CUVS_TEST_ADDITIONAL_DEP} + $ ) set_target_properties( ${TEST_NAME} From 9d102ce4543c8db38cbf5c4fd4f713ac64d32d77 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 9 Jan 2026 09:46:05 -0600 Subject: [PATCH 17/21] try removing cutlass from the install export set --- cpp/cmake/thirdparty/get_cutlass.cmake | 7 ------- 1 file changed, 7 deletions(-) diff --git a/cpp/cmake/thirdparty/get_cutlass.cmake b/cpp/cmake/thirdparty/get_cutlass.cmake index e7318a06cc..57766a3899 100644 --- a/cpp/cmake/thirdparty/get_cutlass.cmake +++ b/cpp/cmake/thirdparty/get_cutlass.cmake @@ -60,16 +60,9 @@ function(find_and_configure_cutlass) rapids_export_package( BUILD NvidiaCutlass cuvs-exports GLOBAL_TARGETS nvidia::cutlass::cutlass ) - rapids_export_package( - INSTALL NvidiaCutlass cuvs-exports GLOBAL_TARGETS nvidia::cutlass::cutlass - ) # Tell cmake where it can find the generated NvidiaCutlass-config.cmake we wrote. include("${rapids-cmake-dir}/export/find_package_root.cmake") - rapids_export_find_package_root( - INSTALL NvidiaCutlass [=[${CMAKE_CURRENT_LIST_DIR}/../]=] - EXPORT_SET cuvs-exports - ) rapids_export_find_package_root( BUILD NvidiaCutlass [=[${CMAKE_CURRENT_LIST_DIR}]=] EXPORT_SET cuvs-exports From 523e3200e01ec8e922b9189a2bf3ed077520439a Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 9 Jan 2026 10:49:15 -0600 Subject: [PATCH 18/21] remove cuco from install export set too --- cpp/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index aa8af91eff..b51639b883 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -193,7 +193,7 @@ if(NOT BUILD_CPU_ONLY) include(cmake/thirdparty/get_raft.cmake) include(cmake/thirdparty/get_cutlass.cmake) include(${rapids-cmake-dir}/cpm/cuco.cmake) - rapids_cpm_cuco(BUILD_EXPORT_SET cuvs-exports INSTALL_EXPORT_SET cuvs-exports) + rapids_cpm_cuco(BUILD_EXPORT_SET cuvs-exports) endif() if(BUILD_TESTS OR BUILD_C_TESTS) From 59fd8268520c684b34aebf46f044fd25fbd4b0b1 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 9 Jan 2026 11:31:02 -0600 Subject: [PATCH 19/21] move cutlass to cuvs-static-exports --- cpp/cmake/thirdparty/get_cutlass.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp/cmake/thirdparty/get_cutlass.cmake b/cpp/cmake/thirdparty/get_cutlass.cmake index 57766a3899..fb52f10b2a 100644 --- a/cpp/cmake/thirdparty/get_cutlass.cmake +++ b/cpp/cmake/thirdparty/get_cutlass.cmake @@ -58,14 +58,14 @@ function(find_and_configure_cutlass) endif() rapids_export_package( - BUILD NvidiaCutlass cuvs-exports GLOBAL_TARGETS nvidia::cutlass::cutlass + BUILD NvidiaCutlass cuvs-static-exports GLOBAL_TARGETS nvidia::cutlass::cutlass ) # Tell cmake where it can find the generated NvidiaCutlass-config.cmake we wrote. include("${rapids-cmake-dir}/export/find_package_root.cmake") rapids_export_find_package_root( BUILD NvidiaCutlass [=[${CMAKE_CURRENT_LIST_DIR}]=] - EXPORT_SET cuvs-exports + EXPORT_SET cuvs-static-exports ) endfunction() From 4f7a38b6876d4dbde6fa06034487b63191d1dd43 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 9 Jan 2026 14:48:26 -0600 Subject: [PATCH 20/21] do not export cutlass, make cuco and cutlass extra-private --- cpp/CMakeLists.txt | 17 ++++++++++------- cpp/cmake/thirdparty/get_cutlass.cmake | 22 +--------------------- 2 files changed, 11 insertions(+), 28 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index b51639b883..934d391204 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -193,7 +193,7 @@ if(NOT BUILD_CPU_ONLY) include(cmake/thirdparty/get_raft.cmake) include(cmake/thirdparty/get_cutlass.cmake) include(${rapids-cmake-dir}/cpm/cuco.cmake) - rapids_cpm_cuco(BUILD_EXPORT_SET cuvs-exports) + rapids_cpm_cuco() endif() if(BUILD_TESTS OR BUILD_C_TESTS) @@ -572,11 +572,11 @@ if(NOT BUILD_CPU_ONLY) target_link_libraries( cuvs_objs PRIVATE cuvs::cuvs_cpp_headers + cuco::cuco + nvidia::cutlass::cutlass ${CUVS_CTK_MATH_DEPENDENCIES} $ $ - $ - $ ) # Endian detection @@ -646,8 +646,9 @@ if(NOT BUILD_CPU_ONLY) $> $> $<$:CUDA::nvtx3> - PRIVATE nvidia::cutlass::cutlass $ - $ + PRIVATE $ + $ + $ ) # ensure CUDA symbols aren't relocated to the middle of the debug build binaries @@ -702,8 +703,10 @@ SECTIONS ${CUVS_CTK_MATH_DEPENDENCIES} $ # needs to be public for DT_NEEDED $> # header only - PRIVATE nvidia::cutlass::cutlass $ - $<$:CUDA::nvtx3> $ + PRIVATE $ + $<$:CUDA::nvtx3> + $ + $ ) endif() diff --git a/cpp/cmake/thirdparty/get_cutlass.cmake b/cpp/cmake/thirdparty/get_cutlass.cmake index fb52f10b2a..eb005ecf6b 100644 --- a/cpp/cmake/thirdparty/get_cutlass.cmake +++ b/cpp/cmake/thirdparty/get_cutlass.cmake @@ -40,6 +40,7 @@ function(find_and_configure_cutlass) NvidiaCutlass ${version} ${find_args} GLOBAL_TARGETS nvidia::cutlass::cutlass CPM_ARGS ${cpm_args} + EXCLUDE_FROM_ALL ON OPTIONS "CUDAToolkit_ROOT ${CUDAToolkit_LIBRARY_DIR}" ) @@ -47,27 +48,6 @@ function(find_and_configure_cutlass) add_library(nvidia::cutlass::cutlass ALIAS CUTLASS) endif() - # export cutlass so projects that depend on cuVS can find it - if(NvidiaCutlass_ADDED) - rapids_export( - BUILD NvidiaCutlass - EXPORT_SET NvidiaCutlass - GLOBAL_TARGETS nvidia::cutlass::cutlass - NAMESPACE nvidia::cutlass:: - ) - endif() - - rapids_export_package( - BUILD NvidiaCutlass cuvs-static-exports GLOBAL_TARGETS nvidia::cutlass::cutlass - ) - - # Tell cmake where it can find the generated NvidiaCutlass-config.cmake we wrote. - include("${rapids-cmake-dir}/export/find_package_root.cmake") - rapids_export_find_package_root( - BUILD NvidiaCutlass [=[${CMAKE_CURRENT_LIST_DIR}]=] - EXPORT_SET cuvs-static-exports - ) - endfunction() find_and_configure_cutlass() From 71a51298b39a9695ecc0270f59960d4bbbb311ff Mon Sep 17 00:00:00 2001 From: James Lamb Date: Fri, 9 Jan 2026 15:21:00 -0600 Subject: [PATCH 21/21] ugh cmake-format --- cpp/CMakeLists.txt | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 934d391204..ad13678d84 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -646,8 +646,7 @@ if(NOT BUILD_CPU_ONLY) $> $> $<$:CUDA::nvtx3> - PRIVATE $ - $ + PRIVATE $ $ $ ) @@ -703,10 +702,8 @@ SECTIONS ${CUVS_CTK_MATH_DEPENDENCIES} $ # needs to be public for DT_NEEDED $> # header only - PRIVATE $ - $<$:CUDA::nvtx3> - $ - $ + PRIVATE $ $<$:CUDA::nvtx3> + $ $ ) endif()