Distance

View as Markdown

Source header: cuvs/distance/distance.hpp

Types

distance::DistanceType

enum to tell how to compute distance

enum class DistanceType : int {
L2Expanded = 0,
CosineExpanded = 2,
L1 = 3,
L2Unexpanded = 4,
InnerProduct = 6,
Linf = 7,
Canberra = 8,
LpUnexpanded = 9,
CorrelationExpanded = 10,
JaccardExpanded = 11,
HellingerExpanded = 12,
Haversine = 13,
BrayCurtis = 14,
JensenShannon = 15,
HammingUnexpanded = 16,
KLDivergence = 17,
RusselRaoExpanded = 18,
DiceExpanded = 19,
BitwiseHamming = 20,
Precomputed = 100,
CustomUDF = 101
};

Values

NameValue
L2Expanded0
CosineExpanded2
L13
L2Unexpanded4
InnerProduct6
Linf7
Canberra8
LpUnexpanded9
CorrelationExpanded10
JaccardExpanded11
HellingerExpanded12
Haversine13
BrayCurtis14
JensenShannon15
HammingUnexpanded16
KLDivergence17
RusselRaoExpanded18
DiceExpanded19
BitwiseHamming20
Precomputed100
CustomUDF101

distance::DensityKernelType

Density kernel type for Kernel Density Estimation.

These are the smoothing kernels used in KDE — distinct from the dot-product kernels (RBF, Polynomial, etc.) in cuvs::distance::kernels used by SVMs.

enum class DensityKernelType : int {
Gaussian = 0,
Tophat = 1,
Epanechnikov = 2,
Exponential = 3,
Linear = 4,
Cosine = 5
};

Values

NameValue
Gaussian0
Tophat1
Epanechnikov2
Exponential3
Linear4
Cosine5

distance::kernels::KernelParams

Parameters for kernel matrices.

The following kernels are implemented:

  • LINEAR K(x1,x2)=x1,x2,K(x_1,x_2) = \langle x_1,x_2 \rangle, where ,\langle , \rangle is the dot product
  • POLYNOMIAL K(x1,x2)=(γx1,x2+coef0)degreeK(x_1, x_2) = (\gamma \langle x_1,x_2 \rangle + \mathrm{coef0})^\mathrm{degree}
  • RBF K(x1,x2)=exp(γx1x22)K(x_1, x_2) = \exp(- \gamma \lVert x_1-x_2 \rVert^2)
  • TANH K(x1,x2)=tanh(γx1,x2+coef0)K(x_1, x_2) = \tanh(\gamma \langle x_1,x_2 \rangle + \mathrm{coef0})
struct KernelParams {
KernelType kernel;
int degree;
double gamma;
double coef0;
};

Fields

NameTypeDescription
kernelKernelType
degreeint
gammadouble
coef0double

Pairwise Distances API

distance::pairwise_distance

Compute pairwise distances for two matrices

void pairwise_distance(
raft::resources const& handle,
raft::device_matrix_view<const float, std::int64_t, raft::layout_c_contiguous> const x,
raft::device_matrix_view<const float, std::int64_t, raft::layout_c_contiguous> const y,
raft::device_matrix_view<float, std::int64_t, raft::layout_c_contiguous> dist,
cuvs::distance::DistanceType metric,
float metric_arg = 2.0f);

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

Usage example:

Parameters

NameDirectionTypeDescription
handleinraft::resources const&raft handle for managing expensive resources
xinraft::device_matrix_view<const float, std::int64_t, raft::layout_c_contiguous> constfirst set of points (size n*k)
yinraft::device_matrix_view<const float, std::int64_t, raft::layout_c_contiguous> constsecond set of points (size m*k)
distoutraft::device_matrix_view<float, std::int64_t, raft::layout_c_contiguous>output distance matrix (size n*m)
metricincuvs::distance::DistanceTypedistance to evaluate
metric_arginfloatmetric argument (used for Minkowski distance)
Default: 2.0f.

Returns

void

Additional overload: distance::pairwise_distance

Compute pairwise distances for two matrices

void pairwise_distance(
raft::resources const& handle,
raft::device_matrix_view<const double, std::int64_t, raft::layout_c_contiguous> const x,
raft::device_matrix_view<const double, std::int64_t, raft::layout_c_contiguous> const y,
raft::device_matrix_view<double, std::int64_t, raft::layout_c_contiguous> dist,
cuvs::distance::DistanceType metric,
double metric_arg = 2.0f);

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

Usage example:

Parameters

NameDirectionTypeDescription
handleinraft::resources const&raft handle for managing expensive resources
xinraft::device_matrix_view<const double, std::int64_t, raft::layout_c_contiguous> constfirst set of points (size n*k)
yinraft::device_matrix_view<const double, std::int64_t, raft::layout_c_contiguous> constsecond set of points (size m*k)
distoutraft::device_matrix_view<double, std::int64_t, raft::layout_c_contiguous>output distance matrix (size n*m)
metricincuvs::distance::DistanceTypedistance to evaluate
metric_argindoublemetric argument (used for Minkowski distance)
Default: 2.0f.

Returns

void

Additional overload: distance::pairwise_distance

Compute pairwise distances for two matrices

void pairwise_distance(
raft::resources const& handle,
raft::device_matrix_view<const half, std::int64_t, raft::layout_c_contiguous> const x,
raft::device_matrix_view<const half, std::int64_t, raft::layout_c_contiguous> const y,
raft::device_matrix_view<float, std::int64_t, raft::layout_c_contiguous> dist,
cuvs::distance::DistanceType metric,
float metric_arg = 2.0f);

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

Usage example:

Parameters

NameDirectionTypeDescription
handleinraft::resources const&raft handle for managing expensive resources
xinraft::device_matrix_view<const half, std::int64_t, raft::layout_c_contiguous> constfirst set of points (size n*k)
yinraft::device_matrix_view<const half, std::int64_t, raft::layout_c_contiguous> constsecond set of points (size m*k)
distoutraft::device_matrix_view<float, std::int64_t, raft::layout_c_contiguous>output distance matrix (size n*m)
metricincuvs::distance::DistanceTypedistance to evaluate
metric_arginfloatmetric argument (used for Minkowski distance)
Default: 2.0f.

Returns

void

Additional overload: distance::pairwise_distance

Compute pairwise distances for two matrices

void pairwise_distance(
raft::resources const& handle,
raft::device_matrix_view<const float, std::int64_t, raft::layout_f_contiguous> const x,
raft::device_matrix_view<const float, std::int64_t, raft::layout_f_contiguous> const y,
raft::device_matrix_view<float, std::int64_t, raft::layout_f_contiguous> dist,
cuvs::distance::DistanceType metric,
float metric_arg = 2.0f);

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

Usage example:

Parameters

NameDirectionTypeDescription
handleinraft::resources const&raft handle for managing expensive resources
xinraft::device_matrix_view<const float, std::int64_t, raft::layout_f_contiguous> constfirst set of points (size n*k)
yinraft::device_matrix_view<const float, std::int64_t, raft::layout_f_contiguous> constsecond set of points (size m*k)
distoutraft::device_matrix_view<float, std::int64_t, raft::layout_f_contiguous>output distance matrix (size n*m)
metricincuvs::distance::DistanceTypedistance to evaluate
metric_arginfloatmetric argument (used for Minkowski distance)
Default: 2.0f.

Returns

void

Additional overload: distance::pairwise_distance

Compute pairwise distances for two matrices

void pairwise_distance(
raft::resources const& handle,
raft::device_matrix_view<const double, std::int64_t, raft::layout_f_contiguous> const x,
raft::device_matrix_view<const double, std::int64_t, raft::layout_f_contiguous> const y,
raft::device_matrix_view<double, std::int64_t, raft::layout_f_contiguous> dist,
cuvs::distance::DistanceType metric,
double metric_arg = 2.0f);

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

Usage example:

Parameters

NameDirectionTypeDescription
handleinraft::resources const&raft handle for managing expensive resources
xinraft::device_matrix_view<const double, std::int64_t, raft::layout_f_contiguous> constfirst set of points (size n*k)
yinraft::device_matrix_view<const double, std::int64_t, raft::layout_f_contiguous> constsecond set of points (size m*k)
distoutraft::device_matrix_view<double, std::int64_t, raft::layout_f_contiguous>output distance matrix (size n*m)
metricincuvs::distance::DistanceTypedistance to evaluate
metric_argindoublemetric argument (used for Minkowski distance)
Default: 2.0f.

Returns

void

Additional overload: distance::pairwise_distance

Compute pairwise distances for two matrices

void pairwise_distance(
raft::resources const& handle,
raft::device_matrix_view<const half, std::int64_t, raft::layout_f_contiguous> const x,
raft::device_matrix_view<const half, std::int64_t, raft::layout_f_contiguous> const y,
raft::device_matrix_view<float, std::int64_t, raft::layout_f_contiguous> dist,
cuvs::distance::DistanceType metric,
float metric_arg = 2.0f);

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

Usage example:

Parameters

NameDirectionTypeDescription
handleinraft::resources const&raft handle for managing expensive resources
xinraft::device_matrix_view<const half, std::int64_t, raft::layout_f_contiguous> constfirst set of points (size n*k)
yinraft::device_matrix_view<const half, std::int64_t, raft::layout_f_contiguous> constsecond set of points (size m*k)
distoutraft::device_matrix_view<float, std::int64_t, raft::layout_f_contiguous>output distance matrix (size n*m)
metricincuvs::distance::DistanceTypedistance to evaluate
metric_arginfloatmetric argument (used for Minkowski distance)
Default: 2.0f.

Returns

void

Additional overload: distance::pairwise_distance

Compute sparse pairwise distances between x and y, using the provided input configuration and distance function.

void pairwise_distance(raft::resources const& handle,
raft::device_csr_matrix_view<const float, int, int, int> x,
raft::device_csr_matrix_view<const float, int, int, int> y,
raft::device_matrix_view<float, int, raft::row_major> dist,
cuvs::distance::DistanceType metric,
float metric_arg = 2.0f);

Parameters

NameDirectionTypeDescription
handleinraft::resources const&raft::resources
xinraft::device_csr_matrix_view<const float, int, int, int>raft::device_csr_matrix_view
yinraft::device_csr_matrix_view<const float, int, int, int>raft::device_csr_matrix_view
distoutraft::device_matrix_view<float, int, raft::row_major>raft::device_matrix_view dense matrix
metricincuvs::distance::DistanceTypedistance metric to use
metric_arginfloatmetric argument (used for Minkowski distance)
Default: 2.0f.

Returns

void

Additional overload: distance::pairwise_distance

Compute sparse pairwise distances between x and y, using the provided input configuration and distance function.

void pairwise_distance(raft::resources const& handle,
raft::device_csr_matrix_view<const double, int, int, int> x,
raft::device_csr_matrix_view<const double, int, int, int> y,
raft::device_matrix_view<double, int, raft::row_major> dist,
cuvs::distance::DistanceType metric,
float metric_arg = 2.0f);

Parameters

NameDirectionTypeDescription
handleinraft::resources const&raft::resources
xinraft::device_csr_matrix_view<const double, int, int, int>raft::device_csr_matrix_view
yinraft::device_csr_matrix_view<const double, int, int, int>raft::device_csr_matrix_view
distoutraft::device_matrix_view<double, int, raft::row_major>raft::device_matrix_view dense matrix
metricincuvs::distance::DistanceTypedistance metric to use
metric_arginfloatmetric argument (used for Minkowski distance)
Default: 2.0f.

Returns

void