Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

PatM12PixOp.h

Go to the documentation of this file.
00001 #ifndef Impala_Core_Array_Pattern_PatM12PixOp_h
00002 #define Impala_Core_Array_Pattern_PatM12PixOp_h
00003 
00004 #include "Core/Array/Pattern/FuncMpo.h"
00005 
00006 #ifdef PX_HORUS_USED
00007 #include "Core/Array/Pattern/PxArrayFunc.h"
00008 #include "Core/Array/Pattern/PxStateTrans.h"
00009 #endif
00010 
00011 namespace Impala
00012 {
00013 namespace Core
00014 {
00015 namespace Array
00016 {
00017 namespace Pattern
00018 {
00019 
00020 
00021 template<class DstArrayT, class SrcArrayT, class MpoT>
00022 inline void
00023 PatM12PixOp(DstArrayT*& dst,
00024             SrcArrayT* s1,  SrcArrayT* s2,  SrcArrayT* s3,
00025             SrcArrayT* s4,  SrcArrayT* s5,  SrcArrayT* s6,
00026             SrcArrayT* s7,  SrcArrayT* s8,  SrcArrayT* s9,
00027             SrcArrayT* s10, SrcArrayT* s11, SrcArrayT* s12, MpoT& mpo)
00028 {
00029     if (dst == 0)
00030         dst = ArrayClone<DstArrayT>(s1);
00031 
00032 #ifdef PX_HORUS_USED
00033     if (!PxRunParallel()) {                         // run sequential
00034 #endif
00035         FuncM12po(dst, s1, s2, s3, s4, s5, s6,
00036                   s7, s8, s9, s10, s11, s12, mpo);
00037 
00038 #ifdef PX_HORUS_USED
00039     } else {                                        // run parallel
00040         PxArrayPreStateTrans(s1,  PAR_PART, STRONG);
00041         PxArrayPreStateTrans(s2,  PAR_PART, STRONG);
00042         PxArrayPreStateTrans(s3,  PAR_PART, STRONG);
00043         PxArrayPreStateTrans(s4,  PAR_PART, STRONG);
00044         PxArrayPreStateTrans(s5,  PAR_PART, STRONG);
00045         PxArrayPreStateTrans(s6,  PAR_PART, STRONG);
00046         PxArrayPreStateTrans(s7,  PAR_PART, STRONG);
00047         PxArrayPreStateTrans(s8,  PAR_PART, STRONG);
00048         PxArrayPreStateTrans(s9,  PAR_PART, STRONG);
00049         PxArrayPreStateTrans(s10, PAR_PART, STRONG);
00050         PxArrayPreStateTrans(s11, PAR_PART, STRONG);
00051         PxArrayPreStateTrans(s12, PAR_PART, STRONG);
00052         PxArrayPreStateTrans(dst, PAR_PART, WEAK);
00053         FuncM12po(PxArrayPD(dst),
00054                   PxArrayPD(s1), PxArrayPD(s2), PxArrayPD(s3),
00055                   PxArrayPD(s4), PxArrayPD(s5), PxArrayPD(s6),
00056                   PxArrayPD(s7), PxArrayPD(s8), PxArrayPD(s9),
00057                   PxArrayPD(s10),PxArrayPD(s11),PxArrayPD(s12), mpo);
00058         PxArrayPostStateTrans(dst);
00059 
00060         if (!PxRunLazyParallel()) {
00061             PxArrayForceNonDistributed(s1);
00062             PxArrayForceNonDistributed(s2);
00063             PxArrayForceNonDistributed(s3);
00064             PxArrayForceNonDistributed(s4);
00065             PxArrayForceNonDistributed(s5);
00066             PxArrayForceNonDistributed(s6);
00067             PxArrayForceNonDistributed(s7);
00068             PxArrayForceNonDistributed(s8);
00069             PxArrayForceNonDistributed(s9);
00070             PxArrayForceNonDistributed(s10);
00071             PxArrayForceNonDistributed(s11);
00072             PxArrayForceNonDistributed(s12);
00073             PxArrayForceNonDistributed(dst);
00074         }
00075     }
00076 #endif
00077 }
00078 
00079 } // namespace Pattern
00080 } // namespace Array
00081 } // namespace Core
00082 } // namespace Impala
00083 
00084 #endif

Generated on Fri Mar 19 09:30:50 2010 for ImpalaSrc by  doxygen 1.5.1