STAPL API Reference          
Overview   Containers   Algorithms   Views   Skeletons   Run-Time System
Modules     Classes    
Classes | Modules | Functions

Flows are used to customize skeleton compositional operators by modifying input and output dependencies between their underlying skeletons. More...

+ Collaboration diagram for Flows:

Classes

class  stapl::skeletons::flows::dontcare_flow
 You can think of a dontcare_flow as a flow that will discard any requests coming to it. If it is queried for consumers_count, it will return 0 and it also does not accept read requests. More...
 
class  stapl::skeletons::flows::numbered_flow< N, Flow >
 Numbering the flows allows the user to identify each flow and perform the appropriate operations based on the given number. More...
 
struct  stapl::skeletons::flows::repeat_flows::input_wrapper< Flows >
 An input_wrapper flow is used in various scan skeletons to convert a 1D input coordinate to a 2D coordinate by appending -1 to the coordinate it receives. More...
 
class  stapl::skeletons::flows::view_flow< View >
 view_flow is a flow defined over a view in STAPL. It is used later on (upon the invocation of spawn_element) to retrieve an element from the enclosed view. More...
 
class  stapl::skeletons::flows::pg_view_flow< View, Index, IsNested >
 specialization when the flow is created over a view that is coming from a paragraph(nested_pg_view_subview) More...
 

Modules

 Flows Producer Classes
 Helper classes to specify source of flows.
 
 Customized Compose Operator Flows
 
 Customized Repeat Operator Flows
 
 Customized Elem Operator Flows
 
 Customized Do-While Operator Flows
 
 Inline Specified Flows
 

Functions

template<std::size_t N, typename Flow >
flows::result_of::cloned_flow< Flow, N >::type stapl::skeletons::flows::cloned_flow (Flow &&flow)
 Clones a given flow for the number of times specified by N. A cloned flow created by this method will wrap the given flow by numbered_flow with increasing indices starting from 0. More...
 
template<typename... Flows>
flows::result_of::concat< Flows... > stapl::skeletons::flows::concat (Flows const &... f)
 Combines two flow tuples. More...
 
template<typename F , typename Skeleton >
flows::result_of::in_flows< Skeleton, F > stapl::skeletons::flows::in_flows (Skeleton skeleton, std::size_t lid_offset)
 Returns a flow tuple created from the input flows of all the skeletons received in skeletons. More...
 
template<typename F , typename Skeleton >
flows::result_of::out_flows< Skeleton, F > stapl::skeletons::flows::out_flows (Skeleton skeleton, std::size_t lid_offset)
 Returns a flow tuple created from the output flows of all the skeletons received in skeletons. More...
 

Detailed Description

Flows are used to customize skeleton compositional operators by modifying input and output dependencies between their underlying skeletons.

Flows are computation independent definitions of input and output dependencies in skeleton compositions. Similar to the flow-based programming, flows describe how the ports of each skeleton is connected to other skeletons.

Each compositional operator has a default flows construct defined (e.g., piped for repeat and compose, forked for elem). However, customized flows can be used instead to define new skeleton compositions such as last_input_to_all for the sink skeleton.

Function Documentation

◆ cloned_flow()

template<std::size_t N, typename Flow >
flows::result_of::cloned_flow<Flow, N>::type stapl::skeletons::flows::cloned_flow ( Flow &&  flow)

Clones a given flow for the number of times specified by N. A cloned flow created by this method will wrap the given flow by numbered_flow with increasing indices starting from 0.

Template Parameters
Nthe number of times the flow should be cloned
Parameters
flowa single flow to be cloned

◆ concat()

template<typename... Flows>
flows::result_of::concat<Flows...> stapl::skeletons::flows::concat ( Flows const &...  f)

Combines two flow tuples.

Parameters
fflow tuples to be concatenated
Returns
a tuple that contains the flows in all the flow tuples

◆ in_flows()

template<typename F , typename Skeleton >
flows::result_of::in_flows<Skeleton, F> stapl::skeletons::flows::in_flows ( Skeleton  skeleton,
std::size_t  lid_offset 
)

Returns a flow tuple created from the input flows of all the skeletons received in skeletons.

Parameters
skeletonsa list of skeletons for which the in-flows are obtained
Template Parameters
Fwhich flow modifier to apply on each in-flow
Returns
a flow tuple containing all the input flows of the given skeleton set

◆ out_flows()

template<typename F , typename Skeleton >
flows::result_of::out_flows<Skeleton, F> stapl::skeletons::flows::out_flows ( Skeleton  skeleton,
std::size_t  lid_offset 
)

Returns a flow tuple created from the output flows of all the skeletons received in skeletons.

Parameters
skeletonsa list of skeletons for which the out_flows are obtained
Template Parameters
Fwhich flow modifier to apply on each out-flow
Returns
a flow tuple containing all the input flows of the given skeleton set