template<class DstArrayT, class SrcArrayT, class KerArrayT, class PixOpT, class RedOpT>
Definition at line 27 of file PatGenConv2dK1d.h. References ArrayCW(), Impala::Core::Array::CheckBorderSize(), FuncGenConv2dSepDispatch_H(), FuncGenConv2dSepDispatch_V(), Impala::Core::Array::PAR_PART, PatSetBorder(), PxArrayDeletePD(), PxArrayForceNonDistributed(), PxArrayPD(), PxArrayPostStateTrans(), PxArrayPreStateTrans(), PxRunLazyParallel(), PxRunParallel(), STRONG, and WEAK. Referenced by Impala::Core::Array::ConvKernel1d(). 00030 { 00031 vType = 0; // only 1 implemented 00032 00033 int numX = (dimension == 1) ? ArrayCW(ker) / 2 : 0; 00034 int numY = (dimension == 1) ? 0 : ArrayCW(ker) / 2; 00035 SrcArrayT* checkedSrc = CheckBorderSize(src, numX, numY); 00036 00037 if ((dst == 0) || (dst == checkedSrc)) 00038 dst = ArrayClone<DstArrayT>(checkedSrc); 00039 00040 #ifdef PX_HORUS_USED 00041 if (!PxRunParallel()) { // run sequential 00042 #endif 00043 if (plotter) 00044 plotter->SplitTime(); 00045 PatSetBorder(checkedSrc, numX, numY); 00046 if (plotter) 00047 plotter->SplitTime(); 00048 if (dimension == 1) 00049 FuncGenConv2dSepDispatch_H(dst, checkedSrc, 00050 ker, pixOp, redOp, vType); 00051 else 00052 FuncGenConv2dSepDispatch_V(dst, checkedSrc, 00053 ker, pixOp, redOp, vType); 00054 00055 #ifdef PX_HORUS_USED 00056 } else { // run parallel 00057 PxArrayPreStateTrans(checkedSrc, PAR_PART, STRONG); 00058 PxArrayPreStateTrans(dst, PAR_PART, WEAK); 00059 PatSetBorder(PxArrayPD(checkedSrc), numX, numY); 00060 if (dimension == 1) { 00061 FuncGenConv2dSepDispatch_H(PxArrayPD(dst), 00062 PxArrayPD(checkedSrc), ker, pixOp, redOp, vType); 00063 } else { 00064 FuncGenConv2dSepDispatch_V(PxArrayPD(dst), 00065 PxArrayPD(checkedSrc), ker, pixOp, redOp, vType); 00066 } 00067 if (PxArrayPD(checkedSrc) != PxArrayPD(src)) 00068 PxArrayDeletePD(checkedSrc); 00069 PxArrayPostStateTrans(dst); 00070 00071 if (!PxRunLazyParallel()) { 00072 PxArrayForceNonDistributed(src); 00073 PxArrayForceNonDistributed(dst); 00074 } 00075 } 00076 #endif 00077 00078 if (checkedSrc != src) 00079 delete checkedSrc; 00080 }
Here is the call graph for this function:
|