BatchLinOpFactory Class Reference

BatchLinOpFactory Class Reference#

Reference API: gko::batch::BatchLinOpFactory Class Reference
Reference API
gko::batch::BatchLinOpFactory Class Reference

#include <ginkgo/core/base/batch_lin_op.hpp>

Inheritance diagram for gko::batch::BatchLinOpFactory:
[legend]

Public Member Functions

std::unique_ptr< BatchLinOpgenerate (std::shared_ptr< const BatchLinOp > input) const
 
- Public Member Functions inherited from gko::EnableAbstractPolymorphicObject< AbstractObject, PolymorphicBase >
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 ()
 
- Public Member Functions inherited from gko::PolymorphicObject
PolymorphicObjectoperator= (const PolymorphicObject &)
 
std::unique_ptr< PolymorphicObjectcreate_default (std::shared_ptr< const Executor > exec) const
 
std::unique_ptr< PolymorphicObjectcreate_default () const
 
std::unique_ptr< PolymorphicObjectclone (std::shared_ptr< const Executor > exec) const
 
std::unique_ptr< PolymorphicObjectclone () const
 
PolymorphicObjectcopy_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)
 
PolymorphicObjectcopy_from (const std::shared_ptr< const PolymorphicObject > &other)
 
PolymorphicObjectmove_from (ptr_param< PolymorphicObject > other)
 
PolymorphicObjectclear ()
 
std::shared_ptr< const Executorget_executor () const noexcept
 
- 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)
 

Additional Inherited Members

- Protected Member Functions inherited from gko::PolymorphicObject
 PolymorphicObject (std::shared_ptr< const Executor > exec)
 
 PolymorphicObject (const PolymorphicObject &other)
 
virtual std::unique_ptr< PolymorphicObjectcreate_default_impl (std::shared_ptr< const Executor > exec) const =0
 
virtual PolymorphicObjectcopy_from_impl (const PolymorphicObject *other)=0
 
virtual PolymorphicObjectcopy_from_impl (std::unique_ptr< PolymorphicObject > other)=0
 
virtual PolymorphicObjectmove_from_impl (PolymorphicObject *other)=0
 
virtual PolymorphicObjectmove_from_impl (std::unique_ptr< PolymorphicObject > other)=0
 
virtual PolymorphicObjectclear_impl ()=0
 
- Protected Member Functions inherited from gko::log::EnableLogging< PolymorphicObject >
void log (Params &&... params) const
 
- Protected Attributes inherited from gko::log::EnableLogging< PolymorphicObject >
std::vector< std::shared_ptr< const Logger > > loggers_
 

Detailed Description

A BatchLinOpFactory represents a higher order mapping which transforms one batch linear operator into another.

In a similar fashion to LinOps, BatchLinOps are also "generated" from the BatchLinOpFactory. A function of this class is to provide a generate method, which internally cals the generate_impl(), which the concrete BatchLinOps have to implement.

Example: using BatchCG in Ginkgo

++
// Suppose A is a batch matrix, batch_b, a batch rhs vector, and batch_x, an
// initial guess
// Create a BatchCG which runs for at most 1000 iterations, and stops after
// reducing the residual norm by 6 orders of magnitude
auto batch_cg_factory = solver::BatchCg<>::build()
.with_max_iters(1000)
.with_rel_residual_goal(1e-6)
.on(cuda);
// create a batch linear operator which represents the solver
auto batch_cg = batch_cg_factory->generate(A);
// solve the system
batch_cg->apply(batch_b, batch_x);

The documentation for this class was generated from the following file: