52 return & this->_entries_p[point+this->_npoints*osite];
79 int npoints = shifts.size();
80 int osites = grid->
oSites();
84 this->_entries.resize(npoints* osites);
91 for(
Integer ii=0;ii<npoints;ii++){
98 for(
int d=0;d<Coor.
size();d++){
100 NbrCoor[d] = (Coor[d] + shifts[ii][d] + rd )%rd;
110 for(
int d=0;d<Coor.
size();d++){
117 assert((ly==1)||(ly==2)||(ly==grid->
Nsimd()));
119 int shift = (shifts[ii][d]+fd)%fd;
122 if ( (x + shift)%fd != (x+shift)%ld ){
132 if ( x< rd-num ) permute_slice=wrap;
133 else permute_slice=(wrap+1)%ly;
135 if ( permute_slice ) {
137 uint8_t mask =0x1<<
ptype;
167inline int Back(
const int dir) {
174template<
typename... Args>
187template<
typename... Args>
void acceleratorPut(T &dev, const T &host)
#define accelerator_inline
std::vector< T, devAllocator< T > > deviceVector
AcceleratorVector< int, MaxDims > Coordinate
int Back(const int dir)
signals that you want to go backwards in direction dir
void generalShift(Coordinate &shift, int dir)
shift one unit in direction dir
#define NAMESPACE_BEGIN(A)
#define thread_for(i, num,...)
accelerator_inline size_type size(void) const
accelerator_inline GeneralStencilEntry * GetEntry(int point, int osite) const
GeneralStencilEntry * _entries_p
GridBase * Grid(void) const
GeneralLocalStencilView View_type
deviceVector< GeneralStencilEntry > _entries
View_type View(int mode) const
GeneralLocalStencil(GridBase *grid, const std::vector< Coordinate > &shifts)
int PermuteDim(int dimension)
int oIndexReduced(Coordinate &ocoor)
int PermuteType(int dimension)
void oCoorFromOindex(Coordinate &coor, int Oindex)