CSR is a matrix format which stores only the nonzero coefficients by compressing each row of the matrix (compressed sparse row format).
More...
|
void | convert_to (Csr< next_precision< ValueType >, IndexType > *result) const override |
|
void | move_to (Csr< next_precision< ValueType >, IndexType > *result) override |
|
void | convert_to (Dense< ValueType > *other) const override |
|
void | move_to (Dense< ValueType > *other) override |
|
void | convert_to (Coo< ValueType, IndexType > *result) const override |
|
void | move_to (Coo< ValueType, IndexType > *result) override |
|
void | convert_to (Ell< ValueType, IndexType > *result) const override |
|
void | move_to (Ell< ValueType, IndexType > *result) override |
|
void | convert_to (Fbcsr< ValueType, IndexType > *result) const override |
|
void | move_to (Fbcsr< ValueType, IndexType > *result) override |
|
void | convert_to (Hybrid< ValueType, IndexType > *result) const override |
|
void | move_to (Hybrid< ValueType, IndexType > *result) override |
|
void | convert_to (Sellp< ValueType, IndexType > *result) const override |
|
void | move_to (Sellp< ValueType, IndexType > *result) override |
|
void | convert_to (SparsityCsr< ValueType, IndexType > *result) const override |
|
void | move_to (SparsityCsr< ValueType, IndexType > *result) override |
|
void | read (const mat_data &data) override |
| Reads a matrix from a matrix_data structure. More...
|
|
void | read (const device_mat_data &data) override |
| Reads a matrix from a device_matrix_data structure. More...
|
|
void | read (device_mat_data &&data) override |
| Reads a matrix from a device_matrix_data structure. More...
|
|
void | write (mat_data &data) const override |
| Writes a matrix to a matrix_data structure. More...
|
|
std::unique_ptr< LinOp > | transpose () const override |
| Returns a LinOp representing the transpose of the Transposable object. More...
|
|
std::unique_ptr< LinOp > | conj_transpose () const override |
| Returns a LinOp representing the conjugate transpose of the Transposable object. More...
|
|
std::unique_ptr< Csr > | permute (ptr_param< const Permutation< index_type >> permutation, permute_mode mode=permute_mode::symmetric) const |
| Creates a permuted copy of this matrix with the given permutation . More...
|
|
std::unique_ptr< Csr > | permute (ptr_param< const Permutation< index_type >> row_permutation, ptr_param< const Permutation< index_type >> column_permutation, bool invert=false) const |
| Creates a non-symmetrically permuted copy of this matrix with the given row and column permutations and . More...
|
|
std::unique_ptr< Csr > | scale_permute (ptr_param< const ScaledPermutation< value_type, index_type >> permutation, permute_mode=permute_mode::symmetric) const |
| Creates a scaled and permuted copy of this matrix. More...
|
|
std::unique_ptr< Csr > | scale_permute (ptr_param< const ScaledPermutation< value_type, index_type >> row_permutation, ptr_param< const ScaledPermutation< value_type, index_type >> column_permutation, bool invert=false) const |
| Creates a scaled and permuted copy of this matrix. More...
|
|
std::unique_ptr< LinOp > | permute (const array< IndexType > *permutation_indices) const override |
| Returns a LinOp representing the symmetric row and column permutation of the Permutable object. More...
|
|
std::unique_ptr< LinOp > | inverse_permute (const array< IndexType > *inverse_permutation_indices) const override |
| Returns a LinOp representing the symmetric inverse row and column permutation of the Permutable object. More...
|
|
std::unique_ptr< LinOp > | row_permute (const array< IndexType > *permutation_indices) const override |
| Returns a LinOp representing the row permutation of the Permutable object. More...
|
|
std::unique_ptr< LinOp > | column_permute (const array< IndexType > *permutation_indices) const override |
| Returns a LinOp representing the column permutation of the Permutable object. More...
|
|
std::unique_ptr< LinOp > | inverse_row_permute (const array< IndexType > *inverse_permutation_indices) const override |
| Returns a LinOp representing the row permutation of the inverse permuted object. More...
|
|
std::unique_ptr< LinOp > | inverse_column_permute (const array< IndexType > *inverse_permutation_indices) const override |
| Returns a LinOp representing the row permutation of the inverse permuted object. More...
|
|
std::unique_ptr< Diagonal< ValueType > > | extract_diagonal () const override |
| Extracts the diagonal entries of the matrix into a vector. More...
|
|
std::unique_ptr< absolute_type > | compute_absolute () const override |
| Gets the AbsoluteLinOp. More...
|
|
void | compute_absolute_inplace () override |
| Compute absolute inplace on each element.
|
|
void | sort_by_column_index () |
| Sorts all (value, col_idx) pairs in each row by column index.
|
|
bool | is_sorted_by_column_index () const |
|
value_type * | get_values () noexcept |
| Returns the values of the matrix. More...
|
|
const value_type * | get_const_values () const noexcept |
| Returns the values of the matrix. More...
|
|
index_type * | get_col_idxs () noexcept |
| Returns the column indexes of the matrix. More...
|
|
const index_type * | get_const_col_idxs () const noexcept |
| Returns the column indexes of the matrix. More...
|
|
index_type * | get_row_ptrs () noexcept |
| Returns the row pointers of the matrix. More...
|
|
const index_type * | get_const_row_ptrs () const noexcept |
| Returns the row pointers of the matrix. More...
|
|
index_type * | get_srow () noexcept |
| Returns the starting rows. More...
|
|
const index_type * | get_const_srow () const noexcept |
| Returns the starting rows. More...
|
|
size_type | get_num_srow_elements () const noexcept |
| Returns the number of the srow stored elements (involved warps) More...
|
|
size_type | get_num_stored_elements () const noexcept |
| Returns the number of elements explicitly stored in the matrix. More...
|
|
std::shared_ptr< strategy_type > | get_strategy () const noexcept |
| Returns the strategy. More...
|
|
void | set_strategy (std::shared_ptr< strategy_type > strategy) |
| Set the strategy. More...
|
|
void | scale (ptr_param< const LinOp > alpha) |
| Scales the matrix with a scalar. More...
|
|
void | inv_scale (ptr_param< const LinOp > alpha) |
| Scales the matrix with the inverse of a scalar. More...
|
|
std::unique_ptr< Csr< ValueType, IndexType > > | create_submatrix (const index_set< IndexType > &row_index_set, const index_set< IndexType > &column_index_set) const |
| Creates a submatrix from this Csr matrix given row and column index_set objects. More...
|
|
std::unique_ptr< Csr< ValueType, IndexType > > | create_submatrix (const span &row_span, const span &column_span) const |
| Creates a submatrix from this Csr matrix given row and column spans. More...
|
|
Csr & | operator= (const Csr &) |
| Copy-assigns a Csr matrix. More...
|
|
Csr & | operator= (Csr &&) |
| Move-assigns a Csr matrix. More...
|
|
| Csr (const Csr &) |
| Copy-constructs a Csr matrix. More...
|
|
| Csr (Csr &&) |
| Move-constructs a Csr matrix. More...
|
|
const Csr< ValueType, IndexType > * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
|
Csr< ValueType, IndexType > * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) |
|
const Csr< ValueType, IndexType > * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const |
|
Csr< ValueType, IndexType > * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) |
|
std::unique_ptr< Csr< ValueType, IndexType > > | create_default (std::shared_ptr< const Executor > exec) const |
|
std::unique_ptr< Csr< ValueType, IndexType > > | create_default () const |
|
std::unique_ptr< Csr< ValueType, IndexType > > | clone (std::shared_ptr< const Executor > exec) const |
|
std::unique_ptr< Csr< ValueType, IndexType > > | clone () const |
|
Csr< ValueType, IndexType > * | copy_from (const PolymorphicObject *other) |
|
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, Csr< ValueType, IndexType > > * | copy_from (std::unique_ptr< Derived > &&other) |
|
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, Csr< ValueType, IndexType > > * | copy_from (const std::unique_ptr< Derived > &other) |
|
Csr< ValueType, IndexType > * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
|
Csr< ValueType, IndexType > * | move_from (ptr_param< PolymorphicObject > other) |
|
Csr< ValueType, IndexType > * | clear () |
|
LinOp * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) |
| Applies a linear operator to a vector (or a sequence of vectors). More...
|
|
const LinOp * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
|
LinOp * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) |
| Performs the operation x = alpha * op(b) + beta * x. More...
|
|
const LinOp * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const |
|
const dim< 2 > & | get_size () const noexcept |
| Returns the size of the operator. More...
|
|
virtual bool | apply_uses_initial_guess () const |
| Returns true if the linear operator uses the data given in x as an initial guess. More...
|
|
LinOp & | operator= (const LinOp &)=default |
| Copy-assigns a LinOp. More...
|
|
LinOp & | operator= (LinOp &&other) |
| Move-assigns a LinOp. More...
|
|
| LinOp (const LinOp &)=default |
| Copy-constructs a LinOp. More...
|
|
| LinOp (LinOp &&other) |
| Move-constructs a LinOp. More...
|
|
std::unique_ptr< LinOp > | create_default (std::shared_ptr< const Executor > exec) const |
|
std::unique_ptr< LinOp > | create_default () const |
|
std::unique_ptr< LinOp > | clone (std::shared_ptr< const Executor > exec) const |
|
std::unique_ptr< LinOp > | clone () const |
|
LinOp * | copy_from (const PolymorphicObject *other) |
|
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, LinOp > * | copy_from (std::unique_ptr< Derived > &&other) |
|
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, LinOp > * | copy_from (const std::unique_ptr< Derived > &other) |
|
LinOp * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
|
LinOp * | move_from (ptr_param< PolymorphicObject > other) |
|
LinOp * | clear () |
|
PolymorphicObject & | operator= (const PolymorphicObject &) |
|
std::unique_ptr< PolymorphicObject > | create_default (std::shared_ptr< const Executor > exec) const |
| Creates a new "default" object of the same dynamic type as this object. More...
|
|
std::unique_ptr< PolymorphicObject > | create_default () const |
| Creates a new "default" object of the same dynamic type as this object. More...
|
|
std::unique_ptr< PolymorphicObject > | clone (std::shared_ptr< const Executor > exec) const |
| Creates a clone of the object. More...
|
|
std::unique_ptr< PolymorphicObject > | clone () const |
| Creates a clone of the object. More...
|
|
PolymorphicObject * | copy_from (const PolymorphicObject *other) |
| Copies another object into this object. More...
|
|
template<typename Derived , typename Deleter > |
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * | copy_from (std::unique_ptr< Derived, Deleter > &&other) |
| Moves another object into this object. More...
|
|
template<typename Derived , typename Deleter > |
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, PolymorphicObject > * | copy_from (const std::unique_ptr< Derived, Deleter > &other) |
| Copies another object into this object. More...
|
|
PolymorphicObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
| Copies another object into this object. More...
|
|
PolymorphicObject * | move_from (ptr_param< PolymorphicObject > other) |
| Moves another object into this object. More...
|
|
PolymorphicObject * | clear () |
| Transforms the object into its default state. More...
|
|
std::shared_ptr< const Executor > | get_executor () const noexcept |
| Returns the Executor of the object. More...
|
|
void | add_logger (std::shared_ptr< const Logger > logger) override |
|
void | remove_logger (const Logger *logger) override |
|
void | remove_logger (ptr_param< const Logger > logger) |
|
const std::vector< std::shared_ptr< const Logger > > & | get_loggers () const override |
|
void | clear_loggers () override |
|
void | remove_logger (ptr_param< const Logger > logger) |
|
void | convert_to (result_type *result) const override |
| Converts the implementer to an object of type result_type. More...
|
|
void | move_to (result_type *result) override |
| Converts the implementer to an object of type result_type by moving data from this object. More...
|
|
void | convert_to (ptr_param< result_type > result) const |
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More...
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object. More...
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More...
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object. More...
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More...
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object. More...
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More...
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object. More...
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More...
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object. More...
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More...
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object. More...
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More...
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object. More...
|
|
void | move_to (ptr_param< result_type > result) |
|
virtual void | convert_to (result_type *result) const=0 |
| Converts the implementer to an object of type result_type. More...
|
|
void | convert_to (ptr_param< result_type > result) const |
|
virtual void | move_to (result_type *result)=0 |
| Converts the implementer to an object of type result_type by moving data from this object. More...
|
|
void | move_to (ptr_param< result_type > result) |
|
void | read (const matrix_assembly_data< ValueType, IndexType > &data) |
| Reads a matrix from a matrix_assembly_data structure. More...
|
|
std::unique_ptr< LinOp > | compute_absolute_linop () const override |
| Gets the absolute LinOp. More...
|
|
void | add_scaled_identity (ptr_param< const LinOp > const a, ptr_param< const LinOp > const b) |
| Scales this and adds another scalar times the identity to it. More...
|
|
template<typename ValueType = default_precision, typename IndexType = int32>
class gko::matrix::Csr< ValueType, IndexType >
CSR is a matrix format which stores only the nonzero coefficients by compressing each row of the matrix (compressed sparse row format).
The nonzero elements are stored in a 1D array row-wise, and accompanied with a row pointer array which stores the starting index of each row. An additional column index array is used to identify the column of each nonzero element.
The Csr LinOp supports different operations:
matrix::Csr *A, *B, *C;
matrix::Dense *b, *x;
matrix::Dense *alpha, *beta;
matrix::Identity *I;
A->apply(b, x)
A->apply(alpha, b, beta, x)
A->apply(B, C)
A->apply(alpha, B, beta, C)
A->apply(alpha, I, beta, B)
Both the SpGEMM and SpGEAM operation require the input matrices to be sorted by column index, otherwise the algorithms will produce incorrect results.
- Template Parameters
-
ValueType | precision of matrix elements |
IndexType | precision of matrix indexes |