batmat main
Batched linear algebra routines
Loading...
Searching...
No Matches
hyhound.hpp File Reference
#include <batmat/linalg/structure.hpp>
#include <batmat/linalg/uview.hpp>
#include <batmat/lut.hpp>
#include <batmat/micro-kernels/hyhound/export.h>
#include <batmat/platform/platform.hpp>
#include <batmat/simd.hpp>

Go to the source code of this file.

Classes

struct  batmat::linalg::micro_kernels::hyhound::KernelConfig
struct  batmat::linalg::micro_kernels::hyhound::triangular_accessor< T, Abi, R >

Namespaces

namespace  batmat
namespace  batmat::linalg
namespace  batmat::linalg::micro_kernels
namespace  batmat::linalg::micro_kernels::hyhound

Enumerations

enum class  batmat::linalg::micro_kernels::hyhound::Structure { batmat::linalg::micro_kernels::hyhound::General = 0 , batmat::linalg::micro_kernels::hyhound::Zero = 1 , batmat::linalg::micro_kernels::hyhound::Upper = 2 }

Functions

template<class T, class Abi, KernelConfig Conf, index_t R, StorageOrder OL, StorageOrder OA>
void batmat::linalg::micro_kernels::hyhound::hyhound_diag_diag_microkernel (index_t kA, triangular_accessor< T, Abi, SizeR< T, Abi > > W, uview< T, Abi, OL > L, uview< T, Abi, OA > A, uview< const T, Abi, StorageOrder::ColMajor > diag) noexcept
template<class T, class Abi, KernelConfig Conf, index_t R, StorageOrder OL, StorageOrder OA>
void batmat::linalg::micro_kernels::hyhound::hyhound_diag_full_microkernel (index_t kA, uview< T, Abi, OL > L, uview< T, Abi, OA > A, uview< const T, Abi, StorageOrder::ColMajor > diag) noexcept
template<class T, class Abi, KernelConfig Conf, index_t R, index_t S, StorageOrder OL, StorageOrder OA, StorageOrder OB>
void batmat::linalg::micro_kernels::hyhound::hyhound_diag_tail_microkernel (index_t kA_in_offset, index_t kA_in, index_t k, triangular_accessor< const T, Abi, SizeR< T, Abi > > W, uview< T, Abi, OL > L, uview< const T, Abi, OA > A_in, uview< T, Abi, OA > A_out, uview< const T, Abi, OB > B, uview< const T, Abi, StorageOrder::ColMajor > diag, Structure struc_L, int rotate_A) noexcept
template<class T, class Abi, StorageOrder OL>
constexpr std::pair< index_t, index_t > batmat::linalg::micro_kernels::hyhound::hyhound_W_size (view< T, Abi, OL > L)
template<class T, class Abi, KernelConfig Conf = {}, StorageOrder OL = StorageOrder::ColMajor, StorageOrder OA = StorageOrder::ColMajor>
void batmat::linalg::micro_kernels::hyhound::hyhound_diag_register (const view< T, Abi, OL > L, const view< T, Abi, OA > A, const view< const T, Abi > D) noexcept
 Block hyperbolic Householder factorization update using register blocking.
template<class T, class Abi, KernelConfig Conf = {}, StorageOrder OL = StorageOrder::ColMajor, StorageOrder OA = StorageOrder::ColMajor>
void batmat::linalg::micro_kernels::hyhound::hyhound_diag_register (const view< T, Abi, OL > L, const view< T, Abi, OA > A, const view< const T, Abi > D, const view< T, Abi > W) noexcept
 Block hyperbolic Householder factorization update using register blocking.
template<class T, class Abi, KernelConfig Conf = {}, StorageOrder OL = StorageOrder::ColMajor, StorageOrder OA = StorageOrder::ColMajor>
void batmat::linalg::micro_kernels::hyhound::hyhound_diag_apply_register (const view< T, Abi, OL > L, const view< const T, Abi, OA > Ain, const view< T, Abi, OA > Aout, const view< const T, Abi, OA > B, const view< const T, Abi > D, const view< const T, Abi > W, index_t kA_in_offset) noexcept
 Apply a block hyperbolic Householder transformation.
template<class T, class Abi, KernelConfig Conf = {}, StorageOrder OL1 = StorageOrder::ColMajor, StorageOrder OA1 = StorageOrder::ColMajor, StorageOrder OL2 = StorageOrder::ColMajor, StorageOrder OA2 = StorageOrder::ColMajor>
void batmat::linalg::micro_kernels::hyhound::hyhound_diag_2_register (const view< T, Abi, OL1 > L11, const view< T, Abi, OA1 > A1, const view< T, Abi, OL2 > L21, const view< T, Abi, OA2 > A2, const view< const T, Abi > D) noexcept
 Same as hyhound_diag_register but for two block rows at once.
template<class T, class Abi, KernelConfig Conf = {}, StorageOrder OL = StorageOrder::ColMajor, StorageOrder OW = StorageOrder::ColMajor, StorageOrder OY = StorageOrder::ColMajor, StorageOrder OU = StorageOrder::ColMajor>
void batmat::linalg::micro_kernels::hyhound::hyhound_diag_cyclic_register (const view< T, Abi, OL > L11, const view< T, Abi, OW > A1, const view< T, Abi, OY > L21, const view< const T, Abi, OW > A22, const view< T, Abi, OW > A2_out, const view< T, Abi, OU > L31, const view< const T, Abi, OW > A31, const view< T, Abi, OW > A3_out, const view< const T, Abi > D) noexcept
 Performs a factorization update of the following matrix:
template<class T, class Abi, KernelConfig Conf = {}, StorageOrder OL = StorageOrder::ColMajor, StorageOrder OA = StorageOrder::ColMajor, StorageOrder OLu = StorageOrder::ColMajor, StorageOrder OAu = StorageOrder::ColMajor>
void batmat::linalg::micro_kernels::hyhound::hyhound_diag_riccati_register (const view< T, Abi, OL > L11, const view< T, Abi, OA > A1, const view< T, Abi, OL > L21, const view< const T, Abi, OA > A2, const view< T, Abi, OA > A2_out, const view< T, Abi, OLu > Lu1, const view< T, Abi, OAu > Au_out, const view< const T, Abi > D, bool shift_A_out) noexcept
 Performs a factorization update of the following matrix:

Variables

template<class T, class Abi>
constexpr index_t batmat::linalg::micro_kernels::hyhound::SizeR = gemm::RowsReg<T, Abi>
template<class T, class Abi>
constexpr index_t batmat::linalg::micro_kernels::hyhound::SizeS = gemm::RowsReg<T, Abi>

Class Documentation

◆ batmat::linalg::micro_kernels::hyhound::KernelConfig

struct batmat::linalg::micro_kernels::hyhound::KernelConfig
Class Members
bool sign_only = false