Tatooine
Functions

General Matrix-Matrix-Multiplication. More...

Collaboration diagram for GEMM:

Functions

template<std::floating_point Float>
auto tatooine::blas::gemm (op TRANSA, op TRANSB, int M, int N, int K, Float ALPHA, Float const *A, int LDA, Float const *B, int LDB, Float BETA, Float *C, int LDC) -> void
 
template<std::floating_point Float, std::size_t M, std::size_t N, std::size_t K>
auto tatooine::blas::gemm (Float const alpha, tensor< Float, M, K > const &A, tensor< Float, K, N > const &B, Float const beta, tensor< Float, M, N > &C)
 See GEMM. More...
 
template<std::floating_point Float>
auto tatooine::blas::gemm (blas::op trans_A, blas::op trans_B, Float const alpha, tensor< Float > const &A, tensor< Float > const &B, Float const beta, tensor< Float > &C)
 See GEMM. More...
 
template<std::floating_point Float>
auto tatooine::blas::gemm (Float const alpha, tensor< Float > const &A, tensor< Float > const &B, Float const beta, tensor< Float > &C)
 See GEMM. More...
 

Detailed Description

General Matrix-Matrix-Multiplication.

GEMM performs one of the matrix-matrix operations

\[\mC=\alpha\cdot\text{op}(\mA)\cdot \text{op}(\mB) + \beta\cdot\mC\]

where \(\text{op}(\mX)\) is one of

\[\text{op}(\mX)=\mX\ \ \text{ or }\ \ \text{op}(\mX)=\mX^\top\]

.

\(\alpha\) and \(\beta\) are scalars, and \(\mA\), \(\mB\) and \(\mC\) are matrices, with \(\text{op}(\mA)\) an \(m\times k\) matrix, \(\text{op}(\mB)\) a \(k\times n\) matrix and \(\mC\) an \(m\times n\) matrix.

Function Documentation

◆ gemm() [1/4]

template<std::floating_point Float>
auto tatooine::blas::gemm ( blas::op  trans_A,
blas::op  trans_B,
Float const  alpha,
tensor< Float > const &  A,
tensor< Float > const &  B,
Float const  beta,
tensor< Float > &  C 
)

See GEMM.

◆ gemm() [2/4]

template<std::floating_point Float>
auto tatooine::blas::gemm ( Float const  alpha,
tensor< Float > const &  A,
tensor< Float > const &  B,
Float const  beta,
tensor< Float > &  C 
)

See GEMM.

◆ gemm() [3/4]

template<std::floating_point Float, std::size_t M, std::size_t N, std::size_t K>
auto tatooine::blas::gemm ( Float const  alpha,
tensor< Float, M, K > const &  A,
tensor< Float, K, N > const &  B,
Float const  beta,
tensor< Float, M, N > &  C 
)

See GEMM.

◆ gemm() [4/4]

template<std::floating_point Float>
auto tatooine::blas::gemm ( op  TRANSA,
op  TRANSB,
int  M,
int  N,
int  K,
Float  ALPHA,
Float const *  A,
int  LDA,
Float const *  B,
int  LDB,
Float  BETA,
Float *  C,
int  LDC 
) -> void