|
| size_type | get_krylov_dim () const |
| |
| void | set_krylov_dim (size_type other) |
| |
| cb_gmres::storage_precision | get_storage_precision () const |
| |
|
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::CbGmres< ValueType >
CB-GMRES or the compressed basis generalized minimal residual method is an iterative type Krylov subspace method which is suitable for nonsymmetric linear systems.
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 CB-GMRES are merged into 2 separate steps. Classical Gram-Schmidt with reorthogonalization is used.
The Krylov basis can be stored in reduced precision (compressed) to reduce memory accesses, while all computations (including Krylov basis operations) are performed in the same arithmetic precision ValueType. By default, the Krylov basis are stored in one precision lower than ValueType.
- Template Parameters
-
| ValueType | the arithmetic precision and the precision of matrix elements |