mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 05:54:32 +00:00 
			
		
		
		
	Release candidate
This commit is contained in:
		@@ -67,7 +67,7 @@ std::vector<void *> CartesianCommunicator::ShmCommBufs;
 | 
				
			|||||||
int CartesianCommunicator::NodeCount(void)    { return GroupSize;};
 | 
					int CartesianCommunicator::NodeCount(void)    { return GroupSize;};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define FORCE_COMMS
 | 
					#undef FORCE_COMMS
 | 
				
			||||||
void *CartesianCommunicator::ShmBufferSelf(void)
 | 
					void *CartesianCommunicator::ShmBufferSelf(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return ShmCommBufs[ShmRank];
 | 
					  return ShmCommBufs[ShmRank];
 | 
				
			||||||
@@ -484,13 +484,13 @@ CartesianCommunicator::CartesianCommunicator(const std::vector<int> &processors)
 | 
				
			|||||||
	assert(coor[j] == _processor_coor[j]);
 | 
						assert(coor[j] == _processor_coor[j]);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
    std::cout << GridLogMessage<< " Lexicographic "<<i;
 | 
					    std::cout << GridLogMessage<< " Lexicographic "<<i;
 | 
				
			||||||
    std::cout << " MPI rank      "<<wr;
 | 
					    std::cout << " MPI rank      "<<wr;
 | 
				
			||||||
    std::cout << " Coor          ";
 | 
					    std::cout << " Coor          ";
 | 
				
			||||||
    for(int j=0;j<coor.size();j++) std::cout << coor[j];
 | 
					    for(int j=0;j<coor.size();j++) std::cout << coor[j];
 | 
				
			||||||
    std::cout<< std::endl;
 | 
					    std::cout<< std::endl;
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
    /////////////////////////////////////////////////////
 | 
					    /////////////////////////////////////////////////////
 | 
				
			||||||
    // Check everyone agrees on everyone elses coords
 | 
					    // Check everyone agrees on everyone elses coords
 | 
				
			||||||
    /////////////////////////////////////////////////////
 | 
					    /////////////////////////////////////////////////////
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -324,6 +324,8 @@ static inline int readHeader(std::string file,GridBase *grid,  NerscField &field
 | 
				
			|||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
// Now the meat: the object readers
 | 
					// Now the meat: the object readers
 | 
				
			||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
					/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					#define PARALLEL_READ
 | 
				
			||||||
 | 
					#define PARALLEL_WRITE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template<class vsimd>
 | 
					template<class vsimd>
 | 
				
			||||||
static inline void readConfiguration(Lattice<iLorentzColourMatrix<vsimd> > &Umu,NerscField& header,std::string file)
 | 
					static inline void readConfiguration(Lattice<iLorentzColourMatrix<vsimd> > &Umu,NerscField& header,std::string file)
 | 
				
			||||||
@@ -347,25 +349,41 @@ static inline void readConfiguration(Lattice<iLorentzColourMatrix<vsimd> > &Umu,
 | 
				
			|||||||
  // munger is a function of <floating point, Real, data_type>
 | 
					  // munger is a function of <floating point, Real, data_type>
 | 
				
			||||||
  if ( header.data_type == std::string("4D_SU3_GAUGE") ) {
 | 
					  if ( header.data_type == std::string("4D_SU3_GAUGE") ) {
 | 
				
			||||||
    if ( ieee32 || ieee32big ) {
 | 
					    if ( ieee32 || ieee32big ) {
 | 
				
			||||||
      csum=BinaryIO::readObjectSerial<iLorentzColourMatrix<vsimd>, LorentzColour2x3F> 
 | 
					#ifdef PARALLEL_READ
 | 
				
			||||||
	//	csum=BinaryIO::readObjectParallel<iLorentzColourMatrix<vsimd>, LorentzColour2x3F> 
 | 
					      csum=BinaryIO::readObjectParallel<iLorentzColourMatrix<vsimd>, LorentzColour2x3F> 
 | 
				
			||||||
	(Umu,file,Nersc3x2munger<LorentzColour2x3F,LorentzColourMatrix>(), offset,format);
 | 
						(Umu,file,Nersc3x2munger<LorentzColour2x3F,LorentzColourMatrix>(), offset,format);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					      csum=BinaryIO::readObjectSerial<iLorentzColourMatrix<vsimd>, LorentzColour2x3F> 
 | 
				
			||||||
 | 
						(Umu,file,Nersc3x2munger<LorentzColour2x3F,LorentzColourMatrix>(), offset,format);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ( ieee64 || ieee64big ) {
 | 
					    if ( ieee64 || ieee64big ) {
 | 
				
			||||||
      csum=BinaryIO::readObjectSerial<iLorentzColourMatrix<vsimd>, LorentzColour2x3D> 
 | 
					#ifdef PARALLEL_READ
 | 
				
			||||||
	//   csum=BinaryIO::readObjectParallel<iLorentzColourMatrix<vsimd>, LorentzColour2x3D> 
 | 
					      csum=BinaryIO::readObjectParallel<iLorentzColourMatrix<vsimd>, LorentzColour2x3D> 
 | 
				
			||||||
      	(Umu,file,Nersc3x2munger<LorentzColour2x3D,LorentzColourMatrix>(),offset,format);
 | 
					      	(Umu,file,Nersc3x2munger<LorentzColour2x3D,LorentzColourMatrix>(),offset,format);
 | 
				
			||||||
 | 
					#else 
 | 
				
			||||||
 | 
					      csum=BinaryIO::readObjectSerial<iLorentzColourMatrix<vsimd>, LorentzColour2x3D> 
 | 
				
			||||||
 | 
					      	(Umu,file,Nersc3x2munger<LorentzColour2x3D,LorentzColourMatrix>(),offset,format);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else if ( header.data_type == std::string("4D_SU3_GAUGE_3x3") ) {
 | 
					  } else if ( header.data_type == std::string("4D_SU3_GAUGE_3x3") ) {
 | 
				
			||||||
    if ( ieee32 || ieee32big ) {
 | 
					    if ( ieee32 || ieee32big ) {
 | 
				
			||||||
      csum=BinaryIO::readObjectSerial<iLorentzColourMatrix<vsimd>,LorentzColourMatrixF>
 | 
					#ifdef PARALLEL_READ
 | 
				
			||||||
	//csum=BinaryIO::readObjectParallel<iLorentzColourMatrix<vsimd>,LorentzColourMatrixF>
 | 
					      csum=BinaryIO::readObjectParallel<iLorentzColourMatrix<vsimd>,LorentzColourMatrixF>
 | 
				
			||||||
	(Umu,file,NerscSimpleMunger<LorentzColourMatrixF,LorentzColourMatrix>(),offset,format);
 | 
						(Umu,file,NerscSimpleMunger<LorentzColourMatrixF,LorentzColourMatrix>(),offset,format);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					      csum=BinaryIO::readObjectSerial<iLorentzColourMatrix<vsimd>,LorentzColourMatrixF>
 | 
				
			||||||
 | 
						(Umu,file,NerscSimpleMunger<LorentzColourMatrixF,LorentzColourMatrix>(),offset,format);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ( ieee64 || ieee64big ) {
 | 
					    if ( ieee64 || ieee64big ) {
 | 
				
			||||||
      csum=BinaryIO::readObjectSerial<iLorentzColourMatrix<vsimd>,LorentzColourMatrixD>
 | 
					#ifdef PARALLEL_READ
 | 
				
			||||||
	// csum=BinaryIO::readObjectParallel<iLorentzColourMatrix<vsimd>,LorentzColourMatrixD>
 | 
					      csum=BinaryIO::readObjectParallel<iLorentzColourMatrix<vsimd>,LorentzColourMatrixD>
 | 
				
			||||||
	(Umu,file,NerscSimpleMunger<LorentzColourMatrixD,LorentzColourMatrix>(),offset,format);
 | 
						(Umu,file,NerscSimpleMunger<LorentzColourMatrixD,LorentzColourMatrix>(),offset,format);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					      csum=BinaryIO::readObjectSerial<iLorentzColourMatrix<vsimd>,LorentzColourMatrixD>
 | 
				
			||||||
 | 
						(Umu,file,NerscSimpleMunger<LorentzColourMatrixD,LorentzColourMatrix>(),offset,format);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    assert(0);
 | 
					    assert(0);
 | 
				
			||||||
@@ -423,8 +441,11 @@ static inline void writeConfiguration(Lattice<iLorentzColourMatrix<vsimd> > &Umu
 | 
				
			|||||||
    Nersc3x2unmunger<fobj2D,sobj> munge;
 | 
					    Nersc3x2unmunger<fobj2D,sobj> munge;
 | 
				
			||||||
    BinaryIO::Uint32Checksum<vobj,fobj2D>(Umu, munge,header.checksum);
 | 
					    BinaryIO::Uint32Checksum<vobj,fobj2D>(Umu, munge,header.checksum);
 | 
				
			||||||
    offset = writeHeader(header,file);
 | 
					    offset = writeHeader(header,file);
 | 
				
			||||||
    //    csum=BinaryIO::writeObjectSerial<vobj,fobj2D>(Umu,file,munge,offset,header.floating_point);
 | 
					#ifdef PARALLEL_WRITE
 | 
				
			||||||
    csum=BinaryIO::writeObjectParallel<vobj,fobj2D>(Umu,file,munge,offset,header.floating_point);
 | 
					    csum=BinaryIO::writeObjectParallel<vobj,fobj2D>(Umu,file,munge,offset,header.floating_point);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    csum=BinaryIO::writeObjectSerial<vobj,fobj2D>(Umu,file,munge,offset,header.floating_point);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  } else { 
 | 
					  } else { 
 | 
				
			||||||
    header.floating_point = std::string("IEEE64BIG");
 | 
					    header.floating_point = std::string("IEEE64BIG");
 | 
				
			||||||
@@ -432,8 +453,11 @@ static inline void writeConfiguration(Lattice<iLorentzColourMatrix<vsimd> > &Umu
 | 
				
			|||||||
    NerscSimpleUnmunger<fobj3D,sobj> munge;
 | 
					    NerscSimpleUnmunger<fobj3D,sobj> munge;
 | 
				
			||||||
    BinaryIO::Uint32Checksum<vobj,fobj3D>(Umu, munge,header.checksum);
 | 
					    BinaryIO::Uint32Checksum<vobj,fobj3D>(Umu, munge,header.checksum);
 | 
				
			||||||
    offset = writeHeader(header,file);
 | 
					    offset = writeHeader(header,file);
 | 
				
			||||||
    //    csum=BinaryIO::writeObjectSerial<vobj,fobj3D>(Umu,file,munge,offset,header.floating_point);
 | 
					#ifdef PARALLEL_WRITE
 | 
				
			||||||
    csum=BinaryIO::writeObjectParallel<vobj,fobj3D>(Umu,file,munge,offset,header.floating_point);
 | 
					    csum=BinaryIO::writeObjectParallel<vobj,fobj3D>(Umu,file,munge,offset,header.floating_point);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    csum=BinaryIO::writeObjectSerial<vobj,fobj3D>(Umu,file,munge,offset,header.floating_point);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::cout<<GridLogMessage <<"Written NERSC Configuration "<<file<< " checksum "<<std::hex<<csum<< std::dec<<" plaq "<< header.plaquette <<std::endl;
 | 
					  std::cout<<GridLogMessage <<"Written NERSC Configuration "<<file<< " checksum "<<std::hex<<csum<< std::dec<<" plaq "<< header.plaquette <<std::endl;
 | 
				
			||||||
@@ -507,8 +531,6 @@ static inline void readRNGState(GridSerialRNG &serial,GridParallelRNG & parallel
 | 
				
			|||||||
  // munger is a function of <floating point, Real, data_type>
 | 
					  // munger is a function of <floating point, Real, data_type>
 | 
				
			||||||
  uint32_t csum=BinaryIO::readRNGSerial(serial,parallel,file,offset);
 | 
					  uint32_t csum=BinaryIO::readRNGSerial(serial,parallel,file,offset);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::cerr<<" Csum "<< csum << " "<< header.checksum <<std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  assert(csum == header.checksum );
 | 
					  assert(csum == header.checksum );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::cout<<GridLogMessage <<"Read NERSC RNG file "<<file<< " format "<< data_type <<std::endl;
 | 
					  std::cout<<GridLogMessage <<"Read NERSC RNG file "<<file<< " format "<< data_type <<std::endl;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user