matrix_data< ValueType, IndexType > Struct Template Reference#
|
Reference API
|
#include <ginkgo/core/base/matrix_data.hpp>
Public Types | |
| using | value_type = ValueType |
| using | index_type = IndexType |
| using | nonzero_type = matrix_data_entry< value_type, index_type > |
Public Member Functions | |
| matrix_data (dim< 2 > size_=dim< 2 >{}, ValueType value=zero< ValueType >()) | |
| template<typename RandomDistribution , typename RandomEngine > | |
| matrix_data (dim< 2 > size_, RandomDistribution &&dist, RandomEngine &&engine) | |
| matrix_data (std::initializer_list< std::initializer_list< ValueType > > values) | |
| matrix_data (dim< 2 > size_, std::initializer_list< detail::input_triple< ValueType, IndexType > > nonzeros_) | |
| matrix_data (dim< 2 > size_, const matrix_data &block) | |
| template<typename Accessor > | |
| matrix_data (const range< Accessor > &data) | |
| void | sort_row_major () |
| void | ensure_row_major_order () |
| void | remove_zeros () |
| void | sum_duplicates () |
Static Public Member Functions | |
| static matrix_data | diag (dim< 2 > size_, ValueType value) |
| static matrix_data | diag (dim< 2 > size_, std::initializer_list< ValueType > nonzeros_) |
| static matrix_data | diag (dim< 2 > size_, const matrix_data &block) |
| template<typename ForwardIterator > | |
| static matrix_data | diag (ForwardIterator begin, ForwardIterator end) |
| static matrix_data | diag (std::initializer_list< matrix_data > blocks) |
| template<typename RandomDistribution , typename RandomEngine > | |
| static matrix_data | cond (size_type size, remove_complex< ValueType > condition_number, RandomDistribution &&dist, RandomEngine &&engine, size_type num_reflectors) |
| template<typename RandomDistribution , typename RandomEngine > | |
| static matrix_data | cond (size_type size, remove_complex< ValueType > condition_number, RandomDistribution &&dist, RandomEngine &&engine) |
Public Attributes | |
| dim< 2 > | size |
| std::vector< nonzero_type > | nonzeros |
Detailed Description
struct gko::matrix_data< ValueType, IndexType >
This structure is used as an intermediate data type to store a sparse matrix.
The matrix is stored as a sequence of nonzero elements, where each element is a triple of the form (row_index, column_index, value).
- Note
- All Ginkgo functions returning such a structure will return the nonzeros sorted in row-major order.
- All Ginkgo functions that take this structure as input expect that the nonzeros are sorted in row-major order and that the index pair (row_index, column_index) of each nonzero is unique.
- This structure is not optimized for usual access patterns and it can only exist on the CPU. Thus, it should only be used for utility functions which do not have to be optimized for performance.
- Template Parameters
-
ValueType type of matrix values stored in the structure IndexType type of matrix indexes stored in the structure
Constructor & Destructor Documentation
◆ matrix_data() [1/6]
|
inline |
Initializes a matrix filled with the specified value.
- Parameters
-
size_ dimensions of the matrix value value used to fill the elements of the matrix
◆ matrix_data() [2/6]
|
inline |
Initializes a matrix with random values from the specified distribution.
- Template Parameters
-
RandomDistribution random distribution type RandomEngine random engine type
- Parameters
-
size_ dimensions of the matrix dist random distribution of the elements of the matrix engine random engine used to generate random values
References gko::is_nonzero(), gko::matrix_data< ValueType, IndexType >::nonzeros, and gko::matrix_data< ValueType, IndexType >::size.
◆ matrix_data() [3/6]
|
inline |
List-initializes the structure from a matrix of values.
- Parameters
-
values a 2D braced-init-list of matrix values.
References gko::is_nonzero(), gko::matrix_data< ValueType, IndexType >::nonzeros, and gko::matrix_data< ValueType, IndexType >::size.
◆ matrix_data() [4/6]
|
inline |
Initializes the structure from a list of nonzeros.
- Parameters
-
size_ dimensions of the matrix nonzeros_ list of nonzero elements
References gko::matrix_data< ValueType, IndexType >::nonzeros.
◆ matrix_data() [5/6]
|
inline |
Initializes a matrix out of a matrix block via duplication.
- Parameters
-
size size of the block-matrix (in blocks) diag_block matrix block used to fill the complete matrix
References gko::matrix_data< ValueType, IndexType >::nonzeros, gko::matrix_data< ValueType, IndexType >::size, and gko::matrix_data< ValueType, IndexType >::sort_row_major().
◆ matrix_data() [6/6]
|
inline |
Initializes a matrix from a range.
- Template Parameters
-
Accessor accessor type of the input range
- Parameters
-
data range used to initialize the matrix
References gko::is_nonzero(), gko::matrix_data< ValueType, IndexType >::nonzeros, and gko::matrix_data< ValueType, IndexType >::size.
Member Function Documentation
◆ cond() [1/2]
|
inlinestatic |
Initializes a random dense matrix with a specific condition number.
The matrix is generated by applying a series of random Hausholder reflectors to a diagonal matrix with diagonal entries uniformly distributed between sqrt(condition_number) and 1/sqrt(condition_number).
This version of the function applies size - 1 reflectors to each side of the diagonal matrix.
- Template Parameters
-
RandomDistribution the type of the random distribution RandomEngine the type of the random engine
- Parameters
-
size number of rows and columns of the matrix condition_number condition number of the matrix dist random distribution used to generate reflectors engine random engine used to generate reflectors
- Returns
- the dense matrix with the specified condition number
References gko::matrix_data< ValueType, IndexType >::cond(), and gko::matrix_data< ValueType, IndexType >::size.
◆ cond() [2/2]
|
inlinestatic |
Initializes a random dense matrix with a specific condition number.
The matrix is generated by applying a series of random Hausholder reflectors to a diagonal matrix with diagonal entries uniformly distributed between sqrt(condition_number) and 1/sqrt(condition_number).
- Template Parameters
-
RandomDistribution the type of the random distribution RandomEngine the type of the random engine
- Parameters
-
size number of rows and columns of the matrix condition_number condition number of the matrix dist random distribution used to generate reflectors engine random engine used to generate reflectors num_reflectors number of reflectors to apply from each side
- Returns
- the dense matrix with the specified condition number
References gko::matrix_data< ValueType, IndexType >::size.
Referenced by gko::matrix_data< ValueType, IndexType >::cond().
◆ diag() [1/5]
|
inlinestatic |
Initializes a block-diagonal matrix.
- Parameters
-
size_ the size of the matrix diag_block matrix used to fill diagonal blocks
- Returns
- the block-diagonal matrix
References gko::matrix_data< ValueType, IndexType >::nonzeros, and gko::matrix_data< ValueType, IndexType >::size.
◆ diag() [2/5]
|
inlinestatic |
Initializes a diagonal matrix using a list of diagonal elements.
- Parameters
-
size_ dimensions of the matrix nonzeros_ list of diagonal elements
- Returns
- the diagonal matrix
References gko::matrix_data< ValueType, IndexType >::nonzeros.
◆ diag() [3/5]
|
inlinestatic |
Initializes a diagonal matrix.
- Parameters
-
size_ dimensions of the matrix value value used to fill the elements of the matrix
- Returns
- the diagonal matrix
References gko::is_nonzero(), and gko::matrix_data< ValueType, IndexType >::nonzeros.
Referenced by gko::matrix_data< ValueType, IndexType >::diag().
◆ diag() [4/5]
|
inlinestatic |
Initializes a block-diagonal matrix from a list of diagonal blocks.
- Template Parameters
-
ForwardIterator type of list iterator
- Parameters
-
begin the first iterator of the list end the last iterator of the list
- Returns
- the block-diagonal matrix with diagonal blocks set to the blocks between begin (inclusive) and end (exclusive)
References gko::matrix_data< ValueType, IndexType >::nonzeros.
◆ diag() [5/5]
|
inlinestatic |
Initializes a block-diagonal matrix from a list of diagonal blocks.
- Parameters
-
blocks a list of blocks to initialize from
- Returns
- the block-diagonal matrix with diagonal blocks set to the blocks passed in blocks
References gko::matrix_data< ValueType, IndexType >::diag().
◆ ensure_row_major_order()
|
inline |
Sorts the nonzero vector so the values follow row-major order.
References gko::matrix_data< ValueType, IndexType >::sort_row_major().
◆ remove_zeros()
|
inline |
Remove entries with value zero from the matrix data.
References gko::is_zero(), and gko::matrix_data< ValueType, IndexType >::nonzeros.
◆ sort_row_major()
|
inline |
Sorts the nonzero vector so the values follow row-major order.
References gko::matrix_data< ValueType, IndexType >::nonzeros.
Referenced by gko::matrix_data< ValueType, IndexType >::ensure_row_major_order(), gko::matrix_data< ValueType, IndexType >::matrix_data(), and gko::matrix_data< ValueType, IndexType >::sum_duplicates().
◆ sum_duplicates()
|
inline |
Sum up all values that refer to the same matrix entry. The result is sorted in row-major order.
References gko::matrix_data< ValueType, IndexType >::nonzeros, and gko::matrix_data< ValueType, IndexType >::sort_row_major().
Member Data Documentation
◆ nonzeros
| std::vector<nonzero_type> gko::matrix_data< ValueType, IndexType >::nonzeros |
A vector of tuples storing the non-zeros of the matrix.
The first two elements of the tuple are the row index and the column index of a matrix element, and its third element is the value at that position.
Referenced by gko::matrix_data< ValueType, IndexType >::diag(), gko::matrix_data< ValueType, IndexType >::diag(), gko::matrix_data< ValueType, IndexType >::diag(), gko::matrix_data< ValueType, IndexType >::diag(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::remove_zeros(), gko::matrix_data< ValueType, IndexType >::sort_row_major(), and gko::matrix_data< ValueType, IndexType >::sum_duplicates().
◆ size
| dim<2> gko::matrix_data< ValueType, IndexType >::size |
Size of the matrix.
Referenced by gko::matrix_data< ValueType, IndexType >::cond(), gko::matrix_data< ValueType, IndexType >::cond(), gko::matrix_data< ValueType, IndexType >::diag(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::matrix_data(), gko::matrix_data< ValueType, IndexType >::matrix_data(), and gko::matrix_data< ValueType, IndexType >::matrix_data().
The documentation for this struct was generated from the following file:
- ginkgo/core/base/matrix_data.hpp
Generated by