|
NumericAL
A header-only C++20 lexer built on REAL
|
B given as Bᵀ: row-major, n × k, its rows ldb apart (C = A·Bᵀᵀ, no copy of the transpose).
More...
#include <gemm.hpp>
Static Public Member Functions | |
| template<std::size_t Nr, typename T > | |
| static void | pack (const T *bt, std::size_t ldbt, std::size_t p0, std::size_t j0, std::size_t kc, std::size_t cols, T *out) |
The kc × cols block of B from row p0 and column j0 (Bᵀ's rows from j0, its columns from p0) into slivers of Nr columns. | |
| template<typename Kernel > | |
| static constexpr bool | in_place (std::size_t) noexcept |
| Never in place: a sliver's columns lie apart. | |
| template<typename T > | |
| static const T * | rows_of (const T *x, std::size_t ld, std::size_t rows, std::size_t cols, buffer< T > &scratch, std::size_t &ld_out) |
The rows × cols operand row-major for the plain loop, copied from its transpose x (ld apart) into scratch. | |
| template<typename T > | |
| static const T & | at (const T *bt, std::size_t ldbt, std::size_t p, std::size_t j) noexcept |
B's element in row p and column j: Bᵀ's in row j and column p. | |
B given as Bᵀ: row-major, n × k, its rows ldb apart (C = A·Bᵀᵀ, no copy of the transpose).