39template <
class Implementation,
class Metadata>
42 CheckpointerParameters Params;
45 typedef typename Implementation::Field Field;
50 ScidacHmcCheckpointer(
const CheckpointerParameters &Params_) {
initialize(Params_); }
51 ScidacHmcCheckpointer(
const CheckpointerParameters &Params_,
const Metadata& M_):MData(M_) {
initialize(Params_); }
53 void initialize(
const CheckpointerParameters &Params_) {
57 int ieee32big = (Params.format == std::string(
"IEEE32BIG"));
58 int ieee32 = (Params.format == std::string(
"IEEE32"));
59 int ieee64big = (Params.format == std::string(
"IEEE64BIG"));
60 int ieee64 = (Params.format == std::string(
"IEEE64"));
62 if (!(ieee64big || ieee32 || ieee32big || ieee64)) {
63 std::cout <<
GridLogError <<
"Unrecognized file format " << Params.format
66 <<
"Allowed: IEEE32BIG | IEEE32 | IEEE64BIG | IEEE64"
74 ConfigurationBase<Field> &SmartConfig,
76 GridParallelRNG &pRNG) {
77 if ((traj % Params.saveInterval) == 0) {
78 std::string config, rng,smr;
80 GridBase *grid = SmartConfig.
get_U(
false).Grid();
81 uint32_t nersc_csum,scidac_csuma,scidac_csumb;
84 <<
" checksum " << std::hex
88 << std::dec << std::endl;
92 ScidacWriter _ScidacWriter(grid->
IsBoss());
93 _ScidacWriter.open(config);
94 _ScidacWriter.writeScidacFieldRecord(SmartConfig.
get_U(
false), MData);
95 _ScidacWriter.close();
98 if ( Params.saveSmeared ) {
99 ScidacWriter _ScidacWriter(grid->
IsBoss());
100 _ScidacWriter.open(smr);
101 _ScidacWriter.writeScidacFieldRecord(SmartConfig.
get_U(
true), MData);
102 _ScidacWriter.close();
104 std::cout <<
GridLogMessage <<
"Written Scidac Configuration on " << config << std::endl;
109 GridParallelRNG &pRNG) {
110 std::string config, rng, smr;
116 uint32_t nersc_csum,scidac_csuma,scidac_csumb;
120 ScidacReader _ScidacReader;
121 _ScidacReader.open(config);
122 _ScidacReader.readScidacFieldRecord(
U,md_content);
123 _ScidacReader.close();
125 std::cout <<
GridLogMessage <<
"Read Scidac Configuration from " << config
126 <<
" checksum " << std::hex
130 << std::dec << std::endl;
GridLogger GridLogError(1, "Error", GridLogColours, "RED")
GridLogger GridLogMessage(1, "Message", GridLogColours, "NORMAL")
#define NAMESPACE_BEGIN(A)
static INTERNAL_PRECISION U
virtual void TrajectoryComplete(int traj, typename Impl::Field &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG)
virtual void CheckpointRestore(int traj, typename Impl::Field &U, GridSerialRNG &sRNG, GridParallelRNG &pRNG)=0
void build_filenames(int traj, CheckpointerParameters &Params, std::string &conf_file, std::string &smear_file, std::string &rng_file)
void check_filename(const std::string &filename)
virtual void initialize(const CheckpointerParameters &Params)=0
static void readRNG(GridSerialRNG &serial_rng, GridParallelRNG ¶llel_rng, std::string file, uint64_t offset, uint32_t &nersc_csum, uint32_t &scidac_csuma, uint32_t &scidac_csumb)
static void writeRNG(GridSerialRNG &serial_rng, GridParallelRNG ¶llel_rng, std::string file, uint64_t offset, uint32_t &nersc_csum, uint32_t &scidac_csuma, uint32_t &scidac_csumb)
virtual Field & get_U(bool smeared=false)=0