Distance#

Distance types#

#include <cuvs/distance/distance.h>

enum cuvsDistanceType#

enum to tell how to compute distance

Values:

enumerator L2Expanded#

evaluate as dist_ij = sum(x_ik^2) + sum(y_ij)^2 - 2*sum(x_ik * y_jk)

enumerator L2SqrtExpanded#

same as above, but inside the epilogue, perform square root operation

enumerator CosineExpanded#

cosine distance

enumerator L1#

L1 distance

enumerator L2Unexpanded#

evaluate as dist_ij += (x_ik - y-jk)^2

enumerator L2SqrtUnexpanded#

same as above, but inside the epilogue, perform square root operation

enumerator InnerProduct#

basic inner product

enumerator Linf#

Chebyshev (Linf) distance

enumerator Canberra#

Canberra distance

enumerator LpUnexpanded#

Generalized Minkowski distance

enumerator CorrelationExpanded#

Correlation distance

enumerator JaccardExpanded#

Jaccard distance

enumerator HellingerExpanded#

Hellinger distance

enumerator Haversine#

Haversine distance

enumerator BrayCurtis#

Bray-Curtis distance

enumerator JensenShannon#

Jensen-Shannon distance

enumerator HammingUnexpanded#

Hamming distance

enumerator KLDivergence#

KLDivergence

enumerator RusselRaoExpanded#

RusselRao

enumerator DiceExpanded#

Dice-Sorensen distance

enumerator BitwiseHamming#

Bitstring Hamming distance

enumerator Precomputed#

Precomputed (special value)

Pairwise distance#

#include <cuvs/distance/pairwise_distance.h>

cuvsError_t cuvsPairwiseDistance(
cuvsResources_t res,
DLManagedTensor *x,
DLManagedTensor *y,
DLManagedTensor *dist,
cuvsDistanceType metric,
float metric_arg
)#

Compute pairwise distances for two matrices.

Usage example:

#include <cuvs/core/c_api.h>
#include <cuvs/distance/pairwise_distance.h>

// Create cuvsResources_t
cuvsResources_t res;
cuvsError_t res_create_status = cuvsResourcesCreate(&res);

// Assume a populated `DLManagedTensor` type here
DLManagedTensor x;
DLManagedTensor y;
DLManagedTensor dist;

cuvsPairwiseDistance(res, &x, &y, &dist, L2SqrtUnexpanded, 2.0);

Parameters:
  • res[in] cuvs resources object for managing expensive resources

  • x[in] first set of points (size n*k)

  • y[in] second set of points (size m*k)

  • dist[out] output distance matrix (size n*m)

  • metric[in] distance to evaluate

  • metric_arg[in] metric argument (used for Minkowski distance)