STXXL  1.4.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength > Struct Template Reference

Detailed Description

template<typename ValueType, unsigned BlockSideLength>
struct stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >

Definition at line 1017 of file matrix_arithmetic.h.

+ Collaboration diagram for stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >:

Classes

struct  addition
 
struct  scalar_multiplication
 
struct  subtraction
 
struct  swappable_block_matrix_approximative_quarterer
 
struct  swappable_block_matrix_padding_quarterer
 
struct  swappable_block_matrix_quarterer
 

Public Types

typedef
swappable_block_matrix_type::block_scheduler_type 
block_scheduler_type
 
typedef column_vector< ValueType > column_vector_type
 
typedef
block_scheduler_type::internal_block_type 
internal_block_type
 
typedef row_vector< ValueType > row_vector_type
 
typedef
swappable_block_matrix_type::size_type 
size_type
 
typedef
swappable_block_matrix_type::swappable_block_identifier_type 
swappable_block_identifier_type
 
typedef swappable_block_matrix
< ValueType, BlockSideLength > 
swappable_block_matrix_type
 
typedef
column_vector_type::size_type 
vector_size_type
 

Static Public Member Functions

static void choose_level_for_feedable_sw (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
 
template<class Op >
static
swappable_block_matrix_type
element_op (swappable_block_matrix_type &C, const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, Op op=Op())
 
template<class Op >
static
swappable_block_matrix_type
element_op (swappable_block_matrix_type &C, const swappable_block_matrix_type &A, Op op=Op())
 
template<class Op >
static void element_op_swappable_block (const swappable_block_identifier_type c, const bool c_is_transposed, block_scheduler_type &bs_c, const swappable_block_identifier_type a, bool a_is_transposed, block_scheduler_type &bs_a, const swappable_block_identifier_type b, bool b_is_transposed, block_scheduler_type &bs_b, Op op=Op())
 
template<class Op >
static void element_op_swappable_block (const swappable_block_identifier_type c, const bool c_is_transposed, block_scheduler_type &bs_c, const swappable_block_identifier_type a, const bool a_is_transposed, block_scheduler_type &bs_a, Op op=Op())
 
template<class Op >
static void element_op_swappable_block (const swappable_block_identifier_type c, block_scheduler_type &bs_c, Op op=Op())
 
template<class Op >
static void element_op_twice_nontransposed (swappable_block_matrix_type &c1, swappable_block_matrix_type &c2, const swappable_block_matrix_type &a, Op op=Op())
 
static void matrix_col_vector_multiply_and_add_swappable_block (const swappable_block_identifier_type a, const bool a_is_transposed, block_scheduler_type &bs_a, const column_vector_type &x, column_vector_type &z, const vector_size_type offset_x=0, const vector_size_type offset_z=0)
 
static void matrix_from_vectors_swappable_block (swappable_block_identifier_type a, const bool a_is_transposed, block_scheduler_type &bs_a, const column_vector_type &l, const row_vector_type &r, vector_size_type offset_l, vector_size_type offset_r)
 
static void matrix_row_vector_multiply_and_add_swappable_block (const row_vector_type &y, const swappable_block_identifier_type a, const bool a_is_transposed, block_scheduler_type &bs_a, row_vector_type &z, const vector_size_type offset_y=0, const vector_size_type offset_z=0)
 
static
swappable_block_matrix_type
multi_level_strassen_winograd_multiply_and_add (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
 calculates C = A * B + C More...
 
static
swappable_block_matrix_type
multi_level_strassen_winograd_multiply_and_add_block_grained (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
 calculates C = A * B + C More...
 
static void multiply_and_add_swappable_block (const swappable_block_identifier_type a, const bool a_is_transposed, block_scheduler_type &bs_a, const swappable_block_identifier_type b, const bool b_is_transposed, block_scheduler_type &bs_b, const swappable_block_identifier_type c, const bool c_is_transposed, block_scheduler_type &bs_c)
 
static column_vector_typenaive_matrix_col_vector_multiply_and_add (const swappable_block_matrix_type &A, const column_vector_type &x, column_vector_type &z, const vector_size_type offset_x=0, const vector_size_type offset_z=0)
 
static void naive_matrix_from_vectors (swappable_block_matrix_type A, const column_vector_type &l, const row_vector_type &r, vector_size_type offset_l=0, vector_size_type offset_r=0)
 
static row_vector_typenaive_matrix_row_vector_multiply_and_add (const row_vector_type &y, const swappable_block_matrix_type &A, row_vector_type &z, const vector_size_type offset_y=0, const vector_size_type offset_z=0)
 
static
swappable_block_matrix_type
naive_multiply_and_add (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
 calculates C = A * B + C More...
 
template<class Op >
static void op_swappable_block_nontransposed (swappable_block_matrix_type &c, swappable_block_matrix_type &a, Op op, swappable_block_matrix_type &b, size_type &row, size_type &col)
 
template<class Op >
static void op_swappable_block_nontransposed (swappable_block_matrix_type &c, Op op, swappable_block_matrix_type &a, size_type &row, size_type &col)
 
static column_vector_typerecursive_matrix_col_vector_multiply_and_add (const swappable_block_matrix_type &A, const column_vector_type &x, column_vector_type &z, const vector_size_type offset_x=0, const vector_size_type offset_z=0)
 calculates z = A * x More...
 
static void recursive_matrix_from_vectors (swappable_block_matrix_type A, const column_vector_type &l, const row_vector_type &r, vector_size_type offset_l=0, vector_size_type offset_r=0)
 
static row_vector_typerecursive_matrix_row_vector_multiply_and_add (const row_vector_type &y, const swappable_block_matrix_type &A, row_vector_type &z, const vector_size_type offset_y=0, const vector_size_type offset_z=0)
 calculates z = y * A More...
 
static
swappable_block_matrix_type
recursive_multiply_and_add (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
 calculates C = A * B + C More...
 
static
swappable_block_matrix_type
strassen_winograd_multiply (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
 calculates C = A * B More...
 
static
swappable_block_matrix_type
strassen_winograd_multiply_and_add (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
 calculates C = A * B + C More...
 
static
swappable_block_matrix_type
strassen_winograd_multiply_and_add_interleaved (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
 calculates C = A * B + C More...
 
static void strassen_winograd_postaddition (swappable_block_matrix_type &c11, swappable_block_matrix_type &c12, swappable_block_matrix_type &c21, swappable_block_matrix_type &c22, swappable_block_matrix_type &p1, swappable_block_matrix_type &p3, swappable_block_matrix_type &p5)
 
static void strassen_winograd_preaddition_a (swappable_block_matrix_type &a11, swappable_block_matrix_type &a12, swappable_block_matrix_type &a21, swappable_block_matrix_type &a22, swappable_block_matrix_type &s1, swappable_block_matrix_type &s2, swappable_block_matrix_type &s3, swappable_block_matrix_type &s4)
 
static void strassen_winograd_preaddition_b (swappable_block_matrix_type &b11, swappable_block_matrix_type &b12, swappable_block_matrix_type &b21, swappable_block_matrix_type &b22, swappable_block_matrix_type &t1, swappable_block_matrix_type &t2, swappable_block_matrix_type &t3, swappable_block_matrix_type &t4)
 
template<unsigned Level>
static void use_feedable_sw (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
 
template<unsigned Level>
static void use_feedable_sw_block_grained (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
 

Public Attributes

template<class Op >
static
swappable_block_matrix_type
&return 
C
 

Static Public Attributes

static const int_type strassen_winograd_base_case_size = 3
 

Member Typedef Documentation

template<typename ValueType , unsigned BlockSideLength>
typedef swappable_block_matrix_type::block_scheduler_type stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::block_scheduler_type

Definition at line 1024 of file matrix_arithmetic.h.

template<typename ValueType , unsigned BlockSideLength>
typedef column_vector<ValueType> stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::column_vector_type

Definition at line 1028 of file matrix_arithmetic.h.

template<typename ValueType , unsigned BlockSideLength>
typedef block_scheduler_type::internal_block_type stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::internal_block_type

Definition at line 1026 of file matrix_arithmetic.h.

template<typename ValueType , unsigned BlockSideLength>
typedef row_vector<ValueType> stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::row_vector_type

Definition at line 1029 of file matrix_arithmetic.h.

template<typename ValueType , unsigned BlockSideLength>
typedef swappable_block_matrix_type::size_type stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::size_type

Definition at line 1027 of file matrix_arithmetic.h.

template<typename ValueType , unsigned BlockSideLength>
typedef swappable_block_matrix_type::swappable_block_identifier_type stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::swappable_block_identifier_type

Definition at line 1025 of file matrix_arithmetic.h.

template<typename ValueType , unsigned BlockSideLength>
typedef swappable_block_matrix<ValueType, BlockSideLength> stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::swappable_block_matrix_type

Definition at line 1023 of file matrix_arithmetic.h.

template<typename ValueType , unsigned BlockSideLength>
typedef column_vector_type::size_type stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::vector_size_type

Definition at line 1030 of file matrix_arithmetic.h.

Member Function Documentation

template<typename ValueType , unsigned BlockSideLength>
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::choose_level_for_feedable_sw ( const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
swappable_block_matrix_type C 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op_swappable_block ( const swappable_block_identifier_type  c,
const bool  c_is_transposed,
block_scheduler_type bs_c,
const swappable_block_identifier_type  a,
bool  a_is_transposed,
block_scheduler_type bs_a,
const swappable_block_identifier_type  b,
bool  b_is_transposed,
block_scheduler_type bs_b,
Op  op = Op() 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op_swappable_block ( const swappable_block_identifier_type  c,
const bool  c_is_transposed,
block_scheduler_type bs_c,
const swappable_block_identifier_type  a,
const bool  a_is_transposed,
block_scheduler_type bs_a,
Op  op = Op() 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op_swappable_block ( const swappable_block_identifier_type  c,
block_scheduler_type bs_c,
Op  op = Op() 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op_twice_nontransposed ( swappable_block_matrix_type c1,
swappable_block_matrix_type c2,
const swappable_block_matrix_type a,
Op  op = Op() 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::matrix_col_vector_multiply_and_add_swappable_block ( const swappable_block_identifier_type  a,
const bool  a_is_transposed,
block_scheduler_type bs_a,
const column_vector_type x,
column_vector_type z,
const vector_size_type  offset_x = 0,
const vector_size_type  offset_z = 0 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::matrix_from_vectors_swappable_block ( swappable_block_identifier_type  a,
const bool  a_is_transposed,
block_scheduler_type bs_a,
const column_vector_type l,
const row_vector_type r,
vector_size_type  offset_l,
vector_size_type  offset_r 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::matrix_row_vector_multiply_and_add_swappable_block ( const row_vector_type y,
const swappable_block_identifier_type  a,
const bool  a_is_transposed,
block_scheduler_type bs_a,
row_vector_type z,
const vector_size_type  offset_y = 0,
const vector_size_type  offset_z = 0 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
static swappable_block_matrix_type& stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::multi_level_strassen_winograd_multiply_and_add ( const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
swappable_block_matrix_type C 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::multiply_and_add_swappable_block ( const swappable_block_identifier_type  a,
const bool  a_is_transposed,
block_scheduler_type bs_a,
const swappable_block_identifier_type  b,
const bool  b_is_transposed,
block_scheduler_type bs_b,
const swappable_block_identifier_type  c,
const bool  c_is_transposed,
block_scheduler_type bs_c 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::op_swappable_block_nontransposed ( swappable_block_matrix_type c,
swappable_block_matrix_type a,
Op  op,
swappable_block_matrix_type b,
size_type row,
size_type col 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::op_swappable_block_nontransposed ( swappable_block_matrix_type c,
Op  op,
swappable_block_matrix_type a,
size_type row,
size_type col 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_postaddition ( swappable_block_matrix_type c11,
swappable_block_matrix_type c12,
swappable_block_matrix_type c21,
swappable_block_matrix_type c22,
swappable_block_matrix_type p1,
swappable_block_matrix_type p3,
swappable_block_matrix_type p5 
)
inlinestatic
template<typename ValueType , unsigned BlockSideLength>
template<unsigned Level>
static void stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::use_feedable_sw ( const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
swappable_block_matrix_type C 
)
inlinestatic

Member Data Documentation

template<typename ValueType , unsigned BlockSideLength>
template<class Op >
swappable_block_matrix_type& return stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::C
Initial value:
{
C(row, col), C.bs, op)

Definition at line 1101 of file matrix_arithmetic.h.

template<typename ValueType , unsigned BlockSideLength>
const int_type stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_base_case_size = 3
static

Definition at line 1021 of file matrix_arithmetic.h.


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