1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-06-19 00:07:05 +01:00

Merge branch 'develop' into feature/distil

* develop: (27 commits)
  Update README.md
  result layout standardised, iterator size more elegant
  updated syntac in Test_hadrons_spectrum
  chroma-regression test now prints difference correctly
  baryon input strings are now pairs of pairs of gammas - still ugly!!
  second update to pull request
  Changing back interface for Gamma3pt
  Removing old debug code
  Changes to A2Autils
  suggested changes for 1st pull request implemented
  changed input parameters for easier use
  Should compile everywhere now
  changed baryon interface
  added author information
  ready for pull request
  code compiling now - still need to test
  Baryons module works in 1 of 3 cases - still need SlicedProp and Msource part!!
  thread_for caused the problems - slow for loop for now
  still bugfix
  weird bug...
  ...

# Conflicts:
#	Hadrons/Modules.hpp
#	Hadrons/modules.inc
This commit is contained in:
Michael Marshall
2019-10-30 14:13:00 +00:00
16 changed files with 1886 additions and 483 deletions

View File

@ -0,0 +1,7 @@
#include <Hadrons/Modules/MIO/LoadA2AMatrixDiskVector.hpp>
using namespace Grid;
using namespace Hadrons;
using namespace MIO;
template class Grid::Hadrons::MIO::TLoadA2AMatrixDiskVector<FIMPL>;

View File

@ -0,0 +1,115 @@
#ifndef Hadrons_MIO_LoadA2AMatrixDiskVector_hpp_
#define Hadrons_MIO_LoadA2AMatrixDiskVector_hpp_
#include <Hadrons/Global.hpp>
#include <Hadrons/Module.hpp>
#include <Hadrons/ModuleFactory.hpp>
#include <Hadrons/A2AMatrix.hpp>
#include <Hadrons/DiskVector.hpp>
BEGIN_HADRONS_NAMESPACE
/******************************************************************************
* LoadA2AMatrixDiskVector *
******************************************************************************/
BEGIN_MODULE_NAMESPACE(MIO)
class LoadA2AMatrixDiskVectorPar: Serializable
{
public:
GRID_SERIALIZABLE_CLASS_MEMBERS(LoadA2AMatrixDiskVectorPar,
std::string, file,
std::string, dataset,
std::string, diskVectorDir,
int, cacheSize);
};
template <typename FImpl>
class TLoadA2AMatrixDiskVector: public Module<LoadA2AMatrixDiskVectorPar>
{
public:
FERM_TYPE_ALIASES(FImpl, );
// constructor
TLoadA2AMatrixDiskVector(const std::string name);
// destructor
virtual ~TLoadA2AMatrixDiskVector(void) {};
// dependency relation
virtual std::vector<std::string> getInput(void);
virtual std::vector<std::string> getOutput(void);
// setup
virtual void setup(void);
// execution
virtual void execute(void);
};
MODULE_REGISTER_TMP(LoadA2AMatrixDiskVector, TLoadA2AMatrixDiskVector<FIMPL>, MIO);
/******************************************************************************
* TLoadA2AMatrixDiskVector implementation *
******************************************************************************/
// constructor /////////////////////////////////////////////////////////////////
template <typename FImpl>
TLoadA2AMatrixDiskVector<FImpl>::TLoadA2AMatrixDiskVector(const std::string name)
: Module<LoadA2AMatrixDiskVectorPar>(name)
{}
// dependencies/products ///////////////////////////////////////////////////////
template <typename FImpl>
std::vector<std::string> TLoadA2AMatrixDiskVector<FImpl>::getInput(void)
{
std::vector<std::string> in;
return in;
}
template <typename FImpl>
std::vector<std::string> TLoadA2AMatrixDiskVector<FImpl>::getOutput(void)
{
std::vector<std::string> out = {getName()};
return out;
}
// setup ///////////////////////////////////////////////////////////////////////
template <typename FImpl>
void TLoadA2AMatrixDiskVector<FImpl>::setup(void)
{
int Ls = 1;
std::string dvDir = par().diskVectorDir;
std::string dataset = par().dataset;
std::string dvFile = dvDir + "/" + getName() + "." + std::to_string(vm().getTrajectory());
int nt = env().getDim(Tp);
int cacheSize = par().cacheSize;
bool clean = true;
GridBase *grid = envGetGrid(FermionField);
envCreate(EigenDiskVector<ComplexD>, getName(), Ls, dvFile, nt, cacheSize, clean, grid);
}
// execution ///////////////////////////////////////////////////////////////////
template <typename FImpl>
void TLoadA2AMatrixDiskVector<FImpl>::execute(void)
{
int nt = env().getDim(Tp);
std::string file = par().file;
std::string dataset = par().dataset;
GridBase *grid = envGetGrid(FermionField);
auto &mesonFieldDV = envGet(EigenDiskVector<ComplexD>, getName());
int traj = vm().getTrajectory();
tokenReplace(file, "traj", traj);
LOG(Message) << "-- Loading '" << file << "'-- " << std::endl;
double t;
A2AMatrixIo<HADRONS_A2AM_IO_TYPE> mfIO(file, dataset, nt);
mfIO.load(mesonFieldDV, &t, grid);
LOG(Message) << "Read " << mfIO.getSize() << " bytes in " << t << " usec, " << mfIO.getSize() / t * 1.0e6 / 1024 / 1024 << " MB/s" << std::endl;
}
END_MODULE_NAMESPACE
END_HADRONS_NAMESPACE
#endif // Hadrons_MIO_LoadA2AMatrixDiskVector_hpp_