STAPL API Reference          
Overview   Containers   Algorithms   Views   Skeletons   Run-Time System
Modules     Classes    
Functions

Communication primitives with relaxed consistency. More...

+ Collaboration diagram for ARMI Unordered primitives:

Functions

template<typename Handle , typename MemFun , typename... T>
void stapl::unordered::async_rmi (all_locations_t, Handle const &h, MemFun const &pmf, T &&... t)
 Asynchronous RMI primitive to all locations the object exists on. More...
 
template<typename U , typename Handle , typename MemFun , typename... T>
void stapl::unordered::async_rmi (location_range_wrapper< U > const &r, Handle const &h, MemFun const &pmf, T &&... t)
 Asynchronous RMI primitive to a range of locations the object exists on. More...
 
template<typename Handle , typename MemFun , typename... T>
void stapl::unordered::async_rmi (unsigned int dest, Handle const &h, MemFun const &pmf, T &&... t)
 Asynchronous unordered RMI primitive. More...
 
template<typename Handle , typename MemFun , typename... T>
futures< typename callable_traits< MemFun >::result_type > stapl::unordered::opaque_rmi (all_locations_t, Handle const &h, MemFun const &pmf, T &&... t)
 Asynchronous RMI primitive to all locations the object it exists on. More...
 
template<typename BinaryOperation , typename Handle , typename MemFun , typename... T>
runtime::binary_operation_result_t< typename callable_traits< MemFun >::result_type, BinaryOperation > stapl::unordered::sync_reduce_rmi (BinaryOperation op, Handle const &h, MemFun const &pmf, T &&... t)
 Reduction RMI primitive. More...
 
template<typename BinaryOperation , typename Handle , typename MemFun , typename... T>
future< runtime::binary_operation_result_t< typename callable_traits< MemFun >::result_type, BinaryOperation >> stapl::unordered::reduce_rmi (BinaryOperation op, Handle const &h, MemFun const &pmf, T &&... t)
 Reduction RMI primitive. More...
 

Detailed Description

Communication primitives with relaxed consistency.

Unordered primitives may violate the RMI consistency model.

Function Documentation

◆ async_rmi() [1/3]

template<typename Handle , typename MemFun , typename... T>
void stapl::unordered::async_rmi ( all_locations_t  ,
Handle const &  h,
MemFun const &  pmf,
T &&...  t 
)

Asynchronous RMI primitive to all locations the object exists on.

The given member function is called on the object in all the locations it exists on. Any return values are discarded.

This is an unordered version of the stapl::async_rmi() that may break RMI ordering rules.

Parameters
hHandle to the target object.
pmfMember function to invoke.
tArguments to pass to the member function.

◆ async_rmi() [2/3]

template<typename U , typename Handle , typename MemFun , typename... T>
void stapl::unordered::async_rmi ( location_range_wrapper< U > const &  r,
Handle const &  h,
MemFun const &  pmf,
T &&...  t 
)

Asynchronous RMI primitive to a range of locations the object exists on.

The given member function is called on the object on the range r of locations it exists on. Any return values are discarded.

This is an unordered version of the stapl::async_rmi() that may break RMI ordering rules.

Parameters
rDestination locations.
hHandle to the target object.
pmfMember function to invoke.
tArguments to pass to the member function.

◆ async_rmi() [3/3]

template<typename Handle , typename MemFun , typename... T>
void stapl::unordered::async_rmi ( unsigned int  dest,
Handle const &  h,
MemFun const &  pmf,
T &&...  t 
)

Asynchronous unordered RMI primitive.

The given member function is called on the object in the destination location. Any return values are discarded.

This function supports combining: if two or more async_rmi() calls are made to the same object, function and location one after another, then the requests are compressed and only the arguments of the requests past the first are sent, saving on space and request execution time.

This is an unordered version of the stapl::async_rmi() that may break RMI ordering rules.

Parameters
destDestination location.
hHandle to the target object.
pmfMember function to invoke.
tArguments to pass to the member function.

◆ opaque_rmi()

template<typename Handle , typename MemFun , typename... T>
futures<typename callable_traits<MemFun>::result_type> stapl::unordered::opaque_rmi ( all_locations_t  ,
Handle const &  h,
MemFun const &  pmf,
T &&...  t 
)

Asynchronous RMI primitive to all locations the object it exists on.

The given member function is called on the object in all the locations it exists on. The return values are ordered by location id.

If the return values are not needed, it is recommended that unordered::async_rmi() is used.

This is an unordered version of the stapl::opaque_rmi() that may break RMI ordering rules.

Parameters
hHandle to the target object.
pmfMember function to invoke.
tArguments to pass to the member function.
Returns
A futures object with the return values from each member function invocation.

◆ sync_reduce_rmi()

template<typename BinaryOperation , typename Handle , typename MemFun , typename... T>
runtime::binary_operation_result_t< typename callable_traits<MemFun>::result_type, BinaryOperation> stapl::unordered::sync_reduce_rmi ( BinaryOperation  op,
Handle const &  h,
MemFun const &  pmf,
T &&...  t 
)

Reduction RMI primitive.

The given member function is called on all locations the object is defined on with the given arguments and returns an object that is the result of the reduction using the supplied function.

If the operator op is non-commutative, this has to be declared by using stapl::non_commutative().

This is an unordered version of the stapl::sync_reduce_rmi() that may break RMI ordering rules.

Warning
This is a function that can harm scalability. It exists to facilitate one-sided synchronization. Use unordered::reduce_rmi() if possible.
Parameters
opReduction operator.
hHandle to the target object.
pmfMember function to invoke.
tArguments to pass to the member function.
Returns
The result of the reduction of the return values from all the locations the object exists on.

◆ reduce_rmi()

template<typename BinaryOperation , typename Handle , typename MemFun , typename... T>
future< runtime::binary_operation_result_t< typename callable_traits<MemFun>::result_type, BinaryOperation>> stapl::unordered::reduce_rmi ( BinaryOperation  op,
Handle const &  h,
MemFun const &  pmf,
T &&...  t 
)

Reduction RMI primitive.

The given member function is called on all locations the object is defined on with the given arguments and returns an object that is the result of the reduction using the supplied function.

If the operator op is non-commutative, this has to be declared by using stapl::non_commutative().

This is an unordered version of the stapl::reduce_rmi() that may break RMI ordering rules.

Parameters
opReduction operator.
hHandle to the target object.
pmfMember function to invoke.
tArguments to pass to the member function.
Returns
A future object with the result of the reduction of the return values from all the locations the object exists on.