VisionCpp  0.0.1
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp > Struct Template Reference

PyramidAutomemSep is used to construct a pyramid node in the expression tree with two separable Filter for row and column and general DownSmplOP functors. More...

#include <pyramid_with_auto_mem_sep.hpp>

Collaboration diagram for visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >:

Public Types

using OutType = typename DownSmplOP::OutType
 
using Type = typename OutputMemory< OutType, LfType, Cols+Cols/2, Rows, LVL >::Type
 
using LHSExpr = LeafNode< Type, LVL >
 
using PyramidMem = typename CreatePyramidTupleType< false, Cols/2, Rows/2, LeafType, Depth, 0, LHSExpr >::Type
 
using PyramidType = PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >
 pyramid type More...
 

Public Member Functions

 PyramidAutomemSep (RHS rhsArg, SepFilterCol fltrCol, SepFilterRow fltrRow)
 
void reset (bool reset)
 
template<size_t N>
PyramidLeafNode< PyramidType, N > get ()
 method get More...
 
template<bool ForcedToExec, size_t LC, size_t LR, size_t LCT, size_t LRT, typename DeviceT >
PyramidLeafNode< PyramidType, 0 > sub_expression_evaluation (const DeviceT &dev)
 sub_expression_evaluation More...
 

Public Attributes

RHS rhs
 
SepFilterCol spFltrCol
 
SepFilterRow spFltrRow
 
bool subexpr_execution_reseter
 
bool first_time
 
size_t node_reseter
 
PyramidMem mem
 

Static Public Attributes

static constexpr bool has_out = false
 
static constexpr size_t Level = LVL
 
static constexpr size_t LeafType = Type::LeafType
 
static constexpr bool SubExpressionEvaluationNeeded = true
 
static constexpr size_t Operation_type = ops_category::GlobalNeighbourOP
 
static constexpr size_t RThread = Rows
 
static constexpr size_t CThread = Cols
 
static constexpr size_t ND_Category = expr_category::Unary
 
static constexpr size_t Depth = Dp
 

Detailed Description

template<typename SepFltrColOP, typename SepFltrRowOP, typename DownSmplOP, typename RHS, typename SepFilterCol, typename SepFilterRow, size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
struct visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >

PyramidAutomemSep is used to construct a pyramid node in the expression tree with two separable Filter for row and column and general DownSmplOP functors.

It automatically generates the tuple of output based on the depth. template parameters:

Template Parameters
SepFltrColOPseparable Filter functor for col
SepFltrRowOPseparable Filter functor for row
DownSmplOPdownsampling function for pyramid
LHSis the input passed for pyramid
SepFilterColis the separable filter node for column
SepFilterRowis the separable filter node for row
Colsdetermines the column size of the input pyramid
Rowsdetermines the row size of the input pyramid
LfTypedetermines the type of the leafNode {Buffer2D, Buffer1D, Host, Image}
LVLthe level of the node in the expression tree
Dprepresents the depth of downsampling

Definition at line 158 of file pyramid_with_auto_mem_sep.hpp.

Member Typedef Documentation

◆ LHSExpr

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
using visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::LHSExpr = LeafNode<Type, LVL>

Definition at line 164 of file pyramid_with_auto_mem_sep.hpp.

◆ OutType

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
using visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::OutType = typename DownSmplOP::OutType

Definition at line 161 of file pyramid_with_auto_mem_sep.hpp.

◆ PyramidMem

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
using visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::PyramidMem = typename CreatePyramidTupleType<false, Cols / 2, Rows / 2, LeafType, Depth, 0, LHSExpr>::Type

Definition at line 173 of file pyramid_with_auto_mem_sep.hpp.

◆ PyramidType

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
using visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::PyramidType = PyramidAutomemSep<SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp>

pyramid type

Definition at line 199 of file pyramid_with_auto_mem_sep.hpp.

◆ Type

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
using visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::Type = typename OutputMemory<OutType, LfType, Cols + Cols / 2, Rows, LVL>::Type

Definition at line 162 of file pyramid_with_auto_mem_sep.hpp.

Constructor & Destructor Documentation

◆ PyramidAutomemSep()

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::PyramidAutomemSep ( RHS  rhsArg,
SepFilterCol  fltrCol,
SepFilterRow  fltrRow 
)
inline

Definition at line 184 of file pyramid_with_auto_mem_sep.hpp.

Member Function Documentation

◆ get()

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
template<size_t N>
PyramidLeafNode<PyramidType, N> visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::get ( )
inline

method get

Definition at line 204 of file pyramid_with_auto_mem_sep.hpp.

◆ reset()

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
void visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::reset ( bool  reset)
inline

◆ sub_expression_evaluation()

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
template<bool ForcedToExec, size_t LC, size_t LR, size_t LCT, size_t LRT, typename DeviceT >
PyramidLeafNode<PyramidType, 0> visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::sub_expression_evaluation ( const DeviceT &  dev)
inline

sub_expression_evaluation

This function is used to break the expression tree whenever necessary. The decision for breaking the tree will be determined based on the static parameter called SubExpressionEvaluationNeeded. When this is set to true, the sub_expression_evaluation is called recursively from the root of the tree. Each node based on their parent decision will decide to launch a kernel for itself. Also, they decide for each of their children whether or not to launch a kernel separately. template parameters:

Template Parameters
ForcedToExec: a boolean value representing the decision made by the parent of this node for launching a kernel.
LCis the column size of local memory required by Filter2D and DownSmplOP
LRis the row size of local memory required by Filter2D and DownSmplOP
LCTis the column size of workgroup
LRTis the row size of workgroup
DeviceTtype representing the device function parameters:
Parameters
dev: the selected device for executing the expression
Returns
LeafNode

Definition at line 231 of file pyramid_with_auto_mem_sep.hpp.

References visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::Depth, visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::LeafType, visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::mem, visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::rhs, visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::spFltrCol, and visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::spFltrRow.

Member Data Documentation

◆ CThread

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
constexpr size_t visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::CThread = Cols
staticconstexpr

Definition at line 170 of file pyramid_with_auto_mem_sep.hpp.

◆ Depth

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
constexpr size_t visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::Depth = Dp
staticconstexpr

◆ first_time

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
bool visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::first_time

Definition at line 181 of file pyramid_with_auto_mem_sep.hpp.

◆ has_out

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
constexpr bool visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::has_out = false
staticconstexpr

Definition at line 160 of file pyramid_with_auto_mem_sep.hpp.

◆ LeafType

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
constexpr size_t visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::LeafType = Type::LeafType
staticconstexpr

◆ Level

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
constexpr size_t visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::Level = LVL
staticconstexpr

Definition at line 165 of file pyramid_with_auto_mem_sep.hpp.

◆ mem

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
PyramidMem visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::mem

◆ ND_Category

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
constexpr size_t visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::ND_Category = expr_category::Unary
staticconstexpr

Definition at line 171 of file pyramid_with_auto_mem_sep.hpp.

◆ node_reseter

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
size_t visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::node_reseter

Definition at line 182 of file pyramid_with_auto_mem_sep.hpp.

◆ Operation_type

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
constexpr size_t visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::Operation_type = ops_category::GlobalNeighbourOP
staticconstexpr

Definition at line 168 of file pyramid_with_auto_mem_sep.hpp.

◆ rhs

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
RHS visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::rhs

◆ RThread

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
constexpr size_t visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::RThread = Rows
staticconstexpr

Definition at line 169 of file pyramid_with_auto_mem_sep.hpp.

◆ spFltrCol

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
SepFilterCol visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::spFltrCol

◆ spFltrRow

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
SepFilterRow visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::spFltrRow

◆ subexpr_execution_reseter

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
bool visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::subexpr_execution_reseter

◆ SubExpressionEvaluationNeeded

template<typename SepFltrColOP , typename SepFltrRowOP , typename DownSmplOP , typename RHS , typename SepFilterCol , typename SepFilterRow , size_t Cols, size_t Rows, size_t LfType, size_t LVL, size_t Dp>
constexpr bool visioncpp::internal::PyramidAutomemSep< SepFltrColOP, SepFltrRowOP, DownSmplOP, RHS, SepFilterCol, SepFilterRow, Cols, Rows, LfType, LVL, Dp >::SubExpressionEvaluationNeeded = true
staticconstexpr

Definition at line 167 of file pyramid_with_auto_mem_sep.hpp.


The documentation for this struct was generated from the following file: