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