29#ifndef GRID_CARTESIAN_RED_BLACK_H
30#define GRID_CARTESIAN_RED_BLACK_H
44 Lexicographic::CoorFromIndex(coor,oindex,rdim);
47 for(
int d=0;d<nd;d++){
49 linear=linear+coor[d];
73 linear=linear+site[d];
85 shift = (shift+fulldim)%fulldim;
90 if ( (source_cb+ocb)&1 ) {
119 if ( (shift+
add) &0x1) {
135 int dims =
base->_ndimension;
138 Init(
base->_fdimensions,
base->_simd_layout,
base->_processors,checker_dim_mask,checker_dim);
149 Init(
base->_fdimensions,
base->_simd_layout,
base->_processors,checker_dim_mask,checker_dim) ;
163 assert(checker_dim_mask[checker_dim] == 1);
212 if (checker_dim_mask[d])
264 for (
int osite = 0; osite <
_osites; osite++)
#define accelerator_inline
accelerator_inline int RedBlackCheckerBoardFromOindex(int oindex, const Coordinate &rdim, const Coordinate &chk_dim_msk)
AcceleratorVector< int, MaxDims > Coordinate
void add(Lattice< obj1 > &ret, const Lattice< obj2 > &lhs, const Lattice< obj3 > &rhs)
#define NAMESPACE_BEGIN(A)
accelerator_inline size_type size(void) const
Coordinate _processor_coor
unsigned long _ndimension
Coordinate _checker_dim_mask
GridBase(const Coordinate &processor_grid)
void oCoorFromOindex(Coordinate &coor, int Oindex)
virtual ~GridRedBlackCartesian()=default
virtual int CheckerBoardFromOindexTable(int Oindex)
virtual int oIndex(Coordinate &coor)
virtual int CheckerBoardDestination(int source_cb, int shift, int dim)
GridRedBlackCartesian(const GridBase *base)
void Init(const Coordinate &dimensions, const Coordinate &simd_layout, const Coordinate &processor_grid, const Coordinate &checker_dim_mask, int checker_dim)
virtual int CheckerBoardShiftForCB(int source_cb, int dim, int shift, int ocb)
virtual int CheckerBoarded(int dim)
std::vector< int > _checker_board
virtual int CheckerBoardShift(int source_cb, int dim, int shift, int osite)
virtual int CheckerBoardFromOindex(int Oindex)
GridRedBlackCartesian(const GridBase *base, const Coordinate &checker_dim_mask, int checker_dim)
virtual int isCheckerBoarded(void) const
virtual int CheckerBoard(const Coordinate &site)
virtual int iIndex(Coordinate &lcoor)