50 std::function<return_type(
size_t,
size_t,
52 executor_t>::executor_slice&)> &&aggregation_area) {
55 static hpx::once_flag pool_init;
56 hpx::call_once(pool_init,
58 auto executor_slice_fut = aggregation_pool_t::request_executor_slice();
59 auto ret_fut = executor_slice_fut.value().then(hpx::annotated_function(
60 [aggregation_area](
auto &&fut) {
62 executor_t>::Executor_Slice agg_exec = fut.get();
63 const size_t slice_id = agg_exec.id;
64 const size_t number_slices = agg_exec.number_slices;
65 return aggregation_area(slice_id, number_slices, agg_exec);
hpx::future< return_type > aggregation_region(const size_t team_size, std::function< return_type(size_t, size_t, typename cppuddle::kernel_aggregation::detail::aggregated_executor< executor_t >::executor_slice &)> &&aggregation_area)
Start an aggregation region (passsed via lambda)
Definition kernel_aggregation_interface.hpp:49