This class abstracts the semantics of pointer jumping skeleton by exposing only the necessary information in its representation. More...
Public Member Functions | |
pointer_jumping (Op const &op) | |
Op | get_op (void) const |
std::size_t | operator() (std::size_t a) |
Public Types | |
using | skeleton_tag_type = tags::pointer_jumping |
using | base_type = decltype(skeletons::repeat< Flows >(skeletons::elem(skeletons::pointer_jumping_pd(std::declval< Op >())), log_ceil_lazysize< 2 >())) |
using | op_type = Op |
This class abstracts the semantics of pointer jumping skeleton by exposing only the necessary information in its representation.
Pointer jumping skeleton (aka recursive doubling) is used in various computations such as Hillis-Steele scan.
A pointer jumping skeleton consists of log2 levels ( ) of reading from and combining the value with the value already existing at index .
This abstraction not only makes the reconstruction of an pointer_jumping skeleton easier, but also provides access to the underlying operation. Furthermore, it reduces the symbol size for an allreduce skeleton, hence, reducing the total compilation time.
Op | the operation to be used in each level |
Flows | the flows to be used for the repetition |