Epsilon Neighborhood#
#include <raft/neighbors/epsilon_neighborhood.cuh>
namespace raft::neighbors::epsilon_neighborhood
-
template<typename value_t, typename idx_t, typename matrix_idx_t>
void eps_neighbors_l2sq(raft::resources const &handle, raft::device_matrix_view<const value_t, matrix_idx_t, row_major> x, raft::device_matrix_view<const value_t, matrix_idx_t, row_major> y, raft::device_matrix_view<bool, matrix_idx_t, row_major> adj, raft::device_vector_view<idx_t, matrix_idx_t> vd, value_t eps)# Computes epsilon neighborhood for the L2-Squared distance metric and given ball size. The epsilon neighbors is represented by a dense boolean adjacency matrix of size m * n and an array of degrees for each vertex, which can be used as a compressed sparse row (CSR) indptr array.
#include <raft/neighbors/epsilon_neighborhood.cuh> #include <raft/core/resources.hpp> #include <raft/core/device_mdarray.hpp> using namespace raft::neighbors; raft::raft::resources handle; ... auto adj = raft::make_device_matrix<bool>(handle, m * n); auto vd = raft::make_device_vector<int>(handle, m+1); epsilon_neighborhood::eps_neighbors_l2sq(handle, x, y, adj.view(), vd.view(), eps);
- Template Parameters:
value_t – IO and math type
idx_t – Index type
matrix_idx_t – matrix indexing type
- Parameters:
handle – [in] raft handle to manage library resources
x – [in] first matrix [row-major] [on device] [dim = m x k]
y – [in] second matrix [row-major] [on device] [dim = n x k]
adj – [out] adjacency matrix [row-major] [on device] [dim = m x n]
vd – [out] vertex degree array [on device] [len = m + 1]
vd + m
stores the total number of edges in the adjacency matrix. Pass a nullptr if you don’t need this info.eps – [in] defines epsilon neighborhood radius (should be passed as squared as we compute L2-squared distance in this method)