STAPL API Reference          
Overview   Containers   Algorithms   Views   Skeletons   Run-Time System
Modules     Classes    
Classes | Enumerations | Functions
stapl::skeletons::skeletons_impl Namespace Reference

This class abstracts the semantics of a reduce to location skeleton by exposing only the necessary information in its representation. More...

Classes

struct  allgather
 This class abstracts the semantics of an allgather skeleton by exposing only the necessary information in its representation. More...
 
struct  allgather< T, Span, tags::reverse_butterfly< B > >
 This class abstracts the semantics of an allgather skeleton by exposing only the necessary information in its representation. More...
 
struct  allreduce
 This class abstracts the semantics of an allreduce skeleton by exposing only the necessary information in its representation. More...
 
struct  allreduce< Op, Span, tags::butterfly< false > >
 This class abstracts the semantics of a butterfly-based allreduce skeleton by exposing only the necessary information in its representation. More...
 
struct  allreduce< Op, Span, tags::reverse_butterfly< B > >
 This class abstracts the semantics of a reverse-butterfly-based allreduce skeleton by exposing only the necessary information in its representation. More...
 
struct  alltoall< T, Span, skeletons::tags::butterfly< false > >
 This class abstracts the semantics of an alltoall skeleton by exposing only the necessary information in its representation. More...
 
struct  alltoall< T, Span, tags::flat >
 This class abstracts the semantics of a flat alltoall skeleton by exposing only the necessary information in its representation. More...
 
struct  alltoall< T, Span, tags::hybrid >
 This class abstracts the semantics of a hybrid alltoall skeleton by exposing only the necessary information in its representation. More...
 
struct  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. More...
 
struct  alltoall_filter
 The filtering used in hybrid, flat, and pairwise exchange alltoalls for sending only the requested part to other participants. More...
 
struct  alltoall_filter< T, tags::butterfly< B > >
 A specific filtering used in recursive-doubling (butterfly) implementation of all_to_all. More...
 
struct  alltoall_merge
 The workfunction used in flat and hybrid alltoall for merging the incoming messages. More...
 
class  alltoall_merge< T, tags::butterfly< B > >
 Merges the results from two given inputs by putting one chunk of size butterfly_size from the first and then the same size from the second until both inputs are exhausted. More...
 
struct  alltoall_merge< T, tags::pairwise_exchange >
 The workfunction used in pairwise exchange alltoall for merging the incoming messages. More...
 
class  alltoall_pd< T, tags::flat >
 In a flat alltoall, parametric dependencies are defined in such a way that each node depends on every node in the producer. More...
 
class  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. More...
 
class  alltoall_pd< T, tags::pairwise_exchange >
 In a pairwise exchange alltoall, parametric dependencies are defined in such a way that each node depends on every node in the producer. More...
 
struct  binary_tree< Op, Flows, Span, Tag, false >
 This class abstracts the semantics of a non-complete binary tree by exposing only the necessary information in its representation. More...
 
struct  binary_tree< Op, Flows, Span, Tag, true >
 This class abstracts the semantics of a complete binary tree by exposing only the necessary information in its representation. More...
 
class  binary_tree_pd
 This binary tree parametric dependency is one of the several possible parametric dependencies that can be used in a binary tree. This parametric dependency is used with tree in order to create reduction trees. This parametric dependency can have different layouts which are determined by the given Tag. More...
 
class  binomial_tree_pd
 This reduce parametric dependency is one of the several possible parametric dependencies that can be used in reduction. More...
 
class  bitonic_sort_pd
 The bitonicsort parametric dependency defines the dependencies for each point in the global bitonicsort skeleton. At each local point either a minimum or a maximum will be computed depending on where this point is located in the global skeleton. This will be described in the Op. More...
 
struct  bitreversal
 This class abstracts the semantics of an bitreversal skeleton by exposing only the necessary information in its representation. More...
 
class  bitreversal_pd
 A bitreversal parametric dependency used in the bitreversal skeleton. More...
 
struct  broadcast
 This class abstracts the semantics of a broadcast skeleton by exposing only the necessary information in its representation. More...
 
struct  butterfly
 This class abstracts the semantics of a butterfly skeleton by exposing only the necessary information in its representation. More...
 
class  butterfly_pd
 A butterfly parametric dependency defines the dependencies for each element in a big butterfly skeleton. Some algorithms that use butterfly_pd need to know the location of the element in the big butterfly skeleton. An example is DIT FFT algorithm that changes the computation based on the location of the parametric dependency. For the same reason is_position_aware should be specified by user in such cases. In addition, in some cases one would like to read partially from the inputs on a butterfly. That's when the the F (filter) can be used. More...
 
class  compose
 Compose operator groups the given skeletons together and performs the spawning process in the order of composition (P0, P1, ... Pn). The spawning process starts from the first skeleton (P0) and continues until the last skeleton(Pn) is spawned. More...
 
struct  compute_return_type
 The return type to be determined for an optimizer by passing the fine-grain type. More...
 
struct  default_execution_params
 Default execution parameters. More...
 
struct  default_skeleton_traits
 Default skeleton traits. More...
 
class  do_while
 Do-while is a composite skeleton that repeats a skeleton for a number of iterations. This number is determined by evaluating the ContinuationP after every iteration. More...
 
class  do_while_pd
 A do_while parametric dependency represents an element in the dependence graph that controls if the next iteration of a do-while loop should be spawned or not. It does that by wrapping user's ContCond by do_while_stub with and sending memento_stack to it. More...
 
struct  do_while_stubs
 There are three elements pushed on the top of the memento when this method is invoked. Two of them stand for the current iteration and one is for the one that comes after this iteration. More...
 
class  elem
 Every parametric dependency is wrapped by this class in order to represent an executable, expandable skeleton. This class has a generic interface for spawning parametric dependencies, and for accessing the flows connected to each node. More...
 
struct  exclusive_scan< Op, T, tags::blelloch >
 Blelloch scan is an exclusive scan algorithm which is similar to the inclusive scan mentioned in Joseph Jaja's book (. More...
 
class  execution_params
 Stores the execution parameters to be used for running a a skeleton in STAPL. These parameters are currently: More...
 
struct  expand_from_pow_two
 This class abstracts the semantics of an expansion skeleton by exposing only the necessary information in its representation. More...
 
struct  expand_from_pow_two< Op, Span, pos_aware, stapl::use_default, SetResult >
 This class abstracts the semantics of an expansion skeleton by exposing only the necessary information in its representation. More...
 
class  expand_from_pow_two_pd
 This parametric dependency is used in the postprocessing phase of various algorithms that only accept power-of-two input sizes. More...
 
struct  fake_flow
 A fake_flow is used for making the result_type computation possible for wrapped skeletons (wrapped_skeleton). More...
 
struct  fake_flow< mix_view< V, I, CID >, true >
 A fake_flow is used for making the result_type computation possible for wrapped skeletons (wrapped_skeleton). More...
 
struct  fake_flow< nfast_view< V >, true >
 A fake_flow is used for making the result_type computation possible for wrapped skeletons (wrapped_skeleton). More...
 
struct  fake_flow< paragraph_impl::paragraph_view< V >, true >
 A fake_flow is used for making the result_type computation possible for wrapped_skeletons. More...
 
class  farm_init
 Wraps the user provided generator for a farm and passes the farm instance upon invocation to the generator. More...
 
class  farm_pd
 This parametric dependency is used in farms skeleton to generate the initial seeds of computation. More...
 
class  farm_stub
 Wraps the environment used in the current spawning process and provides farm functionality to the user workfunctions. More...
 
struct  fft
 This class abstracts the semantics of an FFT skeleton by exposing only the necessary information in its representation. More...
 
struct  fft< T, Span, tags::dif >
 This class abstracts the semantics of a Decimation In Frequency (DIF) FFT skeleton by exposing only the necessary information in its representation. More...
 
struct  fft< T, Span, tags::dit >
 This class abstracts the semantics of a Decimation In Time (DIT) FFT skeleton by exposing only the necessary information in its representation. More...
 
struct  fft_dif_wf
 This workfunction is used for Decimation In Frequency FFT (DIF) computation. More...
 
struct  fft_dit_wf
 This workfunction is used for Decimation In Time FFT (DIT) computation. More...
 
struct  gather
 This class abstracts the semantics of a gather skeleton by exposing only the necessary information in its representation. More...
 
struct  hand_execute_impl
 Execute a skeleton in place with a set of views. More...
 
struct  hand_execute_impl< stapl::skeletons::skeletons_impl::zip_reduce< 1, ZipOp, ReduceOp >, View >
 Execute a zip_reduce with one view in place. More...
 
struct  inclusive_scan< Op, tags::binomial >
 Binomial scan is one of the common implementations of MPI_Scan. More...
 
struct  inclusive_scan< Op, tags::hillis_steele >
 Hillis Steele scan skeleton is a pointer-jumping based inclusive scan algorithm which has half the height of the scan algorithm in Joseph Jaja's book, but it performs $O(n logn)$ operations and hence is not work optimal. More...
 
struct  inclusive_scan< Op, tags::jaja >
 This scan skeleton is based on the algorithm given in An Introduction to Parallel Algorithms by Joseph Jaja, page 48. This algorithm's time complexity is $O(log n)$. It consists of a reduction tree followed by a modified broadcast skeleton. This scan skeleton is an inclusive scan. More...
 
struct  is_tgv
 Check if the given view is a paragraph_view. More...
 
struct  local_entry
 Typed version of local_entry that holds the values that are stored in a local_env. More...
 
struct  local_entry_base
 The base class for the entities stored in a local_env that can hold heterogeneous types. More...
 
struct  memento_element
 a memento element is used in memento in order to reduce the compilation time by avoiding boost::bind. More...
 
struct  memento_element_disposer
 Function object implementing the disposer concept defined by Boost.Intrusive. More...
 
struct  notify_map
 This class abstracts the semantics of a notify_map skeleton by exposing only the necessary information in its representation. More...
 
class  notify_map_pd
 A notify_map parametric dependency is similar to a map_pd, however, it waits for NotifCount notifications from the first NotifCount flows. More...
 
class  odd_even_merge_sort_pd
 The oddevenmergesort parametric dependency defines the dependencies for each point in the global oddevenmergesort skeleton. At each local point either a minimum or a maximum will be computed depending on where this point is located in the global skeleton. This will be described in the Op. More...
 
class  paragraph_skeleton_manager
 This is a wrapper over the core skeleton_manager that allows the creating of tasks in STAPL task graphs. More...
 
struct  param_deps_defaults
 Provides the default implementation of methods required for all parametric dependencies in the framework. More...
 
struct  pointer_jumping
 This class abstracts the semantics of pointer jumping skeleton by exposing only the necessary information in its representation. More...
 
class  pointer_jumping_pd
 A pointer-jumping parametric dependency can be used in various skeletons. One good example is hillis_steele_scan in which scan is done in a non-work optimal but smaller tree. More...
 
class  pre_broadcast_pd
 Creates a set_result parametric dependency given a op. Basically this parametric dependency is only used for sinking values of skeletons which couldn't currently set their results directly without using sink_value skeleton. More...
 
struct  reduce
 This class abstracts the semantics of a reduce skeleton by exposing only the necessary information in its representation. More...
 
struct  reduce_to_pow_two
 This class abstracts the semantics of a reduce to power-of-two skeleton by exposing only the necessary information in its representation. More...
 
class  reduce_to_pow_two_pd
 This parametric dependency is used in the preprocessing phase of various algorithms that only accept power-of-two input sizes. More...
 
class  repeat
 A repeat skeleton spawns a single skeleton for the number of times specified by SizeF. More...
 
struct  reverse_binary_tree< Op, Flows, Span, Tag, false, Filter, isPositionAware, SetResult >
 This class abstracts the semantics of a non-complete binary tree by exposing only the necessary information in its representation. More...
 
struct  reverse_binary_tree< Op, Flows, Span, Tag, true, Filter, isPositionAware, SetResult >
 This class abstracts the semantics of a reverse binary tree by exposing only the necessary information in its representation. More...
 
class  reverse_binary_tree_pd
 A simple broadcast parametric dependency is usually used in combination with reverse_tree to define broadcast and defines the parametric dependency for each element in a broadcast tree. More...
 
struct  reverse_tree
 This class abstracts the semantics of a reverse k-ary tree by exposing only the necessary information in its representation. More...
 
struct  scan< Op, tags::scan< Tag, tags::exclusive > >
 Most of the exclusive scan skeletons cannot work directly on inputs with non-power-of-two sizes. As a result, we have to first convert the input to the closest power of two and then perform the scan operation. More...
 
struct  scan< Op, tags::scan< Tag, tags::inclusive > >
 Most of the inclusive scan skeletons cannot work directly on inputs with non-power-of-two sizes. As a result, we have to first convert the input to the closest power of two and then perform the scan operation. More...
 
struct  scan_algorithm_tag_type
 Determines the scan algorithm used. More...
 
class  scan_blelloch_broadcast_pd
 Tis parametric dependency is used in the broadcast tree of Blelloch scan, in which each element applies the operation on inputs from the previous level of the tree and inputs from the reduction tree. Blelloch scan is an exclusive scan algorithm. More...
 
class  scan_broadcast_pd
 One way to do an inclusive scan is to use the algorithm mentioned in An Introduction to Parallel Algorithms by Joseph Jaja, page 48. This parametric dependency represents the broadcast (top-down) traversal in the above mentioned algorithm. More...
 
class  scan_expand_from_pow_two_pd
 An parametric dependency used in the postprocessing phase of arbitrary size scan skeletons. More...
 
class  scan_expand_from_pow_two_pd< Op, tags::scan< Tag, tags::exclusive > >
 A scan expansion parametric dependency used for the postprocessing phase of exclusive scan skeletons. More...
 
class  scan_expand_from_pow_two_pd< Op, tags::scan< Tag, tags::inclusive > >
 A scan expansion parametric dependency used for the postprocessing phase of inclusive scan skeletons. More...
 
struct  scatter
 This class abstracts the semantics of a scatter skeleton by exposing only the necessary information in its representation. A scatter skeleton is simply a reverse binary tree with an operation which splits the input into two halves. More...
 
struct  serial
 This class abstracts the semantics of an serial skeleton by exposing only the necessary information in its representation. More...
 
class  serial_pd
 A serial_pd parametric dependency used in the serial skeleton. More...
 
class  set_result_pd
 Creates a set_result parametric dependency given a op. Basically this parametric dependency is only used for sinking values of skeletons which couldn't currently set their results directly without using sink_value skeleton. More...
 
class  shifted_first_pd
 This parametric dependency is used in the cases similar to the zip_pd, but whenever the reading from the first input flow is shifted by 1. More...
 
struct  sink_value
 This class abstracts the semantics of a sink_value skeleton by exposing only the necessary information in its representation. More...
 
class  skeleton_traits< tuple< OptionalPreParams... >, OptionalParams... >
 Skeleton traits define configurable properties of a skeleton. More...
 
class  spawn_visitor
 spawn_visitor helps in spawning the elements of parametric dependencies by factoring out the task id and number of consumers of a task in this class. More...
 
class  stencil_2d_pd
 In a 2D stencil, parametric dependencies are defined in such a way that each node depends on every 9 node in its surroundings including itself from the previous timestep. More...
 
class  tagged_skeleton
 Tags a skeleton with a given Tag. More...
 
struct  tree
 This class abstracts the semantics of a k-ary tree by exposing only the necessary information in its representation. More...
 
struct  zip
 This class abstracts the semantics of a filtered zip skeleton by exposing only the necessary information in its representation. More...
 
class  zip_pd
 A zip parametric dependency is usually used in zip skeleton. It sends input with the same index of each flow to the given Op. More...
 
struct  zip_reduce
 This class abstracts the semantics of a zip_reduce skeleton by exposing only the necessary information in its representation. More...
 

Enumerations

enum  do_while_component : std::size_t { body = 0, reduction = 1, continuation = 2 }
 Enum representing the different nested component skeletons in a do_while skeleton. More...
 

Functions

template<typename ExecutionParams , typename S , typename... Views>
ExecutionParams::result_type execute (std::false_type, ExecutionParams const &ep, S &&skeleton, Views &&... views)
 
template<typename ExecutionParams , typename S , typename... Views>
ExecutionParams::result_type execute (std::true_type, ExecutionParams const &ep, S &&skeleton, Views &&... views)
 
template<typename OutFlow , typename Coord , std::size_t... Indices>
std::size_t consumer_count (OutFlow const &out, Coord const &coord, index_sequence< Indices... > &&)
 

Detailed Description

This class abstracts the semantics of a reduce to location skeleton by exposing only the necessary information in its representation.

A reduce_to_locs skeleton first reduces the input and then broadcasts the result to all locations using a broadcast_to_locs skeleton.

This abstraction not only makes the reconstruction of a reduce_to_locs skeleton easier, but also provides access to the underlying operation in the reduce skeleton. Furthermore, it reduces the symbol size for a reduce_to_locs skeleton, hence, reducing the total compilation time.

Template Parameters
Opthe operation to be used while reducing the input.
Flowsthe flow to be used between the reduction and the broadcast_to_locs skeletons.
Spanthe iteration space for the elements in each level of the reduction skeleton.
Tagdetermines the type of reduction and broadcast to be used.
SetResultwhether the skeleton should set the task results on the pg edge container or not

Enumeration Type Documentation

◆ do_while_component

Enum representing the different nested component skeletons in a do_while skeleton.

See also
lid_offset
get_nested_skeleton
nested_in_port
nested_out_port