mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-10-31 03:54:33 +00:00 
			
		
		
		
	Running on Frontier, fix RNG big volume y2k, affecting 5D RNG
This commit is contained in:
		| @@ -70,8 +70,8 @@ public: | ||||
|   Coordinate _istride;    // Inner stride i.e. within simd lane | ||||
|   int _osites;                  // _isites*_osites = product(dimensions). | ||||
|   int _isites; | ||||
|   int _fsites;                  // _isites*_osites = product(dimensions). | ||||
|   int _gsites; | ||||
|   int64_t _fsites;                  // _isites*_osites = product(dimensions). | ||||
|   int64_t _gsites; | ||||
|   Coordinate _slice_block;// subslice information | ||||
|   Coordinate _slice_stride; | ||||
|   Coordinate _slice_nblock; | ||||
| @@ -183,7 +183,7 @@ public: | ||||
|   inline int Nsimd(void)  const { return _isites; };// Synonymous with iSites | ||||
|   inline int oSites(void) const { return _osites; }; | ||||
|   inline int lSites(void) const { return _isites*_osites; };  | ||||
|   inline int gSites(void) const { return _isites*_osites*_Nprocessors; };  | ||||
|   inline int64_t gSites(void) const { return (int64_t)_isites*(int64_t)_osites*(int64_t)_Nprocessors; };  | ||||
|   inline int Nd    (void) const { return _ndimension;}; | ||||
|  | ||||
|   inline const Coordinate LocalStarts(void)             { return _lstart;    }; | ||||
| @@ -214,7 +214,7 @@ public: | ||||
|   //////////////////////////////////////////////////////////////// | ||||
|   // Global addressing | ||||
|   //////////////////////////////////////////////////////////////// | ||||
|   void GlobalIndexToGlobalCoor(int gidx,Coordinate &gcoor){ | ||||
|   void GlobalIndexToGlobalCoor(int64_t gidx,Coordinate &gcoor){ | ||||
|     assert(gidx< gSites()); | ||||
|     Lexicographic::CoorFromIndex(gcoor,gidx,_gdimensions); | ||||
|   } | ||||
| @@ -222,7 +222,7 @@ public: | ||||
|     assert(lidx<lSites()); | ||||
|     Lexicographic::CoorFromIndex(lcoor,lidx,_ldimensions); | ||||
|   } | ||||
|   void GlobalCoorToGlobalIndex(const Coordinate & gcoor,int & gidx){ | ||||
|   void GlobalCoorToGlobalIndex(const Coordinate & gcoor,int64_t & gidx){ | ||||
|     gidx=0; | ||||
|     int mult=1; | ||||
|     for(int mu=0;mu<_ndimension;mu++) { | ||||
|   | ||||
| @@ -360,7 +360,7 @@ public: | ||||
|  | ||||
| template<class vobj> std::ostream& operator<< (std::ostream& stream, const Lattice<vobj> &o){ | ||||
|   typedef typename vobj::scalar_object sobj; | ||||
|   for(int g=0;g<o.Grid()->_gsites;g++){ | ||||
|   for(int64_t g=0;g<o.Grid()->_gsites;g++){ | ||||
|  | ||||
|     Coordinate gcoor; | ||||
|     o.Grid()->GlobalIndexToGlobalCoor(g,gcoor); | ||||
|   | ||||
| @@ -432,7 +432,7 @@ public: | ||||
| #if 1 | ||||
|     thread_for( lidx, _grid->lSites(), { | ||||
|  | ||||
| 	int gidx; | ||||
| 	int64_t gidx; | ||||
| 	int o_idx; | ||||
| 	int i_idx; | ||||
| 	int rank; | ||||
|   | ||||
| @@ -1054,7 +1054,7 @@ void Replicate(const Lattice<vobj> &coarse,Lattice<vobj> & fine) | ||||
|  | ||||
|   Coordinate fcoor(nd); | ||||
|   Coordinate ccoor(nd); | ||||
|   for(int g=0;g<fg->gSites();g++){ | ||||
|   for(int64_t g=0;g<fg->gSites();g++){ | ||||
|  | ||||
|     fg->GlobalIndexToGlobalCoor(g,fcoor); | ||||
|     for(int d=0;d<nd;d++){ | ||||
|   | ||||
| @@ -8,7 +8,7 @@ namespace Grid{ | ||||
|   public: | ||||
|  | ||||
|     template<class coor_t> | ||||
|     static accelerator_inline void CoorFromIndex (coor_t& coor,int index,const coor_t &dims){ | ||||
|     static accelerator_inline void CoorFromIndex (coor_t& coor,int64_t index,const coor_t &dims){ | ||||
|       int nd= dims.size(); | ||||
|       coor.resize(nd); | ||||
|       for(int d=0;d<nd;d++){ | ||||
| @@ -18,28 +18,45 @@ namespace Grid{ | ||||
|     } | ||||
|  | ||||
|     template<class coor_t> | ||||
|     static accelerator_inline void IndexFromCoor (const coor_t& coor,int &index,const coor_t &dims){ | ||||
|     static accelerator_inline void IndexFromCoor (const coor_t& coor,int64_t &index,const coor_t &dims){ | ||||
|       int nd=dims.size(); | ||||
|       int stride=1; | ||||
|       index=0; | ||||
|       for(int d=0;d<nd;d++){ | ||||
| 	index = index+stride*coor[d]; | ||||
| 	index = index+(int64_t)stride*coor[d]; | ||||
| 	stride=stride*dims[d]; | ||||
|       } | ||||
|     } | ||||
|     template<class coor_t> | ||||
|     static accelerator_inline void IndexFromCoor (const coor_t& coor,int &index,const coor_t &dims){ | ||||
|       int64_t index64; | ||||
|       IndexFromCoor(coor,index64,dims); | ||||
|       assert(index64<2*1024*1024*1024LL); | ||||
|       index = (int) index64; | ||||
|     } | ||||
|  | ||||
|     template<class coor_t> | ||||
|     static inline void IndexFromCoorReversed (const coor_t& coor,int &index,const coor_t &dims){ | ||||
|     static inline void IndexFromCoorReversed (const coor_t& coor,int64_t &index,const coor_t &dims){ | ||||
|       int nd=dims.size(); | ||||
|       int stride=1; | ||||
|       index=0; | ||||
|       for(int d=nd-1;d>=0;d--){ | ||||
| 	index = index+stride*coor[d]; | ||||
| 	index = index+(int64_t)stride*coor[d]; | ||||
| 	stride=stride*dims[d]; | ||||
|       } | ||||
|     } | ||||
|     template<class coor_t> | ||||
|     static inline void CoorFromIndexReversed (coor_t& coor,int index,const coor_t &dims){ | ||||
|     static inline void IndexFromCoorReversed (const coor_t& coor,int &index,const coor_t &dims){ | ||||
|       int64_t index64; | ||||
|       IndexFromCoorReversed(coor,index64,dims); | ||||
|       if ( index64>=2*1024*1024*1024LL ){ | ||||
| 	std::cout << " IndexFromCoorReversed " << coor<<" index " << index64<< " dims "<<dims<<std::endl; | ||||
|       } | ||||
|       assert(index64<2*1024*1024*1024LL); | ||||
|       index = (int) index64; | ||||
|     } | ||||
|     template<class coor_t> | ||||
|     static inline void CoorFromIndexReversed (coor_t& coor,int64_t index,const coor_t &dims){ | ||||
|       int nd= dims.size(); | ||||
|       coor.resize(nd); | ||||
|       for(int d=nd-1;d>=0;d--){ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user