1
0
mirror of https://github.com/paboyle/Grid.git synced 2024-09-21 01:25:48 +01:00
Grid/lib/qcd/hmc/checkpointers/BaseCheckpointer.h

90 lines
2.7 KiB
C
Raw Normal View History

2017-01-05 13:09:32 +00:00
/*************************************************************************************
Grid physics library, www.github.com/paboyle/Grid
Source file: ./lib/qcd/hmc/BaseCheckpointer.h
Copyright (C) 2015
Author: Guido Cossu <guido.cossu@ed.ac.uk>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
See the full license in the file "LICENSE" in the top level distribution
directory
*************************************************************************************/
2018-01-14 22:30:54 +00:00
/* END LEGAL */
2017-01-05 13:09:32 +00:00
#ifndef BASE_CHECKPOINTER
#define BASE_CHECKPOINTER
2018-01-14 22:30:54 +00:00
NAMESPACE_BEGIN(Grid);
2017-01-16 10:18:09 +00:00
class CheckpointerParameters : Serializable {
2018-01-14 22:30:54 +00:00
public:
2017-01-16 10:18:09 +00:00
GRID_SERIALIZABLE_CLASS_MEMBERS(CheckpointerParameters,
2018-01-14 22:30:54 +00:00
std::string, config_prefix,
std::string, rng_prefix,
int, saveInterval,
std::string, format, );
2017-01-16 10:18:09 +00:00
CheckpointerParameters(std::string cf = "cfg", std::string rn = "rng",
2018-01-14 22:30:54 +00:00
int savemodulo = 1, const std::string &f = "IEEE64BIG")
: config_prefix(cf),
rng_prefix(rn),
saveInterval(savemodulo),
format(f){};
2017-01-16 10:18:09 +00:00
template <class ReaderClass >
CheckpointerParameters(Reader<ReaderClass> &Reader) {
2017-01-16 10:18:09 +00:00
read(Reader, "Checkpointer", *this);
}
};
2017-01-05 13:09:32 +00:00
//////////////////////////////////////////////////////////////////////////////
// Base class for checkpointers
template <class Impl>
class BaseHmcCheckpointer : public HmcObservable<typename Impl::Field> {
2018-01-14 22:30:54 +00:00
public:
void build_filenames(int traj, CheckpointerParameters &Params,
std::string &conf_file, std::string &rng_file) {
{
std::ostringstream os;
os << Params.rng_prefix << "." << traj;
rng_file = os.str();
}
{
std::ostringstream os;
os << Params.config_prefix << "." << traj;
conf_file = os.str();
}
2018-01-14 22:30:54 +00:00
}
virtual void initialize(const CheckpointerParameters &Params) = 0;
2017-01-05 13:09:32 +00:00
virtual void CheckpointRestore(int traj, typename Impl::Field &U,
GridSerialRNG &sRNG,
GridParallelRNG &pRNG) = 0;
}; // class BaseHmcCheckpointer
///////////////////////////////////////////////////////////////////////////////
2018-01-14 22:30:54 +00:00
NAMESPACE_END(Grid);
2017-01-05 13:09:32 +00:00
#endif