STXXL
1.4.1
|
External container for a (sub)matrix. Not intended for direct use.
ValueType | type of contained objects (POD with no references to internal memory) |
BlockSideLength | side length of a matrix block |
Stores blocks only, so all measures (height, width, row, col) are in blocks.
Public Types | |
typedef block_scheduler < matrix_swappable_block < ValueType, BlockSideLength > > | block_scheduler_type |
typedef std::vector < swappable_block_identifier_type > | blocks_type |
typedef int_type | elem_size_type |
typedef matrix_local::matrix_operations < ValueType, BlockSideLength > | Ops |
typedef int_type | size_type |
typedef block_scheduler_type::swappable_block_identifier_type | swappable_block_identifier_type |
Public Member Functions | |
swappable_block_matrix (block_scheduler_type &bs, const size_type height_in_blocks, const size_type width_in_blocks, const bool transposed=false) | |
Create an empty swappable_block_matrix of given dimensions. More... | |
swappable_block_matrix (const swappable_block_matrix &supermatrix, const size_type height_in_blocks, const size_type width_in_blocks, const size_type from_row_in_blocks, const size_type from_col_in_blocks) | |
Create swappable_block_matrix of given dimensions that represents the submatrix of supermatrix starting at (from_row_in_blocks, from_col_in_blocks). More... | |
swappable_block_matrix (const swappable_block_matrix &ul, const swappable_block_matrix &ur, const swappable_block_matrix &dl, const swappable_block_matrix &dr) | |
Create swappable_block_matrix that represents the combination matrix ul ur dl dr. More... | |
swappable_block_matrix (const swappable_block_matrix &other) | |
~swappable_block_matrix () | |
const swappable_block_identifier_type & | block (const size_type row, const size_type col) const |
get identifier of the block at (row, col) More... | |
int_type | elem_index_in_block_from_elem (elem_size_type row, elem_size_type col) const |
const size_type & | get_height () const |
const size_type & | get_width () const |
const bool & | is_transposed () const |
if the elements inside the blocks are in transposed order i.e. column-major More... | |
const swappable_block_identifier_type & | operator() (const size_type row, const size_type col) const |
get identifier of the block at (row, col) More... | |
void | set_zero () |
void | transpose () |
Public Member Functions inherited from stxxl::atomic_counted_object | |
atomic_counted_object () | |
new objects have zero reference count More... | |
atomic_counted_object (const atomic_counted_object &) | |
coping still creates a new object with zero reference count More... | |
~atomic_counted_object () | |
bool | dec_reference () const |
Call whenever resetting (i.e. overwriting) a pointer to the object. IMPORTANT: In case of self-assignment, call AFTER inc_reference(). More... | |
unsigned_type | get_reference_count () const |
Return the number of references to this object (for debugging) More... | |
void | inc_reference () const |
Call whenever setting a pointer to the object. More... | |
atomic_counted_object & | operator= (const atomic_counted_object &) |
assignment operator, leaves pointers unchanged More... | |
bool | unique () const |
Test if the counted_object is referenced by only one counting_ptr. More... | |
Static Public Member Functions | |
static size_type | block_index_from_elem (elem_size_type index) |
static int_type | elem_index_in_block_from_elem (elem_size_type index) |
Public Attributes | |
block_scheduler_type & | bs |
Protected Member Functions | |
swappable_block_identifier_type & | bl (const size_type row, const size_type col) |
get identifier of the block at (row, col) More... | |
Protected Attributes | |
blocks_type | blocks |
the matrice's blocks in row-major More... | |
bool | elements_in_blocks_transposed |
if the elements in each block are in col-major instead of row-major More... | |
size_type | height |
height of the matrix in blocks More... | |
size_type | height_from_supermatrix |
height copied from supermatrix in blocks More... | |
size_type | width |
width of the matrix in blocks More... | |
size_type | width_from_supermatrix |
width copied from supermatrix in blocks More... | |
Private Member Functions | |
swappable_block_matrix & | operator= (const swappable_block_matrix &other) |
typedef block_scheduler<matrix_swappable_block<ValueType, BlockSideLength> > stxxl::swappable_block_matrix< ValueType, BlockSideLength >::block_scheduler_type |
typedef std::vector<swappable_block_identifier_type> stxxl::swappable_block_matrix< ValueType, BlockSideLength >::blocks_type |
typedef int_type stxxl::swappable_block_matrix< ValueType, BlockSideLength >::elem_size_type |
typedef matrix_local::matrix_operations<ValueType, BlockSideLength> stxxl::swappable_block_matrix< ValueType, BlockSideLength >::Ops |
typedef int_type stxxl::swappable_block_matrix< ValueType, BlockSideLength >::size_type |
typedef block_scheduler_type::swappable_block_identifier_type stxxl::swappable_block_matrix< ValueType, BlockSideLength >::swappable_block_identifier_type |
|
inline |
Create an empty swappable_block_matrix of given dimensions.
Definition at line 268 of file matrix.h.
References stxxl::block_scheduler< SwappableBlockType >::allocate_swappable_block().
|
inline |
Create swappable_block_matrix of given dimensions that represents the submatrix of supermatrix starting at (from_row_in_blocks, from_col_in_blocks).
If supermatrix is not large enough, the submatrix is padded with empty blocks. The supermatrix must not be destructed or transposed before the submatrix is destructed.
Definition at line 287 of file matrix.h.
References stxxl::swappable_block_matrix< ValueType, BlockSideLength >::block().
|
inline |
Create swappable_block_matrix that represents the combination matrix ul ur dl dr.
The submatrices are assumed to be of fitting dimensions and equal transposition. The submatrices must not be destructed or transposed before the matrix is destructed.
Definition at line 314 of file matrix.h.
References stxxl::swappable_block_matrix< ValueType, BlockSideLength >::block(), stxxl::swappable_block_matrix< ValueType, BlockSideLength >::height, and stxxl::swappable_block_matrix< ValueType, BlockSideLength >::width.
|
inline |
|
inline |
|
inlineprotected |
|
inline |
get identifier of the block at (row, col)
Definition at line 384 of file matrix.h.
Referenced by stxxl::swappable_block_matrix< ValueType, BlockSideLength >::swappable_block_matrix().
|
inlinestatic |
|
inlinestatic |
|
inline |
|
inline |
Definition at line 391 of file matrix.h.
Referenced by stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::choose_level_for_feedable_sw(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op_twice_nontransposed(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::feed_a(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, 0, AExists, BExists >::feed_a(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::feed_b(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, 0, AExists, BExists >::feed_b(), stxxl::matrix_local::matrix_to_quadtree< ValueType, BlockSideLength, Level >::matrix_to_quadtree(), stxxl::matrix_local::matrix_to_quadtree_block_grained< ValueType, BlockSideLength, Level, Granularity >::matrix_to_quadtree_block_grained(), stxxl::matrix_local::matrix_to_quadtree_block_grained< ValueType, BlockSideLength, 0, Granularity >::matrix_to_quadtree_block_grained(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::multi_level_strassen_winograd_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::multi_level_strassen_winograd_multiply_and_add_block_grained(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_col_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_from_vectors(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_row_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_multiply_and_add(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::read_and_add(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, 0, AExists, BExists >::read_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::recursive_matrix_col_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::recursive_matrix_from_vectors(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::recursive_matrix_row_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::recursive_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply_and_add_interleaved(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_postaddition(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_preaddition_a(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_preaddition_b(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::swappable_block_matrix_quarterer::swappable_block_matrix_quarterer(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::use_feedable_sw(), and stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::use_feedable_sw_block_grained().
|
inline |
Definition at line 394 of file matrix.h.
Referenced by stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::choose_level_for_feedable_sw(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op_twice_nontransposed(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::feed_a(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, 0, AExists, BExists >::feed_a(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::feed_b(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, 0, AExists, BExists >::feed_b(), stxxl::matrix_local::matrix_to_quadtree< ValueType, BlockSideLength, Level >::matrix_to_quadtree(), stxxl::matrix_local::matrix_to_quadtree_block_grained< ValueType, BlockSideLength, Level, Granularity >::matrix_to_quadtree_block_grained(), stxxl::matrix_local::matrix_to_quadtree_block_grained< ValueType, BlockSideLength, 0, Granularity >::matrix_to_quadtree_block_grained(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::multi_level_strassen_winograd_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::multi_level_strassen_winograd_multiply_and_add_block_grained(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_col_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_from_vectors(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_row_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_multiply_and_add(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::read_and_add(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, 0, AExists, BExists >::read_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::recursive_matrix_col_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::recursive_matrix_from_vectors(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::recursive_matrix_row_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::recursive_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply_and_add_interleaved(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_postaddition(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_preaddition_a(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_preaddition_b(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::swappable_block_matrix_quarterer::swappable_block_matrix_quarterer(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::use_feedable_sw(), and stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::use_feedable_sw_block_grained().
|
inline |
if the elements inside the blocks are in transposed order i.e. column-major
Definition at line 398 of file matrix.h.
Referenced by stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::feed_a(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::feed_b(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_col_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_from_vectors(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_row_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_multiply_and_add(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::read_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply(), and stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply_and_add_interleaved().
|
inline |
|
private |
|
inline |
Definition at line 415 of file matrix.h.
Referenced by stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply().
|
inline |
|
protected |
block_scheduler_type& stxxl::swappable_block_matrix< ValueType, BlockSideLength >::bs |
Definition at line 242 of file matrix.h.
Referenced by stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::element_op_twice_nontransposed(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::feed_a(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::feed_b(), stxxl::matrix< ValueType, BlockSideLength >::multiply(), stxxl::matrix< ValueType, BlockSideLength >::multiply_internal(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_col_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_from_vectors(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_matrix_row_vector_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::naive_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::op_swappable_block_nontransposed(), stxxl::matrix_local::feedable_strassen_winograd_block_grained< ValueType, BlockSideLength, Level, AExists, BExists >::read_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply_and_add(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::strassen_winograd_multiply_and_add_interleaved(), stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::use_feedable_sw(), and stxxl::matrix_local::matrix_operations< ValueType, BlockSideLength >::use_feedable_sw_block_grained().
|
protected |
|
protected |
height of the matrix in blocks
Definition at line 250 of file matrix.h.
Referenced by stxxl::swappable_block_matrix< ValueType, BlockSideLength >::swappable_block_matrix().
|
protected |
|
protected |
width of the matrix in blocks
Definition at line 250 of file matrix.h.
Referenced by stxxl::swappable_block_matrix< ValueType, BlockSideLength >::swappable_block_matrix().
|
protected |