Ginkgo  Generated from pipelines/1706354773 branch based on develop. Ginkgo version 1.10.0
A numerical linear algebra library targeting many-core architectures
Public Member Functions | List of all members
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 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. 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< CollectiveCommunicatorcreate_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< CollectiveCommunicatorcreate_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...
 

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()

virtual std::unique_ptr<CollectiveCommunicator> gko::experimental::mpi::CollectiveCommunicator::create_inverse ( ) const
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::NeighborhoodCommunicator, and gko::experimental::mpi::DenseCommunicator.

◆ create_with_same_type()

virtual std::unique_ptr<CollectiveCommunicator> gko::experimental::mpi::CollectiveCommunicator::create_with_same_type ( communicator  base,
const distributed::index_map_variant &  imap 
) const
pure 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::NeighborhoodCommunicator, and gko::experimental::mpi::DenseCommunicator.

◆ get_recv_size()

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

Get the total number of received elements this communication patterns expects.

Returns
number of received elements.

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

◆ get_send_size()

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

Get the total number of sent elements this communication patterns expects.

Returns
number of sent elements.

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

◆ 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

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

◆ 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: