|
| std::unique_ptr< LinOp > | transpose () const override |
| |
| std::unique_ptr< LinOp > | conj_transpose () const override |
| |
| bool | apply_uses_initial_guess () const override |
| |
|
const parameters_type & | get_parameters () const |
| |
|
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) |
| |
|
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 () |
| |
|
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 |
| |
| 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 |
| |
| void | move_to (result_type *result) override |
| |
| 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) |
| |
|
| EnablePreconditionedIterativeSolver (std::shared_ptr< const LinOp > system_matrix, std::shared_ptr< const stop::CriterionFactory > stop_factory, std::shared_ptr< const LinOp > preconditioner) |
| |
|
template<typename FactoryParameters > |
| | EnablePreconditionedIterativeSolver (std::shared_ptr< const LinOp > system_matrix, const FactoryParameters ¶ms) |
| |
| EnableSolverBase & | operator= (const EnableSolverBase &other) |
| |
| EnableSolverBase & | operator= (EnableSolverBase &&other) |
| |
|
| EnableSolverBase (std::shared_ptr< const MatrixType > system_matrix) |
| |
| | EnableSolverBase (const EnableSolverBase &other) |
| |
| | EnableSolverBase (EnableSolverBase &&other) |
| |
|
int | get_num_workspace_ops () const override |
| |
|
std::vector< std::string > | get_workspace_op_names () const override |
| |
| std::vector< int > | get_workspace_scalars () const override |
| |
| std::vector< int > | get_workspace_vectors () const override |
| |
| std::shared_ptr< const MatrixType > | get_system_matrix () const |
| |
| EnableIterativeBase & | operator= (const EnableIterativeBase &other) |
| |
| EnableIterativeBase & | operator= (EnableIterativeBase &&other) |
| |
|
| EnableIterativeBase (std::shared_ptr< const stop::CriterionFactory > stop_factory) |
| |
| | EnableIterativeBase (const EnableIterativeBase &other) |
| |
| | EnableIterativeBase (EnableIterativeBase &&other) |
| |
| void | set_stop_criterion_factory (std::shared_ptr< const stop::CriterionFactory > new_stop_factory) override |
| |
| std::shared_ptr< const stop::CriterionFactory > | get_stop_criterion_factory () const |
| |
| void | set_preconditioner (std::shared_ptr< const LinOp > new_precond) override |
| |
| EnablePreconditionable & | operator= (const EnablePreconditionable &other) |
| |
| EnablePreconditionable & | operator= (EnablePreconditionable &&other) |
| |
|
| EnablePreconditionable (std::shared_ptr< const LinOp > preconditioner) |
| |
| | EnablePreconditionable (const EnablePreconditionable &other) |
| |
| | EnablePreconditionable (EnablePreconditionable &&other) |
| |
| virtual std::shared_ptr< const LinOp > | get_preconditioner () const |
| |
template<typename ValueType = default_precision>
class gko::solver::Minres< ValueType >
Minres is an iterative type Krylov subspace method, which is suitable for indefinite and full-rank symmetric/hermitian operators. It is a specialization of the Gmres method for symmetric/hermitian operators, and can be computed using short recurrences, similar to the CG method.
The implementation in Ginkgo makes use of the merged kernel to make the best use of data locality. The inner operations in one iteration of Minres are merged into 2 separate steps.
For more details see Anne Grennbaum's 'Iterative Methods for Solving Linear Systems' (DOI: 10.1137/1.9781611970937), and Sou-Cheng (Terrya) Choi's 'ITERATIVE METHODS FOR SINGULAR LINEAR EQUATIONS AND LEAST-SQUARES PROBLEMS'.
- Note
- : The Minres solver only reports an approximation of the residual norm directly to the stopping criteria. Neither the actual residual, nor the actual residual norm are reported. Thus, to get the minimal overhead, the gko::stop::ImplicitResidualNorm criteria should be used. The gko::stop::ResidualNorm criteria will require an additional matrix-vector product and global reduction.
- Template Parameters
-
| ValueType | precision of matrix elements |