Performs an allreduce over all locations of the current gang. More...
Public Member Functions | |
allreduce_object (context &ctx, BinaryOperation op=BinaryOperation{}) | |
rmi_handle::reference const & | get_rmi_handle (void) noexcept |
rmi_handle::const_reference const & | get_rmi_handle (void) const noexcept |
template<typename U > | |
void | operator() (U &&u) |
Initiates the allreduce. More... | |
bool | valid (void) const final |
Returns true if the result has been received. | |
void | wait (void) const final |
Waits for the result to be received. More... | |
void | wait (context &ctx) const |
Waits for the result to be received. More... | |
T | get (void) final |
Returns the received result. More... | |
T | get (context &ctx) |
Returns the received result. More... | |
void | set_value (storage_type *const p, void *const base, message_shared_ptr &m) |
Sets the result. More... | |
void | set_value (T const &value) |
Sets the result. More... | |
void | set_value (T &&value) |
void | set_owned (void) noexcept |
bool | is_owned (void) const noexcept |
template<typename Function > | |
void | async_then (Function &&f) |
Public Types | |
using | value_type = T |
typedef internal_storage_type::storage_type | storage_type |
Protected Member Functions | |
bool | valid_no_yield (void) const noexcept final |
Returns true if the result has been received. | |
void | schedule_continuation (void) |
Schedules a continuation if async_then() was called. | |
Protected Attributes | |
std::mutex | m_mtx |
Performs an allreduce over all locations of the current gang.
T | Value type. |
BinaryOperation | Reduction operator type. |
NonCommutative | true for non-commutative operators, otherwise false . |
ComplexOperation | true for operations without MPI equivalents or on types which are non-basic, otherwise false . |
void stapl::runtime::allreduce_object< T, BinaryOperation, NonCommutative, ComplexOperation >::operator() | ( | U && | u | ) |
Initiates the allreduce.
u | Value to contribute to the reduction. |
|
finalvirtualinherited |
Waits for the result to be received.
Blocks until valid() const returns true
.
Implements stapl::runtime::future_base< T >.
|
inherited |
Waits for the result to be received.
Blocks until valid() const returns true
.
|
finalvirtualinherited |
Returns the received result.
This function waits until the result has been received and returns it.
Calling valid() const returns false
after a call to this function.
The lock ensures that set_value() has finished before the get() continues, to avoid calling schedule_continuation() on an object that has been destroyed.
Implements stapl::runtime::future_base< T >.
|
inherited |
Returns the received result.
This function waits until the result has been received and returns it.
Calling valid() const returns false
after a call to this function.
The lock ensures that set_value() has finished before the get() continues, to avoid calling schedule_continuation() on an object that has been destroyed.
|
inherited |
Sets the result.
This function keeps a pointer to the buffer where the result remains packed until get() is called.
p | Pointer to the stapl::runtime::arg_storage in the buffer. |
base | Address in the buffer that the stapl::runtime::arg_storage is stored in. |
m | Buffer that contains the stapl::runtime::arg_storage . |
|
inherited |
Sets the result.
value | Value to be set. |
|
inherited |