Skip to content

Commit e72dd2a

Browse files
authored
Prepare cuvs for removal of deprecated raft apis (#1610)
Resolves #1601, Resolves #1491 What does this PR do? 1. Removes lingering **unused** raft headers that will be deprecated such as `#include <raft/neighbors/refine.cuh>`, `#include <raft/distance/distance_types.hpp>`, etc. 2. Exposes `build_dendrogram_host` which is used by cuml. cuml currently uses the raft version. The raft version was moved to cuvs but it is not in the public interface. 3. This PR also removes the legacy spectral related files. Authors: - Anupam (https://github.com/aamijar) Approvers: - Bradley Dice (https://github.com/bdice) - Jinsol Park (https://github.com/jinsolp) - Divye Gala (https://github.com/divyegala) URL: #1610
1 parent a2ddea4 commit e72dd2a

26 files changed

Lines changed: 72 additions & 1564 deletions

cpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ if(NOT BUILD_CPU_ONLY)
338338
add_library(
339339
cuvs_objs OBJECT
340340
src/cluster/detail/minClusterDistanceCompute.cu
341+
src/cluster/agglomerative.cu
341342
src/cluster/kmeans_cluster_cost.cu
342343
src/cluster/kmeans_fit_mg_float.cu
343344
src/cluster/kmeans_fit_mg_double.cu
@@ -414,7 +415,6 @@ if(NOT BUILD_CPU_ONLY)
414415
src/distance/distance.cu
415416
src/distance/pairwise_distance.cu
416417
src/distance/sparse_distance.cu
417-
src/embed/spectral.cu
418418
src/neighbors/all_neighbors/all_neighbors.cu
419419
src/neighbors/ball_cover.cu
420420
src/neighbors/epsilon_neighborhood.cu

cpp/bench/ann/src/cuvs/cuvs_ivf_pq_wrapper.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2023-2024, NVIDIA CORPORATION.
2+
* SPDX-FileCopyrightText: Copyright (c) 2023-2025, NVIDIA CORPORATION.
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55
#pragma once
@@ -19,7 +19,6 @@
1919
#include <raft/core/logger.hpp>
2020
#include <raft/core/resource/cuda_stream.hpp>
2121
#include <raft/linalg/unary_op.cuh>
22-
#include <raft/neighbors/refine.cuh>
2322
#include <raft/util/cudart_utils.hpp>
2423
#include <rmm/cuda_stream_pool.hpp>
2524

cpp/include/cuvs/cluster/agglomerative.hpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,32 @@ void build_linkage(
227227
raft::device_vector_view<float, int64_t> out_distances,
228228
raft::device_vector_view<int64_t, int64_t> out_sizes,
229229
std::optional<raft::device_vector_view<float, int64_t>> core_dists);
230+
231+
/**
232+
* Build dendrogram from a Minimum Spanning Tree (MST).
233+
*
234+
* This function takes a sorted MST (represented as edges with source, destination, and weights)
235+
* and constructs a dendrogram (hierarchical clustering tree) on the host.
236+
*
237+
* @param[in] handle The raft resources handle
238+
* @param[in] rows Source nodes of the MST edges (device memory, size: nnz)
239+
* @param[in] cols Destination nodes of the MST edges (device memory, size: nnz)
240+
* @param[in] data Edge weights/distances of the MST (device memory, size: nnz)
241+
* @param[out] children Output dendrogram children array (device memory, size: nnz * 2)
242+
* Each pair of consecutive elements represents the two children
243+
* merged at each step of the hierarchy
244+
* @param[out] out_delta Output distances/heights at which clusters are merged (device memory, size:
245+
* nnz)
246+
* @param[out] out_size Output cluster sizes at each merge step (device memory, size: nnz)
247+
*/
248+
void build_dendrogram(raft::resources const& handle,
249+
raft::device_vector_view<const int64_t, int64_t> rows,
250+
raft::device_vector_view<const int64_t, int64_t> cols,
251+
raft::device_vector_view<const float, int64_t> data,
252+
raft::device_matrix_view<int64_t, int64_t, raft::row_major> children,
253+
raft::device_vector_view<float, int64_t> out_delta,
254+
raft::device_vector_view<int64_t, int64_t> out_size);
255+
230256
} // namespace helpers
231257
/**
232258
* @}

cpp/include/cuvs/embed/spectral.hpp

Lines changed: 0 additions & 29 deletions
This file was deleted.

cpp/src/cluster/agglomerative.cu

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* SPDX-FileCopyrightText: Copyright (c) 2025, NVIDIA CORPORATION.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
#include "./detail/agglomerative.cuh"
7+
8+
#include <cuvs/cluster/agglomerative.hpp>
9+
10+
namespace cuvs::cluster::agglomerative::helpers {
11+
12+
#define CUVS_INST_AGGLOMERATIVE(IdxT, ValueT) \
13+
void build_dendrogram(raft::resources const& handle, \
14+
raft::device_vector_view<const IdxT, IdxT> rows, \
15+
raft::device_vector_view<const IdxT, IdxT> cols, \
16+
raft::device_vector_view<const ValueT, IdxT> data, \
17+
raft::device_matrix_view<IdxT, IdxT, raft::row_major> children, \
18+
raft::device_vector_view<ValueT, IdxT> out_delta, \
19+
raft::device_vector_view<IdxT, IdxT> out_size) \
20+
{ \
21+
size_t nnz = rows.extent(0); \
22+
detail::build_dendrogram_host<IdxT, ValueT>(handle, \
23+
rows.data_handle(), \
24+
cols.data_handle(), \
25+
data.data_handle(), \
26+
nnz, \
27+
children.data_handle(), \
28+
out_delta.data_handle(), \
29+
out_size.data_handle()); \
30+
}
31+
32+
CUVS_INST_AGGLOMERATIVE(int64_t, float);
33+
34+
#undef CUVS_INST_AGGLOMERATIVE
35+
36+
} // namespace cuvs::cluster::agglomerative::helpers

cpp/src/distance/detail/sparse/lp_distance.cuh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION.
2+
* SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION.
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

@@ -10,7 +10,6 @@
1010
#include <raft/core/operators.cuh>
1111
#include <raft/core/operators.hpp>
1212
#include <raft/core/resource/cuda_stream.hpp>
13-
#include <raft/distance/distance_types.hpp>
1413
#include <raft/sparse/convert/coo.cuh>
1514
#include <raft/sparse/csr.hpp>
1615
#include <raft/sparse/detail/utils.h>

cpp/src/embed/spectral.cu

Lines changed: 0 additions & 42 deletions
This file was deleted.

cpp/src/neighbors/ball_cover.cuh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ namespace cuvs::neighbors::ball_cover::detail {
2727
* @code{.cpp}
2828
*
2929
* #include <raft/core/resources.hpp>
30-
* #include <raft/neighbors/ball_cover.cuh>
31-
* #include <raft/distance/distance_types.hpp>
32-
* using namespace raft::neighbors;
30+
* #include <cuvs/neighbors/ball_cover.cuh>
31+
* #include <cuvs/distance/distance.hpp>
32+
* using namespace cuvs::neighbors;
3333
*
3434
* raft::resources handle;
3535
* ...
@@ -359,9 +359,9 @@ void eps_nn(raft::resources const& handle,
359359
* @code{.cpp}
360360
*
361361
* #include <raft/core/resources.hpp>
362-
* #include <raft/neighbors/ball_cover.cuh>
363-
* #include <raft/distance/distance_types.hpp>
364-
* using namespace raft::neighbors;
362+
* #include <cuvs/neighbors/ball_cover.cuh>
363+
* #include <cuvs/distance/distance.hpp>
364+
* using namespace cuvs::neighbors;
365365
*
366366
* raft::resources handle;
367367
* ...

cpp/src/neighbors/detail/cagra/add_nodes.cuh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
#include <raft/core/mdspan_types.hpp>
1010
#include <raft/core/resource/cuda_stream.hpp>
1111
#include <raft/core/resources.hpp>
12-
#include <raft/spatial/knn/detail/ann_utils.cuh>
1312
#include <raft/stats/histogram.cuh>
1413

1514
#include <rmm/device_buffer.hpp>

cpp/src/neighbors/detail/knn_brute_force.cuh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#include <raft/matrix/init.cuh>
3232
#include <raft/sparse/convert/coo.cuh>
3333
#include <raft/sparse/convert/csr.cuh>
34-
#include <raft/sparse/distance/detail/utils.cuh>
3534
#include <raft/sparse/linalg/masked_matmul.hpp>
3635
#include <raft/sparse/matrix/select_k.cuh>
3736
#include <raft/util/cuda_utils.cuh>

0 commit comments

Comments
 (0)