ergo
MM_kernel_outer_A< T_gemm_kernel, T_M_block, T_N_block >::Pack< T_rows_block, T_cols_block, T_ordering_block, T_pack_type_kernel > Class Template Reference

Template for for translations between unpacked and packed matrix storage. More...

#include <mm_kernel_outer_A.h>

Classes

struct  Assign_to_packed
 
struct  Extract_from_packed
 

Static Public Member Functions

template<template< typename T_ordering > class T_assign, typename T_ordering_matrix >
static void exec (typename T_assign< T_ordering_matrix >::PtrType X, typename T_assign< T_ordering_matrix >::PtrTypePacked X_packed, int const rows_total_matrix, int const cols_total_matrix)
 Elaborate function that can be called either to assign to or extract from packed format. More...
 
template<typename T_ordering_matrix >
static void pack (real const *const X, real *X_packed, int const rows_total_matrix, int const cols_total_matrix)
 Convenience function for assignments to packed matrix. More...
 
template<typename T_ordering_matrix >
static void unpack (real *X, real const *const X_packed, int const rows_total_matrix, int const cols_total_matrix)
 Convenience function for extracting matrix from packed matrix. More...
 

Static Public Attributes

static int const rows = rows_kernel * T_rows_block
 Number of rows in the matrix. More...
 
static int const cols = cols_kernel * T_cols_block
 Number of columns in the matrix. More...
 
static unsigned int const size_packed = T_rows_block * T_cols_block * T_pack_type_kernel::size_packed
 Memory needed to store the matrix in packed form. More...
 

Static Private Attributes

static int const rows_kernel = T_pack_type_kernel::rows
 
static int const cols_kernel = T_pack_type_kernel::cols
 

Detailed Description

template<typename T_gemm_kernel, int T_M_block, int T_N_block>
template<int T_rows_block, int T_cols_block, typename T_ordering_block, typename T_pack_type_kernel>
class MM_kernel_outer_A< T_gemm_kernel, T_M_block, T_N_block >::Pack< T_rows_block, T_cols_block, T_ordering_block, T_pack_type_kernel >

Template for for translations between unpacked and packed matrix storage.

Template arguments:

  • T_rows_block : number of rows (blocks)
  • T_cols_block : number of columns (blocks)
  • T_ordering_block : Type that specifies how the matrix blocks are stored
  • T_pack_type_kernel : Type specifying how each matrix block should be packed

Member Function Documentation

◆ exec()

template<typename T_gemm_kernel , int T_M_block, int T_N_block>
template<int T_rows_block, int T_cols_block, typename T_ordering_block , typename T_pack_type_kernel >
template<template< typename T_ordering > class T_assign, typename T_ordering_matrix >
static void MM_kernel_outer_A< T_gemm_kernel, T_M_block, T_N_block >::Pack< T_rows_block, T_cols_block, T_ordering_block, T_pack_type_kernel >::exec ( typename T_assign< T_ordering_matrix >::PtrType  X,
typename T_assign< T_ordering_matrix >::PtrTypePacked  X_packed,
int const  rows_total_matrix,
int const  cols_total_matrix 
)
inlinestatic

Elaborate function that can be called either to assign to or extract from packed format.

Use of types in T_assign automatically sets the const qualifier on the desired argument.

◆ pack()

template<typename T_gemm_kernel , int T_M_block, int T_N_block>
template<int T_rows_block, int T_cols_block, typename T_ordering_block , typename T_pack_type_kernel >
template<typename T_ordering_matrix >
static void MM_kernel_outer_A< T_gemm_kernel, T_M_block, T_N_block >::Pack< T_rows_block, T_cols_block, T_ordering_block, T_pack_type_kernel >::pack ( real const *const  X,
real X_packed,
int const  rows_total_matrix,
int const  cols_total_matrix 
)
inlinestatic

Convenience function for assignments to packed matrix.

The template argument specifies how the original (unpacked) matrix is stored (e.g. column or row wise)

◆ unpack()

template<typename T_gemm_kernel , int T_M_block, int T_N_block>
template<int T_rows_block, int T_cols_block, typename T_ordering_block , typename T_pack_type_kernel >
template<typename T_ordering_matrix >
static void MM_kernel_outer_A< T_gemm_kernel, T_M_block, T_N_block >::Pack< T_rows_block, T_cols_block, T_ordering_block, T_pack_type_kernel >::unpack ( real X,
real const *const  X_packed,
int const  rows_total_matrix,
int const  cols_total_matrix 
)
inlinestatic

Convenience function for extracting matrix from packed matrix.

The template argument specifies how the unpacked matrix is stored (e.g. column or row wise)

Member Data Documentation

◆ cols

template<typename T_gemm_kernel , int T_M_block, int T_N_block>
template<int T_rows_block, int T_cols_block, typename T_ordering_block , typename T_pack_type_kernel >
int const MM_kernel_outer_A< T_gemm_kernel, T_M_block, T_N_block >::Pack< T_rows_block, T_cols_block, T_ordering_block, T_pack_type_kernel >::cols = cols_kernel * T_cols_block
static

Number of columns in the matrix.

◆ cols_kernel

template<typename T_gemm_kernel , int T_M_block, int T_N_block>
template<int T_rows_block, int T_cols_block, typename T_ordering_block , typename T_pack_type_kernel >
int const MM_kernel_outer_A< T_gemm_kernel, T_M_block, T_N_block >::Pack< T_rows_block, T_cols_block, T_ordering_block, T_pack_type_kernel >::cols_kernel = T_pack_type_kernel::cols
staticprivate

◆ rows

template<typename T_gemm_kernel , int T_M_block, int T_N_block>
template<int T_rows_block, int T_cols_block, typename T_ordering_block , typename T_pack_type_kernel >
int const MM_kernel_outer_A< T_gemm_kernel, T_M_block, T_N_block >::Pack< T_rows_block, T_cols_block, T_ordering_block, T_pack_type_kernel >::rows = rows_kernel * T_rows_block
static

Number of rows in the matrix.

◆ rows_kernel

template<typename T_gemm_kernel , int T_M_block, int T_N_block>
template<int T_rows_block, int T_cols_block, typename T_ordering_block , typename T_pack_type_kernel >
int const MM_kernel_outer_A< T_gemm_kernel, T_M_block, T_N_block >::Pack< T_rows_block, T_cols_block, T_ordering_block, T_pack_type_kernel >::rows_kernel = T_pack_type_kernel::rows
staticprivate

◆ size_packed

template<typename T_gemm_kernel , int T_M_block, int T_N_block>
template<int T_rows_block, int T_cols_block, typename T_ordering_block , typename T_pack_type_kernel >
unsigned int const MM_kernel_outer_A< T_gemm_kernel, T_M_block, T_N_block >::Pack< T_rows_block, T_cols_block, T_ordering_block, T_pack_type_kernel >::size_packed = T_rows_block * T_cols_block * T_pack_type_kernel::size_packed
static

Memory needed to store the matrix in packed form.

(Can be used in the allocation of memory for the packed matrix.)


The documentation for this class was generated from the following file: