Ginkgo: gko::experimental::mpi::CollectiveCommunicator Class Reference

| Ginkgo Generated from branch based on main. Ginkgo version 1.11.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 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.

## 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

using gko::experimental::mpi::CollectiveCommunicator::index_map_ptr

Initial value:
std::variant<const distributed::index_map<int32, int32>*,
const distributed::index_map<int32, int64>*,
const distributed::index_map<int64, int64>*>
gko::experimental::distributed::index_map
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

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

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

  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

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

- ginkgo/core/distributed/collective_communicator.hpp