batmat develop
Batched linear algebra routines
Loading...
Searching...
No Matches
batmat::linalg::micro_kernels::geqrf Namespace Reference

Classes

struct  KernelConfig

Functions

template<class T, class Abi, KernelConfig Conf, index_t R, StorageOrder OA, StorageOrder OD>
void geqrf_diag_microkernel (index_t k, triangular_accessor< T, Abi, SizeR< T, Abi > > W, uview< const T, Abi, OA > A, uview< T, Abi, OD > D) noexcept
template<class T, class Abi, KernelConfig Conf, index_t R, StorageOrder OA, StorageOrder OD>
void geqrf_full_microkernel (index_t k, uview< const T, Abi, OA > A, uview< T, Abi, OD > D) noexcept
 A (k×R) D (k×R).
template<class T, class Abi, KernelConfig Conf, index_t R, index_t S, StorageOrder OA, StorageOrder OD, StorageOrder OB>
void geqrf_tail_microkernel (index_t k, bool transposed, triangular_accessor< const T, Abi, SizeR< T, Abi > > W, uview< const T, Abi, OA > A, uview< T, Abi, OD > D, uview< const T, Abi, OB > B) noexcept
template<class T, class Abi, StorageOrder OA>
constexpr std::pair< index_t, index_tgeqrf_W_size (view< T, Abi, OA > A)
template<class T, class Abi, KernelConfig Conf = {}, StorageOrder OA = StorageOrder::ColMajor, StorageOrder OD = StorageOrder::ColMajor>
void geqrf_copy_register (const view< const T, Abi, OA > A, const view< T, Abi, OD > D, const view< T, Abi > W) noexcept
 Block hyperbolic Householder factorization update using register blocking.
template<class T, class Abi, KernelConfig Conf, StorageOrder OA, StorageOrder OD, StorageOrder OB>
void geqrf_apply_register (const view< const T, Abi, OA > A, const view< T, Abi, OD > D, const view< const T, Abi, OB > B, const view< const T, Abi > W, bool transposed, bool reversed) noexcept
 Apply a block Householder transformation.

Variables

template<class T, class Abi>
constexpr index_t SizeR = gemm::RowsReg<T, Abi>
template<class T, class Abi>
constexpr index_t SizeS = gemm::RowsReg<T, Abi>
template<class T, class Abi, KernelConfig Conf, StorageOrder OA, StorageOrder OD>
const constinit auto microkernel_diag_lut
template<class T, class Abi, KernelConfig Conf, StorageOrder OA, StorageOrder OD>
const constinit auto microkernel_full_lut
template<class T, class Abi, KernelConfig Conf, StorageOrder OA, StorageOrder OD, StorageOrder OB>
const constinit auto microkernel_tail_lut
template<class T, class Abi, KernelConfig Conf, StorageOrder OA, StorageOrder OD, StorageOrder OB>
const constinit auto microkernel_tail_lut_2

Class Documentation

◆ batmat::linalg::micro_kernels::geqrf::KernelConfig

struct batmat::linalg::micro_kernels::geqrf::KernelConfig

Function Documentation

◆ geqrf_diag_microkernel()

template<class T, class Abi, KernelConfig Conf, index_t R, StorageOrder OA, StorageOrder OD>
void batmat::linalg::micro_kernels::geqrf::geqrf_diag_microkernel ( index_t k,
triangular_accessor< T, Abi, SizeR< T, Abi > > W,
uview< const T, Abi, OA > A,
uview< T, Abi, OD > D )
noexcept

Definition at line 42 of file geqrf.tpp.

◆ geqrf_full_microkernel()

template<class T, class Abi, KernelConfig Conf, index_t R, StorageOrder OA, StorageOrder OD>
void batmat::linalg::micro_kernels::geqrf::geqrf_full_microkernel ( index_t k,
uview< const T, Abi, OA > A,
uview< T, Abi, OD > D )
noexcept

A (k×R) D (k×R).

Definition at line 94 of file geqrf.tpp.

◆ geqrf_tail_microkernel()

template<class T, class Abi, KernelConfig Conf, index_t R, index_t S, StorageOrder OA, StorageOrder OD, StorageOrder OB>
void batmat::linalg::micro_kernels::geqrf::geqrf_tail_microkernel ( index_t k,
bool transposed,
triangular_accessor< const T, Abi, SizeR< T, Abi > > W,
uview< const T, Abi, OA > A,
uview< T, Abi, OD > D,
uview< const T, Abi, OB > B )
noexcept

Definition at line 153 of file geqrf.tpp.

◆ geqrf_W_size()

template<class T, class Abi, StorageOrder OA>
std::pair< index_t, index_t > batmat::linalg::micro_kernels::geqrf::geqrf_W_size ( view< T, Abi, OA > A)
constexpr

Definition at line 36 of file geqrf.hpp.

◆ geqrf_copy_register()

template<class T, class Abi, KernelConfig Conf = {}, StorageOrder OA = StorageOrder::ColMajor, StorageOrder OD = StorageOrder::ColMajor>
void batmat::linalg::micro_kernels::geqrf::geqrf_copy_register ( const view< const T, Abi, OA > A,
const view< T, Abi, OD > D,
const view< T, Abi > W )
noexcept

Block hyperbolic Householder factorization update using register blocking.

This variant does not store the Householder representation W.

Definition at line 222 of file geqrf.tpp.

◆ geqrf_apply_register()

template<class T, class Abi, KernelConfig Conf, StorageOrder OA, StorageOrder OD, StorageOrder OB>
void batmat::linalg::micro_kernels::geqrf::geqrf_apply_register ( view< const T, Abi, OA > A,
view< T, Abi, OD > D,
view< const T, Abi, OB > B,
view< const T, Abi > W,
bool transposed,
bool reversed )
noexcept

Apply a block Householder transformation.

Definition at line 323 of file geqrf.tpp.

Variable Documentation

◆ SizeR

template<class T, class Abi>
index_t batmat::linalg::micro_kernels::geqrf::SizeR = gemm::RowsReg<T, Abi>
inlineconstexpr

Definition at line 15 of file geqrf.hpp.

◆ SizeS

template<class T, class Abi>
index_t batmat::linalg::micro_kernels::geqrf::SizeS = gemm::RowsReg<T, Abi>
inlineconstexpr

Definition at line 17 of file geqrf.hpp.

◆ microkernel_diag_lut

template<class T, class Abi, KernelConfig Conf, StorageOrder OA, StorageOrder OD>
const constinit auto batmat::linalg::micro_kernels::geqrf::microkernel_diag_lut
inlineconstinit
Initial value:
=
})
consteval auto make_1d_lut(F f)
Returns an array of the form:
Definition lut.hpp:39
void geqrf_diag_microkernel(index_t k, triangular_accessor< T, Abi, SizeR< T, Abi > > W, uview< const T, Abi, OA > A, uview< T, Abi, OD > D) noexcept
Definition geqrf.tpp:42
std::integral_constant< index_t, I > index_constant
Definition lut.hpp:10
int index_t
Definition config.hpp:13

Definition at line 17 of file geqrf.tpp.

◆ microkernel_full_lut

template<class T, class Abi, KernelConfig Conf, StorageOrder OA, StorageOrder OD>
const constinit auto batmat::linalg::micro_kernels::geqrf::microkernel_full_lut
inlineconstinit
Initial value:
=
})
void geqrf_full_microkernel(index_t k, uview< const T, Abi, OA > A, uview< T, Abi, OD > D) noexcept
A (k×R) D (k×R).
Definition geqrf.tpp:94

Definition at line 23 of file geqrf.tpp.

◆ microkernel_tail_lut

template<class T, class Abi, KernelConfig Conf, StorageOrder OA, StorageOrder OD, StorageOrder OB>
const constinit auto batmat::linalg::micro_kernels::geqrf::microkernel_tail_lut
inlineconstinit
Initial value:
=
})
void geqrf_tail_microkernel(index_t k, bool transposed, triangular_accessor< const T, Abi, SizeR< T, Abi > > W, uview< const T, Abi, OA > A, uview< T, Abi, OD > D, uview< const T, Abi, OB > B) noexcept
Definition geqrf.tpp:153

Definition at line 29 of file geqrf.tpp.

◆ microkernel_tail_lut_2

template<class T, class Abi, KernelConfig Conf, StorageOrder OA, StorageOrder OD, StorageOrder OB>
const constinit auto batmat::linalg::micro_kernels::geqrf::microkernel_tail_lut_2
inlineconstinit
Initial value:

Definition at line 35 of file geqrf.tpp.