This structure is used as an intermediate data type to store a sparse matrix.
More...
|
| matrix_data (dim< 2 > size_=dim< 2 >{}, ValueType value=zero< ValueType >()) |
| Initializes a matrix filled with the specified value. More...
|
|
template<typename RandomDistribution , typename RandomEngine > |
| matrix_data (dim< 2 > size_, RandomDistribution &&dist, RandomEngine &&engine) |
| Initializes a matrix with random values from the specified distribution. More...
|
|
| matrix_data (std::initializer_list< std::initializer_list< ValueType >> values) |
| List-initializes the structure from a matrix of values. More...
|
|
| matrix_data (dim< 2 > size_, std::initializer_list< detail::input_triple< ValueType, IndexType >> nonzeros_) |
| Initializes the structure from a list of nonzeros. More...
|
|
| matrix_data (dim< 2 > size_, const matrix_data &block) |
| Initializes a matrix out of a matrix block via duplication. More...
|
|
template<typename Accessor > |
| matrix_data (const range< Accessor > &data) |
| Initializes a matrix from a range. More...
|
|
void | sort_row_major () |
| Sorts the nonzero vector so the values follow row-major order.
|
|
void | ensure_row_major_order () |
| Sorts the nonzero vector so the values follow row-major order.
|
|
void | remove_zeros () |
| Remove entries with value zero from the matrix data.
|
|
void | sum_duplicates () |
| Sum up all values that refer to the same matrix entry. More...
|
|
|
static matrix_data | diag (dim< 2 > size_, ValueType value) |
| Initializes a diagonal matrix. More...
|
|
static matrix_data | diag (dim< 2 > size_, std::initializer_list< ValueType > nonzeros_) |
| Initializes a diagonal matrix using a list of diagonal elements. More...
|
|
static matrix_data | diag (dim< 2 > size_, const matrix_data &block) |
| Initializes a block-diagonal matrix. More...
|
|
template<typename ForwardIterator > |
static matrix_data | diag (ForwardIterator begin, ForwardIterator end) |
| Initializes a block-diagonal matrix from a list of diagonal blocks. More...
|
|
static matrix_data | diag (std::initializer_list< matrix_data > blocks) |
| Initializes a block-diagonal matrix from a list of diagonal blocks. More...
|
|
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) |
| Initializes a random dense matrix with a specific condition number. More...
|
|
template<typename RandomDistribution , typename RandomEngine > |
static matrix_data | cond (size_type size, remove_complex< ValueType > condition_number, RandomDistribution &&dist, RandomEngine &&engine) |
| Initializes a random dense matrix with a specific condition number. More...
|
|
template<typename ValueType = default_precision, typename IndexType = int32>
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 |
template<typename ValueType = default_precision, typename IndexType = int32>
template<typename RandomDistribution , typename RandomEngine >
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.
template<typename ValueType = default_precision, typename IndexType = int32>
template<typename RandomDistribution , typename RandomEngine >
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().