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 |