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:
7
Hadrons/Modules/MIO/LoadA2AMatrixDiskVector.cc
Normal file
7
Hadrons/Modules/MIO/LoadA2AMatrixDiskVector.cc
Normal 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>;
|
115
Hadrons/Modules/MIO/LoadA2AMatrixDiskVector.hpp
Normal file
115
Hadrons/Modules/MIO/LoadA2AMatrixDiskVector.hpp
Normal 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_
|
Reference in New Issue
Block a user