The STAPL Skeletons Framework is a high-level skeletal approach for parallel programming.
More...
|
| Spawning Environments |
| Environments define the representation of nodes and edges in the dataflow graphs generated from skeletons.
|
|
| Skeleton Execution |
| Entities to facilitate the execution of skeletons in STAPL.
|
|
| Explicit Factories |
| The existing hand-written factories used prior to the existence of the Skeleton Framework.
|
|
| Flows |
| Flows are used to customize skeleton compositional operators by modifying input and output dependencies between their underlying skeletons.
|
|
| Functional Definition of Skeletons |
| The functional definition of skeletons which can be composed and transformed in the Skeletons Framework.
|
|
| Compositional Operators |
| Compositional operators allow new skeletons to be defined from existing skeletons.
|
|
| Parametric Dependencies |
| Parametric dependencies define the finest-grain component of the Skeletons Framework. These entities are represented as nodes in the generated dataflow graphs in a given environment.
|
|
| Elementary Operator Spans |
| Spans define the dimensions of the parametric dependencies in an elementary skeleton based on the given input sizes.
|
|
| Transformation Operators |
| Transform the skeletons to other skeletons for various reasons (e.g., faster execution, nested execution, etc.)
|
|
| Utility Methods |
|
| Executable Skeletons |
| Executable skeletons change functional skeletons from higher-order functions to regular functions by providing access to the input data.
|
|
| Skeleton Tags |
| Tags are used to identify skeletons throughout the Skeletons Framework. Identifying skeletons using their tags allows transformations and optimizations to be simply defined over skeletons.
|
|
|
template<typename Scheduler = default_scheduler, typename WF , typename... V> |
void | stapl::serial_impl::serial (skeletons::tags::with_coarsened_wf, std::size_t num_sets, WF &&wf, V &&... v) |
| Construct and execute a serial skeleton that performs a serial computation on the views provided. More...
|
|
template<typename Scheduler = default_scheduler, typename WF , typename... V> |
void | stapl::serial_impl::serial (skeletons::tags::no_coarsening, std::size_t num_sets, WF &&wf, V &&... v) |
|
template<typename Scheduler = default_scheduler, typename WF , typename... V> |
void | stapl::serial_impl::serial (stapl::use_default, std::size_t num_sets, WF &&wf, V &&... v) |
|
template<typename Tag = stapl::use_default, typename WF , typename... V> |
void | stapl::serial_sets (WF &&wf, int nsets, V &&... v) |
| Construct and execute a skeleton that performs a set of serial computations on the views provided. The tasks of the serial computation are divided into the nsets specified. Tasks within a set are processed serially, while each set is processed concurrently. More...
|
|
template<typename Tag = stapl::use_default, typename WF , typename... V> |
void | stapl::serial (WF &&wf, V &&... v) |
| Specialized form of serial_sets that schedules all tasks created by the skeleton on location chosen by the task placement policy in effect. More...
|
|
template<typename Tag = stapl::use_default, typename WF , typename... V> |
void | stapl::serial_io (WF &&wf, V &&... v) |
| Specialized form of serial_sets that schedules all tasks created by the skeleton on location 0 for execution using location_0_placement_policy task placement policy. More...
|
|
The STAPL Skeletons Framework is a high-level skeletal approach for parallel programming.
This framework abstracts the underlying details of data distribution and parallelism from programmers and allows them to express parallel programs as a composition of either existing elementary skeletons such as map, map_reduce, scan, zip, butterfly, allreduce, alltoall or user-defined custom skeletons.
Skeletons in this framework are defined as parametric data flow graphs, and their compositions are defined in terms of data flow graph compositions. Defining the composition in this manner allows dependencies between skeletons to be defined in terms of point-to-point dependencies, avoiding unnecessary global synchronizations. In addition, this framework supports various transformations which enable applications written in terms of skeletons to run on more than 100,000 cores.
◆ serial() [1/4]
template<typename Scheduler = default_scheduler, typename WF , typename... V>
Construct and execute a serial skeleton that performs a serial computation on the views provided.
This specialization is used when only the input views need to be coarsened.
- Parameters
-
wf | operation to apply to each set of view elements. |
num_sets | the number of sets to form. View elements are balance distributed across the sets. |
v | views to be processed. |
◆ serial() [2/4]
template<typename Scheduler = default_scheduler, typename WF , typename... V>
This specialization is used when neither the skeleton nor the view need to be coarsened.
- Parameters
-
wf | operation to apply to each set of view elements. |
num_sets | the number of sets to form. View elements are balance distributed across the sets. |
v | views to be processed. |
◆ serial() [3/4]
template<typename Scheduler = default_scheduler, typename WF , typename... V>
void stapl::serial_impl::serial |
( |
stapl::use_default |
, |
|
|
std::size_t |
num_sets, |
|
|
WF && |
wf, |
|
|
V &&... |
v |
|
) |
| |
This specialization is used when both the skeleton and the view have to be coarsened.
- Parameters
-
wf | operation to apply to each set of view elements. |
num_sets | the number of sets to form. View elements are balance distributed across the sets. |
v | views to be processed. |
◆ serial_sets()
template<typename Tag = stapl::use_default, typename WF , typename... V>
void stapl::serial_sets |
( |
WF && |
wf, |
|
|
int |
nsets, |
|
|
V &&... |
v |
|
) |
| |
Construct and execute a skeleton that performs a set of serial computations on the views provided. The tasks of the serial computation are divided into the nsets
specified. Tasks within a set are processed serially, while each set is processed concurrently.
An example use case is writing n view elements to m files. Each set of elements [0, m-1], [m, 2m-1], ... will be executed concurrently, and elements within a set will be processed serially to ensure that the write of one element to the file completes before the next element to be written to the file begins writing.
- Parameters
-
wf | The work function to be applied on each elements of sets |
nsets | The number of sets to form. View elements are balance distributed across the sets. |
v | Views to be processed. |
◆ serial() [4/4]
template<typename Tag = stapl::use_default, typename WF , typename... V>
void stapl::serial |
( |
WF && |
wf, |
|
|
V &&... |
v |
|
) |
| |
Specialized form of serial_sets that schedules all tasks created by the skeleton on location chosen by the task placement policy in effect.
- Parameters
-
wf | The work function to be applied on each element of the views provided. |
v | Views to be processed. |
◆ serial_io()
template<typename Tag = stapl::use_default, typename WF , typename... V>
void stapl::serial_io |
( |
WF && |
wf, |
|
|
V &&... |
v |
|
) |
| |
Specialized form of serial_sets that schedules all tasks created by the skeleton on location 0 for execution using location_0_placement_policy task placement policy.
- Parameters
-
wf | The work function to be applied on each element of the views provided. |
v | Views to be processed. |