#include <CollectiveCommunicationNonBlocking.h>
CollectiveCommunicationNonBlocking provides an interface to access multiple CollectiveCommunicationSingleNonBlocking objects. This allows the use of multiple different collective calls, which is needed for the different ensembles.
- Author
- Steffen Seckler
- Note
- requires MPI >= 3!
◆ ~CollectiveCommunicationNonBlocking()
CollectiveCommunicationNonBlocking::~CollectiveCommunicationNonBlocking |
( |
| ) |
|
|
overridedefault |
◆ allreduceCustom()
void CollectiveCommunicationNonBlocking::allreduceCustom |
( |
ReduceType |
type | ) |
|
|
inlineoverridevirtual |
Performs an allreduce operation with a custom reduce type.
- Parameters
-
type | the type of the operation |
Implements CollectiveCommBaseInterface.
◆ allreduceSum()
void CollectiveCommunicationNonBlocking::allreduceSum |
( |
| ) |
|
|
inlineoverridevirtual |
◆ allreduceSumAllowPrevious()
virtual void CollectiveCommunicationNonBlocking::allreduceSumAllowPrevious |
( |
| ) |
|
|
inlineoverridevirtual |
Performs an all-reduce (sum), however values of previous iterations are permitted. By allowing values from previous iterations, overlapping communication is possible. One possible use case for this function is the reduction of slowly changing variables, e.g. the temperature.
Implements CollectiveCommunicationInterface.
◆ appendDouble()
void CollectiveCommunicationNonBlocking::appendDouble |
( |
double |
doubleValue | ) |
|
|
inlineoverridevirtual |
Append a double value to the list of values to be sent
- Parameters
-
unsLongValue | value to be appended |
Implements CollectiveCommBaseInterface.
◆ appendFloat()
void CollectiveCommunicationNonBlocking::appendFloat |
( |
float |
floatValue | ) |
|
|
inlineoverridevirtual |
Append a float value to the list of values to be sent
- Parameters
-
unsLongValue | value to be appended |
Implements CollectiveCommBaseInterface.
◆ appendInt()
void CollectiveCommunicationNonBlocking::appendInt |
( |
int |
intValue | ) |
|
|
inlineoverridevirtual |
◆ appendLongDouble()
void CollectiveCommunicationNonBlocking::appendLongDouble |
( |
long double |
longDoubleValue | ) |
|
|
inlineoverridevirtual |
Append a long double value to the list of values to be sent
- Parameters
-
unsLongValue | value to be appended |
Implements CollectiveCommBaseInterface.
◆ appendUnsLong()
void CollectiveCommunicationNonBlocking::appendUnsLong |
( |
unsigned long |
unsLongValue | ) |
|
|
inlineoverridevirtual |
Append a unsigned long value to the list of values to be sent
- Parameters
-
unsLongValue | value to be appended |
Implements CollectiveCommBaseInterface.
◆ broadcast()
void CollectiveCommunicationNonBlocking::broadcast |
( |
int |
root = 0 | ) |
|
|
inlineoverridevirtual |
Broadcast all values from the process with rank 0 to all others
- Parameters
-
root | The root of the broadcast |
Implements CollectiveCommBaseInterface.
◆ finalize()
void CollectiveCommunicationNonBlocking::finalize |
( |
| ) |
|
|
inlineoverridevirtual |
◆ getDouble()
double CollectiveCommunicationNonBlocking::getDouble |
( |
| ) |
|
|
inlineoverridevirtual |
Get the next value from the list, which must be double
no check is performed that the type is correct, so we rely on the sanity of the programmer to ensure FIFO ordering w.r.t. append-get order
- Returns
- the value
Implements CollectiveCommBaseInterface.
◆ getFloat()
float CollectiveCommunicationNonBlocking::getFloat |
( |
| ) |
|
|
inlineoverridevirtual |
Get the next value from the list, which must be float
no check is performed that the type is correct, so we rely on the sanity of the programmer to ensure FIFO ordering w.r.t. append-get order
- Returns
- the value
Implements CollectiveCommBaseInterface.
◆ getInt()
int CollectiveCommunicationNonBlocking::getInt |
( |
| ) |
|
|
inlineoverridevirtual |
Get the next value from the list, which must be int
no check is performed that the type is correct, so we rely on the sanity of the programmer to ensure FIFO ordering w.r.t. append-get order
- Returns
- the value
Implements CollectiveCommBaseInterface.
◆ getLongDouble()
long double CollectiveCommunicationNonBlocking::getLongDouble |
( |
| ) |
|
|
inlineoverridevirtual |
Get the next value from the list, which must be long double
no check is performed that the type is correct, so we rely on the sanity of the programmer to ensure FIFO ordering w.r.t. append-get order
- Returns
- the value
Implements CollectiveCommBaseInterface.
◆ getTopology()
MPI_Comm CollectiveCommunicationNonBlocking::getTopology |
( |
| ) |
|
|
inlineoverridevirtual |
◆ getTotalSize()
size_t CollectiveCommunicationNonBlocking::getTotalSize |
( |
| ) |
|
|
inlineoverridevirtual |
Waits until collective operation is finished.
- Parameters
-
key | The key of the collective communication |
Implements CollectiveCommBaseInterface.
◆ getUnsLong()
unsigned long CollectiveCommunicationNonBlocking::getUnsLong |
( |
| ) |
|
|
inlineoverridevirtual |
Get the next value from the list, which must be unsigned long
no check is performed that the type is correct, so we rely on the sanity of the programmer to ensure FIFO ordering w.r.t. append-get order
- Returns
- the value
Implements CollectiveCommBaseInterface.
◆ init()
void CollectiveCommunicationNonBlocking::init |
( |
MPI_Comm |
communicator, |
|
|
int |
numValues, |
|
|
int |
key = 0 |
|
) |
| |
|
inlineoverridevirtual |
allocate memory for the values to be sent, initialize counters for specific
- Parameters
-
key | The key of the collective communication, this key will be used |
communicator | MPI communicator for the |
numValues | number of values that shall be communicated |
Implements CollectiveCommunicationInterface.
◆ scanSum()
void CollectiveCommunicationNonBlocking::scanSum |
( |
| ) |
|
|
inlineoverridevirtual |
The documentation for this class was generated from the following file: