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.
void read (const device_mat_data &data) override
Reads a matrix from a device_matrix_data structure.
void read (device_mat_data &&data) override
Reads a matrix from a device_matrix_data structure.
void write (mat_data &data) const override
Writes a matrix to a matrix_data structure.
std::unique_ptr< LinOp > transpose () const override
Returns a LinOp representing the transpose of the Transposable object.
std::unique_ptr< LinOp > conj_transpose () const override
Returns a LinOp representing the conjugate transpose of the Transposable object.
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 .
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 .
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.
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.
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.
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.
std::unique_ptr< LinOp > row_permute (const array < IndexType > *permutation_indices ) const override
Returns a LinOp representing the row permutation of the Permutable object.
std::unique_ptr< LinOp > column_permute (const array < IndexType > *permutation_indices ) const override
Returns a LinOp representing the column permutation of the Permutable object.
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.
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.
std::unique_ptr< Diagonal < ValueType > > extract_diagonal () const override
Extracts the diagonal entries of the matrix into a vector.
std::unique_ptr< absolute_type > compute_absolute () const override
Gets the AbsoluteLinOp.
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.
const value_type * get_const_values () const noexcept
Returns the values of the matrix.
index_type * get_col_idxs () noexcept
Returns the column indexes of the matrix.
const index_type * get_const_col_idxs () const noexcept
Returns the column indexes of the matrix.
index_type * get_row_ptrs () noexcept
Returns the row pointers of the matrix.
const index_type * get_const_row_ptrs () const noexcept
Returns the row pointers of the matrix.
index_type * get_srow () noexcept
Returns the starting rows.
const index_type * get_const_srow () const noexcept
Returns the starting rows.
size_type get_num_srow_elements () const noexcept
Returns the number of the srow stored elements (involved warps)
size_type get_num_stored_elements () const noexcept
Returns the number of elements explicitly stored in the matrix.
std::shared_ptr< strategy_type > get_strategy () const noexcept
Returns the strategy.
void set_strategy (std::shared_ptr< strategy_type > strategy)
Set the strategy.
void scale (ptr_param < const LinOp > alpha)
Scales the matrix with a scalar.
void inv_scale (ptr_param < const LinOp > alpha)
Scales the matrix with the inverse of a scalar.
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.
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.
Csr & operator= (const Csr &)
Copy-assigns a Csr matrix.
Csr & operator= (Csr &&)
Move-assigns a Csr matrix.
Csr (const Csr &)
Copy-constructs a Csr matrix.
Csr (Csr &&)
Move-constructs a Csr matrix.
const ConcreteLinOp * apply (ptr_param < const LinOp > b, ptr_param < LinOp > x) const
ConcreteLinOp * apply (ptr_param < const LinOp > b, ptr_param < LinOp > x)
const ConcreteLinOp * apply (ptr_param < const LinOp > alpha, ptr_param < const LinOp > b, ptr_param < const LinOp > beta, ptr_param < LinOp > x) const
ConcreteLinOp * apply (ptr_param < const LinOp > alpha, ptr_param < const LinOp > b, ptr_param < const LinOp > beta, ptr_param < LinOp > x)
std::unique_ptr< AbstractObject > create_default (std::shared_ptr< const Executor > exec) const
std::unique_ptr< AbstractObject > create_default () const
std::unique_ptr< AbstractObject > clone (std::shared_ptr< const Executor > exec) const
std::unique_ptr< AbstractObject > clone () const
AbstractObject * copy_from (const PolymorphicObject *other )
template<typename Derived >
std::enable_if_t< std::is_base_of< PolymorphicObject , std::decay_t< Derived > >::value, AbstractObject > * copy_from (std::unique_ptr< Derived > &&other )
template<typename Derived >
std::enable_if_t< std::is_base_of< PolymorphicObject , std::decay_t< Derived > >::value, AbstractObject > * copy_from (const std::unique_ptr< Derived > &other )
AbstractObject * copy_from (const std::shared_ptr< const PolymorphicObject > &other )
AbstractObject * move_from (ptr_param < PolymorphicObject > other )
AbstractObject * 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.
std::unique_ptr< PolymorphicObject > create_default () const
Creates a new "default" object of the same dynamic type as this object.
std::unique_ptr< PolymorphicObject > clone (std::shared_ptr< const Executor > exec) const
Creates a clone of the object.
std::unique_ptr< PolymorphicObject > clone () const
Creates a clone of the object.
PolymorphicObject * copy_from (const PolymorphicObject *other )
Copies another object into this object.
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.
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.
PolymorphicObject * copy_from (const std::shared_ptr< const PolymorphicObject > &other )
Copies another object into this object.
PolymorphicObject * move_from (ptr_param < PolymorphicObject > other )
Moves another object into this object.
PolymorphicObject * clear ()
Transforms the object into its default state.
std::shared_ptr< const Executor > get_executor () const noexcept
Returns the Executor of the object.
void add_logger (std::shared_ptr< const Logger > logger) override
Adds a new logger to the list of subscribed loggers.
void remove_logger (const Logger *logger) override
Removes a logger from the list of subscribed loggers.
void remove_logger (ptr_param < const Logger > logger)
const std::vector< std::shared_ptr< const Logger > > & get_loggers () const override
Returns the vector containing all loggers registered at this object.
void clear_loggers () override
Remove all loggers registered at this object.
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.
void move_to (result_type *result) override
Converts the implementer to an object of type result_type by moving data from this object.
virtual void convert_to (result_type *result ) const =0
Converts the implementer to an object of type result_type.
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.
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.
std::unique_ptr< LinOp > compute_absolute_linop () const override
Gets the absolute LinOp .
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.
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:
A->apply(b, x)
A->apply(alpha, b, beta, x)
A->apply(alpha,
B , beta,
C )
A->apply(alpha,
I , beta,
B )
CSR is a matrix format which stores only the nonzero coefficients by compressing each row of the matr...
Definition csr.hpp:146
Dense is a matrix format which explicitly stores all values of the matrix.
Definition dense.hpp:136
This class is a utility which efficiently implements the identity matrix (a linear operator which map...
Definition identity.hpp:65
constexpr T one()
Returns the multiplicative identity for T.
Definition math.hpp:803
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