Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1380,6 +1380,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"
Expand Down Expand Up @@ -1415,8 +1421,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
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion cpp/src/cluster/gmm.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

#pragma once

#include "gmm_impl.cuh"
#include "detail/gmm_impl.cuh"

#include <cuvs/cluster/gmm.hpp>

Expand Down
74 changes: 0 additions & 74 deletions cpp/src/cluster/gmm_double.cu

This file was deleted.

74 changes: 0 additions & 74 deletions cpp/src/cluster/gmm_float.cu

This file was deleted.

80 changes: 80 additions & 0 deletions cpp/src/cluster/gmm_inst.cu.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/*
* SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*/

#include <cluster/gmm.cuh>

#include <cuvs/cluster/gmm.hpp>

namespace {

using data_t = @data_type@;

} // namespace

namespace cuvs::cluster::gmm {

void fit(raft::resources const& handle,
const params& params,
raft::device_matrix_view<const data_t, int64_t> X,
raft::device_vector_view<data_t, int64_t> weights,
raft::device_matrix_view<data_t, int64_t> means,
raft::device_vector_view<data_t, int64_t> covariances,
raft::device_vector_view<data_t, int64_t> precisions_chol,
raft::device_vector_view<data_t, int64_t> precisions,
raft::device_vector_view<int, int64_t> labels,
raft::host_scalar_view<data_t> lower_bound,
raft::host_scalar_view<int> n_iter,
raft::host_scalar_view<bool> converged,
bool warm_start)
{
fit<data_t>(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<const data_t, int64_t> X,
raft::device_vector_view<const data_t, int64_t> weights,
raft::device_matrix_view<const data_t, int64_t> means,
raft::device_vector_view<const data_t, int64_t> precisions_chol,
raft::device_vector_view<int, int64_t> labels)
{
predict<data_t>(handle, params, X, weights, means, precisions_chol, labels);
}

void predict_proba(raft::resources const& handle,
const params& params,
raft::device_matrix_view<const data_t, int64_t> X,
raft::device_vector_view<const data_t, int64_t> weights,
raft::device_matrix_view<const data_t, int64_t> means,
raft::device_vector_view<const data_t, int64_t> precisions_chol,
raft::device_matrix_view<data_t, int64_t> resp)
{
predict_proba<data_t>(handle, params, X, weights, means, precisions_chol, resp);
}

void score_samples(raft::resources const& handle,
const params& params,
raft::device_matrix_view<const data_t, int64_t> X,
raft::device_vector_view<const data_t, int64_t> weights,
raft::device_matrix_view<const data_t, int64_t> means,
raft::device_vector_view<const data_t, int64_t> precisions_chol,
raft::device_vector_view<data_t, int64_t> log_prob_norm)
{
score_samples<data_t>(handle, params, X, weights, means, precisions_chol, log_prob_norm);
}

} // namespace cuvs::cluster::gmm
12 changes: 12 additions & 0 deletions cpp/src/cluster/gmm_matrix.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"_data": [
{
"data_type": "float",
"data_abbrev": "f"
},
{
"data_type": "double",
"data_abbrev": "d"
}
]
}
Loading