From 3327b405db5540389458be70a82ea9bd8dbf6cfa Mon Sep 17 00:00:00 2001 From: aamijar Date: Thu, 24 Sep 2026 21:02:09 +0000 Subject: [PATCH 1/2] gmm-refactor-files --- cpp/CMakeLists.txt | 9 ++- cpp/src/cluster/{ => detail}/gmm_impl.cuh | 0 cpp/src/cluster/{ => detail}/gmm_kernels.cuh | 0 cpp/src/cluster/gmm.cuh | 2 +- cpp/src/cluster/gmm_double.cu | 74 ------------------ cpp/src/cluster/gmm_float.cu | 74 ------------------ cpp/src/cluster/gmm_inst.cu.in | 80 ++++++++++++++++++++ cpp/src/cluster/gmm_matrix.json | 12 +++ 8 files changed, 100 insertions(+), 151 deletions(-) rename cpp/src/cluster/{ => detail}/gmm_impl.cuh (100%) rename cpp/src/cluster/{ => detail}/gmm_kernels.cuh (100%) delete mode 100644 cpp/src/cluster/gmm_double.cu delete mode 100644 cpp/src/cluster/gmm_float.cu create mode 100644 cpp/src/cluster/gmm_inst.cu.in create mode 100644 cpp/src/cluster/gmm_matrix.json diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index ef9977f72c..7a1e3798ce 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -1372,6 +1372,12 @@ if(NOT BUILD_CPU_ONLY) OUTPUT_FILE_FORMAT "${CMAKE_CURRENT_BINARY_DIR}/src/neighbors/ivf_pq/detail/ivf_pq_transform_inst_data_@data_abbrev@_index_@index_abbrev@.cu" ) + generate_inst_matrix( + gmm_inst_files + MATRIX_JSON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/cluster/gmm_matrix.json" + INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/cluster/gmm_inst.cu.in" + OUTPUT_FILE_FORMAT "${CMAKE_CURRENT_BINARY_DIR}/src/cluster/gmm_inst_data_@data_abbrev@.cu" + ) generate_inst_matrix( nn_descent_inst_files MATRIX_JSON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/neighbors/nn_descent_matrix.json" @@ -1407,8 +1413,7 @@ if(NOT BUILD_CPU_ONLY) cuvs_objs OBJECT src/cluster/detail/minClusterDistanceCompute.cu src/cluster/agglomerative.cu - src/cluster/gmm_double.cu - src/cluster/gmm_float.cu + ${gmm_inst_files} src/cluster/kmeans_cluster_cost.cu src/cluster/kmeans_fit_double.cu src/cluster/kmeans_fit_float.cu diff --git a/cpp/src/cluster/gmm_impl.cuh b/cpp/src/cluster/detail/gmm_impl.cuh similarity index 100% rename from cpp/src/cluster/gmm_impl.cuh rename to cpp/src/cluster/detail/gmm_impl.cuh diff --git a/cpp/src/cluster/gmm_kernels.cuh b/cpp/src/cluster/detail/gmm_kernels.cuh similarity index 100% rename from cpp/src/cluster/gmm_kernels.cuh rename to cpp/src/cluster/detail/gmm_kernels.cuh diff --git a/cpp/src/cluster/gmm.cuh b/cpp/src/cluster/gmm.cuh index 5d3e8c797f..960804b14b 100644 --- a/cpp/src/cluster/gmm.cuh +++ b/cpp/src/cluster/gmm.cuh @@ -5,7 +5,7 @@ #pragma once -#include "gmm_impl.cuh" +#include "detail/gmm_impl.cuh" #include diff --git a/cpp/src/cluster/gmm_double.cu b/cpp/src/cluster/gmm_double.cu deleted file mode 100644 index 53d76695cb..0000000000 --- a/cpp/src/cluster/gmm_double.cu +++ /dev/null @@ -1,74 +0,0 @@ -/* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "gmm.cuh" - -#include - -namespace cuvs::cluster::gmm { - -void fit(raft::resources const& handle, - const params& params, - raft::device_matrix_view X, - raft::device_vector_view weights, - raft::device_matrix_view means, - raft::device_vector_view covariances, - raft::device_vector_view precisions_chol, - raft::device_vector_view precisions, - raft::device_vector_view labels, - raft::host_scalar_view lower_bound, - raft::host_scalar_view n_iter, - raft::host_scalar_view converged, - bool warm_start) -{ - fit(handle, - params, - X, - weights, - means, - covariances, - precisions_chol, - precisions, - labels, - lower_bound, - n_iter, - converged, - warm_start); -} - -void predict(raft::resources const& handle, - const params& params, - raft::device_matrix_view X, - raft::device_vector_view weights, - raft::device_matrix_view means, - raft::device_vector_view precisions_chol, - raft::device_vector_view labels) -{ - predict(handle, params, X, weights, means, precisions_chol, labels); -} - -void predict_proba(raft::resources const& handle, - const params& params, - raft::device_matrix_view X, - raft::device_vector_view weights, - raft::device_matrix_view means, - raft::device_vector_view precisions_chol, - raft::device_matrix_view resp) -{ - predict_proba(handle, params, X, weights, means, precisions_chol, resp); -} - -void score_samples(raft::resources const& handle, - const params& params, - raft::device_matrix_view X, - raft::device_vector_view weights, - raft::device_matrix_view means, - raft::device_vector_view precisions_chol, - raft::device_vector_view log_prob_norm) -{ - score_samples(handle, params, X, weights, means, precisions_chol, log_prob_norm); -} - -} // namespace cuvs::cluster::gmm diff --git a/cpp/src/cluster/gmm_float.cu b/cpp/src/cluster/gmm_float.cu deleted file mode 100644 index b55a7e4071..0000000000 --- a/cpp/src/cluster/gmm_float.cu +++ /dev/null @@ -1,74 +0,0 @@ -/* - * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "gmm.cuh" - -#include - -namespace cuvs::cluster::gmm { - -void fit(raft::resources const& handle, - const params& params, - raft::device_matrix_view X, - raft::device_vector_view weights, - raft::device_matrix_view means, - raft::device_vector_view covariances, - raft::device_vector_view precisions_chol, - raft::device_vector_view precisions, - raft::device_vector_view labels, - raft::host_scalar_view lower_bound, - raft::host_scalar_view n_iter, - raft::host_scalar_view converged, - bool warm_start) -{ - fit(handle, - params, - X, - weights, - means, - covariances, - precisions_chol, - precisions, - labels, - lower_bound, - n_iter, - converged, - warm_start); -} - -void predict(raft::resources const& handle, - const params& params, - raft::device_matrix_view X, - raft::device_vector_view weights, - raft::device_matrix_view means, - raft::device_vector_view precisions_chol, - raft::device_vector_view labels) -{ - predict(handle, params, X, weights, means, precisions_chol, labels); -} - -void predict_proba(raft::resources const& handle, - const params& params, - raft::device_matrix_view X, - raft::device_vector_view weights, - raft::device_matrix_view means, - raft::device_vector_view precisions_chol, - raft::device_matrix_view resp) -{ - predict_proba(handle, params, X, weights, means, precisions_chol, resp); -} - -void score_samples(raft::resources const& handle, - const params& params, - raft::device_matrix_view X, - raft::device_vector_view weights, - raft::device_matrix_view means, - raft::device_vector_view precisions_chol, - raft::device_vector_view log_prob_norm) -{ - score_samples(handle, params, X, weights, means, precisions_chol, log_prob_norm); -} - -} // namespace cuvs::cluster::gmm diff --git a/cpp/src/cluster/gmm_inst.cu.in b/cpp/src/cluster/gmm_inst.cu.in new file mode 100644 index 0000000000..02fbec6a5d --- /dev/null +++ b/cpp/src/cluster/gmm_inst.cu.in @@ -0,0 +1,80 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "gmm.cuh" + +#include + +namespace { + +using data_t = @data_type@; + +} // namespace + +namespace cuvs::cluster::gmm { + +void fit(raft::resources const& handle, + const params& params, + raft::device_matrix_view X, + raft::device_vector_view weights, + raft::device_matrix_view means, + raft::device_vector_view covariances, + raft::device_vector_view precisions_chol, + raft::device_vector_view precisions, + raft::device_vector_view labels, + raft::host_scalar_view lower_bound, + raft::host_scalar_view n_iter, + raft::host_scalar_view converged, + bool warm_start) +{ + fit(handle, + params, + X, + weights, + means, + covariances, + precisions_chol, + precisions, + labels, + lower_bound, + n_iter, + converged, + warm_start); +} + +void predict(raft::resources const& handle, + const params& params, + raft::device_matrix_view X, + raft::device_vector_view weights, + raft::device_matrix_view means, + raft::device_vector_view precisions_chol, + raft::device_vector_view labels) +{ + predict(handle, params, X, weights, means, precisions_chol, labels); +} + +void predict_proba(raft::resources const& handle, + const params& params, + raft::device_matrix_view X, + raft::device_vector_view weights, + raft::device_matrix_view means, + raft::device_vector_view precisions_chol, + raft::device_matrix_view resp) +{ + predict_proba(handle, params, X, weights, means, precisions_chol, resp); +} + +void score_samples(raft::resources const& handle, + const params& params, + raft::device_matrix_view X, + raft::device_vector_view weights, + raft::device_matrix_view means, + raft::device_vector_view precisions_chol, + raft::device_vector_view log_prob_norm) +{ + score_samples(handle, params, X, weights, means, precisions_chol, log_prob_norm); +} + +} // namespace cuvs::cluster::gmm diff --git a/cpp/src/cluster/gmm_matrix.json b/cpp/src/cluster/gmm_matrix.json new file mode 100644 index 0000000000..c8d9776032 --- /dev/null +++ b/cpp/src/cluster/gmm_matrix.json @@ -0,0 +1,12 @@ +{ + "_data": [ + { + "data_type": "float", + "data_abbrev": "f" + }, + { + "data_type": "double", + "data_abbrev": "d" + } + ] +} From fce038911c1bb888e5b2d345396d2bb158231e06 Mon Sep 17 00:00:00 2001 From: aamijar Date: Thu, 24 Sep 2026 21:08:47 +0000 Subject: [PATCH 2/2] fix header --- cpp/src/cluster/gmm_inst.cu.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/cluster/gmm_inst.cu.in b/cpp/src/cluster/gmm_inst.cu.in index 02fbec6a5d..06318c9495 100644 --- a/cpp/src/cluster/gmm_inst.cu.in +++ b/cpp/src/cluster/gmm_inst.cu.in @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include "gmm.cuh" +#include #include