![]() |
Ginkgo
Generated from pipelines/1680922742 branch based on develop. Ginkgo version 1.10.0
A numerical linear algebra library targeting many-core architectures
|
The Composition class can be used to compose linear operators op1, op2, ..., opn
and obtain the operator op1 * op2 * ...
More...
#include <ginkgo/core/base/composition.hpp>
Public Types | |
using | value_type = ValueType |
using | transposed_type = Composition< ValueType > |
![]() | |
using | result_type = Composition< ValueType > |
![]() | |
using | result_type = Composition< ValueType > |
Public Member Functions | |
const std::vector< std::shared_ptr< const LinOp > > & | get_operators () const noexcept |
Returns a list of operators of the composition. More... | |
std::unique_ptr< LinOp > | transpose () const override |
Returns a LinOp representing the transpose of the Transposable object. More... | |
std::unique_ptr< LinOp > | conj_transpose () const override |
Returns a LinOp representing the conjugate transpose of the Transposable object. More... | |
Composition & | operator= (const Composition &) |
Copy-assigns a Composition. More... | |
Composition & | operator= (Composition &&) |
Move-assigns a Composition. More... | |
Composition (const Composition &) | |
Copy-constructs a Composition. More... | |
Composition (Composition &&) | |
Move-constructs a Composition. More... | |
![]() | |
const Composition< ValueType > * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
Composition< ValueType > * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) |
const Composition< ValueType > * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) const |
Composition< ValueType > * | apply (ptr_param< const LinOp > alpha, ptr_param< const LinOp > b, ptr_param< const LinOp > beta, ptr_param< LinOp > x) |
![]() | |
std::unique_ptr< Composition< ValueType > > | create_default (std::shared_ptr< const Executor > exec) const |
std::unique_ptr< Composition< ValueType > > | create_default () const |
std::unique_ptr< Composition< ValueType > > | clone (std::shared_ptr< const Executor > exec) const |
std::unique_ptr< Composition< ValueType > > | clone () const |
Composition< ValueType > * | copy_from (const PolymorphicObject *other) |
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, Composition< ValueType > > * | copy_from (std::unique_ptr< Derived > &&other) |
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, Composition< ValueType > > * | copy_from (const std::unique_ptr< Derived > &other) |
Composition< ValueType > * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
Composition< ValueType > * | move_from (ptr_param< PolymorphicObject > other) |
Composition< ValueType > * | clear () |
![]() | |
LinOp * | apply (ptr_param< const LinOp > b, ptr_param< LinOp > x) |
Applies a linear operator to a vector (or a sequence of vectors). More... | |
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. More... | |
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. More... | |
virtual bool | apply_uses_initial_guess () const |
Returns true if the linear operator uses the data given in x as an initial guess. More... | |
LinOp & | operator= (const LinOp &)=default |
Copy-assigns a LinOp. More... | |
LinOp & | operator= (LinOp &&other) |
Move-assigns a LinOp. More... | |
LinOp (const LinOp &)=default | |
Copy-constructs a LinOp. More... | |
LinOp (LinOp &&other) | |
Move-constructs a LinOp. More... | |
![]() | |
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. More... | |
std::unique_ptr< PolymorphicObject > | create_default () const |
Creates a new "default" object of the same dynamic type as this object. More... | |
std::unique_ptr< PolymorphicObject > | clone (std::shared_ptr< const Executor > exec) const |
Creates a clone of the object. More... | |
std::unique_ptr< PolymorphicObject > | clone () const |
Creates a clone of the object. More... | |
PolymorphicObject * | copy_from (const PolymorphicObject *other) |
Copies another object into this object. More... | |
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. More... | |
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. More... | |
PolymorphicObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
Copies another object into this object. More... | |
PolymorphicObject * | move_from (ptr_param< PolymorphicObject > other) |
Moves another object into this object. More... | |
PolymorphicObject * | clear () |
Transforms the object into its default state. More... | |
std::shared_ptr< const Executor > | get_executor () const noexcept |
Returns the Executor of the object. More... | |
![]() | |
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 |
![]() | |
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. More... | |
void | move_to (result_type *result) override |
Converts the implementer to an object of type result_type by moving data from this object. More... | |
![]() | |
void | convert_to (ptr_param< result_type > result) const |
void | move_to (ptr_param< result_type > result) |
Friends | |
class | EnablePolymorphicObject< Composition, LinOp > |
class | EnableCreateMethod< Composition > |
Additional Inherited Members | |
![]() | |
static std::unique_ptr< Composition< ValueType > > | create (Args &&... args) |
The Composition class can be used to compose linear operators op1, op2, ..., opn
and obtain the operator op1 * op2 * ...
All LinOps of the Composition must operate on Dense inputs. For an operator op_k
that require an initial guess for their apply
, Composition provides either
op_{k+1}->apply
if op_k
has square dimensionop_k
is rectangular as an initial guess.Composition ensures that all LinOps passed to its constructor use the same executor, and if not, copies the operators to the executor of the first operator.
ValueType | precision of input and result vectors |
gko::Composition< ValueType >::Composition | ( | const Composition< ValueType > & | ) |
Copy-constructs a Composition.
This inherits the executor of the input Composition and all of its operators with shared ownership.
gko::Composition< ValueType >::Composition | ( | Composition< ValueType > && | ) |
Move-constructs a Composition.
This inherits the executor of the input Composition and all of its operators. The moved-from object is empty (0x0 LinOp without operators) afterwards.
|
overridevirtual |
Returns a LinOp representing the conjugate transpose of the Transposable object.
Implements gko::Transposable.
|
inlinenoexcept |
Returns a list of operators of the composition.
Composition& gko::Composition< ValueType >::operator= | ( | Composition< ValueType > && | ) |
Move-assigns a Composition.
The executor is not modified, and the wrapped LinOps are only being cloned if they are on a different executor, otherwise they share ownership. The moved-from object is empty (0x0 LinOp without operators) afterwards.
Composition& gko::Composition< ValueType >::operator= | ( | const Composition< ValueType > & | ) |
Copy-assigns a Composition.
The executor is not modified, and the wrapped LinOps are only being cloned if they are on a different executor.
|
overridevirtual |
Returns a LinOp representing the transpose of the Transposable object.
Implements gko::Transposable.