Csr< ValueType, IndexType > Class Template Reference#
|
Reference API
|
#include <ginkgo/core/matrix/csr.hpp>
Classes | |
| class | automatical |
| class | classical |
| class | cusparse |
| class | load_balance |
| class | merge_path |
| struct | permuting_reuse_info |
| class | sparselib |
| class | strategy_type |
Public Types | |
| using | value_type = ValueType |
| using | index_type = IndexType |
| using | transposed_type = Csr< ValueType, IndexType > |
| using | mat_data = matrix_data< ValueType, IndexType > |
| using | device_mat_data = device_matrix_data< ValueType, IndexType > |
| using | absolute_type = remove_complex< Csr > |
Public Types inherited from gko::EnablePolymorphicAssignment< ConcreteLinOp > | |
| using | result_type = ConcreteLinOp |
Public Types inherited from gko::ConvertibleTo< ResultType > | |
| using | result_type = ResultType |
Public Types inherited from gko::DiagonalExtractable< ValueType > | |
| using | value_type = ValueType |
Public Types inherited from gko::ReadableFromMatrixData< ValueType, IndexType > | |
| using | value_type = ValueType |
| using | index_type = IndexType |
Public Types inherited from gko::WritableToMatrixData< ValueType, IndexType > | |
| using | value_type = ValueType |
| using | index_type = IndexType |
Public Types inherited from gko::EnableAbsoluteComputation< AbsoluteLinOp > | |
| using | absolute_type = AbsoluteLinOp |
Public Member Functions | |
| 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 |
| void | read (const device_mat_data &data) override |
| void | read (device_mat_data &&data) override |
| void | write (mat_data &data) const override |
| std::unique_ptr< LinOp > | transpose () const override |
| std::unique_ptr< LinOp > | conj_transpose () const override |
| std::pair< std::unique_ptr< Csr >, permuting_reuse_info > | transpose_reuse () const |
| std::unique_ptr< Csr > | permute (ptr_param< const Permutation< index_type > > permutation, permute_mode mode=permute_mode::symmetric) const |
| 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 |
| std::pair< std::unique_ptr< Csr >, permuting_reuse_info > | permute_reuse (ptr_param< const Permutation< index_type > > permutation, permute_mode mode=permute_mode::symmetric) const |
| std::pair< std::unique_ptr< Csr >, permuting_reuse_info > | permute_reuse (ptr_param< const Permutation< index_type > > row_permutation, ptr_param< const Permutation< index_type > > column_permutation, bool invert=false) const |
| std::unique_ptr< Csr > | scale_permute (ptr_param< const ScaledPermutation< value_type, index_type > > permutation, permute_mode=permute_mode::symmetric) const |
| 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 |
| std::unique_ptr< LinOp > | permute (const array< IndexType > *permutation_indices) const override |
| std::unique_ptr< LinOp > | inverse_permute (const array< IndexType > *inverse_permutation_indices) const override |
| std::unique_ptr< LinOp > | row_permute (const array< IndexType > *permutation_indices) const override |
| std::unique_ptr< LinOp > | column_permute (const array< IndexType > *permutation_indices) const override |
| std::unique_ptr< LinOp > | inverse_row_permute (const array< IndexType > *inverse_permutation_indices) const override |
| std::unique_ptr< LinOp > | inverse_column_permute (const array< IndexType > *inverse_permutation_indices) const override |
| std::unique_ptr< Diagonal< ValueType > > | extract_diagonal () const override |
| std::unique_ptr< absolute_type > | compute_absolute () const override |
| void | compute_absolute_inplace () override |
| void | sort_by_column_index () |
| bool | is_sorted_by_column_index () const |
| value_type * | get_values () noexcept |
| const value_type * | get_const_values () const noexcept |
| std::unique_ptr< Dense< ValueType > > | create_value_view () |
| std::unique_ptr< const Dense< ValueType > > | create_const_value_view () const |
| index_type * | get_col_idxs () noexcept |
| const index_type * | get_const_col_idxs () const noexcept |
| index_type * | get_row_ptrs () noexcept |
| const index_type * | get_const_row_ptrs () const noexcept |
| index_type * | get_srow () noexcept |
| const index_type * | get_const_srow () const noexcept |
| size_type | get_num_srow_elements () const noexcept |
| size_type | get_num_stored_elements () const noexcept |
| std::shared_ptr< strategy_type > | get_strategy () const noexcept |
| void | set_strategy (std::shared_ptr< strategy_type > strategy) |
| void | scale (ptr_param< const LinOp > alpha) |
| void | inv_scale (ptr_param< const LinOp > alpha) |
| std::unique_ptr< Csr< ValueType, IndexType > > | create_submatrix (const index_set< IndexType > &row_index_set, const index_set< IndexType > &column_index_set) const |
| std::unique_ptr< Csr< ValueType, IndexType > > | create_submatrix (const span &row_span, const span &column_span) const |
| Csr & | operator= (const Csr &) |
| Csr & | operator= (Csr &&) |
| Csr (const Csr &) | |
| Csr (Csr &&) | |
Public Member Functions inherited from gko::EnableLinOp< ConcreteLinOp, PolymorphicBase > | |
| 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) |
Public Member Functions inherited from gko::EnableAbstractPolymorphicObject< AbstractObject, PolymorphicBase > | |
| 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 () |
Public Member Functions inherited from gko::PolymorphicObject | |
| PolymorphicObject & | operator= (const PolymorphicObject &) |
| std::unique_ptr< PolymorphicObject > | create_default (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< PolymorphicObject > | create_default () const |
| std::unique_ptr< PolymorphicObject > | clone (std::shared_ptr< const Executor > exec) const |
| std::unique_ptr< PolymorphicObject > | clone () const |
| PolymorphicObject * | copy_from (const PolymorphicObject *other) |
| 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) |
| 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) |
| PolymorphicObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
| PolymorphicObject * | move_from (ptr_param< PolymorphicObject > other) |
| PolymorphicObject * | clear () |
| std::shared_ptr< const Executor > | get_executor () const noexcept |
Public Member Functions inherited from gko::log::EnableLogging< PolymorphicObject > | |
| 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 |
Public Member Functions inherited from gko::log::Loggable | |
| void | remove_logger (ptr_param< const Logger > logger) |
Public Member Functions inherited from gko::EnablePolymorphicAssignment< ConcreteLinOp > | |
| void | convert_to (result_type *result) const override |
| void | move_to (result_type *result) override |
Public Member Functions inherited from gko::ConvertibleTo< ResultType > | |
| virtual void | convert_to (result_type *result) const =0 |
| void | convert_to (ptr_param< result_type > result) const |
| virtual void | move_to (result_type *result)=0 |
| void | move_to (ptr_param< result_type > result) |
Public Member Functions inherited from gko::DiagonalExtractable< ValueType > | |
| std::unique_ptr< LinOp > | extract_diagonal_linop () const override |
Public Member Functions inherited from gko::ReadableFromMatrixData< ValueType, IndexType > | |
| void | read (const matrix_assembly_data< ValueType, IndexType > &data) |
Public Member Functions inherited from gko::EnableAbsoluteComputation< AbsoluteLinOp > | |
| std::unique_ptr< LinOp > | compute_absolute_linop () const override |
Public Member Functions inherited from gko::ScaledIdentityAddable | |
| void | add_scaled_identity (ptr_param< const LinOp > const a, ptr_param< const LinOp > const b) |
Static Public Member Functions | |
| static std::unique_ptr< Csr > | create (std::shared_ptr< const Executor > exec, std::shared_ptr< strategy_type > strategy) |
| static std::unique_ptr< Csr > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size={}, size_type num_nonzeros={}, std::shared_ptr< strategy_type > strategy=nullptr) |
| static std::unique_ptr< Csr > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size, array< value_type > values, array< index_type > col_idxs, array< index_type > row_ptrs, std::shared_ptr< strategy_type > strategy=nullptr) |
| template<typename InputValueType , typename InputColumnIndexType , typename InputRowPtrType > | |
| static std::unique_ptr< Csr > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size, std::initializer_list< InputValueType > values, std::initializer_list< InputColumnIndexType > col_idxs, std::initializer_list< InputRowPtrType > row_ptrs) |
| create(std::shared_ptr<const Executor>,const dim<2>&, array<value_type>, array<index_type>, array<index_type>) | |
| static std::unique_ptr< const Csr > | create_const (std::shared_ptr< const Executor > exec, const dim< 2 > &size, gko::detail::const_array_view< ValueType > &&values, gko::detail::const_array_view< IndexType > &&col_idxs, gko::detail::const_array_view< IndexType > &&row_ptrs, std::shared_ptr< strategy_type > strategy=nullptr) |
Protected Member Functions | |
| Csr (std::shared_ptr< const Executor > exec, const dim< 2 > &size={}, size_type num_nonzeros={}, std::shared_ptr< strategy_type > strategy=nullptr) | |
| Csr (std::shared_ptr< const Executor > exec, const dim< 2 > &size, array< value_type > values, array< index_type > col_idxs, array< index_type > row_ptrs, std::shared_ptr< strategy_type > strategy=nullptr) | |
| void | apply_impl (const LinOp *b, LinOp *x) const override |
| void | apply_impl (const LinOp *alpha, const LinOp *b, const LinOp *beta, LinOp *x) const override |
| template<typename CsrType > | |
| void | convert_strategy_helper (CsrType *result) const |
| void | make_srow () |
| virtual void | scale_impl (const LinOp *alpha) |
| virtual void | inv_scale_impl (const LinOp *alpha) |
Protected Member Functions inherited from gko::EnableLinOp< ConcreteLinOp, PolymorphicBase > | |
| ConcreteLinOp * | self () noexcept |
| const ConcreteLinOp * | self () const noexcept |
Protected Member Functions inherited from gko::EnablePolymorphicObject< ConcreteObject, PolymorphicBase > | |
| std::unique_ptr< PolymorphicObject > | create_default_impl (std::shared_ptr< const Executor > exec) const override |
| PolymorphicObject * | copy_from_impl (const PolymorphicObject *other) override |
| PolymorphicObject * | copy_from_impl (std::unique_ptr< PolymorphicObject > other) override |
| PolymorphicObject * | move_from_impl (PolymorphicObject *other) override |
| PolymorphicObject * | move_from_impl (std::unique_ptr< PolymorphicObject > other) override |
| PolymorphicObject * | clear_impl () override |
Protected Member Functions inherited from gko::PolymorphicObject | |
| PolymorphicObject (std::shared_ptr< const Executor > exec) | |
| PolymorphicObject (const PolymorphicObject &other) | |
Protected Member Functions inherited from gko::log::EnableLogging< PolymorphicObject > | |
| void | log (Params &&... params) const |
Static Protected Member Functions | |
| static std::shared_ptr< strategy_type > | make_default_strategy (std::shared_ptr< const Executor > exec) |
Additional Inherited Members | |
Protected Attributes inherited from gko::log::EnableLogging< PolymorphicObject > | |
| std::vector< std::shared_ptr< const Logger > > | loggers_ |
Detailed Description
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:
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
Constructor & Destructor Documentation
◆ Csr() [1/2]
| gko::matrix::Csr< ValueType, IndexType >::Csr | ( | const Csr< ValueType, IndexType > & | ) |
Copy-constructs a Csr matrix. Inherits executor, strategy and data.
◆ Csr() [2/2]
| gko::matrix::Csr< ValueType, IndexType >::Csr | ( | Csr< ValueType, IndexType > && | ) |
Member Function Documentation
◆ column_permute()
|
overridevirtual |
Returns a LinOp representing the column permutation of the Permutable object. In the resulting LinOp, the column i contains the input column perm[i].
From the linear algebra perspective, with \(P_{ij} = \delta_{i \pi(i)}\), this represents the operation \(A P^T\).
- Parameters
-
permutation_indices the array of indices containing the permutation order perm.
- Returns
- a pointer to the new column permuted object
Implements gko::Permutable< IndexType >.
◆ compute_absolute()
|
overridevirtual |
Gets the AbsoluteLinOp
- Returns
- a pointer to the new absolute object
Implements gko::EnableAbsoluteComputation< AbsoluteLinOp >.
◆ compute_absolute_inplace()
|
overridevirtual |
Compute absolute inplace on each element.
Implements gko::AbsoluteComputable.
◆ conj_transpose()
|
overridevirtual |
Returns a LinOp representing the conjugate transpose of the Transposable object.
- Returns
- a pointer to the new conjugate transposed object
Implements gko::Transposable.
◆ create() [1/4]
|
static |
Creates a CSR matrix from already allocated (and initialized) row pointer, column index and value arrays.
- Parameters
-
exec Executor associated to the matrix size size of the matrix values array of matrix values col_idxs array of column indexes row_ptrs array of row pointers strategy the strategy the matrix uses for SpMV operations
- Note
- If one of
row_ptrs,col_idxsorvaluesis not an rvalue, not an array of IndexType, IndexType and ValueType, respectively, or is on the wrong executor, an internal copy of that array will be created, and the original array data will not be used in the matrix.
- Returns
- A smart pointer to the newly created matrix.
◆ create() [2/4]
|
inlinestatic |
create(std::shared_ptr<const Executor>,const dim<2>&, array<value_type>, array<index_type>, array<index_type>)
create(std::shared_ptr<const Executor>,const dim<2>&, array<value_type>, array<index_type>, array<index_type>)
References gko::matrix::Csr< ValueType, IndexType >::create().
◆ create() [3/4]
|
static |
Creates an uninitialized CSR matrix of the specified size.
- Parameters
-
exec Executor associated to the matrix size size of the matrix num_nonzeros number of nonzeros strategy the strategy of CSR, or the default strategy if set to nullptr
- Returns
- A smart pointer to the newly created matrix.
◆ create() [4/4]
|
static |
Creates an uninitialized CSR matrix of the specified size.
- Parameters
-
exec Executor associated to the matrix strategy the strategy of CSR
- Returns
- A smart pointer to the newly created matrix.
Referenced by gko::matrix::Csr< ValueType, IndexType >::create().
◆ create_const()
|
static |
Creates a constant (immutable) Csr matrix from a set of constant arrays.
- Parameters
-
exec the executor to create the matrix on size the dimensions of the matrix values the value array of the matrix col_idxs the column index array of the matrix row_ptrs the row pointer array of the matrix strategy the strategy the matrix uses for SpMV operations
- Returns
- A smart pointer to the constant matrix wrapping the input arrays (if they reside on the same executor as the matrix) or a copy of these arrays on the correct executor.
- A smart pointer to the newly created matrix.
◆ create_const_value_view()
| std::unique_ptr< const Dense< ValueType > > gko::matrix::Csr< ValueType, IndexType >::create_const_value_view | ( | ) | const |
Creates a const Dense view of the value array of this matrix as a column vector of dimensions nnz x 1.
◆ create_submatrix() [1/2]
| std::unique_ptr< Csr< ValueType, IndexType > > gko::matrix::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.
- Parameters
-
row_index_set the row index set containing the set of rows to be in the submatrix. column_index_set the col index set containing the set of columns to be in the submatrix.
- Returns
- A new CSR matrix with the elements that belong to the row and columns of this matrix as specified by the index sets.
- Note
- This is not a view but creates a new, separate CSR matrix.
◆ create_submatrix() [2/2]
| std::unique_ptr< Csr< ValueType, IndexType > > gko::matrix::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
- Parameters
-
row_span the row span containing the contiguous set of rows to be in the submatrix. column_span the column span containing the contiguous set of columns to be in the submatrix.
- Returns
- A new CSR matrix with the elements that belong to the row and columns of this matrix as specified by the index sets.
- Note
- This is not a view but creates a new, separate CSR matrix.
◆ create_value_view()
| std::unique_ptr< Dense< ValueType > > gko::matrix::Csr< ValueType, IndexType >::create_value_view | ( | ) |
Creates a Dense view of the value array of this matrix as a column vector of dimensions nnz x 1.
◆ extract_diagonal()
|
overridevirtual |
Extracts the diagonal entries of the matrix into a vector.
- Parameters
-
diag the vector into which the diagonal will be written
Implements gko::DiagonalExtractable< ValueType >.
◆ get_col_idxs()
|
inlinenoexcept |
Returns the column indexes of the matrix.
- Returns
- the column indexes of the matrix.
References gko::array< ValueType >::get_data().
◆ get_const_col_idxs()
|
inlinenoexcept |
Returns the column indexes of the matrix.
- Returns
- the column indexes of the matrix.
- Note
- This is the constant version of the function, which can be significantly more memory efficient than the non-constant version, so always prefer this version.
References gko::array< ValueType >::get_const_data().
◆ get_const_row_ptrs()
|
inlinenoexcept |
Returns the row pointers of the matrix.
- Returns
- the row pointers of the matrix.
- Note
- This is the constant version of the function, which can be significantly more memory efficient than the non-constant version, so always prefer this version.
References gko::array< ValueType >::get_const_data().
◆ get_const_srow()
|
inlinenoexcept |
Returns the starting rows.
- Returns
- the starting rows.
- Note
- This is the constant version of the function, which can be significantly more memory efficient than the non-constant version, so always prefer this version.
References gko::array< ValueType >::get_const_data().
◆ get_const_values()
|
inlinenoexcept |
Returns the values of the matrix.
- Returns
- the values of the matrix.
- Note
- This is the constant version of the function, which can be significantly more memory efficient than the non-constant version, so always prefer this version.
References gko::array< ValueType >::get_const_data().
◆ get_num_srow_elements()
|
inlinenoexcept |
Returns the number of the srow stored elements (involved warps)
- Returns
- the number of the srow stored elements (involved warps)
References gko::array< ValueType >::get_size().
◆ get_num_stored_elements()
|
inlinenoexcept |
Returns the number of elements explicitly stored in the matrix.
- Returns
- the number of elements explicitly stored in the matrix
References gko::array< ValueType >::get_size().
◆ get_row_ptrs()
|
inlinenoexcept |
Returns the row pointers of the matrix.
- Returns
- the row pointers of the matrix.
References gko::array< ValueType >::get_data().
◆ get_srow()
|
inlinenoexcept |
Returns the starting rows.
- Returns
- the starting rows.
References gko::array< ValueType >::get_data().
◆ get_strategy()
|
inlinenoexcept |
Returns the strategy
- Returns
- the strategy
◆ get_values()
|
inlinenoexcept |
Returns the values of the matrix.
- Returns
- the values of the matrix.
References gko::array< ValueType >::get_data().
◆ inv_scale()
|
inline |
Scales the matrix with the inverse of a scalar.
- Parameters
-
alpha The entire matrix is scaled by 1 / alpha. alpha has to be a 1x1 Dense matrix.
References gko::PolymorphicObject::get_executor(), gko::matrix::Csr< ValueType, IndexType >::inv_scale_impl(), and gko::make_temporary_clone().
◆ inv_scale_impl()
|
protectedvirtual |
- Note
- Other implementations of Csr should override this function instead of inv_scale(const LinOp *alpha).
Referenced by gko::matrix::Csr< ValueType, IndexType >::inv_scale().
◆ inverse_column_permute()
|
overridevirtual |
Returns a LinOp representing the row permutation of the inverse permuted object. In the resulting LinOp, the column perm[i] contains the input column i.
From the linear algebra perspective, with \(P_{ij} = \delta_{i \pi(i)}\), this represents the operation \(A P^{-T}\).
- Parameters
-
permutation_indices the array of indices containing the permutation order perm.
- Returns
- a pointer to the new inverse permuted object
Implements gko::Permutable< IndexType >.
◆ inverse_permute()
|
overridevirtual |
Returns a LinOp representing the symmetric inverse row and column permutation of the Permutable object. In the resulting LinOp, the entry at location (perm[i],perm[j]) contains the input value (i,j).
From the linear algebra perspective, with \(P_{ij} = \delta_{i \pi(i)}\), this represents the operation \(P^{-1} A P^{-T}\).
- Parameters
-
permutation_indices the array of indices containing the permutation order.
- Returns
- a pointer to the new permuted object
Reimplemented from gko::Permutable< IndexType >.
◆ inverse_row_permute()
|
overridevirtual |
Returns a LinOp representing the row permutation of the inverse permuted object. In the resulting LinOp, the row perm[i] contains the input row i.
From the linear algebra perspective, with \(P_{ij} = \delta_{i \pi(i)}\), this represents the operation \(P^{-1} A\).
- Parameters
-
permutation_indices the array of indices containing the permutation order perm.
- Returns
- a pointer to the new inverse permuted object
Implements gko::Permutable< IndexType >.
◆ make_srow()
|
inlineprotected |
Computes srow. It should be run after changing any row_ptrs_ value.
References gko::array< ValueType >::get_size(), and gko::array< ValueType >::resize_and_reset().
Referenced by gko::matrix::Csr< ValueType, IndexType >::set_strategy().
◆ operator=() [1/2]
| Csr & gko::matrix::Csr< ValueType, IndexType >::operator= | ( | const Csr< ValueType, IndexType > & | ) |
Copy-assigns a Csr matrix. Preserves executor, copies everything else.
◆ operator=() [2/2]
| Csr & gko::matrix::Csr< ValueType, IndexType >::operator= | ( | Csr< ValueType, IndexType > && | ) |
◆ permute() [1/3]
|
overridevirtual |
Returns a LinOp representing the symmetric row and column permutation of the Permutable object. In the resulting LinOp, the entry at location (i,j) contains the input value (perm[i],perm[j]).
From the linear algebra perspective, with \(P_{ij} = \delta_{i \pi(i)}\), this represents the operation \(P A P^T\).
- Parameters
-
permutation_indices the array of indices containing the permutation order.
- Returns
- a pointer to the new permuted object
Reimplemented from gko::Permutable< IndexType >.
◆ permute() [2/3]
| std::unique_ptr< Csr > gko::matrix::Csr< ValueType, IndexType >::permute | ( | ptr_param< const Permutation< index_type > > | permutation, |
| permute_mode | mode = permute_mode::symmetric |
||
| ) | const |
Creates a permuted copy \(A'\) of this matrix \(A\) with the given permutation \(P\). By default, this computes a symmetric permutation (permute_mode::symmetric). For the effect of the different permutation modes, see permute_mode
- Parameters
-
permutation The input permutation. mode The permutation mode. If permute_mode::inverse is set, we use the inverse permutation \(P^{-1}\) instead of \(P\). If permute_mode::rows is set, the rows will be permuted. If permute_mode::columns is set, the columns will be permuted.
- Returns
- The permuted matrix.
◆ permute() [3/3]
| std::unique_ptr< Csr > gko::matrix::Csr< ValueType, IndexType >::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 \(A'\) of this matrix \(A\) with the given row and column permutations \(P\) and \(Q\). The operation will compute \(A'(i, j) = A(p[i], q[j])\), or \(A' = P A Q^T\) if invert is false, and \(A'(p[i], q[j]) = A(i,j)\), or \(A' = P^{-1} A Q^{-T}\) if invert is true.
- Parameters
-
row_permutation The permutation \(P\) to apply to the rows column_permutation The permutation \(Q\) to apply to the columns invert If set to false, uses the input permutations, otherwise uses their inverses \(P^{-1}, Q^{-1}\)
- Returns
- The permuted matrix.
◆ permute_reuse() [1/2]
| std::pair< std::unique_ptr< Csr >, permuting_reuse_info > gko::matrix::Csr< ValueType, IndexType >::permute_reuse | ( | ptr_param< const Permutation< index_type > > | permutation, |
| permute_mode | mode = permute_mode::symmetric |
||
| ) | const |
Computes the operations necessary to propagate changed values from a matrix A to a permuted matrix. The semantics of this function match those of permute(ptr_param<const Permutation<index_type>>, permute_mode). Updating values works as follows:
- Parameters
-
permutation The input permutation. mode The permutation mode. If permute_mode::inverse is set, we use the inverse permutation \(P^{-1}\) instead of \(P\). If permute_mode::rows is set, the rows will be permuted. If permute_mode::columns is set, the columns will be permuted.
- Returns
- an std::pair consisting of the permuted matrix and the reuse info that can be used to update values in the permuted matrix.
◆ permute_reuse() [2/2]
| std::pair< std::unique_ptr< Csr >, permuting_reuse_info > gko::matrix::Csr< ValueType, IndexType >::permute_reuse | ( | ptr_param< const Permutation< index_type > > | row_permutation, |
| ptr_param< const Permutation< index_type > > | column_permutation, | ||
| bool | invert = false |
||
| ) | const |
Computes the operations necessary to propagate changed values from a matrix A to a permuted matrix. The semantics of this function match those of permute(ptr_param<const Permutation<index_type>>, ptr_param<const Permutation<index_type>>, bool). Updating values works as follows:
- Parameters
-
row_permutation The permutation \(P\) to apply to the rows column_permutation The permutation \(Q\) to apply to the columns invert If set to false, uses the input permutations, otherwise uses their inverses \(P^{-1}, Q^{-1}\)
- Returns
- an std::pair consisting of the permuted matrix and the reuse info that can be used to update values in the permuted matrix.
◆ read() [1/3]
|
overridevirtual |
Reads a matrix from a device_matrix_data structure.
- Parameters
-
data the device_matrix_data structure.
Reimplemented from gko::ReadableFromMatrixData< ValueType, IndexType >.
◆ read() [2/3]
|
overridevirtual |
Reads a matrix from a matrix_data structure.
- Parameters
-
data the matrix_data structure
Implements gko::ReadableFromMatrixData< ValueType, IndexType >.
◆ read() [3/3]
|
overridevirtual |
Reads a matrix from a device_matrix_data structure. The structure may be emptied by this function.
- Parameters
-
data the device_matrix_data structure.
Reimplemented from gko::ReadableFromMatrixData< ValueType, IndexType >.
◆ row_permute()
|
overridevirtual |
Returns a LinOp representing the row permutation of the Permutable object. In the resulting LinOp, the row i contains the input row perm[i].
From the linear algebra perspective, with \(P_{ij} = \delta_{i \pi(i)}\), this represents the operation \(P A\).
- Parameters
-
permutation_indices the array of indices containing the permutation order.
- Returns
- a pointer to the new permuted object
Implements gko::Permutable< IndexType >.
◆ scale()
|
inline |
Scales the matrix with a scalar.
- Parameters
-
alpha The entire matrix is scaled by alpha. alpha has to be a 1x1 Dense matrix.
References gko::PolymorphicObject::get_executor(), gko::make_temporary_clone(), and gko::matrix::Csr< ValueType, IndexType >::scale_impl().
◆ scale_impl()
|
protectedvirtual |
- Note
- Other implementations of Csr should override this function instead of scale(const LinOp *alpha).
Referenced by gko::matrix::Csr< ValueType, IndexType >::scale().
◆ scale_permute() [1/2]
| std::unique_ptr< Csr > gko::matrix::Csr< ValueType, IndexType >::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. For an explanation of the permutation modes, see permute(ptr_param<const Permutation<index_type>>, permute_mode)
- Parameters
-
permutation The scaled permutation. mode The permutation mode.
- Returns
- The permuted matrix.
◆ scale_permute() [2/2]
| std::unique_ptr< Csr > gko::matrix::Csr< ValueType, IndexType >::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. For an explanation of the parameters, see permute(ptr_param<const Permutation<index_type>>, ptr_param<const Permutation<index_type>>, permute_mode)
- Parameters
-
row_permutation The scaled row permutation. column_permutation The scaled column permutation. invert If set to false, uses the input permutations, otherwise uses their inverses \(P^{-1}, Q^{-1}\)
- Returns
- The permuted matrix.
◆ set_strategy()
|
inline |
Set the strategy
- Parameters
-
strategy the csr strategy
References gko::matrix::Csr< ValueType, IndexType >::make_srow().
◆ sort_by_column_index()
| void gko::matrix::Csr< ValueType, IndexType >::sort_by_column_index | ( | ) |
Sorts all (value, col_idx) pairs in each row by column index
◆ transpose()
|
overridevirtual |
Returns a LinOp representing the transpose of the Transposable object.
- Returns
- a pointer to the new transposed object
Implements gko::Transposable.
◆ transpose_reuse()
| std::pair< std::unique_ptr< Csr >, permuting_reuse_info > gko::matrix::Csr< ValueType, IndexType >::transpose_reuse | ( | ) | const |
Computes the necessary data to update a transposed matrix from its original matrix.
- Returns
- the reuse info struct that can be used to update values in the transposed matrix.
◆ write()
|
overridevirtual |
Writes a matrix to a matrix_data structure.
- Parameters
-
data the matrix_data structure
Implements gko::WritableToMatrixData< ValueType, IndexType >.
The documentation for this class was generated from the following files:
- ginkgo/core/distributed/matrix.hpp
- ginkgo/core/matrix/csr.hpp
Generated by
Public Types inherited from