CollectiveCommunicator Class Reference#
|
Reference API
|
#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 |
| 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 |
| virtual std::unique_ptr< CollectiveCommunicator > | create_inverse () const =0 |
| virtual comm_index_type | get_recv_size () const =0 |
| virtual comm_index_type | get_send_size () const =0 |
Protected Member Functions | |
| virtual request | i_all_to_all_v_impl (std::shared_ptr< const Executor > exec, const void *send_buffer, MPI_Datatype send_type, void *recv_buffer, MPI_Datatype recv_type) const =0 |
Detailed Description
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.
Member Function Documentation
◆ create_inverse()
|
pure virtual |
Creates a CollectiveCommunicator with the inverse communication pattern than this object.
- Returns
- a CollectiveCommunicator with the inverse communication pattern.
Implemented in gko::experimental::mpi::DenseCommunicator, and gko::experimental::mpi::NeighborhoodCommunicator.
◆ create_with_same_type()
|
pure virtual |
Creates a new CollectiveCommunicator with the same dynamic type.
- Parameters
-
base The base communicator imap The index_map that defines the communication pattern
- Returns
- a CollectiveCommunicator with the same dynamic type
Implemented in gko::experimental::mpi::DenseCommunicator, and gko::experimental::mpi::NeighborhoodCommunicator.
◆ get_recv_size()
|
pure virtual |
Get the total number of received elements this communication patterns expects.
- Returns
- number of received elements.
Implemented in gko::experimental::mpi::DenseCommunicator, and gko::experimental::mpi::NeighborhoodCommunicator.
◆ get_send_size()
|
pure virtual |
Get the total number of sent elements this communication patterns expects.
- Returns
- number of sent elements.
Implemented in gko::experimental::mpi::DenseCommunicator, and gko::experimental::mpi::NeighborhoodCommunicator.
◆ i_all_to_all_v() [1/2]
| 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.
- Template Parameters
-
SendType the type of the elements to send RecvType the type of the elements to receive
- Parameters
-
exec the executor for the communication send_buffer the send buffer recv_buffer the receive buffer
- Returns
- a request handle
References i_all_to_all_v().
Referenced by i_all_to_all_v().
◆ i_all_to_all_v() [2/2]
| 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 |
◆ i_all_to_all_v_impl()
The documentation for this class was generated from the following file:
- ginkgo/core/distributed/collective_communicator.hpp
Generated by