remora::detail Namespace Reference

Classes

struct  induced_matrix_adaptor_element
 
struct  induced_matrix_element
 
struct  induced_vector_adaptor_element
 
struct  induced_vector_element
 
struct  matrix_inverse_optimizer
 
struct  matrix_matrix_prod_optimizer< M1, matrix_inverse< M2, Tag > >
 
struct  matrix_matrix_prod_optimizer< matrix_inverse< M1, Tag >, M2 >
 
struct  matrix_matrix_solve_optimizer
 
struct  matrix_row_optimizer< matrix_inverse< M, Tag > >
 
struct  matrix_row_optimizer< matrix_matrix_solve< M1, M2, Tag, left > >
 
struct  matrix_row_optimizer< matrix_matrix_solve< M1, M2, Tag, right > >
 
struct  matrix_transpose_optimizer< matrix_inverse< M, Tag > >
 
struct  matrix_transpose_optimizer< matrix_matrix_solve< M1, M2, Tag, system_tag< Left > > >
 
struct  matrix_vector_prod_optimizer< matrix_inverse< M, Tag >, V >
 
struct  matrix_vector_prod_optimizer< matrix_matrix_solve< M1, M2, Tag, left >, V >
 
struct  matrix_vector_prod_optimizer< matrix_matrix_solve< M1, M2, Tag, right >, V >
 
struct  matrix_vector_solve_optimizer
 
struct  solve_tag_transpose_helper
 
struct  solve_tag_transpose_helper< triangular_tag< Upper, Unit > >
 
struct  solver_traits
 
struct  solver_traits< MatA, conjugate_gradient >
 
struct  solver_traits< MatA, indefinite_full_rank >
 
struct  solver_traits< MatA, symm_pos_def >
 
struct  solver_traits< MatA, symm_semi_pos_def >
 
struct  solver_traits< MatA, triangular_tag< Upper, Unit > >
 

Functions

template<class VecX , class VecV , class Device >
void assign (vector_expression< VecX, Device > &x, vector_expression< VecV, Device > const &v, elementwise_tag)
 
template<class VecX , class VecV , class Device >
void assign (vector_expression< VecX, Device > &x, vector_expression< VecV, Device > const &v, elementwise_tag, typename VecX::value_type alpha)
 
template<class VecX , class VecV , class Device >
void assign (vector_expression< VecX, Device > &x, vector_expression< VecV, Device > const &v, blockwise_tag, typename VecX::value_type alpha=1)
 
template<class VecX , class VecV , class Device >
void plus_assign (vector_expression< VecX, Device > &x, vector_expression< VecV, Device > const &v, elementwise_tag)
 
template<class VecX , class VecV , class Device >
void plus_assign (vector_expression< VecX, Device > &x, vector_expression< VecV, Device > const &v, elementwise_tag, typename VecX::value_type alpha)
 
template<class VecX , class VecV , class Device >
void plus_assign (vector_expression< VecX, Device > &x, vector_expression< VecV, Device > const &v, blockwise_tag, typename VecX::value_type alpha=1)
 
template<class MatA , class MatB , class Device >
void assign (matrix_expression< MatA, Device > &A, matrix_expression< MatB, Device > const &B, elementwise_tag)
 
template<class MatA , class MatB , class Device >
void assign (matrix_expression< MatA, Device > &A, matrix_expression< MatB, Device > const &B, elementwise_tag, typename MatA::value_type alpha)
 
template<class MatA , class MatB , class Device >
void assign (matrix_expression< MatA, Device > &A, matrix_expression< MatB, Device > const &B, blockwise_tag, typename MatA::value_type alpha=1)
 
template<class MatA , class MatB , class Device >
void plus_assign (matrix_expression< MatA, Device > &A, matrix_expression< MatB, Device > const &B, elementwise_tag)
 
template<class MatA , class MatB , class Device >
void plus_assign (matrix_expression< MatA, Device > &A, matrix_expression< MatB, Device > const &B, elementwise_tag, typename MatA::value_type alpha)
 
template<class MatA , class MatB , class Device >
void plus_assign (matrix_expression< MatA, Device > &A, matrix_expression< MatB, Device > const &B, blockwise_tag, typename MatA::value_type alpha=1)
 
template<class Arg1 , class Arg2 , class T >
boost::compute::detail::meta_kernel & operator<< (boost::compute::detail::meta_kernel &k, induced_matrix_element< Arg1, Arg2, T > const &e)
 
template<class Arg1 , class Arg2 , class T >
boost::compute::detail::meta_kernel & operator<< (boost::compute::detail::meta_kernel &k, induced_matrix_adaptor_element< Arg1, Arg2, T > const &e)
 
template<class Arg , class T >
boost::compute::detail::meta_kernel & operator<< (boost::compute::detail::meta_kernel &k, induced_vector_element< Arg, T > const &e)
 
template<class Arg1 , class Arg2 , class T >
boost::compute::detail::meta_kernel & operator<< (boost::compute::detail::meta_kernel &k, induced_vector_adaptor_element< Arg1, Arg2, T > const &e)
 
template<class VectorT , class VectorU , class WeightT >
VectorT::value_type diagonalMahalanobisDistanceSqr (VectorT const &op1, VectorU const &op2, WeightT const &weights, sparse_tag, sparse_tag)
 Normalized Euclidian squared distance (squared diagonal Mahalanobis) between two vectors, optimized for two Compressed arguments. More...
 
template<class VectorT , class VectorU , class WeightT >
VectorT::value_type diagonalMahalanobisDistanceSqr (VectorT const &op1, VectorU const &op2, WeightT const &weights, sparse_tag, dense_tag)
 Normalized Euclidian squared distance (squared diagonal Mahalanobis) between two vectors, optimized for one dense and one sparse argument. More...
 
template<class VectorT , class VectorU , class WeightT >
VectorT::value_type diagonalMahalanobisDistanceSqr (VectorT const &op1, VectorU const &op2, WeightT const &weights, dense_tag arg1tag, sparse_tag arg2tag)
 
template<class VectorT , class VectorU , class WeightT >
VectorT::value_type diagonalMahalanobisDistanceSqr (VectorT const &op1, VectorU const &op2, WeightT const &weights, dense_tag, dense_tag)
 
template<class MatrixT , class VectorU , class Result >
void distanceSqrBlockVector (MatrixT const &operands, VectorU const &op2, Result &result)
 
template<class MatrixX , class MatrixY , class Result >
void distanceSqrBlockBlockRowWise (MatrixX const &X, MatrixY const &Y, Result &distances)
 implementation for two input blocks where at least one matrix has only a few rows More...
 
template<class MatrixX , class MatrixY , class Result >
void distanceSqrBlockBlock (MatrixX const &X, MatrixY const &Y, Result &distances, dense_tag, dense_tag)
 implementation for two dense input blocks More...
 
template<class MatrixX , class MatrixY , class Result >
void distanceSqrBlockBlock (MatrixX const &X, MatrixY const &Y, Result &distances, sparse_tag, sparse_tag)
 

Function Documentation

◆ assign() [1/6]

◆ assign() [2/6]

template<class VecX , class VecV , class Device >
void remora::detail::assign ( vector_expression< VecX, Device > &  x,
vector_expression< VecV, Device > const &  v,
elementwise_tag  ,
typename VecX::value_type  alpha 
)

Definition at line 128 of file assignment.hpp.

References remora::kernels::assign().

◆ assign() [3/6]

template<class VecX , class VecV , class Device >
void remora::detail::assign ( vector_expression< VecX, Device > &  x,
vector_expression< VecV, Device > const &  v,
blockwise_tag  ,
typename VecX::value_type  alpha = 1 
)

Definition at line 136 of file assignment.hpp.

◆ assign() [4/6]

template<class MatA , class MatB , class Device >
void remora::detail::assign ( matrix_expression< MatA, Device > &  A,
matrix_expression< MatB, Device > const &  B,
elementwise_tag   
)

Definition at line 238 of file assignment.hpp.

References remora::kernels::assign().

◆ assign() [5/6]

template<class MatA , class MatB , class Device >
void remora::detail::assign ( matrix_expression< MatA, Device > &  A,
matrix_expression< MatB, Device > const &  B,
elementwise_tag  ,
typename MatA::value_type  alpha 
)

Definition at line 242 of file assignment.hpp.

References remora::kernels::assign().

◆ assign() [6/6]

template<class MatA , class MatB , class Device >
void remora::detail::assign ( matrix_expression< MatA, Device > &  A,
matrix_expression< MatB, Device > const &  B,
blockwise_tag  ,
typename MatA::value_type  alpha = 1 
)

Definition at line 250 of file assignment.hpp.

◆ diagonalMahalanobisDistanceSqr() [1/4]

template<class VectorT , class VectorU , class WeightT >
VectorT::value_type remora::detail::diagonalMahalanobisDistanceSqr ( VectorT const &  op1,
VectorU const &  op2,
WeightT const &  weights,
sparse_tag  ,
sparse_tag   
)

Normalized Euclidian squared distance (squared diagonal Mahalanobis) between two vectors, optimized for two Compressed arguments.

Contrary to some conventions, dimension-wise weights are considered instead of std. deviations: \( d^2(v) = \sum_i w_i (x_i-z_i)^2 \) NOTE: The weights themselves are not squared, but multiplied onto the squared components.

Definition at line 85 of file Metrics.h.

References shark::sqr(), and remora::sum().

Referenced by remora::diagonalMahalanobisDistance(), diagonalMahalanobisDistanceSqr(), remora::diagonalMahalanobisDistanceSqr(), remora::distanceSqr(), distanceSqrBlockVector(), and shark::ARDKernelUnconstrained< InputType >::eval().

◆ diagonalMahalanobisDistanceSqr() [2/4]

template<class VectorT , class VectorU , class WeightT >
VectorT::value_type remora::detail::diagonalMahalanobisDistanceSqr ( VectorT const &  op1,
VectorU const &  op2,
WeightT const &  weights,
sparse_tag  ,
dense_tag   
)

Normalized Euclidian squared distance (squared diagonal Mahalanobis) between two vectors, optimized for one dense and one sparse argument.

Definition at line 137 of file Metrics.h.

References shark::sqr(), and remora::sum().

◆ diagonalMahalanobisDistanceSqr() [3/4]

template<class VectorT , class VectorU , class WeightT >
VectorT::value_type remora::detail::diagonalMahalanobisDistanceSqr ( VectorT const &  op1,
VectorU const &  op2,
WeightT const &  weights,
dense_tag  arg1tag,
sparse_tag  arg2tag 
)

Definition at line 165 of file Metrics.h.

References diagonalMahalanobisDistanceSqr().

◆ diagonalMahalanobisDistanceSqr() [4/4]

template<class VectorT , class VectorU , class WeightT >
VectorT::value_type remora::detail::diagonalMahalanobisDistanceSqr ( VectorT const &  op1,
VectorU const &  op2,
WeightT const &  weights,
dense_tag  ,
dense_tag   
)

Definition at line 176 of file Metrics.h.

References remora::inner_prod().

◆ distanceSqrBlockBlock() [1/2]

template<class MatrixX , class MatrixY , class Result >
void remora::detail::distanceSqrBlockBlock ( MatrixX const &  X,
MatrixY const &  Y,
Result &  distances,
dense_tag  ,
dense_tag   
)

implementation for two dense input blocks

Definition at line 232 of file Metrics.h.

References distanceSqrBlockBlockRowWise(), remora::noalias(), remora::norm_sqr(), remora::prod(), remora::repeat(), remora::row(), and remora::trans().

Referenced by remora::distanceSqr().

◆ distanceSqrBlockBlock() [2/2]

template<class MatrixX , class MatrixY , class Result >
void remora::detail::distanceSqrBlockBlock ( MatrixX const &  X,
MatrixY const &  Y,
Result &  distances,
sparse_tag  ,
sparse_tag   
)

Definition at line 263 of file Metrics.h.

References distanceSqrBlockBlockRowWise().

◆ distanceSqrBlockBlockRowWise()

template<class MatrixX , class MatrixY , class Result >
void remora::detail::distanceSqrBlockBlockRowWise ( MatrixX const &  X,
MatrixY const &  Y,
Result &  distances 
)

implementation for two input blocks where at least one matrix has only a few rows

Definition at line 206 of file Metrics.h.

References remora::column(), distanceSqrBlockVector(), and remora::row().

Referenced by distanceSqrBlockBlock().

◆ distanceSqrBlockVector()

template<class MatrixT , class VectorU , class Result >
void remora::detail::distanceSqrBlockVector ( MatrixT const &  operands,
VectorU const &  op2,
Result &  result 
)

Definition at line 188 of file Metrics.h.

References diagonalMahalanobisDistanceSqr(), and remora::row().

Referenced by remora::distanceSqr(), and distanceSqrBlockBlockRowWise().

◆ operator<<() [1/4]

template<class Arg1 , class Arg2 , class T >
boost::compute::detail::meta_kernel& remora::detail::operator<< ( boost::compute::detail::meta_kernel &  k,
induced_vector_adaptor_element< Arg1, Arg2, T > const &  e 
)

◆ operator<<() [2/4]

template<class Arg1 , class Arg2 , class T >
boost::compute::detail::meta_kernel& remora::detail::operator<< ( boost::compute::detail::meta_kernel &  k,
induced_matrix_adaptor_element< Arg1, Arg2, T > const &  e 
)

◆ operator<<() [3/4]

template<class Arg , class T >
boost::compute::detail::meta_kernel& remora::detail::operator<< ( boost::compute::detail::meta_kernel &  k,
induced_vector_element< Arg, T > const &  e 
)

◆ operator<<() [4/4]

template<class Arg1 , class Arg2 , class T >
boost::compute::detail::meta_kernel& remora::detail::operator<< ( boost::compute::detail::meta_kernel &  k,
induced_matrix_element< Arg1, Arg2, T > const &  e 
)

◆ plus_assign() [1/6]

template<class VecX , class VecV , class Device >
void remora::detail::plus_assign ( vector_expression< VecX, Device > &  x,
vector_expression< VecV, Device > const &  v,
elementwise_tag   
)

◆ plus_assign() [2/6]

template<class VecX , class VecV , class Device >
void remora::detail::plus_assign ( vector_expression< VecX, Device > &  x,
vector_expression< VecV, Device > const &  v,
elementwise_tag  ,
typename VecX::value_type  alpha 
)

Definition at line 147 of file assignment.hpp.

References remora::kernels::assign().

◆ plus_assign() [3/6]

template<class VecX , class VecV , class Device >
void remora::detail::plus_assign ( vector_expression< VecX, Device > &  x,
vector_expression< VecV, Device > const &  v,
blockwise_tag  ,
typename VecX::value_type  alpha = 1 
)

Definition at line 155 of file assignment.hpp.

◆ plus_assign() [4/6]

template<class MatA , class MatB , class Device >
void remora::detail::plus_assign ( matrix_expression< MatA, Device > &  A,
matrix_expression< MatB, Device > const &  B,
elementwise_tag   
)

Definition at line 257 of file assignment.hpp.

◆ plus_assign() [5/6]

template<class MatA , class MatB , class Device >
void remora::detail::plus_assign ( matrix_expression< MatA, Device > &  A,
matrix_expression< MatB, Device > const &  B,
elementwise_tag  ,
typename MatA::value_type  alpha 
)

Definition at line 261 of file assignment.hpp.

References remora::kernels::assign().

◆ plus_assign() [6/6]

template<class MatA , class MatB , class Device >
void remora::detail::plus_assign ( matrix_expression< MatA, Device > &  A,
matrix_expression< MatB, Device > const &  B,
blockwise_tag  ,
typename MatA::value_type  alpha = 1 
)

Definition at line 269 of file assignment.hpp.