Attention

The vector search and clustering algorithms in RAFT are being migrated to a new library dedicated to vector search called cuVS. We will continue to support the vector search algorithms in RAFT during this move, but will no longer update them after the RAPIDS 24.06 (June) release. We plan to complete the migration by RAPIDS 24.10 (October) release and they will be removed from RAFT altogether in the 24.12 (December) release.

Arithmetic#

Addition#

#include <raft/linalg/add.cuh>

namespace raft::linalg

template<typename InType, typename OutType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void add(raft::resources const &handle, InType in1, InType in2, OutType out)#

Elementwise add operation.

Template Parameters:
Parameters:
  • handle[in] raft::resources

  • in1[in] First Input

  • in2[in] Second Input

  • out[out] Output

template<typename InType, typename OutType, typename ScalarIdxType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void add_scalar(raft::resources const &handle, InType in, OutType out, raft::device_scalar_view<const typename InType::value_type, ScalarIdxType> scalar)#

Elementwise addition of device scalar to input.

Template Parameters:
Parameters:
template<typename InType, typename OutType, typename ScalarIdxType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void add_scalar(raft::resources const &handle, const InType in, OutType out, raft::host_scalar_view<const typename InType::value_type, ScalarIdxType> scalar)#

Elementwise addition of host scalar to input.

Template Parameters:
Parameters:
  • handle[in] raft::resources

  • in[in] Input

  • scalar[in] raft::host_scalar_view

  • out[in] Output

Binary Op#

#include <raft/linalg/binary_op.cuh>

namespace raft::linalg

template<typename InType, typename Lambda, typename OutType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void binary_op(raft::resources const &handle, InType in1, InType in2, OutType out, Lambda op)#

perform element-wise binary operation on the input arrays

Note

Lambda must be a functor with the following signature: OutType func(const InType& val1, const InType& val2);

Template Parameters:
Parameters:
  • handle[in] raft::resources

  • in1[in] First input

  • in2[in] Second input

  • out[out] Output

  • op[in] the device-lambda

Division#

#include <raft/linalg/divide.cuh>

namespace raft::linalg

template<typename InType, typename OutType, typename ScalarIdxType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void divide_scalar(raft::resources const &handle, InType in, OutType out, raft::host_scalar_view<const typename InType::value_type, ScalarIdxType> scalar)#

Elementwise division of input by host scalar.

Template Parameters:
Parameters:
  • handle[in] raft::resources

  • in[in] Input

  • scalar[in] raft::host_scalar_view

  • out[out] Output

Multiplication#

#include <raft/linalg/multiply.cuh>

namespace raft::linalg

template<typename InType, typename OutType, typename ScalarIdxType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void multiply_scalar(raft::resources const &handle, InType in, OutType out, raft::host_scalar_view<const typename InType::value_type, ScalarIdxType> scalar)#

Element-wise multiplication of host scalar.

Template Parameters:
Parameters:
  • handle[in] raft::resources

  • in[in] the input buffer

  • out[out] the output buffer

  • scalar[in] the scalar used in the operations

Power#

#include <raft/linalg/power.cuh>

namespace raft::linalg

template<typename InType, typename OutType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void power(raft::resources const &handle, InType in1, InType in2, OutType out)#

Elementwise power operation on the input buffers.

Template Parameters:
Parameters:
  • handle[in] raft::resources

  • in1[in] First Input

  • in2[in] Second Input

  • out[out] Output

template<typename InType, typename OutType, typename ScalarIdxType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void power_scalar(raft::resources const &handle, InType in, OutType out, const raft::host_scalar_view<const typename InType::value_type, ScalarIdxType> scalar)#

Elementwise power of host scalar to input.

Template Parameters:
Parameters:
  • handle[in] raft::resources

  • in[in] Input

  • out[out] Output

  • scalar[in] raft::host_scalar_view

Square Root#

#include <raft/linalg/sqrt.cuh>

namespace raft::linalg

template<typename InType, typename OutType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void sqrt(raft::resources const &handle, InType in, OutType out)#

Elementwise sqrt operation.

Template Parameters:
Parameters:
  • handle[in] raft::resources

  • in[in] Input

  • out[out] Output

Subtraction#

#include <raft/linalg/subtract.cuh>

namespace raft::linalg

template<typename InType, typename OutType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void subtract(raft::resources const &handle, InType in1, InType in2, OutType out)#

Elementwise subtraction operation on the input buffers.

Template Parameters:
Parameters:
  • handle – raft::resources

  • in1[in] First Input

  • in2[in] Second Input

  • out[out] Output

template<typename InType, typename OutType, typename ScalarIdxType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void subtract_scalar(raft::resources const &handle, InType in, OutType out, raft::device_scalar_view<const typename InType::element_type, ScalarIdxType> scalar)#

Elementwise subtraction of device scalar to input.

Template Parameters:
Parameters:
template<typename InType, typename OutType, typename ScalarIdxType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void subtract_scalar(raft::resources const &handle, InType in, OutType out, raft::host_scalar_view<const typename InType::element_type, ScalarIdxType> scalar)#

Elementwise subtraction of host scalar to input.

Template Parameters:
Parameters:
  • handle[in] raft::resources

  • in[in] Input

  • out[out] Output

  • scalar[in] raft::host_scalar_view

Ternary Op#

#include <raft/linalg/ternary_op.cuh>

namespace raft::linalg

template<typename InType, typename Lambda, typename OutType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void ternary_op(raft::resources const &handle, InType in1, InType in2, InType in3, OutType out, Lambda op)#

perform element-wise ternary operation on the input arrays

Note

Lambda must be a functor with the following signature: OutType func(const InType& val1, const InType& val2, const InType& val3);

Template Parameters:
Parameters:
  • handle[in] raft::resources

  • in1[in] First input

  • in2[in] Second input

  • in3[in] Third input

  • out[out] Output

  • op[in] the device-lambda

Unary Op#

#include <raft/linalg/unary_op.cuh>

namespace raft::linalg

template<typename InType, typename Lambda, typename OutType, typename = raft::enable_if_input_device_mdspan<InType>, typename = raft::enable_if_output_device_mdspan<OutType>>
void unary_op(raft::resources const &handle, InType in, OutType out, Lambda op)#

Perform an element-wise unary operation into the output array.

Template Parameters:
  • InType – Input Type raft::device_mdspan

  • Lambda – Device lambda performing the actual operation, with the signature out_value_t func(const in_value_t& val);

  • OutType – Output Type raft::device_mdspan

Parameters:
  • handle[in] The raft handle

  • in[in] Input

  • out[out] Output

  • op[in] Device lambda

template<typename OutType, typename Lambda, typename = raft::enable_if_output_device_mdspan<OutType>>
void write_only_unary_op(const raft::resources &handle, OutType out, Lambda op)#

Perform an element-wise unary operation on the input index into the output array.

Note

This operation is deprecated. Please use map_offset in raft/linalg/map.cuh instead.

Template Parameters:
  • OutType – Output Type raft::device_mdspan

  • Lambda – Device lambda performing the actual operation, with the signature void func(out_value_t* out_location, index_t idx);

Parameters:
  • handle[in] The raft handle

  • out[out] Output

  • op[in] Device lambda