|
mpi::request | apply_async (ptr_param< const LinOp > b, ptr_param< LinOp > x) const |
| Asynchronous version of LinOp::apply.
|
mpi::request | apply_async (ptr_param< const LinOp > b, ptr_param< LinOp > x, array< char > &workspace) const |
| Asynchronous version of LinOp::apply.
|
dim< 2 > | get_size () const |
| Returns the size of the row gatherer.
|
std::shared_ptr< const mpi::CollectiveCommunicator > | get_collective_communicator () const |
| Get the used collective communicator.
|
const LocalIndexType * | get_const_send_idxs () const |
| Read access to the (local) rows indices.
|
size_type | get_num_send_idxs () const |
| Returns the number of (local) row indices.
|
| RowGatherer (const RowGatherer &o) |
| RowGatherer (RowGatherer &&o) noexcept |
RowGatherer & | operator= (const RowGatherer &o) |
RowGatherer & | operator= (RowGatherer &&o) |
std::unique_ptr< RowGatherer< int32 > > | create_default (std::shared_ptr< const Executor > exec) const |
std::unique_ptr< RowGatherer< int32 > > | clone (std::shared_ptr< const Executor > exec) const |
RowGatherer< int32 > * | copy_from (const PolymorphicObject *other) |
RowGatherer< int32 > * | move_from (ptr_param< PolymorphicObject > other) |
RowGatherer< int32 > * | clear () |
PolymorphicObject & | operator= (const PolymorphicObject &) |
std::unique_ptr< PolymorphicObject > | create_default (std::shared_ptr< const Executor > exec) const |
| Creates a new "default" object of the same dynamic type as this object.
|
std::unique_ptr< PolymorphicObject > | create_default () const |
| Creates a new "default" object of the same dynamic type as this object.
|
std::unique_ptr< PolymorphicObject > | clone (std::shared_ptr< const Executor > exec) const |
| Creates a clone of the object.
|
std::unique_ptr< PolymorphicObject > | clone () const |
| Creates a clone of the object.
|
PolymorphicObject * | copy_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.
|
PolymorphicObject * | copy_from (const std::shared_ptr< const PolymorphicObject > &other) |
| Copies another object into this object.
|
PolymorphicObject * | move_from (ptr_param< PolymorphicObject > other) |
| Moves another object into this object.
|
PolymorphicObject * | clear () |
| Transforms the object into its default state.
|
std::shared_ptr< const Executor > | get_executor () const noexcept |
| Returns the Executor of the object.
|
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.
|
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.
|
void | remove_logger (ptr_param< const Logger > logger) |
void | convert_to (result_type *result) const override |
void | move_to (result_type *result) override |
| DistributedBase (const DistributedBase &other)=default |
| DistributedBase (DistributedBase &&other)=default |
DistributedBase & | operator= (const DistributedBase &) |
| Copy assignment that doesn't change the used mpi::communicator.
|
DistributedBase & | operator= (DistributedBase &&) noexcept |
| Move assignment that doesn't change the used mpi::communicator.
|
mpi::communicator | get_communicator () const |
| Access the used mpi::communicator.
|
template<typename LocalIndexType = int32>
class gko::experimental::distributed::RowGatherer< LocalIndexType >
The distributed::RowGatherer gathers the rows of distributed::Vector that are located on other processes.
Example usage:
auto coll_comm = std::make_shared<mpi::neighborhood_communicator>(comm,
imap);
auto req = rg->apply_async(b, x);
req.wait();
static std::unique_ptr< RowGatherer > create(std::shared_ptr< const Executor > exec, std::shared_ptr< const mpi::CollectiveCommunicator > coll_comm, const index_map< LocalIndexType, GlobalIndexType > &imap)
Creates a distributed::RowGatherer from a given collective communicator and index map.
Definition row_gatherer.hpp:144
static std::unique_ptr< Vector > create(std::shared_ptr< const Executor > exec, mpi::communicator comm, dim< 2 > global_size, dim< 2 > local_size, size_type stride)
Creates an empty distributed vector with a specified size.
static std::unique_ptr< Dense > create(std::shared_ptr< const Executor > exec, const dim< 2 > &size={}, size_type stride=0)
Creates an uninitialized Dense matrix of the specified size.
- Note
- The output vector for the apply_async functions must use an executor that is compatible with the MPI implementation. In particular, if the MPI implementation is not GPU aware, then the output vector must use a CPU executor. Otherwise, an exception will be thrown.
- Template Parameters
-
LocalIndexType | the index type for the stored indices |