Distance

View as Markdown

Source header: cuvs/distance/distance.hpp

Types

distance::DistanceType

enum to tell how to compute distance

1enum class DistanceType : int { ... };

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.

1enum class DensityKernelType : int { ... };

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})
1struct KernelParams { ... };

Fields

NameTypeDescription
kernelKernelType
degreeint
gammadouble
coef0double

Pairwise Distances API

distance::pairwise_distance

Compute pairwise distances for two matrices

1void pairwise_distance(
2raft::resources const& handle,
3raft::device_matrix_view<const float, std::int64_t, raft::layout_c_contiguous> const x,
4raft::device_matrix_view<const float, std::int64_t, raft::layout_c_contiguous> const y,
5raft::device_matrix_view<float, std::int64_t, raft::layout_c_contiguous> dist,
6cuvs::distance::DistanceType metric,
7float 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

1void pairwise_distance(
2raft::resources const& handle,
3raft::device_matrix_view<const double, std::int64_t, raft::layout_c_contiguous> const x,
4raft::device_matrix_view<const double, std::int64_t, raft::layout_c_contiguous> const y,
5raft::device_matrix_view<double, std::int64_t, raft::layout_c_contiguous> dist,
6cuvs::distance::DistanceType metric,
7double 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

1void pairwise_distance(
2raft::resources const& handle,
3raft::device_matrix_view<const half, std::int64_t, raft::layout_c_contiguous> const x,
4raft::device_matrix_view<const half, std::int64_t, raft::layout_c_contiguous> const y,
5raft::device_matrix_view<float, std::int64_t, raft::layout_c_contiguous> dist,
6cuvs::distance::DistanceType metric,
7float 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

1void pairwise_distance(
2raft::resources const& handle,
3raft::device_matrix_view<const float, std::int64_t, raft::layout_f_contiguous> const x,
4raft::device_matrix_view<const float, std::int64_t, raft::layout_f_contiguous> const y,
5raft::device_matrix_view<float, std::int64_t, raft::layout_f_contiguous> dist,
6cuvs::distance::DistanceType metric,
7float 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

1void pairwise_distance(
2raft::resources const& handle,
3raft::device_matrix_view<const double, std::int64_t, raft::layout_f_contiguous> const x,
4raft::device_matrix_view<const double, std::int64_t, raft::layout_f_contiguous> const y,
5raft::device_matrix_view<double, std::int64_t, raft::layout_f_contiguous> dist,
6cuvs::distance::DistanceType metric,
7double 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

1void pairwise_distance(
2raft::resources const& handle,
3raft::device_matrix_view<const half, std::int64_t, raft::layout_f_contiguous> const x,
4raft::device_matrix_view<const half, std::int64_t, raft::layout_f_contiguous> const y,
5raft::device_matrix_view<float, std::int64_t, raft::layout_f_contiguous> dist,
6cuvs::distance::DistanceType metric,
7float 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

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

input configuration and distance function.

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

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

input configuration and distance function.

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