diff --git a/cpp/bench/sg/umap.cu b/cpp/bench/sg/umap.cu index 4334a82983..93f827b188 100644 --- a/cpp/bench/sg/umap.cu +++ b/cpp/bench/sg/umap.cu @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020-2024, NVIDIA CORPORATION. + * Copyright (c) 2020-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. @@ -167,7 +167,6 @@ class UmapTransform : public UmapBase { this->params.nrows, this->params.ncols, this->data.X.data(), - this->params.nrows, embeddings, this->params.nrows, &uParams, diff --git a/cpp/include/cuml/manifold/umap.hpp b/cpp/include/cuml/manifold/umap.hpp index 7de08c5488..f9cbefed51 100644 --- a/cpp/include/cuml/manifold/umap.hpp +++ b/cpp/include/cuml/manifold/umap.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019-2024, NVIDIA CORPORATION. + * Copyright (c) 2019-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. @@ -168,10 +168,9 @@ void fit_sparse(const raft::handle_t& handle, * @param[in] X: pointer to input array to be inferred * @param[in] n: n_samples of input array to be inferred * @param[in] d: n_features of input array to be inferred - * @param[in] orig_X: pointer to original training array - * @param[in] orig_n: number of rows in original training array - * @param[in] embedding: pointer to embedding created during training - * @param[in] embedding_n: number of rows in embedding created during training + * @param[in] trained_X: pointer to original training array + * @param[in] trained_embeddings: pointer to embedding created during training + * @param[in] n_trained: number of rows in original training input * @param[in] params: pointer to ML::UMAPParams object * @param[out] transformed: pointer to embedding produced through projection */ @@ -179,10 +178,9 @@ void transform(const raft::handle_t& handle, float* X, int n, int d, - float* orig_X, - int orig_n, - float* embedding, - int embedding_n, + float* trained_X, + float* trained_embeddings, + int n_trained, UMAPParams* params, float* transformed); @@ -196,13 +194,12 @@ void transform(const raft::handle_t& handle, * @param[in] nnz: number of stored values of input array to be inferred * @param[in] n: n_samples of input array * @param[in] d: n_features of input array - * @param[in] orig_x_indptr: pointer to index pointer array of original training array - * @param[in] orig_x_indices: pointer to index array of original training array - * @param[in] orig_x_data: pointer to data array of original training array - * @param[in] orig_nnz: number of stored values of original training array - * @param[in] orig_n: number of rows in original training array - * @param[in] embedding: pointer to embedding created during training - * @param[in] embedding_n: number of rows in embedding created during training + * @param[in] trained_indptr: pointer to index pointer array of original training array + * @param[in] trained_indices: pointer to index array of original training array + * @param[in] trained_data: pointer to data array of original training array + * @param[in] trained_nnz: number of stored values of original training array + * @param[in] trained_embedding: pointer to embedding created during training + * @param[in] n_trained: number of rows in original training input * @param[in] params: pointer to ML::UMAPParams object * @param[out] transformed: pointer to embedding produced through projection */ @@ -213,13 +210,12 @@ void transform_sparse(const raft::handle_t& handle, size_t nnz, int n, int d, - int* orig_x_indptr, - int* orig_x_indices, - float* orig_x_data, - size_t orig_nnz, - int orig_n, - float* embedding, - int embedding_n, + int* trained_indptr, + int* trained_indices, + float* trained_data, + size_t trained_nnz, + float* trained_embedding, + int n_trained, UMAPParams* params, float* transformed); diff --git a/cpp/src/umap/runner.cuh b/cpp/src/umap/runner.cuh index d726a78a54..7050681565 100644 --- a/cpp/src/umap/runner.cuh +++ b/cpp/src/umap/runner.cuh @@ -62,7 +62,6 @@ CUML_KERNEL void init_transform(int* indices, T* weights, int n, const T* embeddings, - int embeddings_n, int n_components, T* result, int n_neighbors) @@ -302,9 +301,8 @@ void _fit_supervised(const raft::handle_t& handle, template void _transform(const raft::handle_t& handle, const umap_inputs& inputs, - umap_inputs& orig_x_inputs, - value_t* embedding, - int embedding_n, + umap_inputs& fitted_inputs, + value_t* fitted_embeddings, UMAPParams* params, value_t* transformed) { @@ -343,7 +341,7 @@ void _transform(const raft::handle_t& handle, } kNNGraph::run( - handle, orig_x_inputs, inputs, knn_graph, k, params, stream); + handle, fitted_inputs, inputs, knn_graph, k, params, stream); raft::common::nvtx::pop_range(); @@ -424,8 +422,7 @@ void _transform(const raft::handle_t& handle, init_transform<<>>(graph_coo.cols(), vals_normed.data(), graph_coo.n_rows, - embedding, - embedding_n, + fitted_embeddings, params->n_components, transformed, params->n_neighbors); @@ -490,8 +487,8 @@ void _transform(const raft::handle_t& handle, SimplSetEmbedImpl::optimize_layout(transformed, inputs.n, - embedding, - embedding_n, + fitted_embeddings, + fitted_inputs.n, comp_coo.rows(), comp_coo.cols(), comp_coo.nnz, diff --git a/cpp/src/umap/umap.cu b/cpp/src/umap/umap.cu index 4131faf13d..2828283937 100644 --- a/cpp/src/umap/umap.cu +++ b/cpp/src/umap/umap.cu @@ -134,18 +134,17 @@ void transform(const raft::handle_t& handle, float* X, int n, int d, - float* orig_X, - int orig_n, - float* embedding, - int embedding_n, + float* trained_X, + float* trained_embeddings, + int n_trained, UMAPParams* params, float* transformed) { if (dispatch_to_uint64_t(n, params->n_neighbors, params->n_components)) _transform( - handle, X, n, d, orig_X, orig_n, embedding, embedding_n, params, transformed); + handle, X, n, d, trained_X, trained_embeddings, n_trained, params, transformed); else - _transform(handle, X, n, d, orig_X, orig_n, embedding, embedding_n, params, transformed); + _transform(handle, X, n, d, trained_X, trained_embeddings, n_trained, params, transformed); } void transform_sparse(const raft::handle_t& handle, @@ -155,13 +154,12 @@ void transform_sparse(const raft::handle_t& handle, size_t nnz, int n, int d, - int* orig_x_indptr, - int* orig_x_indices, - float* orig_x_data, - size_t orig_nnz, - int orig_n, - float* embedding, - int embedding_n, + int* trained_indptr, + int* trained_indices, + float* trained_data, + size_t trained_nnz, + float* trained_embedding, + int n_trained, UMAPParams* params, float* transformed) { @@ -173,13 +171,12 @@ void transform_sparse(const raft::handle_t& handle, nnz, n, d, - orig_x_indptr, - orig_x_indices, - orig_x_data, - orig_nnz, - orig_n, - embedding, - embedding_n, + trained_indptr, + trained_indices, + trained_data, + trained_nnz, + trained_embedding, + n_trained, params, transformed); else @@ -190,13 +187,12 @@ void transform_sparse(const raft::handle_t& handle, nnz, n, d, - orig_x_indptr, - orig_x_indices, - orig_x_data, - orig_nnz, - orig_n, - embedding, - embedding_n, + trained_indptr, + trained_indices, + trained_data, + trained_nnz, + trained_embedding, + n_trained, params, transformed); } diff --git a/cpp/src/umap/umap.cuh b/cpp/src/umap/umap.cuh index 1a902d488d..7b125d603f 100644 --- a/cpp/src/umap/umap.cuh +++ b/cpp/src/umap/umap.cuh @@ -219,19 +219,18 @@ inline void _transform(const raft::handle_t& handle, float* X, int n, int d, - float* orig_X, - int orig_n, - float* embedding, - int embedding_n, + float* trained_X, + float* trained_embeddings, + int n_trained, UMAPParams* params, float* transformed) { RAFT_EXPECTS(params->build_algo == ML::UMAPParams::graph_build_algo::BRUTE_FORCE_KNN, "build algo nn_descent not supported for transform()"); manifold_dense_inputs_t inputs(X, nullptr, n, d); - manifold_dense_inputs_t orig_inputs(orig_X, nullptr, orig_n, d); + manifold_dense_inputs_t trained_inputs(trained_X, nullptr, n_trained, d); UMAPAlgo::_transform, nnz_t, TPB_X>( - handle, inputs, orig_inputs, embedding, embedding_n, params, transformed); + handle, inputs, trained_inputs, trained_embeddings, params, transformed); } template @@ -242,13 +241,12 @@ inline void _transform_sparse(const raft::handle_t& handle, size_t nnz, int n, int d, - int* orig_x_indptr, - int* orig_x_indices, - float* orig_x_data, - size_t orig_nnz, - int orig_n, - float* embedding, - int embedding_n, + int* trained_indptr, + int* trained_indices, + float* trained_data, + size_t trained_nnz, + float* trained_embedding, + int n_trained, UMAPParams* params, float* transformed) { @@ -256,12 +254,12 @@ inline void _transform_sparse(const raft::handle_t& handle, "build algo nn_descent not supported for transform()"); manifold_sparse_inputs_t inputs( indptr, indices, data, nullptr, nnz, n, d); - manifold_sparse_inputs_t orig_x_inputs( - orig_x_indptr, orig_x_indices, orig_x_data, nullptr, orig_nnz, orig_n, d); + manifold_sparse_inputs_t trained_inputs( + trained_indptr, trained_indices, trained_data, nullptr, trained_nnz, n_trained, d); UMAPAlgo:: _transform, nnz_t, TPB_X>( - handle, inputs, orig_x_inputs, embedding, embedding_n, params, transformed); + handle, inputs, trained_inputs, trained_embedding, params, transformed); } } // namespace UMAP diff --git a/cpp/tests/sg/umap_parametrizable_test.cu b/cpp/tests/sg/umap_parametrizable_test.cu index 5e477f104e..3f1c8c39e8 100644 --- a/cpp/tests/sg/umap_parametrizable_test.cu +++ b/cpp/tests/sg/umap_parametrizable_test.cu @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020-2024, NVIDIA CORPORATION. + * Copyright (c) 2020-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. @@ -209,7 +209,6 @@ class UMAPParametrizableTest : public ::testing::Test { n_samples, umap_params.n_components, X, - n_samples, model_embedding, n_samples, &umap_params, diff --git a/python/cuml/cuml/manifold/umap.pyx b/python/cuml/cuml/manifold/umap.pyx index 617a08caeb..b5c76b0dcb 100644 --- a/python/cuml/cuml/manifold/umap.pyx +++ b/python/cuml/cuml/manifold/umap.pyx @@ -108,10 +108,9 @@ IF GPUBUILD == 1: float * X, int n, int d, - float * orig_X, - int orig_n, + float * trained_X, float * embedding, - int embedding_n, + int n_trained, UMAPParams * params, float * out) except + @@ -122,13 +121,12 @@ IF GPUBUILD == 1: size_t nnz, int n, int d, - int *orig_x_indptr, - int *orig_x_indices, - float *orig_x_data, - size_t orig_nnz, - int orig_n, - float *embedding, - int embedding_n, + int *trained_x_indptr, + int *trained_x_indices, + float *trained_x_data, + size_t trained_nnz, + float *trained_embedding, + int n_trained, UMAPParams *params, float *transformed) except + @@ -832,7 +830,6 @@ class UMAP(UniversalBase, self._raw_data.indices.ptr, self._raw_data.data.ptr, self._raw_data.nnz, - self._raw_data.shape[0], _embed_ptr, self._raw_data.shape[0], umap_params, @@ -843,9 +840,8 @@ class UMAP(UniversalBase, n_rows, n_cols, self._raw_data.ptr, - self._raw_data.shape[0], _embed_ptr, - n_rows, + self._raw_data.shape[0], umap_params, _xformed_ptr) self.handle.sync()