![]() |
Ginkgo Generated from branch based on main. Ginkgo version 1.10.0
A numerical linear algebra library targeting many-core architectures
|
Interface for a collective communicator. More...
#include <ginkgo/core/distributed/collective_communicator.hpp>
Public Types | |
| using | index_map_ptr |
| All allowed index_map types (as const *) | |
Public Member Functions | |
| CollectiveCommunicator (communicator base=MPI_COMM_NULL) | |
| const communicator & | get_base_communicator () const |
| template<typename SendType, typename RecvType> | |
| request | i_all_to_all_v (std::shared_ptr< const Executor > exec, const SendType *send_buffer, RecvType *recv_buffer) const |
| Non-blocking all-to-all communication. | |
| request | i_all_to_all_v (std::shared_ptr< const Executor > exec, const void *send_buffer, MPI_Datatype send_type, void *recv_buffer, MPI_Datatype recv_type) const |
| virtual std::unique_ptr< CollectiveCommunicator > | create_with_same_type (communicator base, index_map_ptr imap) const =0 |
| Creates a new CollectiveCommunicator with the same dynamic type. | |
| virtual std::unique_ptr< CollectiveCommunicator > | create_inverse () const =0 |
| Creates a CollectiveCommunicator with the inverse communication pattern than this object. | |
| virtual comm_index_type | get_recv_size () const =0 |
| Get the number of elements received by this process within this communication pattern. | |
| virtual comm_index_type | get_send_size () const =0 |
| Get the number of elements sent by this process within this communication pattern. | |
Interface for a collective communicator.
A collective communicator only provides routines for collective communications. At the moment this is restricted to the variable all-to-all.
All allowed index_map types (as const *)
|
nodiscardpure virtual |
Creates a CollectiveCommunicator with the inverse communication pattern than this object.
Implemented in gko::experimental::mpi::DenseCommunicator, and gko::experimental::mpi::NeighborhoodCommunicator.
|
nodiscardpure virtual |
Creates a new CollectiveCommunicator with the same dynamic type.
| base | The base communicator |
| imap | The index_map that defines the communication pattern |
Implemented in gko::experimental::mpi::DenseCommunicator, and gko::experimental::mpi::NeighborhoodCommunicator.
|
nodiscardpure virtual |
Get the number of elements received by this process within this communication pattern.
Implemented in gko::experimental::mpi::DenseCommunicator, and gko::experimental::mpi::NeighborhoodCommunicator.
|
nodiscardpure virtual |
Get the number of elements sent by this process within this communication pattern.
Implemented in gko::experimental::mpi::DenseCommunicator, and gko::experimental::mpi::NeighborhoodCommunicator.
|
nodiscard |
Non-blocking all-to-all communication.
The send_buffer must have allocated at least get_send_size number of elements, and the recv_buffer must have allocated at least get_recv_size number of elements.
| SendType | the type of the elements to send |
| RecvType | the type of the elements to receive |
| exec | the executor for the communication |
| send_buffer | the send buffer |
| recv_buffer | the receive buffer |
References i_all_to_all_v().
Referenced by i_all_to_all_v().
| request gko::experimental::mpi::CollectiveCommunicator::i_all_to_all_v | ( | std::shared_ptr< const Executor > | exec, |
| const void * | send_buffer, | ||
| MPI_Datatype | send_type, | ||
| void * | recv_buffer, | ||
| MPI_Datatype | recv_type ) const |