Permutation< IndexType > Class Template Reference#
|
Reference API
|
#include <ginkgo/core/matrix/permutation.hpp>
Public Types | |
| using | value_type = default_precision |
| using | index_type = IndexType |
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::WritableToMatrixData< ValueType, IndexType > | |
| using | value_type = ValueType |
| using | index_type = IndexType |
Public Member Functions | |
| index_type * | get_permutation () noexcept |
| const index_type * | get_const_permutation () const noexcept |
| size_type | get_permutation_size () const noexcept |
| mask_type | get_permute_mask () const |
| void | set_permute_mask (mask_type permute_mask) |
| std::unique_ptr< Permutation > | compute_inverse () const |
| std::unique_ptr< Permutation > | compose (ptr_param< const Permutation > other) const |
| void | write (gko::matrix_data< value_type, index_type > &data) const override |
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::WritableToMatrixData< ValueType, IndexType > | |
| virtual void | write (matrix_data< ValueType, IndexType > &data) const =0 |
Static Public Member Functions | |
| static std::unique_ptr< Permutation > | create (std::shared_ptr< const Executor > exec, size_type size=0) |
| static std::unique_ptr< Permutation > | create (std::shared_ptr< const Executor > exec, array< IndexType > permutation_indices) |
| static std::unique_ptr< Permutation > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size) |
| static std::unique_ptr< Permutation > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size, const mask_type &enabled_permute) |
| static std::unique_ptr< Permutation > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size, array< IndexType > permutation_indices) |
| static std::unique_ptr< Permutation > | create (std::shared_ptr< const Executor > exec, const dim< 2 > &size, array< index_type > permutation_indices, const mask_type &enabled_permute) |
| static std::unique_ptr< const Permutation > | create_const (std::shared_ptr< const Executor > exec, size_type size, gko::detail::const_array_view< IndexType > &&perm_idxs, mask_type enabled_permute=row_permute) |
| static std::unique_ptr< const Permutation > | create_const (std::shared_ptr< const Executor > exec, gko::detail::const_array_view< IndexType > &&perm_idxs) |
Protected Member Functions | |
| Permutation (std::shared_ptr< const Executor > exec, size_type=0) | |
| Permutation (std::shared_ptr< const Executor > exec, array< IndexType > permutation_indices) | |
| void | apply_impl (const LinOp *in, LinOp *out) const override |
| void | apply_impl (const LinOp *, const LinOp *in, const LinOp *, LinOp *out) const override |
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 |
Friends | |
| class | EnablePolymorphicObject< Permutation, LinOp > |
Additional Inherited Members | |
Protected Attributes inherited from gko::log::EnableLogging< PolymorphicObject > | |
| std::vector< std::shared_ptr< const Logger > > | loggers_ |
Detailed Description
class gko::matrix::Permutation< IndexType >
Permutation is a matrix format that represents a permutation matrix, i.e. a matrix where each row and column has exactly one entry. The matrix can only be applied to Dense inputs, where it represents a row permutation: \(A' = PA\) means \(A'(i, j) = A(p[i], j)\).
- Template Parameters
-
IndexType precision of permutation array indices.
Member Function Documentation
◆ compose()
| std::unique_ptr< Permutation > gko::matrix::Permutation< IndexType >::compose | ( | ptr_param< const Permutation< IndexType > > | other | ) | const |
Composes this permutation with another permutation. The resulting permutation fulfills result[i] = this[other[i]] or result = other * this from the matrix perspective, which is equivalent to first permuting by this and then by other: Combining permutations \(P_1\) and \(P_2\) with P = P_1.combine(P_2) performs the operation permute(A, P) = permute(permute(A, P_1), P_2).
- Parameters
-
other the other permutation
- Returns
- the combined permutation
◆ compute_inverse()
| std::unique_ptr< Permutation > gko::matrix::Permutation< IndexType >::compute_inverse | ( | ) | const |
Returns the inverse permutation.
- Returns
- a newly created Permutation object storing the inverse permutation of this Permutation.
◆ create() [1/2]
|
static |
Creates a Permutation matrix from an already allocated (and initialized) row and column permutation arrays.
- Parameters
-
exec Executor associated to the matrix size size of the permutation array. permutation_indices array of permutation array enabled_permute mask for the type of permutation to apply.
- Note
- If
permutation_indicesis not an rvalue, not an array of IndexType, or is on the wrong executor, an internal copy 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/2]
|
static |
Creates an uninitialized Permutation arrays on the specified executor.
- Returns
- A smart pointer to the newly created matrix.
◆ create_const() [1/2]
|
static |
Creates a constant (immutable) Permutation matrix from a constant array.
- Parameters
-
exec the executor to create the matrix on size the size of the square matrix perm_idxs the permutation index array of the matrix enabled_permute the mask describing the type of permutation
- Returns
- A smart pointer to the constant matrix wrapping the input array (if it resides on the same executor as the matrix) or a copy of the array on the correct executor.
◆ create_const() [2/2]
|
static |
Creates a constant (immutable) Permutation matrix from a constant array.
- Parameters
-
exec the executor to create the matrix on size the size of the square matrix perm_idxs the permutation index array of the matrix enabled_permute the mask describing the type of permutation
- Returns
- A smart pointer to the constant matrix wrapping the input array (if it resides on the same executor as the matrix) or a copy of the array on the correct executor.
◆ get_const_permutation()
|
inlinenoexcept |
Returns a pointer to the array of permutation.
- Returns
- the pointer to the row permutation array.
- 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_permutation()
|
inlinenoexcept |
Returns a pointer to the array of permutation.
- Returns
- the pointer to the row permutation array.
References gko::array< ValueType >::get_data().
◆ get_permutation_size()
|
noexcept |
Returns the number of elements explicitly stored in the permutation array.
- Returns
- the number of elements explicitly stored in the permutation array.
The documentation for this class was generated from the following files:
- ginkgo/core/matrix/csr.hpp
- ginkgo/core/matrix/permutation.hpp
Generated by
Public Types inherited from