23 #ifndef VISIONCPP_INCLUDE_FRAMEWORK_FORWARD_DECLARATIONS_HPP_
24 #define VISIONCPP_INCLUDE_FRAMEWORK_FORWARD_DECLARATIONS_HPP_
38 namespace memory_type {
39 static constexpr
size_t Host = 0;
42 static constexpr
size_t Image = 3;
43 static constexpr
size_t Const = 4;
48 constexpr
static bool Fuse =
true;
49 constexpr
static bool NoFuse =
false;
81 template <backend BK, device DV>
89 template <backend BK, device DV>
94 template <
bool ExecPolicy,
typename Expr,
typename DeviceT>
97 template <
bool ExecPolicy,
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
98 typename Expr,
typename DeviceT>
99 void execute(Expr &,
const DeviceT &);
103 namespace expr_category {
111 namespace ops_category {
118 template <
bool PlcType,
typename Node,
size_t LC = 8,
size_t LR = 8,
119 size_t LCT = 8,
size_t LRT = 8>
123 template <
typename RHS,
size_t LVL>
127 template <
typename UN_OP,
typename RHS,
size_t Cols,
size_t Rows,
size_t LfType,
132 template <
typename BI_OP,
typename LHS,
typename RHS,
size_t Cols,
size_t Rows,
133 size_t LfType,
size_t LVL>
137 template <
typename FilterOP,
size_t Halo_T,
size_t Halo_L,
size_t Halo_B,
138 size_t Halo_R,
typename LHS,
typename RHS,
size_t Cols,
size_t Rows,
139 size_t LfType,
size_t LVL>
143 template <
typename FilterOP,
size_t Halo_T,
size_t Halo_L,
size_t Halo_B,
144 size_t Halo_R,
typename RHS,
size_t Cols,
size_t Rows,
size_t LfType,
149 template <
typename DownSmplOP,
typename RHS,
size_t Cols,
size_t Rows,
150 size_t LfType,
size_t LVL>
153 template <
typename LHS,
typename RHS,
size_t Cols,
size_t Rows,
154 size_t OffsetColIn,
size_t OffsetRowIn,
size_t OffsetColOut,
155 size_t OffsetRowOut,
size_t LfType,
size_t LVL>
159 template <
typename LHS,
typename RHS,
size_t Cols,
size_t Rows,
size_t LfType,
164 template <
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
size_t LVL,
165 typename Expr,
typename DeviceT>
168 template <
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
typename Expr,
170 void fuse(Expr,
const DeviceT &);
172 template <
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
typename Expr,
174 void no_fuse(Expr,
const DeviceT &);
176 template <
bool Conds,
typename Expr,
size_t LC,
size_t LR,
size_t LRT,
177 size_t LCT,
typename NestedExpr,
typename DeviceT>
178 inline typename Expr::Sub_expression_Type
execute_expr(NestedExpr,
181 template <
bool Conds,
typename Expr,
size_t LC,
size_t LR,
size_t LRT,
182 size_t LCT,
typename LHSExpr,
typename RHSExpr,
typename DeviceT>
183 inline typename Expr::Sub_expression_Type
execute_expr(LHSExpr, RHSExpr,
enum class that defines supported backends.
enum class that defines supported devices types.
class used to implement the execution of the expression tree.
static constexpr size_t Nullary
static constexpr size_t Unary
static constexpr size_t Binary
constexpr static size_t NeighbourOP
constexpr static size_t GlobalNeighbourOP
constexpr static size_t PointOP
void fuse(Expr expr, const DeviceT &dev)
function fuse
auto execute_expr(NestedExpr nestedExpr, const DeviceT &dev) -> decltype(internal::IfExprExecNeeded< Conds, ParentConds, internal::expr_category::Unary, Expr, DeviceT >::template execute_expr< LC, LR, LCT, LRT >(nestedExpr, dev))
template deduction for IfExprExecNeeded when the expression category is unary
void no_fuse(Expr expr, const DeviceT &dev)
template deduction function for no_fuse expression
static constexpr size_t Image
static constexpr size_t Buffer2D
static constexpr size_t Buffer1D
static constexpr size_t Const
static constexpr size_t Host
constexpr static bool NoFuse
constexpr static bool Fuse
static constexpr ScopeType Host_Buffer
static constexpr ScopeType Local
static constexpr ScopeType Constant
static constexpr ScopeType Global
void execute(Expr &expr, const DeviceT &dev)
execute function is called by user in order to execute an expression template parameters:
@ sycl
represents sycl backend.
@ size
number of backends.
internal::Device_< BK, DV > make_device()
template deduction function for Device_ class
@ gpu
represents the gpu device.
@ host
represents the host device.
@ cpu
represents the cpu device.
The definition is in Assign file.
the definition is in LeafNode.
The definition is in ParallelCopy file.
The definition is in RBiOP file.
The definition is in RDCN file.
The definition is in RUnOP file.
The definition is in StnFilt file.
The definition is in StnNoFilt file.
The definition is in SubExprRes file.
the definition is in VirtualMemory