![]() |
Ginkgo
Generated from pipelines/1706354773 branch based on develop. 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 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. More... | |
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, const distributed::index_map_variant &imap) const =0 |
Creates a new CollectiveCommunicator with the same dynamic type. More... | |
virtual std::unique_ptr< CollectiveCommunicator > | create_inverse () const =0 |
Creates a CollectiveCommunicator with the inverse communication pattern than this object. More... | |
virtual comm_index_type | get_recv_size () const =0 |
Get the total number of received elements this communication patterns expects. More... | |
virtual comm_index_type | get_send_size () const =0 |
Get the total number of sent elements this communication patterns expects. More... | |
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.
|
pure virtual |
Creates a CollectiveCommunicator with the inverse communication pattern than this object.
Implemented in gko::experimental::mpi::NeighborhoodCommunicator, and gko::experimental::mpi::DenseCommunicator.
|
pure 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::NeighborhoodCommunicator, and gko::experimental::mpi::DenseCommunicator.
|
pure virtual |
Get the total number of received elements this communication patterns expects.
Implemented in gko::experimental::mpi::NeighborhoodCommunicator, and gko::experimental::mpi::DenseCommunicator.
|
pure virtual |
Get the total number of sent elements this communication patterns expects.
Implemented in gko::experimental::mpi::NeighborhoodCommunicator, and gko::experimental::mpi::DenseCommunicator.
request gko::experimental::mpi::CollectiveCommunicator::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.
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 |
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 |