![]() |
Ginkgo
Generated from pipelines/2118098289 branch based on develop. Ginkgo version 1.11.0
A numerical linear algebra library targeting many-core architectures
|
A LinOpFactory represents a higher order mapping which transforms one linear operator into another. More...
#include <ginkgo/core/base/lin_op.hpp>
Public Member Functions | |
| std::unique_ptr< LinOp > | generate (std::shared_ptr< const LinOp > input) const |
Public Member Functions inherited from gko::PolymorphicObject | |
| 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... | |
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) |
A LinOpFactory represents a higher order mapping which transforms one linear operator into another.
In Ginkgo, every linear solver is viewed as a mapping. For example, given an s.p.d linear system
, the solution
can be computed using the CG method. This algorithm can be represented in terms of linear operators and mappings between them as follows:
, returns a new linear operator
stored in "CG
format"
in "CG format" means that the data structure used to store the operator is just a simple pointer to the original matrix
. The application
of such an operator can then be implemented by solving the linear system
using the CG method. This is achieved in code by having a special class for each of those "formats" (e.g. the "Cg" class defines such a format for the CG solver).Another example of a LinOpFactory is a preconditioner. A preconditioner for a linear operator
is a linear operator
, which approximates
. In addition, it is stored in a way such that both the data of
is cheap to compute from
, and the operation
can be computed quickly. These operators are useful to accelerate the convergence of Krylov solvers. Thus, a preconditioner also fits into the LinOpFactory framework:
into a preconditioner
which is stored in suitable format (e.g. as a product of two factors in case of ILU preconditioners).
depending on the format the preconditioner is stored in (e.g. as two triangular solves in case of ILU)
1.8.16