|
| StnFilt (LHS lhsArg, RHS rhsArg) |
|
void | reset (bool reset) |
|
template<bool ForcedToExec, size_t LC, size_t LR, size_t LCT, size_t LRT, typename DeviceT > |
auto | sub_expression_evaluation (const DeviceT &dev) -> decltype(execute_expr< Stencil_Conds, ForcedToExec, ExprExchange< LHS, RHS >, LC, LR, LCT, LRT >(lhs.template sub_expression_evaluation< Stencil_Conds, LC, LR, LRT, LCT >(dev), rhs.template sub_expression_evaluation< Stencil_Conds, LC, LR, LRT, LCT >(dev), dev)) |
| sub_expression_evaluation More...
|
|
template<typename Conv_OP, size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS, typename RHS, size_t Cols, size_t Rows, size_t LfType, size_t LVL>
struct visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >
The definition is in StnFilt file.
stencil with filter is used to construct a general convolutional operation for a custom filter.
It can be used for NeighbourOP
- Template Parameters
-
FilterOP | convolution functor with no filter parameter |
Halo_T | The top side size of Halo |
Halo_L:. | The left side size of Halo |
Halo_B | The bottom side size of Halo |
Halo_R | The right side size of Halo |
LHS | is the input node |
RHS | is the filter2d node |
Cols | determines the column size of the output |
Rows | determines the row size of the output |
LfType | determines the type of the leafNode {Buffer2D, Buffer1D, Host, Image} |
LVL | the level of the node in the expression tree |
Definition at line 49 of file stencil_with_filter.hpp.
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
template<typename TmpLHS , typename TmpRHS >
using visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::ExprExchange = internal::StnFilt<Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, TmpLHS, TmpRHS, Cols, Rows, LfType, LVL> |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
using visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::LHSExpr = LHS |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
using visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::OPType = Conv_OP |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
using visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::OutType = typename Conv_OP::OutType |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
using visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::RHSExpr = RHS |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
using visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::Type = typename visioncpp::internal::OutputMemory<OutType, LfType, Cols, Rows, LVL>::Type |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::StnFilt |
( |
LHS |
lhsArg, |
|
|
RHS |
rhsArg |
|
) |
| |
|
inline |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
void visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::reset |
( |
bool |
reset | ) |
|
|
inline |
Definition at line 85 of file stencil_with_filter.hpp.
References visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::lhs, visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::rhs, and visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::subexpr_execution_reseter.
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
template<bool ForcedToExec, size_t LC, size_t LR, size_t LCT, size_t LRT, typename DeviceT >
auto visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::sub_expression_evaluation |
( |
const DeviceT & |
dev | ) |
-> decltype(execute_expr<Stencil_Conds, ForcedToExec,
ExprExchange<LHS, RHS>, LC, LR, LCT, LRT>(
lhs.template sub_expression_evaluation<Stencil_Conds, LC, LR, LRT,
LCT>(dev),
rhs.template sub_expression_evaluation<Stencil_Conds, LC, LR, LRT,
LCT>(dev),
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. |
LC | is the column size of local memory required by Filter2D and DownSmplOP |
LR | is the row size of local memory required by Filter2D and DownSmplOP |
LCT | is the column size of workgroup |
LRT | is the row size of workgroup |
DeviceT | type representing the device function parameters: |
- Parameters
-
dev | : the selected device for executing the expression |
- Returns
- LeafNode
Definition at line 114 of file stencil_with_filter.hpp.
References visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::lhs, and visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::rhs.
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr size_t visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::CThread = Cols |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr size_t visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::Halo_Butt = Halo_B |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr size_t visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::Halo_Left = Halo_L |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr size_t visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::Halo_Right = Halo_R |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr size_t visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::Halo_Top = Halo_T |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr bool visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::has_out = false |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr size_t visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::LeafType = Type::LeafType |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr size_t visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::Level = LVL |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
LHS visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::lhs |
Definition at line 79 of file stencil_with_filter.hpp.
Referenced by visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::reset(), and visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::sub_expression_evaluation().
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr size_t visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::ND_Category = internal::expr_category::Binary |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr size_t visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::Operation_type = Conv_OP::Operation_type |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
RHS visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::rhs |
Definition at line 80 of file stencil_with_filter.hpp.
Referenced by visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::reset(), and visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::sub_expression_evaluation().
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr size_t visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::RThread = Rows |
|
staticconstexpr |
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
bool visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::subexpr_execution_reseter |
Definition at line 81 of file stencil_with_filter.hpp.
Referenced by visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::reset().
template<typename Conv_OP , size_t Halo_T, size_t Halo_L, size_t Halo_B, size_t Halo_R, typename LHS , typename RHS , size_t Cols, size_t Rows, size_t LfType, size_t LVL>
constexpr bool visioncpp::internal::StnFilt< Conv_OP, Halo_T, Halo_L, Halo_B, Halo_R, LHS, RHS, Cols, Rows, LfType, LVL >::SubExpressionEvaluationNeeded |
|
staticconstexpr |
Initial value:=
RHS::SubExpressionEvaluationNeeded
static constexpr bool Stencil_Conds
Definition at line 70 of file stencil_with_filter.hpp.