template<class DstArrayT, class SrcArrayT, class ExtraArrayT, class Extra2ArrayT, class NgbT>
Definition at line 26 of file PatNgbOp2dExtra2.h. References Impala::Core::Array::CheckBorderSize(), FuncNgbOp2dExtra2Dispatch(), Impala::Core::Array::PAR_PART, PatSetBorder(), PxArrayDeletePD(), PxArrayForceNonDistributed(), PxArrayPD(), PxArrayPostStateTrans(), PxArrayPreStateTrans(), PxRunLazyParallel(), PxRunParallel(), STRONG, and WEAK. Referenced by Impala::Samples::Talk::DoTalkNgb2dExtra2(). 00028 { 00029 int numX = ngb.Width() / 2; 00030 int numY = ngb.Height() / 2; 00031 SrcArrayT* checkedSrc = CheckBorderSize(src, numX, numY); 00032 ExtraArrayT* checkedXtr = CheckBorderSize(xtr, numX, numY); 00033 Extra2ArrayT* checkedXt2 = CheckBorderSize(xt2, numX, numY); 00034 00035 if ((dst == 0) || (dst == (DstArrayT*) checkedSrc)) 00036 dst = ArrayClone<DstArrayT>(checkedSrc); 00037 00038 #ifdef PX_HORUS_USED 00039 if (!PxRunParallel()) { // run sequential 00040 #endif 00041 PatSetBorder(checkedSrc, numX, numY); 00042 PatSetBorder(checkedXtr, numX, numY); 00043 PatSetBorder(checkedXt2, numX, numY); 00044 FuncNgbOp2dExtra2Dispatch(dst, checkedSrc, 00045 checkedXtr, checkedXt2, ngb); 00046 00047 #ifdef PX_HORUS_USED 00048 } else { // run parallel 00049 PxArrayPreStateTrans(checkedSrc, PAR_PART, STRONG); 00050 PxArrayPreStateTrans(checkedXtr, PAR_PART, STRONG); 00051 PxArrayPreStateTrans(checkedXt2, PAR_PART, STRONG); 00052 PxArrayPreStateTrans(dst, PAR_PART, WEAK); 00053 PatSetBorder(PxArrayPD(checkedSrc), numX, numY); 00054 PatSetBorder(PxArrayPD(checkedXtr), numX, numY); 00055 PatSetBorder(PxArrayPD(checkedXt2), numX, numY); 00056 FuncNgbOp2dExtra2Dispatch(PxArrayPD(dst), 00057 PxArrayPD(checkedSrc), PxArrayPD(checkedXtr), 00058 PxArrayPD(checkedxt2), ngb); 00059 if (PxArrayPD(checkedSrc) != PxArrayPD(src)) 00060 PxArrayDeletePD(checkedSrc); 00061 if (PxArrayPD(checkedXtr) != PxArrayPD(xtr)) 00062 PxArrayDeletePD(checkedXtr); 00063 if (PxArrayPD(checkedXt2) != PxArrayPD(xt2)) 00064 PxArrayDeletePD(checkedXt2); 00065 PxArrayPostStateTrans(dst); 00066 00067 if (!PxRunLazyParallel()) { 00068 PxArrayForceNonDistributed(src); 00069 PxArrayForceNonDistributed(xtr); 00070 PxArrayForceNonDistributed(xt2); 00071 PxArrayForceNonDistributed(dst); 00072 } 00073 } 00074 #endif 00075 00076 if (checkedSrc != src) 00077 delete checkedSrc; 00078 if (checkedXtr != xtr) 00079 delete checkedXtr; 00080 if (checkedXt2 != xt2) 00081 delete checkedXt2; 00082 }
Here is the call graph for this function:
|