BlockOperator Class Reference#
|
Reference API
|
#include <ginkgo/core/base/block_operator.hpp>
Public Member Functions | |
| dim< 2 > | get_block_size () const |
| const LinOp * | block_at (size_type i, size_type j) const |
| BlockOperator (const BlockOperator &other) | |
| BlockOperator (BlockOperator &&other) noexcept | |
| BlockOperator & | operator= (const BlockOperator &other) |
| BlockOperator & | operator= (BlockOperator &&other) |
Public Member Functions inherited from gko::EnableLinOp< BlockOperator > | |
| const BlockOperator * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
| BlockOperator * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) |
| const BlockOperator * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const |
| BlockOperator * | 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< ConcreteType, ResultType > | |
| void | convert_to (result_type *result) const override |
| void | move_to (result_type *result) override |
Public Member Functions inherited from gko::ConvertibleTo< ResultType > | |
| void | convert_to (ptr_param< result_type > result) const |
| void | move_to (ptr_param< result_type > result) |
Static Public Member Functions | |
| static std::unique_ptr< BlockOperator > | create (std::shared_ptr< const Executor > exec) |
| static std::unique_ptr< BlockOperator > | create (std::shared_ptr< const Executor > exec, std::vector< std::vector< std::shared_ptr< const LinOp > > > blocks) |
Friends | |
| class | EnablePolymorphicObject< BlockOperator, LinOp > |
Additional Inherited Members | |
Public Types inherited from gko::EnablePolymorphicAssignment< ConcreteType, ResultType > | |
| using | result_type = ResultType |
Public Types inherited from gko::ConvertibleTo< ResultType > | |
| using | result_type = ResultType |
Protected Member Functions inherited from gko::EnableLinOp< BlockOperator > | |
| BlockOperator * | self () noexcept |
| const BlockOperator * | 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 |
Protected Attributes inherited from gko::log::EnableLogging< PolymorphicObject > | |
| std::vector< std::shared_ptr< const Logger > > | loggers_ |
Detailed Description
A BlockOperator represents a linear operator that is partitioned into multiple blocks.
For example, a BlockOperator can be used to define the operator:
where A, B, C, D itself are matrices of compatible size. This can be created with:
The requirements on the individual blocks passed to the create method are:
- In each block-row, all blocks have the same number of rows
- In each block-column, all blocks have the same number of columns
- Each block-row must have the same number of blocks It is possible to set blocks to zero, by passing in a nullptr. But every block-row and block-column must contain at least one non-nullptr block.
The constructor will store all passed in blocks on the same executor as the BlockOperator, which will requires copying any block that is associated with a different executor.
Constructor & Destructor Documentation
◆ BlockOperator() [1/2]
| gko::BlockOperator::BlockOperator | ( | const BlockOperator & | other | ) |
Copy constructs a BlockOperator. The executor of other is used for this. The blocks of other are deep-copied into this, using clone.
◆ BlockOperator() [2/2]
|
noexcept |
Move constructs a BlockOperator. The executor of other is used for this. All remaining data of other is moved into this. After this operation, other will be empty.
Member Function Documentation
◆ block_at()
Const access to a specific block.
- Parameters
-
i block row. j block column.
- Returns
- the block stored at (i, j).
◆ create() [1/2]
|
static |
◆ create() [2/2]
|
static |
Create BlockOperator from the given blocks.
- Parameters
-
exec the executor of this. blocks the blocks of this operator. The blocks will be used in a row-major form.
- Returns
- BlockOperator with the given blocks.
◆ get_block_size()
|
inline |
Get the block dimension of this, i.e. the number of blocks per row and column.
- Returns
- The block dimension of this.
◆ operator=() [1/2]
| BlockOperator & gko::BlockOperator::operator= | ( | BlockOperator && | other | ) |
Move assigns a BlockOperator. The executor of this is not modified. All data of other (except its executor) is moved into this. If the executor of this and other differ, the blocks will be copied to the executor of this. After this operation, other will be empty.
◆ operator=() [2/2]
| BlockOperator & gko::BlockOperator::operator= | ( | const BlockOperator & | other | ) |
Copy assigns a BlockOperator. The executor of this is not modified. The blocks of other are deep-copied into this, using clone.
The documentation for this class was generated from the following file:
- ginkgo/core/base/block_operator.hpp
Generated by
Public Member Functions inherited from