1 #ifndef DIY_REDUCE_OPERATIONS_HPP
2 #define DIY_REDUCE_OPERATIONS_HPP
5 #include "partners/swap.hpp"
6 #include "detail/reduce/all-to-all.hpp"
24 auto scoped = master.prof.scoped(
"all_to_all");
27 reduce(master, assigner, partners, detail::AllToAllReduce<Op>(op, assigner), detail::SkipIntermediate(partners.rounds()));
int nblocks() const
returns the total number of global blocks
Definition: assigner.hpp:26
Decomposes a regular (discrete or continuous) domain into even blocks; creates Links with Bounds alon...
Definition: decomposition.hpp:75
void reduce(Master &master, const Assigner &assigner, const Partners &partners, const Reduce &reduce, const Skip &skip)
Implementation of the reduce communication pattern (includes swap-reduce, merge-reduce, and any other global communication).
Definition: reduce.hpp:109
void all_to_all(Master &master, const Assigner &assigner, const Op &op, int k=2)
all to all reduction
Definition: reduce-operations.hpp:18
Definition: assigner.hpp:11
Definition: master.hpp:35
diy::DiscreteBounds interval(int from, int to)
Helper to create a 1-dimensional discrete domain with the specified extents.
Definition: types.hpp:28
Partners for swap-reduce.
Definition: swap.hpp:16