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

template<class ArrayT>
static void Impala::Core::Array::Pattern::PxLclArrayCopy ( ArrayT *  loc,
int  dir,
ArrayT *  blk,
int  root,
bool  bdata 
) [inline, static]

Definition at line 71 of file PxDistribution.h.

References _myCPU, ArrayBD(), ArrayBH(), ArrayBW(), ArrayCD(), ArrayCH(), ArrayCPB(), ArrayCW(), ArrayD(), ArrayH(), ArrayPB(), ArrayW(), depth, PxLclStart(), and TO.

Referenced by PxGatherArrayOFT(), PxGatherArraySBT(), PxScatterArrayOFT(), and PxScatterArraySBT().

00072 {
00073     /*** Copy local array (loc) TO/FROM 'head' of block array (blk) ***/
00074 
00075     typedef typename ArrayT::StorType storT;
00076     storT* lPtr = (bdata) ? ArrayPB(loc) : ArrayCPB(loc);
00077     storT* bPtr = (bdata) ? ArrayPB(blk) : ArrayCPB(blk);
00078     int eSize = ArrayT::ElemSize();
00079 
00080     if (_myCPU == root) {
00081         bPtr = ArrayPB(blk) + eSize*(PxLclStart(_myCPU,
00082                ArrayBW(blk), ArrayBH(blk), ArrayBD(blk)));
00083         if (bdata) {
00084             bPtr -= (ArrayW(blk)*ArrayH(blk)*ArrayBD(blk) +
00085                 ArrayW(blk)*ArrayBH(blk) + ArrayBW(blk)) * eSize;
00086         }
00087     }
00088 
00089     int width  = (bdata) ? ArrayW(loc) : ArrayCW(loc);
00090     int height = (bdata) ? ArrayH(loc) : ArrayCH(loc);
00091     int depth  = (bdata) ? ArrayD(loc) : ArrayCD(loc);
00092 
00093     for (int z=0; z<depth; z++) {
00094         for (int y=0; y<height; y++) {
00095             storT* locPtr = lPtr + (ArrayW(loc)*ArrayH(loc)*z +
00096                                     ArrayW(loc)*y) * eSize;
00097             storT* blkPtr = bPtr + (ArrayW(blk)*ArrayH(blk)*z +
00098                                     ArrayW(blk)*y) * eSize;
00099             for (int x=0; x<width*eSize; x++) {
00100                 (dir == TO) ? (*blkPtr++ = *locPtr++) :
00101                               (*locPtr++ = *blkPtr++);
00102             }
00103         }
00104     }
00105 }

Here is the call graph for this function:


Generated on Fri Mar 19 11:02:34 2010 for ImpalaSrc by  doxygen 1.5.1