| STXXL
    1.4-dev
    | 
External matrix container. 
 Introduction  to matrix container: see STXXL Matrix tutorial. 
 Design and Internals  of matrix container: see Matrix. 
| ValueType | type of contained objects (POD with no references to internal memory) | 
| BlockSideLength | side length of a matrix block | 
Divides the matrix in square submatrices (blocks). Blocks can be swapped individually to and from external memory. They are only swapped if necessary to minimize I/O.
 Collaboration diagram for stxxl::matrix< ValueType, BlockSideLength >:
 Collaboration diagram for stxxl::matrix< ValueType, BlockSideLength >:| Public Types | |
| typedef matrix_col_major_iterator < ValueType, BlockSideLength > | col_major_iterator | 
| typedef column_vector< ValueType > | column_vector_type | 
| typedef const_matrix_col_major_iterator < ValueType, BlockSideLength > | const_col_major_iterator | 
| typedef const_matrix_iterator < ValueType, BlockSideLength > | const_iterator | 
| typedef const_matrix_row_major_iterator < ValueType, BlockSideLength > | const_row_major_iterator | 
| typedef matrix_iterator < ValueType, BlockSideLength > | iterator | 
| typedef matrix_row_major_iterator < ValueType, BlockSideLength > | row_major_iterator | 
| typedef row_vector< ValueType > | row_vector_type | 
| Public Member Functions | |
| Constructors/Destructors | |
| matrix (block_scheduler_type &bs, const elem_size_type height, const elem_size_type width) | |
| Creates a new matrix of given dimensions. Elements' values are set to zero.  More... | |
| matrix (block_scheduler_type &bs, const column_vector_type &left, const row_vector_type &right) | |
| ~matrix () | |
| Capacity | |
| const elem_size_type & | get_height () const | 
| const elem_size_type & | get_width () const | 
| Iterators | |
| iterator | begin () | 
| const_iterator | begin () const | 
| const_iterator | cbegin () const | 
| iterator | end () | 
| const_iterator | end () const | 
| const_iterator | cend () const | 
| const_iterator | operator() (const elem_size_type row, const elem_size_type col) const | 
| iterator | operator() (const elem_size_type row, const elem_size_type col) | 
| Modifiers | |
| void | transpose () | 
| void | set_zero () | 
| Operations | |
| matrix_type | operator+ (const matrix_type &right) const | 
| matrix_type | operator- (const matrix_type &right) const | 
| matrix_type | operator* (const matrix_type &right) const | 
| matrix_type | operator* (const ValueType scalar) const | 
| matrix_type & | operator+= (const matrix_type &right) | 
| matrix_type & | operator-= (const matrix_type &right) | 
| matrix_type & | operator*= (const matrix_type &right) | 
| matrix_type & | operator*= (const ValueType scalar) | 
| column_vector_type | operator* (const column_vector_type &right) const | 
| row_vector_type | multiply_from_left (const row_vector_type &left) const | 
| matrix_type | multiply (const matrix_type &right, const int_type multiplication_algorithm=1, const int_type scheduling_algorithm=2) const | 
| multiply with another matrix  More... | |
| matrix_type | multiply_internal (const matrix_type &right, const int_type scheduling_algorithm=2) const | 
| Use internal memory multiplication. Designated for testing. May exceed memory limitations.  More... | |
| Protected Types | |
| typedef swappable_block_matrix_type::block_scheduler_type | block_scheduler_type | 
| typedef swappable_block_matrix_type::size_type | block_size_type | 
| typedef swappable_block_matrix_type::elem_size_type | elem_size_type | 
| typedef matrix< ValueType, BlockSideLength > | matrix_type | 
| typedef matrix_local::matrix_operations < ValueType, BlockSideLength > | Ops | 
| typedef counting_ptr < swappable_block_matrix_type > | swappable_block_matrix_pointer_type | 
| typedef swappable_block_matrix < ValueType, BlockSideLength > | swappable_block_matrix_type | 
| typedef matrix_swappable_block < ValueType, BlockSideLength > | swappable_block_type | 
| Protected Member Functions | |
| void | multiply_internal (const matrix_type &right, matrix_type &res) const | 
| Protected Attributes | |
| swappable_block_matrix_pointer_type | data | 
| elem_size_type | height | 
| elem_size_type | width | 
| 
 | protected | 
| 
 | protected | 
| typedef matrix_col_major_iterator<ValueType, BlockSideLength> stxxl::matrix< ValueType, BlockSideLength >::col_major_iterator | 
| typedef column_vector<ValueType> stxxl::matrix< ValueType, BlockSideLength >::column_vector_type | 
| typedef const_matrix_col_major_iterator<ValueType, BlockSideLength> stxxl::matrix< ValueType, BlockSideLength >::const_col_major_iterator | 
| typedef const_matrix_iterator<ValueType, BlockSideLength> stxxl::matrix< ValueType, BlockSideLength >::const_iterator | 
| typedef const_matrix_row_major_iterator<ValueType, BlockSideLength> stxxl::matrix< ValueType, BlockSideLength >::const_row_major_iterator | 
| 
 | protected | 
| typedef matrix_iterator<ValueType, BlockSideLength> stxxl::matrix< ValueType, BlockSideLength >::iterator | 
| 
 | protected | 
| 
 | protected | 
| typedef matrix_row_major_iterator<ValueType, BlockSideLength> stxxl::matrix< ValueType, BlockSideLength >::row_major_iterator | 
| typedef row_vector<ValueType> stxxl::matrix< ValueType, BlockSideLength >::row_vector_type | 
| 
 | protected | 
| 
 | protected | 
| 
 | protected | 
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
Definition at line 1117 of file matrix.h.
Referenced by stxxl::matrix< ValueType, BlockSideLength >::multiply_internal().
| 
 | inline | 
| 
 | inline | 
Definition at line 1124 of file matrix.h.
Referenced by stxxl::matrix< ValueType, BlockSideLength >::multiply_internal().
| 
 | inline | 
Definition at line 1133 of file matrix.h.
Referenced by stxxl::matrix< ValueType, BlockSideLength >::multiply_internal().
| 
 | inline | 
Definition at line 1126 of file matrix.h.
Referenced by stxxl::matrix< ValueType, BlockSideLength >::multiply_internal().
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
multiply with another matrix
| right | matrix to multiply with | 
| multiplication_algorithm | allows to choose the applied algorithm | 
| scheduling_algorithm | allows to choose the applied algorithm | 
Available algorithms are: 
 0: naive_multiply_and_add (I/O inefficient, slow) 
 1: recursive_multiply_and_add (recommended, default, stable time and I/O complexity) 
 2: strassen_winograd_multiply_and_add (sometimes fast but unstable time and I/O complexity) 
 3: multi_level_strassen_winograd_multiply_and_add (sometimes fast but unstable time and I/O complexity) 
 4: strassen_winograd_multiply, optimized pre- and postadditions (sometimes fast but unstable time and I/O complexity) 
 5: strassen_winograd_multiply_and_add_interleaved, optimized preadditions (sometimes fast but unstable time and I/O complexity) 
 6: multi_level_strassen_winograd_multiply_and_add_block_grained (sometimes fast but unstable time and I/O complexity) 
Definition at line 1249 of file matrix.h.
References stxxl::swappable_block_matrix< ValueType, BlockSideLength >::bs, stxxl::matrix< ValueType, BlockSideLength >::data, stxxl::matrix< ValueType, BlockSideLength >::height, STXXL_ERRMSG, and stxxl::matrix< ValueType, BlockSideLength >::width.
| 
 | inline | 
Definition at line 1227 of file matrix.h.
References stxxl::row_vector< ValueType >::set_zero(), and stxxl::vector< ValueType, PageSize, PagerType, BlockSize, AllocStr, SizeType >::size().
Referenced by stxxl::row_vector< ValueType >::operator*().
| 
 | inline | 
Use internal memory multiplication. Designated for testing. May exceed memory limitations.
Definition at line 1343 of file matrix.h.
References stxxl::swappable_block_matrix< ValueType, BlockSideLength >::bs, stxxl::matrix< ValueType, BlockSideLength >::data, stxxl::matrix< ValueType, BlockSideLength >::height, STXXL_ERRMSG, and stxxl::matrix< ValueType, BlockSideLength >::width.
| 
 | inlineprotected | 
Definition at line 1386 of file matrix.h.
References stxxl::matrix< ValueType, BlockSideLength >::begin(), stxxl::swappable_block_matrix< ValueType, BlockSideLength >::bs, stxxl::matrix< ValueType, BlockSideLength >::cbegin(), stxxl::matrix< ValueType, BlockSideLength >::cend(), stxxl::matrix< ValueType, BlockSideLength >::data, stxxl::matrix< ValueType, BlockSideLength >::end(), stxxl::matrix< ValueType, BlockSideLength >::height, stxxl::block_scheduler< SwappableBlockType >::is_simulating(), and stxxl::matrix< ValueType, BlockSideLength >::width.
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
Definition at line 1185 of file matrix.h.
References stxxl::matrix< ValueType, BlockSideLength >::data.
| 
 | inline | 
Definition at line 1218 of file matrix.h.
References stxxl::column_vector< ValueType >::set_zero(), and stxxl::vector< ValueType, PageSize, PagerType, BlockSize, AllocStr, SizeType >::size().
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
Definition at line 1166 of file matrix.h.
References stxxl::matrix< ValueType, BlockSideLength >::data, stxxl::matrix< ValueType, BlockSideLength >::height, and stxxl::matrix< ValueType, BlockSideLength >::width.
| 
 | inline | 
Definition at line 1192 of file matrix.h.
References stxxl::matrix< ValueType, BlockSideLength >::data, stxxl::matrix< ValueType, BlockSideLength >::height, and stxxl::matrix< ValueType, BlockSideLength >::width.
| 
 | inline | 
Definition at line 1174 of file matrix.h.
References stxxl::matrix< ValueType, BlockSideLength >::data, stxxl::matrix< ValueType, BlockSideLength >::height, and stxxl::matrix< ValueType, BlockSideLength >::width.
| 
 | inline | 
Definition at line 1200 of file matrix.h.
References stxxl::matrix< ValueType, BlockSideLength >::data, stxxl::matrix< ValueType, BlockSideLength >::height, and stxxl::matrix< ValueType, BlockSideLength >::width.
| 
 | inline | 
Definition at line 1154 of file matrix.h.
References stxxl::div_ceil().
| 
 | inline | 
| 
 | protected | 
Definition at line 1069 of file matrix.h.
Referenced by stxxl::matrix< ValueType, BlockSideLength >::multiply(), stxxl::matrix< ValueType, BlockSideLength >::multiply_internal(), stxxl::matrix< ValueType, BlockSideLength >::operator*(), stxxl::matrix< ValueType, BlockSideLength >::operator+(), stxxl::matrix< ValueType, BlockSideLength >::operator+=(), stxxl::matrix< ValueType, BlockSideLength >::operator-(), and stxxl::matrix< ValueType, BlockSideLength >::operator-=().
| 
 | protected | 
Definition at line 1067 of file matrix.h.
Referenced by stxxl::matrix< ValueType, BlockSideLength >::multiply(), stxxl::matrix< ValueType, BlockSideLength >::multiply_internal(), stxxl::matrix< ValueType, BlockSideLength >::operator+(), stxxl::matrix< ValueType, BlockSideLength >::operator+=(), stxxl::matrix< ValueType, BlockSideLength >::operator-(), and stxxl::matrix< ValueType, BlockSideLength >::operator-=().
| 
 | protected | 
Definition at line 1067 of file matrix.h.
Referenced by stxxl::matrix< ValueType, BlockSideLength >::multiply(), stxxl::matrix< ValueType, BlockSideLength >::multiply_internal(), stxxl::matrix< ValueType, BlockSideLength >::operator+(), stxxl::matrix< ValueType, BlockSideLength >::operator+=(), stxxl::matrix< ValueType, BlockSideLength >::operator-(), and stxxl::matrix< ValueType, BlockSideLength >::operator-=().