24 #ifndef VISIONCPP_INCLUDE_FRAMEWORK_EXECUTOR_EXECUTOR_HPP_
25 #define VISIONCPP_INCLUDE_FRAMEWORK_EXECUTOR_EXECUTOR_HPP_
41 template <
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
typename Expr,
typename DeviceT>
55 template <
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
size_t Category,
56 typename Expr,
typename DeviceT>
73 template <
bool Conds,
bool ParentConds,
size_t Category,
typename Expr,
typename DeviceT>
79 template <
bool ExecPolicy,
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
80 typename Expr,
typename DeviceT>
84 template <
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
typename Expr,
typename DeviceT>
91 static inline void execute(Expr expr,
const DeviceT &dev) {
92 fuse<LC, LR, LCT, LRT>(expr, dev);
96 template <
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
typename Expr,
typename DeviceT>
103 static inline void execute(Expr expr,
const DeviceT &dev) {
104 no_fuse<LC, LR, LCT, LRT>(expr, dev);
114 template <
bool Val,
bool ExecPolicy,
size_t LC,
size_t LR,
size_t LCT,
115 size_t LRT,
typename Expr,
typename DeviceT>
117 static void inline execute(Expr &expr,
const DeviceT &dev) {
119 Executor<ExecPolicy, LC, LR, LCT, LRT,
120 decltype(expr.template sub_expression_evaluation<
false, LC, LR,
121 LCT, LRT>(dev)), DeviceT>
::
123 expr.template sub_expression_evaluation<false, LC, LR, LCT, LRT>(
130 template <
bool ExecPolicy,
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
131 typename Expr,
typename DeviceT>
133 static void inline execute(Expr &expr,
const DeviceT &dev) {
153 template <
bool ExecPolicy,
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
154 typename Expr,
typename DeviceT>
155 void inline execute(Expr &expr,
const DeviceT &dev) {
157 LR, LCT, LRT, Expr, DeviceT>
::execute(expr, dev);
170 template <
bool ExecPolicy,
typename Expr,
typename DeviceT>
171 void inline execute(Expr &expr,
const DeviceT &dev) {
173 8, 8, 8, Expr, DeviceT>
::execute(expr, dev);
This file contains required classes for break an expression tree into subexpression trees for particu...
This file contains the specialisation of the FuseExpr for terminal and non-terminal nodes.
constexpr static bool NoFuse
constexpr static bool Fuse
void execute(Expr &expr, const DeviceT &dev)
execute function is called by user in order to execute an expression template parameters:
void execute(Expr &expr, const DeviceT &dev)
special case of the execute function with default value for local memory and workgroup size template ...
This file contains the specialisation of the NoFuseExpr for different nodes.
static void execute(Expr expr, const DeviceT &dev)
executing the expression parameters:
static void execute(Expr expr, const DeviceT &dev)
executing the expression parameters:
The Executor struct is used to specialise the execute function for different avaiable policies at com...
IfExprExecNeeded is used to decide: 1) the expression should force its children to launch a separate ...
The NoFuseExpr struct is used to generate one device kernel per each non-terminal node in the express...
static void execute(Expr &expr, const DeviceT &dev)
it is used to statically determine whether or not a subexpression execution is needed.
static void execute(Expr &expr, const DeviceT &dev)