|
template<typename Coord , typename Visitor , typename In > |
void | case_of (Coord const &skeleton_size, Coord const &coord, Visitor &visitor, In &&in_flow) const |
| If coord is <i, h, ...> it wraps the WF with the following inputs and sends it to the visitor along with the m_wf . More...
|
|
template<typename Coord > |
std::size_t | butterfly_size (Coord const &skeleton_size, Coord const &coord) const |
|
template<typename Coord > |
std::size_t | butterflied_index (Coord const &skeleton_size, Coord const &coord) const |
|
template<typename Size , typename Coord , typename FlowIndex > |
std::size_t | consumer_count (Size const &skeleton_size, Coord const &producer_coord, FlowIndex const &) const |
| determines how many of the instances of this parametric dependency will be consuming from a producer with a given coordinate. This is a reverse query as compared to case_of. More...
|
|
template<typename Coord > |
int | get_result_id (Coord const &, Coord const &) const |
|
template<typename Coord , typename Span > |
void | configure (Coord &&, Span &&) |
|
template<typename T>
class stapl::skeletons::skeletons_impl::alltoall_pd< T, tags::hybrid >
The hybrid alltoall
parametric dependency is used for alltoall skeleton in the cases of having large messages. The parametric dependency in this case is defined as a hybrid of the flat and butterfly-based version of alltoall.
In this case, there are log2(n) stages. In each stage, each participant at the upper half of a butterfly communicates with every participant in the lower half of the same butterfly, and vice versa.
- Note
- The dependencies at each step are permuted to avoid network pressure on a single node at the same time.