Pairwise Distance#

#include <raft/distance/distance.cuh>

namespace raft::distance

template<raft::distance::DistanceType DistT, typename DataT, typename AccT, typename OutT, typename layout = raft::layout_c_contiguous, typename IdxT = int>
void distance(raft::resources const &handle, raft::device_matrix_view<DataT, IdxT, layout> const x, raft::device_matrix_view<DataT, IdxT, layout> const y, raft::device_matrix_view<OutT, IdxT, layout> dist, DataT metric_arg = 2.0f)#

Evaluate pairwise distances for the simple use case.

Note: Only contiguous row- or column-major layouts supported currently.

Usage example:

#include <raft/core/resources.hpp>
#include <raft/core/device_mdarray.hpp>
#include <raft/random/make_blobs.cuh>
#include <raft/distance/distance.cuh>

raft::raft::resources handle;
int n_samples = 5000;
int n_features = 50;

auto input = raft::make_device_matrix<float>(handle, n_samples, n_features);
auto labels = raft::make_device_vector<int>(handle, n_samples);
auto output = raft::make_device_matrix<float>(handle, n_samples, n_samples);

raft::random::make_blobs(handle, input.view(), labels.view());
auto metric = raft::distance::DistanceType::L2SqrtExpanded;
raft::distance::pairwise_distance(handle, input.view(), input.view(), output.view(), metric);

Template Parameters:
  • DistanceType – which distance to evaluate

  • DataT – input argument type

  • AccT – accumulation type

  • OutT – output type

  • IdxT – Index type

Parameters:
  • handle – raft handle for managing expensive resources

  • x – first set of points (size n*k)

  • y – second set of points (size m*k)

  • dist – output distance matrix (size n*m)

  • metric_arg – metric argument (used for Minkowski distance)

template<typename Type, typename layout = layout_c_contiguous, typename IdxT = int>
void pairwise_distance(raft::resources const &handle, device_matrix_view<Type, IdxT, layout> const x, device_matrix_view<Type, IdxT, layout> const y, device_matrix_view<Type, IdxT, layout> dist, raft::distance::DistanceType metric, Type metric_arg = 2.0f)#

Convenience wrapper around ‘distance’ prim to convert runtime metric into compile time for the purpose of dispatch.

Template Parameters:
  • Type – input/accumulation/output data-type

  • IdxT – indexing type

Parameters:
  • handle – raft handle for managing expensive resources

  • x – first matrix of points (size mxk)

  • y – second matrix of points (size nxk)

  • dist – output distance matrix (size mxn)

  • metric – distance metric

  • metric_arg – metric argument (used for Minkowski distance)