1#ifndef TATAMI_MULT_MULTIPLE_VECTORS_DISPATCH_HPP
2#define TATAMI_MULT_MULTIPLE_VECTORS_DISPATCH_HPP
113template<std::
size_t accumulators_ = 4,
typename Value_,
typename Index_,
typename Right_,
typename Output_>
116 const std::vector<Right_*>& right,
117 const std::vector<Output_*>& output,
152template<std::
size_t accumulators_ = 4,
typename Left_,
typename Value_,
typename Index_,
typename Output_>
154 const std::vector<Left_*>& left,
156 const std::vector<Output_*>& output,
virtual bool prefer_rows() const=0
virtual bool is_sparse() const=0
Dense column-major LHS, multiple vectors RHS.
Dense row-major LHS, multiple vectors RHS.
Sparse column-major LHS, multiple vectors RHS.
Sparse row-major LHS, multiple vectors RHS.
Multiplication of tatami matrices.
Definition column_to_column.hpp:19
void multiply_sparse_column_with_multiple_vectors(const tatami::Matrix< LeftValue_, LeftIndex_ > &left, const RightVectors_ right_vectors, GetRightVector_ get_right_vector, GetOutputVector_ get_output_vector, const MultiplySparseColumnWithMultipleVectorsOptions &options)
Definition sparse_column.hpp:175
void multiply_with_multiple_vectors(const tatami::Matrix< Value_, Index_ > &left, const std::vector< Right_ * > &right, const std::vector< Output_ * > &output, const MultiplyWithMultipleVectorsOptions &options)
Definition dispatch.hpp:114
void multiply_dense_row_with_multiple_vectors(const tatami::Matrix< LeftValue_, LeftIndex_ > &left, const RightVectors_ right_vectors, GetRightVector_ get_right_vector, GetOutputVector_ get_output_vector, const MultiplyDenseRowWithMultipleVectorsOptions &options)
Definition dense_row.hpp:70
void set_dense_primary_block_size(MultiplyDenseColumnWithDenseMatrixOptions &options, int primary_block_size)
Definition dispatch.hpp:68
void multiply_dense_column_with_multiple_vectors(const tatami::Matrix< LeftValue_, LeftIndex_ > &left, const RightVectors_ right_vectors, GetRightVector_ get_right_vector, GetOutput_ get_output_vector, const MultiplyDenseColumnWithMultipleVectorsOptions &options)
Definition dense_column.hpp:148
void set_dense_secondary_block_size(MultiplyDenseColumnWithDenseMatrixOptions &options, int secondary_block_size)
Definition dispatch.hpp:83
void multiply_sparse_row_with_multiple_vectors(const tatami::Matrix< LeftValue_, LeftIndex_ > &left, const RightVectors_ right_vectors, GetRightVector_ get_right_vector, GetOutputVector_ get_output_vector, const MultiplySparseRowWithMultipleVectorsOptions &options)
Definition sparse_row.hpp:61
void set_sparse_block_size(MultiplyWithDenseMatrixOptions &options, int block_size)
Definition dispatch.hpp:87
void set_num_threads(MultiplyDenseColumnWithDenseMatrixOptions &options, int num_threads)
Definition dispatch.hpp:54
std::shared_ptr< const Matrix< Value_, Index_ > > wrap_shared_ptr(const Matrix< Value_, Index_ > *const ptr)
Options for multiply_dense_column_with_multiple_vectors().
Definition dense_column.hpp:29
int primary_block_size
Definition dense_column.hpp:41
int secondary_block_size
Definition dense_column.hpp:48
int num_threads
Definition dense_column.hpp:34
Options for multiply_dense_row_with_multiple_vectors().
Definition dense_row.hpp:27
int primary_block_size
Definition dense_row.hpp:39
int secondary_block_size
Definition dense_row.hpp:46
int num_threads
Definition dense_row.hpp:32
Options for multiply_sparse_column_with_multiple_vectors().
Definition sparse_column.hpp:30
int num_threads
Definition sparse_column.hpp:35
int block_size
Definition sparse_column.hpp:41
Options for multiply_sparse_row_with_multiple_vectors().
Definition sparse_row.hpp:26
int block_size
Definition sparse_row.hpp:37
int num_threads
Definition sparse_row.hpp:31
Options for multiply_with_multiple_vectors().
Definition dispatch.hpp:19
MultiplyDenseRowWithMultipleVectorsOptions dense_row
Definition dispatch.hpp:23
MultiplyDenseColumnWithMultipleVectorsOptions dense_column
Definition dispatch.hpp:28
MultiplySparseColumnWithMultipleVectorsOptions sparse_column
Definition dispatch.hpp:38
MultiplySparseRowWithMultipleVectorsOptions sparse_row
Definition dispatch.hpp:33