mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 05:54:32 +00:00 
			
		
		
		
	I/O improvements
This commit is contained in:
		@@ -62,36 +62,50 @@ class BinaryHmcCheckpointer : public BaseHmcCheckpointer<Impl> {
 | 
			
		||||
    fout.close();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void TrajectoryComplete(int traj, Field &U, GridSerialRNG &sRNG,
 | 
			
		||||
                          GridParallelRNG &pRNG) {
 | 
			
		||||
  void TrajectoryComplete(int traj, Field &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG) {
 | 
			
		||||
 | 
			
		||||
    if ((traj % Params.saveInterval) == 0) {
 | 
			
		||||
      std::string config, rng;
 | 
			
		||||
      this->build_filenames(traj, Params, config, rng);
 | 
			
		||||
 | 
			
		||||
      uint32_t nersc_csum;
 | 
			
		||||
      uint32_t scidac_csuma;
 | 
			
		||||
      uint32_t scidac_csumb;
 | 
			
		||||
      
 | 
			
		||||
      BinarySimpleUnmunger<sobj_double, sobj> munge;
 | 
			
		||||
      truncate(rng);
 | 
			
		||||
      BinaryIO::writeRNG(sRNG, pRNG, rng, 0);
 | 
			
		||||
      BinaryIO::writeRNG(sRNG, pRNG, rng, 0,nersc_csum,scidac_csuma,scidac_csumb);
 | 
			
		||||
      truncate(config);
 | 
			
		||||
      uint32_t csum = BinaryIO::writeLatticeObject<vobj, sobj_double>(
 | 
			
		||||
          U, config, munge, 0, Params.format);
 | 
			
		||||
 | 
			
		||||
      BinaryIO::writeLatticeObject<vobj, sobj_double>(U, config, munge, 0, Params.format,
 | 
			
		||||
						      nersc_csum,scidac_csuma,scidac_csumb);
 | 
			
		||||
 | 
			
		||||
      std::cout << GridLogMessage << "Written Binary Configuration " << config
 | 
			
		||||
                << " checksum " << std::hex << csum << std::dec << std::endl;
 | 
			
		||||
                << " checksum " << std::hex 
 | 
			
		||||
		<< nersc_csum   <<"/"
 | 
			
		||||
		<< scidac_csuma   <<"/"
 | 
			
		||||
		<< scidac_csumb 
 | 
			
		||||
		<< std::dec << std::endl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  void CheckpointRestore(int traj, Field &U, GridSerialRNG &sRNG,
 | 
			
		||||
                         GridParallelRNG &pRNG) {
 | 
			
		||||
  void CheckpointRestore(int traj, Field &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG) {
 | 
			
		||||
    std::string config, rng;
 | 
			
		||||
    this->build_filenames(traj, Params, config, rng);
 | 
			
		||||
 | 
			
		||||
    BinarySimpleMunger<sobj_double, sobj> munge;
 | 
			
		||||
    BinaryIO::readRNG(sRNG, pRNG, rng, 0);
 | 
			
		||||
    uint32_t csum = BinaryIO::readLatticeObject<vobj, sobj_double>(
 | 
			
		||||
        U, config, munge, 0, Params.format);
 | 
			
		||||
 | 
			
		||||
    uint32_t nersc_csum;
 | 
			
		||||
    uint32_t scidac_csuma;
 | 
			
		||||
    uint32_t scidac_csumb;
 | 
			
		||||
    BinaryIO::readRNG(sRNG, pRNG, rng, 0,nersc_csum,scidac_csuma,scidac_csumb);
 | 
			
		||||
    BinaryIO::readLatticeObject<vobj, sobj_double>(U, config, munge, 0, Params.format,
 | 
			
		||||
						   nersc_csum,scidac_csuma,scidac_csumb);
 | 
			
		||||
    
 | 
			
		||||
    std::cout << GridLogMessage << "Read Binary Configuration " << config
 | 
			
		||||
              << " checksum " << std::hex << csum << std::dec << std::endl;
 | 
			
		||||
              << " checksums " << std::hex << nersc_csum<<"/"<<scidac_csuma<<"/"<<scidac_csumb 
 | 
			
		||||
	      << std::dec << std::endl;
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -54,9 +54,9 @@ class ILDGHmcCheckpointer : public BaseHmcCheckpointer<Implementation> {
 | 
			
		||||
 | 
			
		||||
    // check here that the format is valid
 | 
			
		||||
    int ieee32big = (Params.format == std::string("IEEE32BIG"));
 | 
			
		||||
    int ieee32 = (Params.format == std::string("IEEE32"));
 | 
			
		||||
    int ieee32    = (Params.format == std::string("IEEE32"));
 | 
			
		||||
    int ieee64big = (Params.format == std::string("IEEE64BIG"));
 | 
			
		||||
    int ieee64 = (Params.format == std::string("IEEE64"));
 | 
			
		||||
    int ieee64    = (Params.format == std::string("IEEE64"));
 | 
			
		||||
 | 
			
		||||
    if (!(ieee64big || ieee32 || ieee32big || ieee64)) {
 | 
			
		||||
      std::cout << GridLogError << "Unrecognized file format " << Params.format
 | 
			
		||||
@@ -74,13 +74,17 @@ class ILDGHmcCheckpointer : public BaseHmcCheckpointer<Implementation> {
 | 
			
		||||
    if ((traj % Params.saveInterval) == 0) {
 | 
			
		||||
      std::string config, rng;
 | 
			
		||||
      this->build_filenames(traj, Params, config, rng);
 | 
			
		||||
 | 
			
		||||
      ILDGIO IO(config, ILDGwrite);
 | 
			
		||||
      BinaryIO::writeRNGSerial(sRNG, pRNG, rng, 0);
 | 
			
		||||
      uint32_t csum = IO.writeConfiguration(U, Params.format);
 | 
			
		||||
      
 | 
			
		||||
      uint32_t nersc_csum,scidac_csuma,scidac_csumb;
 | 
			
		||||
      BinaryIO::writeRNG(sRNG, pRNG, rng, 0,nersc_csum,scidac_csuma,scidac_csumb);
 | 
			
		||||
      IldgIO::writeConfiguration(config,U, Params.format);
 | 
			
		||||
 | 
			
		||||
      std::cout << GridLogMessage << "Written ILDG Configuration on " << config
 | 
			
		||||
                << " checksum " << std::hex << csum << std::dec << std::endl;
 | 
			
		||||
                << " checksum " << std::hex 
 | 
			
		||||
		<< nersc_csum<<"/"
 | 
			
		||||
		<< scidac_csuma<<"/"
 | 
			
		||||
		<< scidac_csumb
 | 
			
		||||
		<< std::dec << std::endl;
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@@ -89,12 +93,18 @@ class ILDGHmcCheckpointer : public BaseHmcCheckpointer<Implementation> {
 | 
			
		||||
    std::string config, rng;
 | 
			
		||||
    this->build_filenames(traj, Params, config, rng);
 | 
			
		||||
 | 
			
		||||
    ILDGIO IO(config, ILDGread);
 | 
			
		||||
    BinaryIO::readRNGSerial(sRNG, pRNG, rng, 0);
 | 
			
		||||
    uint32_t csum = IO.readConfiguration(U);  // format from the header
 | 
			
		||||
    uint32_t nersc_csum,scidac_csuma,scidac_csumb;
 | 
			
		||||
    BinaryIO::readRNG(sRNG, pRNG, rng, 0,nersc_csum,scidac_csuma,scidac_csumb);
 | 
			
		||||
 | 
			
		||||
    FieldMetaData header;
 | 
			
		||||
    IldgIO::readConfiguration(config,U,header);  // format from the header
 | 
			
		||||
 | 
			
		||||
    std::cout << GridLogMessage << "Read ILDG Configuration from " << config
 | 
			
		||||
              << " checksum " << std::hex << csum << std::dec << std::endl;
 | 
			
		||||
              << " checksum " << std::hex 
 | 
			
		||||
	      << nersc_csum<<"/"
 | 
			
		||||
	      << scidac_csuma<<"/"
 | 
			
		||||
	      << scidac_csumb
 | 
			
		||||
	      << std::dec << std::endl;
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -70,7 +70,7 @@ class NerscHmcCheckpointer : public BaseHmcCheckpointer<Gimpl> {
 | 
			
		||||
    std::string config, rng;
 | 
			
		||||
    this->build_filenames(traj, Params, config, rng);
 | 
			
		||||
 | 
			
		||||
    NerscField header;
 | 
			
		||||
    FieldMetaData header;
 | 
			
		||||
    NerscIO::readRNGState(sRNG, pRNG, header, rng);
 | 
			
		||||
    NerscIO::readConfiguration(U, header, config);
 | 
			
		||||
  };
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user