batmat 0.0.13
Batched linear algebra routines
Loading...
Searching...
No Matches
batmat::linalg::micro_kernels::gemv Namespace Reference

Classes

struct  KernelConfig

Functions

template<class T, class Abi, KernelConfig Conf, index_t RowsReg, StorageOrder OA>
void gemv_copy_microkernel (const uview< const T, Abi, OA > A, const uview< const T, Abi, StorageOrder::ColMajor > B, const std::optional< uview< const T, Abi, StorageOrder::ColMajor > > C, const uview< T, Abi, StorageOrder::ColMajor > D, const index_t k) noexcept
 Generalized matrix-vector multiplication d = c ± A⁽ᵀ⁾ b. Single register block.
template<class T, class Abi, KernelConfig Conf, StorageOrder OA>
void gemv_copy_register (const view< const T, Abi, OA > A, const view< const T, Abi > B, const std::optional< view< const T, Abi > > C, const view< T, Abi > D) noexcept
 Generalized matrix multiplication d = c ± A⁽ᵀ⁾ b. Using register blocking.

Variables

template<class T, class Abi>
constexpr index_t RowsReg = 2 * gemm::RowsReg<T, Abi>
template<class T, class Abi, KernelConfig Conf, StorageOrder OA>
const constinit auto gemv_copy_lut

Class Documentation

◆ batmat::linalg::micro_kernels::gemv::KernelConfig

struct batmat::linalg::micro_kernels::gemv::KernelConfig
Class Members
bool negate = false
int shift_A = 0
int shift_B = 0
int rotate_C = 0
int rotate_D = rotate_C
int mask_D = rotate_D

Function Documentation

◆ gemv_copy_microkernel()

template<class T, class Abi, KernelConfig Conf, index_t RowsReg, StorageOrder OA>
void batmat::linalg::micro_kernels::gemv::gemv_copy_microkernel ( uview< const T, Abi, OA > A,
uview< const T, Abi, StorageOrder::ColMajor > B,
std::optional< uview< const T, Abi, StorageOrder::ColMajor > > C,
uview< T, Abi, StorageOrder::ColMajor > D,
index_t k )
noexcept

Generalized matrix-vector multiplication d = c ± A⁽ᵀ⁾ b. Single register block.

Definition at line 16 of file gemv.tpp.

◆ gemv_copy_register()

template<class T, class Abi, KernelConfig Conf, StorageOrder OA>
void batmat::linalg::micro_kernels::gemv::gemv_copy_register ( view< const T, Abi, OA > A,
view< const T, Abi > B,
std::optional< view< const T, Abi > > C,
view< T, Abi > D )
noexcept

Generalized matrix multiplication d = c ± A⁽ᵀ⁾ b. Using register blocking.

Definition at line 79 of file gemv.tpp.

Variable Documentation

◆ RowsReg

template<class T, class Abi>
index_t batmat::linalg::micro_kernels::gemv::RowsReg = 2 * gemm::RowsReg<T, Abi>
constexpr

Definition at line 30 of file gemv.hpp.

◆ gemv_copy_lut

template<class T, class Abi, KernelConfig Conf, StorageOrder OA>
const constinit auto batmat::linalg::micro_kernels::gemv::gemv_copy_lut
inlineconstinit
Initial value:
=
})
consteval auto make_1d_lut(F f)
Returns an array of the form:
Definition lut.hpp:39
void gemv_copy_microkernel(uview< const T, Abi, OA > A, uview< const T, Abi, StorageOrder::ColMajor > B, std::optional< uview< const T, Abi, StorageOrder::ColMajor > > C, uview< T, Abi, StorageOrder::ColMajor > D, index_t k) noexcept
Generalized matrix-vector multiplication d = c ± A⁽ᵀ⁾ b. Single register block.
Definition gemv.tpp:16
std::integral_constant< index_t, I > index_constant
Definition lut.hpp:10

Definition at line 33 of file gemv.hpp.