KaMPIng 0.1.1
Flexible and (near) zero-overhead C++ bindings for MPI
Loading...
Searching...
No Matches
alltoall_grid.hpp File Reference

Plugin to enable grid communication. More...

#include <numeric>
#include "kamping/checking_casts.hpp"
#include "kamping/collectives/alltoall.hpp"
#include "kamping/communicator.hpp"
#include "kamping/environment.hpp"
#include "kamping/plugin/plugin_helpers.hpp"
Include dependency graph for alltoall_grid.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  kamping::plugin::grid_plugin_helpers::Source
 Mixin for MessageEnvelope to store a source PE. More...
 
struct  kamping::plugin::grid_plugin_helpers::Destination
 Mixin for MessageEnvelope to store a destination PE. More...
 
struct  kamping::plugin::grid_plugin_helpers::MessageEnvelope< PayloadType, Attributes >
 Augments a plain message with additional information via. More...
 
struct  kamping::plugin::grid_plugin_helpers::GridPosition
 Class representing a position within a logical two-dimensional processor grid. More...
 
class  kamping::plugin::grid::GridCommunicator< DefaultContainerType >
 Object returned by plugin::GridCommunicator::make_grid_communicator() representing a grid communicator which enables alltoall communication with a latency in sqrt(p) where p is the size of the original communicator. More...
 
class  kamping::plugin::GridCommunicator< Comm, DefaultContainerType >
 Plugin adding a two dimensional communication grid to the communicator. More...
 

Typedefs

template<MessageEnvelopeLevel level, typename T >
using kamping::plugin::grid_plugin_helpers::MessageEnvelopeType
 Select the right MessageEnvelope depending on the provided MsgEnvelopeLevel.
 

Enumerations

enum  kamping::plugin::MessageEnvelopeLevel { kamping::plugin::no_envelope , kamping::plugin::source , kamping::plugin::source_and_destination }
 Descriptor for different levels for message envelopes used in indirect communication. More...
 

Detailed Description

Plugin to enable grid communication.

Typedef Documentation

◆ MessageEnvelopeType

template<MessageEnvelopeLevel level, typename T >
using kamping::plugin::grid_plugin_helpers::MessageEnvelopeType
Initial value:
std::conditional_t<
level == MessageEnvelopeLevel::no_envelope,
T,
std::conditional_t<
level == MessageEnvelopeLevel::source,
MessageEnvelope<T, Source>,
MessageEnvelope<T, Source, Destination>>>

Select the right MessageEnvelope depending on the provided MsgEnvelopeLevel.

Enumeration Type Documentation

◆ MessageEnvelopeLevel

Descriptor for different levels for message envelopes used in indirect communication.

Enumerator
no_envelope 

do not use an envelope at all (if possible)

source 

only additionally add the source PE in the envelope (if possible)

source_and_destination 

add source and destination PE in the envelope