CPPuddle
Public Member Functions | List of all members
cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor > Class Template Reference

Manages the launch conditions for aggregated function calls type/value-errors. More...

#include <aggregation_executors_and_allocators.hpp>

Public Member Functions

 aggregated_function_call (const size_t number_slices, bool async_mode, Executor &exec)
 
 ~aggregated_function_call (void)
 
bool sync_aggregation_slices (hpx::lcos::future< void > &stream_future)
 Returns true if all required slices have visited this point. More...
 
template<typename F , typename... Ts>
void post_when (hpx::lcos::future< void > &stream_future, F &&f, Ts &&...ts)
 
template<typename F , typename... Ts>
hpx::lcos::future< void > async_when (hpx::lcos::future< void > &stream_future, F &&f, Ts &&...ts)
 
template<typename F , typename... Ts>
hpx::lcos::shared_future< void > wrap_async (hpx::lcos::future< void > &stream_future, F &&f, Ts &&...ts)
 
 aggregated_function_call (const aggregated_function_call &other)=default
 
aggregated_function_calloperator= (const aggregated_function_call &other)=default
 
 aggregated_function_call (aggregated_function_call &&other)=default
 
aggregated_function_calloperator= (aggregated_function_call &&other)=default
 

Detailed Description

template<typename Executor>
class cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >

Manages the launch conditions for aggregated function calls type/value-errors.

Launch conditions: All slice executors must have called the same function (tracked by future all_slices_ready) AND Previous aggregated_function_call on the same Executor must have been launched (tracked by future stream_future) All function calls received from the slice executors are checked if they match the first one in both types and values (throws exception otherwise)

Constructor & Destructor Documentation

◆ aggregated_function_call() [1/3]

template<typename Executor >
cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >::aggregated_function_call ( const size_t  number_slices,
bool  async_mode,
Executor &  exec 
)
inline

◆ ~aggregated_function_call()

template<typename Executor >
cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >::~aggregated_function_call ( void  )
inline

◆ aggregated_function_call() [2/3]

template<typename Executor >
cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >::aggregated_function_call ( const aggregated_function_call< Executor > &  other)
default

◆ aggregated_function_call() [3/3]

template<typename Executor >
cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >::aggregated_function_call ( aggregated_function_call< Executor > &&  other)
default

Member Function Documentation

◆ async_when()

template<typename Executor >
template<typename F , typename... Ts>
hpx::lcos::future<void> cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >::async_when ( hpx::lcos::future< void > &  stream_future,
F &&  f,
Ts &&...  ts 
)
inline

◆ operator=() [1/2]

template<typename Executor >
aggregated_function_call& cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >::operator= ( aggregated_function_call< Executor > &&  other)
default

◆ operator=() [2/2]

template<typename Executor >
aggregated_function_call& cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >::operator= ( const aggregated_function_call< Executor > &  other)
default

◆ post_when()

template<typename Executor >
template<typename F , typename... Ts>
void cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >::post_when ( hpx::lcos::future< void > &  stream_future,
F &&  f,
Ts &&...  ts 
)
inline

◆ sync_aggregation_slices()

template<typename Executor >
bool cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >::sync_aggregation_slices ( hpx::lcos::future< void > &  stream_future)
inline

Returns true if all required slices have visited this point.

◆ wrap_async()

template<typename Executor >
template<typename F , typename... Ts>
hpx::lcos::shared_future<void> cppuddle::kernel_aggregation::detail::aggregated_function_call< Executor >::wrap_async ( hpx::lcos::future< void > &  stream_future,
F &&  f,
Ts &&...  ts 
)
inline

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