35#define STREAMING_STORES
123 assert(egrid!=
nullptr);
128 assert( (cb==
Odd) || (cb==
Even));
131 auto exprCopy = expr;
135 auto tmp = eval(ss,exprCopy);
136 coalescedWrite(me[ss],tmp);
147 assert(egrid!=
nullptr);
152 assert( (cb==
Odd) || (cb==
Even));
155 auto exprCopy = expr;
159 auto tmp = eval(ss,exprCopy);
160 coalescedWrite(me[ss],tmp);
171 assert(egrid!=
nullptr);
176 assert( (cb==
Odd) || (cb==
Even));
178 auto exprCopy = expr;
182 auto tmp = eval(ss,exprCopy);
183 coalescedWrite(me[ss],tmp);
190 template<
class Op,
class T1>
192 this->
_grid =
nullptr;
194 assert(this->
_grid!=
nullptr);
198 assert( (cb==
Odd) || (cb==
Even));
205 template<
class Op,
class T1,
class T2>
207 this->
_grid =
nullptr;
209 assert(this->
_grid!=
nullptr);
213 assert( (cb==
Odd) || (cb==
Even));
220 template<
class Op,
class T1,
class T2,
class T3>
222 this->
_grid =
nullptr;
224 assert(this->
_grid!=
nullptr);
228 assert( (cb==
Odd) || (cb==
Even));
242 vobj *vvtmp_p = & vvtmp[0];
245 auto stmp=coalescedRead(*vvtmp_p);
246 coalescedWrite(me[ss],stmp);
267 assert((((uint64_t)&this->
_odata[0])&0xF) ==0);
275 if (this->
_grid != grid) {
293 this->
_grid = r.Grid();
304 typename std::enable_if<!std::is_same<robj,vobj>::value,
int>
::type i=0;
310 coalescedWrite(me[ss],him(ss));
312 me.ViewClose(); him.ViewClose();
325 coalescedWrite(me[ss],him(ss));
327 me.ViewClose(); him.ViewClose();
336 this->
_grid = r.Grid();
369 tmp = *lp; *lp=*rp; *rp=tmp;
375 typedef typename vobj::scalar_object sobj;
376 for(int64_t g=0;g<o.
Grid()->_gsites;g++){
384 for(
int d=0;d<gcoor.
size();d++){
386 if(d!=gcoor.size()-1) stream<<
",";
389 stream<<ss<<std::endl;
void acceleratorPut(T &dev, const T &host)
#define accelerator_for(iterator, num, nsimd,...)
std::vector< T, devAllocator< T > > deviceVector
AcceleratorVector< int, MaxDims > Coordinate
accelerator_inline void GridFromExpression(GridBase *&grid, const T1 &lat)
void ExpressionViewOpen(T1 &lat)
void ExpressionViewClose(T1 &lat)
void CBFromExpression(int &cb, const T1 &lat)
std::ostream & operator<<(std::ostream &stream, const Lattice< vobj > &o)
int GridCshiftPermuteMap[4][16]
vobj::scalar_object peekSite(const Lattice< vobj > &l, const Coordinate &site)
@ AcceleratorWriteDiscard
#define NAMESPACE_BEGIN(A)
#define thread_for(i, num,...)
accelerator_inline size_type size(void) const
void GlobalIndexToGlobalCoor(int64_t gidx, Coordinate &gcoor)
CoarseSiteVector * _odata
accelerator_inline LatticeAccelerator()
accelerator_inline int Checkerboard(void) const
Lattice(const Lattice &r)
CoarseSiteVector::scalar_type scalar_type
Lattice< vobj > & operator+=(const T &r)
CoarseSiteVector::scalar_object scalar_object
void PrintCacheState(void)
Lattice(const LatticeTrinaryExpression< Op, T1, T2, T3 > &expr)
Lattice< vobj > & operator*=(const T &r)
Lattice(const LatticeUnaryExpression< Op, T1 > &expr)
void resize(uint64_t size)
Lattice(GridBase *grid, ViewMode mode=AcceleratorWriteDiscard)
CoarseSiteVector vector_object
void reset(GridBase *grid)
Lattice< vobj > & operator=(const LatticeUnaryExpression< Op, T1 > &expr)
friend void swap(Lattice &l, Lattice &r)
Lattice< vobj > & operator=(const LatticeBinaryExpression< Op, T1, T2 > &expr)
Lattice< vobj > & operator-=(const T &r)
Lattice(const LatticeBinaryExpression< Op, T1, T2 > &expr)
Lattice< vobj > & operator=(const LatticeTrinaryExpression< Op, T1, T2, T3 > &expr)
void SetViewMode(ViewMode mode)
LatticeView< vobj > View(ViewMode mode) const
CoarseSiteVector::vector_type vector_type
GridBase * Grid(void) const
static void PrintState(void *CpuPtr)
void deallocate(pointer __p, size_type __n)
pointer allocate(size_type __n, const void *_p=0)