Ginkgo Generated from branch based on master. Ginkgo version 1.8.0
A numerical linear algebra library targeting many-core architectures
Loading...
Searching...
No Matches
gko::experimental::EnableDistributedPolymorphicObject< ConcreteObject, PolymorphicBase > Class Template Reference

This mixin does the same as EnablePolymorphicObject, but for concrete types that are derived from distributed::DistributedBase. More...

#include <ginkgo/core/distributed/polymorphic_object.hpp>

Inheritance diagram for gko::experimental::EnableDistributedPolymorphicObject< ConcreteObject, PolymorphicBase >:
[legend]
Collaboration diagram for gko::experimental::EnableDistributedPolymorphicObject< ConcreteObject, PolymorphicBase >:
[legend]

Additional Inherited Members

- Public Member Functions inherited from gko::EnableAbstractPolymorphicObject< ConcreteObject, PolymorphicObject >
std::unique_ptr< ConcreteObject > create_default (std::shared_ptr< const Executor > exec) const
 
std::unique_ptr< ConcreteObject > create_default () const
 
std::unique_ptr< ConcreteObject > clone (std::shared_ptr< const Executor > exec) const
 
std::unique_ptr< ConcreteObject > clone () const
 
ConcreteObject * copy_from (const PolymorphicObject *other)
 
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, ConcreteObject > * copy_from (std::unique_ptr< Derived > &&other)
 
std::enable_if_t< std::is_base_of< PolymorphicObject, std::decay_t< Derived > >::value, ConcreteObject > * copy_from (const std::unique_ptr< Derived > &other)
 
ConcreteObject * copy_from (const std::shared_ptr< const PolymorphicObject > &other)
 
ConcreteObject * move_from (ptr_param< PolymorphicObject > other)
 
ConcreteObject * clear ()
 
- Public Member Functions inherited from gko::PolymorphicObject
PolymorphicObjectoperator= (const PolymorphicObject &)
 
std::unique_ptr< PolymorphicObjectcreate_default (std::shared_ptr< const Executor > exec) const
 Creates a new "default" object of the same dynamic type as this object.
 
std::unique_ptr< PolymorphicObjectcreate_default () const
 Creates a new "default" object of the same dynamic type as this object.
 
std::unique_ptr< PolymorphicObjectclone (std::shared_ptr< const Executor > exec) const
 Creates a clone of the object.
 
std::unique_ptr< PolymorphicObjectclone () const
 Creates a clone of the object.
 
PolymorphicObjectcopy_from (const PolymorphicObject *other)
 Copies another object into this object.
 
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)
 Moves another object into this object.
 
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)
 Copies another object into this object.
 
PolymorphicObjectcopy_from (const std::shared_ptr< const PolymorphicObject > &other)
 Copies another object into this object.
 
PolymorphicObjectmove_from (ptr_param< PolymorphicObject > other)
 Moves another object into this object.
 
PolymorphicObjectclear ()
 Transforms the object into its default state.
 
std::shared_ptr< const Executorget_executor () const noexcept
 Returns the Executor of the object.
 
- Public Member Functions inherited from gko::log::EnableLogging< PolymorphicObject >
void add_logger (std::shared_ptr< const Logger > logger) override
 Adds a new logger to the list of subscribed loggers.
 
void remove_logger (const Logger *logger) override
 Removes a logger from the list of subscribed loggers.
 
void remove_logger (ptr_param< const Logger > logger)
 
const std::vector< std::shared_ptr< const Logger > > & get_loggers () const override
 Returns the vector containing all loggers registered at this object.
 
void clear_loggers () override
 Remove all loggers registered at this object.
 
- Public Member Functions inherited from gko::log::Loggable
void remove_logger (ptr_param< const Logger > logger)
 

Detailed Description

template<typename ConcreteObject, typename PolymorphicBase = PolymorphicObject>
class gko::experimental::EnableDistributedPolymorphicObject< ConcreteObject, PolymorphicBase >

This mixin does the same as EnablePolymorphicObject, but for concrete types that are derived from distributed::DistributedBase.

See also
EnablePolymporphicObject.

The following is a minimal example of a distributed PolymorphicObject:

++
struct MyObject : EnableDistributedPolymorphicObject<MyObject>,
MyObject(std::shared_ptr<const Executor> exec, mpi::communicator comm)
: EnableDistributedPolymorphicObject<MyObject>(std::move(exec)),
distributed::DistributedBase(std::move(comm))
{}
};
This mixin does the same as EnablePolymorphicObject, but for concrete types that are derived from dis...
Definition polymorphic_object.hpp:54
A base class for distributed objects.
Definition base.hpp:32
A thin wrapper of MPI_Comm that supports most MPI calls.
Definition mpi.hpp:409
Template Parameters
ConcreteObjectthe concrete type which is being implemented that is derived from distributed::DistributedBase [CRTP parameter]
PolymorphicBaseparent of ConcreteObject in the polymorphic hierarchy, has to be a subclass of polymorphic object

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