Ginkgo Generated from branch based on main. Ginkgo version 1.10.0
A numerical linear algebra library targeting many-core architectures
Loading...
Searching...
No Matches
gko::experimental::mpi::CollectiveCommunicator Class Referenceabstract

Interface for a collective communicator. More...

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

Inheritance diagram for gko::experimental::mpi::CollectiveCommunicator:
[legend]

Public Types

using index_map_ptr
 All allowed index_map types (as const *)

Public Member Functions

 CollectiveCommunicator (communicator base=MPI_COMM_NULL)
const communicatorget_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< CollectiveCommunicatorcreate_with_same_type (communicator base, index_map_ptr imap) const =0
 Creates a new CollectiveCommunicator with the same dynamic type.
virtual std::unique_ptr< CollectiveCommunicatorcreate_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.

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 Typedef Documentation

◆ index_map_ptr

Initial value:
std::variant<const distributed::index_map<int32, int32>*,
This class defines mappings between global and local indices.
Definition index_map.hpp:68

All allowed index_map types (as const *)

Member Function Documentation

◆ create_inverse()

virtual std::unique_ptr< CollectiveCommunicator > gko::experimental::mpi::CollectiveCommunicator::create_inverse ( ) const
nodiscardpure 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()

virtual std::unique_ptr< CollectiveCommunicator > gko::experimental::mpi::CollectiveCommunicator::create_with_same_type ( communicator base,
index_map_ptr imap ) const
nodiscardpure virtual

Creates a new CollectiveCommunicator with the same dynamic type.

Parameters
baseThe base communicator
imapThe 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()

virtual comm_index_type gko::experimental::mpi::CollectiveCommunicator::get_recv_size ( ) const
nodiscardpure virtual

Get the number of elements received by this process within this communication pattern.

Returns
number of received elements.

Implemented in gko::experimental::mpi::DenseCommunicator, and gko::experimental::mpi::NeighborhoodCommunicator.

◆ get_send_size()

virtual comm_index_type gko::experimental::mpi::CollectiveCommunicator::get_send_size ( ) const
nodiscardpure virtual

Get the number of elements sent by this process within this communication pattern.

Returns
number of sent elements.

Implemented in gko::experimental::mpi::DenseCommunicator, and gko::experimental::mpi::NeighborhoodCommunicator.

◆ i_all_to_all_v() [1/2]

template<typename SendType, typename RecvType>
request gko::experimental::mpi::CollectiveCommunicator::i_all_to_all_v ( std::shared_ptr< const Executor > exec,
const SendType * send_buffer,
RecvType * recv_buffer ) const
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.

Template Parameters
SendTypethe type of the elements to send
RecvTypethe type of the elements to receive
Parameters
execthe executor for the communication
send_bufferthe send buffer
recv_bufferthe 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


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