This class abstracts the semantics of a hybrid alltoall skeleton by exposing only the necessary information in its representation. More...
Public Member Functions | |
std::size_t | operator() (std::size_t a) |
Public Types | |
using | skeleton_tag_type = tags::alltoall< tags::pairwise_exchange > |
using | base_type = decltype(skeletons::repeat(skeletons::elem(skeletons_impl::alltoall_pd< T, tags::pairwise_exchange >()), input_lazysize())) |
This class abstracts the semantics of a hybrid alltoall skeleton by exposing only the necessary information in its representation.
A hybrid alltoall combines ideas from butterfly-based alltoall and flat alltoall. Therefore, in a hybrid alltoall the global exchanges happen in log2(n) levels, and at each level every participant in the upper half of a butterfly communicates with every participant in the lower half of the same butterfly. This method is useful for lower processor count and when the messages are large.
This abstraction not only makes the reconstruction of an alltoall skeleton easier, but also reduces the symbol size for an alltoall skeleton, hence, reducing the total compilation time.
T | the type of elements to be communicated |
Span | the iteration space for elements ( |