STAPL API Reference          
Overview   Containers   Algorithms   Views   Skeletons   Run-Time System
Modules     Classes    
List of all members | Public Member Functions | Public Types
stapl::skeletons::skeletons_impl::alltoall< T, Span, tags::pairwise_exchange > Struct Template Reference

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()))
 

Detailed Description

template<typename T, typename Span>
struct stapl::skeletons::skeletons_impl::alltoall< T, Span, tags::pairwise_exchange >

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.

Template Parameters
Tthe type of elements to be communicated
Spanthe iteration space for elements (
Note
This version of alltoall can be used for only power-of-two sizes

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