|
| 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::Bicg< ValueType >
BICG or the Biconjugate gradient method is a Krylov subspace solver.
Being a generic solver, it is capable of solving general matrices, including non-s.p.d matrices. Though, the memory and the computational requirement of the BiCG solver are higher than of its s.p.d solver counterpart, it has the capability to solve generic systems.
BiCG is based on the bi-Lanczos tridiagonalization method and in exact arithmetic should terminate in at most N iterations (2N MV's, with A and A^H). It forms the basis of many of the cheaper methods such as BiCGSTAB and CGS.
Reference: R.Fletcher, Conjugate gradient methods for indefinite systems, doi: 10.1007/BFb0080116
- Template Parameters
-
| ValueType | precision of matrix elements |