![]() |
Ginkgo
Generated from tags/v1.0.0^0 branch based on master. Ginkgo version 1.0.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 |
![]() | |
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... | |
PolymorphicObject * | copy_from (std::unique_ptr< 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 |
Adds a new logger to the list of subscribed loggers. More... | |
void | remove_logger (const Logger *logger) override |
Removes a logger from the list of subscribed loggers. More... | |
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:
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: