Stxxl  1.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Classes | Public Types | Static Public Member Functions | Static Public Attributes
stxxl::matrix_operations< ValueType, BlockSideLength > Struct Template Reference

#include <matrix_arithmetic.h>

List of all members.

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
< ValueType, BlockSideLength > 
swappable_block_matrix_type
typedef
swappable_block_matrix_type::block_scheduler_type 
block_scheduler_type
typedef
swappable_block_matrix_type::swappable_block_identifier_type 
swappable_block_identifier_type
typedef
block_scheduler_type::internal_block_type 
internal_block_type
typedef
swappable_block_matrix_type::size_type 
size_type
typedef column_vector< ValueType > column_vector_type
typedef row_vector< ValueType > row_vector_type
typedef
column_vector_type::size_type 
vector_size_type

Static Public Member Functions

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
swappable_block_matrix_type
element_op (swappable_block_matrix_type &C, 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())
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)
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)
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())
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
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
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)
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
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<unsigned Level>
static void use_feedable_sw (const swappable_block_matrix_type &A, const swappable_block_matrix_type &B, swappable_block_matrix_type &C)
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
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
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
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
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
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_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
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 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 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
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 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 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 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 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 Public Attributes

static const int_type strassen_winograd_base_case_size = 3

Detailed Description

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

Definition at line 998 of file matrix_arithmetic.h.


Member Typedef Documentation

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

Definition at line 1005 of file matrix_arithmetic.h.

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

Definition at line 1009 of file matrix_arithmetic.h.

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

Definition at line 1007 of file matrix_arithmetic.h.

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

Definition at line 1010 of file matrix_arithmetic.h.

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

Definition at line 1008 of file matrix_arithmetic.h.

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

Definition at line 1006 of file matrix_arithmetic.h.

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

Definition at line 1004 of file matrix_arithmetic.h.

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

Definition at line 1011 of file matrix_arithmetic.h.


Member Function Documentation

template<typename ValueType , unsigned BlockSideLength>
static void stxxl::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static swappable_block_matrix_type& stxxl::matrix_operations< ValueType, BlockSideLength >::element_op ( swappable_block_matrix_type C,
const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
Op  op = Op() 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static swappable_block_matrix_type& stxxl::matrix_operations< ValueType, BlockSideLength >::element_op ( swappable_block_matrix_type C,
const swappable_block_matrix_type A,
Op  op = Op() 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static swappable_block_matrix_type& stxxl::matrix_operations< ValueType, BlockSideLength >::element_op ( swappable_block_matrix_type C,
Op  op = Op() 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::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() 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::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() 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::matrix_operations< ValueType, BlockSideLength >::element_op_swappable_block ( const swappable_block_identifier_type  c,
block_scheduler_type bs_c,
Op  op = Op() 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::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() 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static swappable_block_matrix_type& stxxl::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static swappable_block_matrix_type& stxxl::matrix_operations< ValueType, BlockSideLength >::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static column_vector_type& stxxl::matrix_operations< ValueType, BlockSideLength >::naive_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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::matrix_operations< ValueType, BlockSideLength >::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static row_vector_type& stxxl::matrix_operations< ValueType, BlockSideLength >::naive_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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static swappable_block_matrix_type& stxxl::matrix_operations< ValueType, BlockSideLength >::naive_multiply_and_add ( const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
swappable_block_matrix_type C 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<class Op >
static void stxxl::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static column_vector_type& stxxl::matrix_operations< ValueType, BlockSideLength >::recursive_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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::matrix_operations< ValueType, BlockSideLength >::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static row_vector_type& stxxl::matrix_operations< ValueType, BlockSideLength >::recursive_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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static swappable_block_matrix_type& stxxl::matrix_operations< ValueType, BlockSideLength >::recursive_multiply_and_add ( const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
swappable_block_matrix_type C 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static swappable_block_matrix_type& stxxl::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply ( const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
swappable_block_matrix_type C 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static swappable_block_matrix_type& stxxl::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply_and_add ( const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
swappable_block_matrix_type C 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static swappable_block_matrix_type& stxxl::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply_and_add_interleaved ( const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
swappable_block_matrix_type C 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::matrix_operations< ValueType, BlockSideLength >::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
static void stxxl::matrix_operations< ValueType, BlockSideLength >::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 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<unsigned Level>
static void stxxl::matrix_operations< ValueType, BlockSideLength >::use_feedable_sw ( const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
swappable_block_matrix_type C 
) [inline, static]
template<typename ValueType , unsigned BlockSideLength>
template<unsigned Level>
static void stxxl::matrix_operations< ValueType, BlockSideLength >::use_feedable_sw_block_grained ( const swappable_block_matrix_type A,
const swappable_block_matrix_type B,
swappable_block_matrix_type C 
) [inline, static]

Member Data Documentation

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

Definition at line 1002 of file matrix_arithmetic.h.


The documentation for this struct was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines