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 (Csr < next_precision < next_precision < ValueType > >, IndexType > *result) const override
void move_to (Csr < next_precision < 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 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).
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.
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.
virtual bool apply_uses_initial_guess () const
Returns true if the linear operator uses the data given in x as an initial guess.
LinOp & operator= (const LinOp &)=default
Copy-assigns a LinOp .
LinOp & operator= (LinOp &&other)
Move-assigns a LinOp .
LinOp (const LinOp &)=default
Copy-constructs a LinOp .
LinOp (LinOp &&other)
Move-constructs a LinOp .
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.
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
void move_to (result_type *result) override
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.
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)
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)
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)
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)
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)
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)
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)
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)
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.