A wrapped_skeleton is used in the nested execution of skeletons. More...
Public Member Functions | |
| wrapped_skeleton (S const &skeleton, ExecutionParams const &exec_params) | |
| template<typename ... V> | |
| result< wrapped_skeleton(V...)>::type | operator() (V &&... view) const |
| template<typename ... V> | |
| result< wrapped_skeleton(V...)>::type | operator() (V &&... view) |
| S const & | get_skeleton () const |
| ExecutionParams | get_exec_params () const |
Public Types | |
| using | optimizer_t = optimizers::optimizer< typename S::skeleton_tag_type, ExecutionTag > |
| using | wrapped_skeleton_type = S |
| using | execution_params_t = ExecutionParams |
A wrapped_skeleton is used in the nested execution of skeletons.
An ExecutionTag is used to customize the execution method. By default, a PARAGRAPH will be created for a wrapped skeleton. This behavior can be customized by providing a custom ExecutionTag to this class. For example, passing a sequential execution tag (tags::sequential_execution), avoids creating a PARAGRAPH for the nested computation.
A wrapped_skeleton passes the skeleton to specializations of the optimizer. These specializations are defined over the skeleton and ExecutionTag. For example, the specialization for the reduce skeleton (optimizer<tags::reduce, tags::sequential_execution>) implements this skeleton using std::accumulate.
| S | the skeleton to be wrapped |
| ExecutionTag | a tag defining the execution strategy for this skeleton |
| requiresTGV | a boolean variable to determine whether this wrapped skeleton needs paragraph_view or not |
1.8.13