24 #ifndef VISIONCPP_INCLUDE_FRAMEWORK_EVALUATOR_EVAL_EXPRESSION_EVAL_EXPR_LEAF_NODE_HPP_
25 #define VISIONCPP_INCLUDE_FRAMEWORK_EVALUATOR_EVAL_EXPRESSION_EVAL_EXPR_LEAF_NODE_HPP_
31 template <
size_t Memory_Type,
size_t N,
size_t Cols,
size_t Rows,
size_t LVL,
32 size_t Sc,
typename Loc,
typename... Params>
38 -> decltype(tools::tuple::get<N>(t)) {
39 return tools::tuple::get<N>(t);
44 tools::tuple::get<N>(t)
45 .get_pointer()[cOffset.pointOp_gc + (Cols * cOffset.pointOp_gr)]) {
47 cOffset.pointOp_gc, cOffset.pointOp_gr, Cols, Rows)];
50 template <
bool IsRoot,
size_t Halo_Top,
size_t Halo_Left,
size_t Halo_Butt,
51 size_t Halo_Right,
size_t Offset,
size_t Index,
size_t LC,
59 tools::tuple::get<N>(t))>::Type>::scope>::Index>(t)) {
61 Halo_Top, Halo_Left, Halo_Butt, Halo_Right,
63 Memory_Type, Sc>::Index,
64 LC, LR,
Expr>(cOffset, t);
67 Memory_Type, Sc>::Index>(t);
71 template <
bool IsRoot,
size_t Offset,
size_t Index,
size_t LC,
size_t LR>
74 -> decltype(tools::tuple::get<N>(t)) {
75 return tools::tuple::get<N>(t);
static size_t calculate_index(size_t c, size_t r, size_t cols, size_t rows)
function calculate_index
static void fill_local_neighbour(Loc &cOffset, const internal::tools::tuple::Tuple< Params... > &t)
template deduction for Fill struct.
static auto eval_neighbour(Loc &cOffset, const tools::tuple::Tuple< Params... > &t) -> decltype(tools::tuple::get< Index_Finder< N, OutputLocation< IsRoot, Offset+Index - 1 >::ID, Memory_Type, Trait< typename tools::RemoveAll< decltype(tools::tuple::get< N >(t))>::Type >::scope >::Index >(t))
evaluate function when the internal::ops_category is NeighbourOP.
static auto eval_point(Loc &cOffset, const tools::tuple::Tuple< Params... > &t) -> decltype(tools::tuple::get< N >(t) .get_pointer()[cOffset.pointOp_gc+(Cols *cOffset.pointOp_gr)])
evaluate function when the internal::ops_category is PointOP.
static auto eval_global_neighbour(Loc &, const tools::tuple::Tuple< Params... > &t) -> decltype(tools::tuple::get< N >(t))
evaluate function when the internal::ops_category is GlobalNeighbour;
static auto get_accessor(const tools::tuple::Tuple< Params... > &t) -> decltype(tools::tuple::get< N >(t))
eval_global_neighbour function:
is used to find the index required to access the accessor inside the buffer.
the definition is in LeafNode.
This is used to find whether a node should use a global memory output or a local memory output is cre...
PlaceHolder is used to replace the Vision Memory in the LeafNode containing sycl buffer.
This struct is used to trait the value type inside the accessor.