mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-03 21:44:33 +00:00 
			
		
		
		
	CPU loops explicit for peek poke
This commit is contained in:
		@@ -36,6 +36,8 @@ Author: Peter Boyle <peterboyle@Peters-MacBook-Pro-2.local>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
NAMESPACE_BEGIN(Grid);
 | 
					NAMESPACE_BEGIN(Grid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FIXME accelerator_loop and accelerator_inline these
 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
// Peek internal indices of a Lattice object
 | 
					// Peek internal indices of a Lattice object
 | 
				
			||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@@ -44,9 +46,9 @@ auto PeekIndex(const Lattice<vobj> &lhs,int i) -> Lattice<decltype(peekIndex<Ind
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  Lattice<decltype(peekIndex<Index>(lhs._odata[0],i))> ret(lhs._grid);
 | 
					  Lattice<decltype(peekIndex<Index>(lhs._odata[0],i))> ret(lhs._grid);
 | 
				
			||||||
  ret.checkerboard=lhs.checkerboard;
 | 
					  ret.checkerboard=lhs.checkerboard;
 | 
				
			||||||
  parallel_for(int ss=0;ss<lhs._grid->oSites();ss++){
 | 
					  cpu_loop( ss, lhs, {
 | 
				
			||||||
    ret._odata[ss] = peekIndex<Index>(lhs._odata[ss],i);
 | 
					    ret._odata[ss] = peekIndex<Index>(lhs._odata[ss],i);
 | 
				
			||||||
  }
 | 
					  });
 | 
				
			||||||
  return ret;
 | 
					  return ret;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
template<int Index,class vobj> 
 | 
					template<int Index,class vobj> 
 | 
				
			||||||
@@ -54,9 +56,9 @@ auto PeekIndex(const Lattice<vobj> &lhs,int i,int j) -> Lattice<decltype(peekInd
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  Lattice<decltype(peekIndex<Index>(lhs._odata[0],i,j))> ret(lhs._grid);
 | 
					  Lattice<decltype(peekIndex<Index>(lhs._odata[0],i,j))> ret(lhs._grid);
 | 
				
			||||||
  ret.checkerboard=lhs.checkerboard;
 | 
					  ret.checkerboard=lhs.checkerboard;
 | 
				
			||||||
  parallel_for(int ss=0;ss<lhs._grid->oSites();ss++){
 | 
					  cpu_loop( ss, lhs, {
 | 
				
			||||||
    ret._odata[ss] = peekIndex<Index>(lhs._odata[ss],i,j);
 | 
					    ret._odata[ss] = peekIndex<Index>(lhs._odata[ss],i,j);
 | 
				
			||||||
  }
 | 
					  });
 | 
				
			||||||
  return ret;
 | 
					  return ret;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -66,16 +68,16 @@ auto PeekIndex(const Lattice<vobj> &lhs,int i,int j) -> Lattice<decltype(peekInd
 | 
				
			|||||||
template<int Index,class vobj>  
 | 
					template<int Index,class vobj>  
 | 
				
			||||||
void PokeIndex(Lattice<vobj> &lhs,const Lattice<decltype(peekIndex<Index>(lhs._odata[0],0))> & rhs,int i)
 | 
					void PokeIndex(Lattice<vobj> &lhs,const Lattice<decltype(peekIndex<Index>(lhs._odata[0],0))> & rhs,int i)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  parallel_for(int ss=0;ss<lhs._grid->oSites();ss++){
 | 
					  cpu_loop( ss, lhs, {
 | 
				
			||||||
    pokeIndex<Index>(lhs._odata[ss],rhs._odata[ss],i);
 | 
					    pokeIndex<Index>(lhs._odata[ss],rhs._odata[ss],i);
 | 
				
			||||||
  }      
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
template<int Index,class vobj> 
 | 
					template<int Index,class vobj> 
 | 
				
			||||||
void PokeIndex(Lattice<vobj> &lhs,const Lattice<decltype(peekIndex<Index>(lhs._odata[0],0,0))> & rhs,int i,int j)
 | 
					void PokeIndex(Lattice<vobj> &lhs,const Lattice<decltype(peekIndex<Index>(lhs._odata[0],0,0))> & rhs,int i,int j)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  parallel_for(int ss=0;ss<lhs._grid->oSites();ss++){
 | 
					  cpu_loop( ss, lhs, {
 | 
				
			||||||
    pokeIndex<Index>(lhs._odata[ss],rhs._odata[ss],i,j);
 | 
					    pokeIndex<Index>(lhs._odata[ss],rhs._odata[ss],i,j);
 | 
				
			||||||
  }      
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//////////////////////////////////////////////////////
 | 
					//////////////////////////////////////////////////////
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user