mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 21:50:45 +01:00
added Serial RNG - code compiles but not tested!
This commit is contained in:
parent
5c23abe507
commit
a8f3a111a5
@ -84,6 +84,16 @@ GridParallelRNG * Environment::get4dRng(void)
|
|||||||
return rng4d_.get();
|
return rng4d_.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GridSerialRNG * Environment::getSerialRng(void)
|
||||||
|
{
|
||||||
|
if (rngSerial_ == nullptr)
|
||||||
|
{
|
||||||
|
rngSerial_.reset(new GridSerialRNG());
|
||||||
|
}
|
||||||
|
|
||||||
|
return rngSerial_.get();
|
||||||
|
}
|
||||||
|
|
||||||
// general memory management ///////////////////////////////////////////////////
|
// general memory management ///////////////////////////////////////////////////
|
||||||
void Environment::addObject(const std::string name, const int moduleAddress)
|
void Environment::addObject(const std::string name, const int moduleAddress)
|
||||||
{
|
{
|
||||||
|
@ -74,6 +74,7 @@ public:
|
|||||||
typedef std::unique_ptr<GridCartesian> GridPt;
|
typedef std::unique_ptr<GridCartesian> GridPt;
|
||||||
typedef std::unique_ptr<GridRedBlackCartesian> GridRbPt;
|
typedef std::unique_ptr<GridRedBlackCartesian> GridRbPt;
|
||||||
typedef std::unique_ptr<GridParallelRNG> RngPt;
|
typedef std::unique_ptr<GridParallelRNG> RngPt;
|
||||||
|
typedef std::unique_ptr<GridSerialRNG> SerialRngPt;
|
||||||
enum class Storage {object, cache, temporary};
|
enum class Storage {object, cache, temporary};
|
||||||
private:
|
private:
|
||||||
struct ObjInfo
|
struct ObjInfo
|
||||||
@ -114,6 +115,7 @@ public:
|
|||||||
double getVolume(void) const;
|
double getVolume(void) const;
|
||||||
// random number generator
|
// random number generator
|
||||||
GridParallelRNG * get4dRng(void);
|
GridParallelRNG * get4dRng(void);
|
||||||
|
GridSerialRNG * getSerialRng(void);
|
||||||
// general memory management
|
// general memory management
|
||||||
void addObject(const std::string name,
|
void addObject(const std::string name,
|
||||||
const int moduleAddress = -1);
|
const int moduleAddress = -1);
|
||||||
@ -183,6 +185,7 @@ private:
|
|||||||
unsigned int nd_;
|
unsigned int nd_;
|
||||||
// random number generator
|
// random number generator
|
||||||
RngPt rng4d_{nullptr};
|
RngPt rng4d_{nullptr};
|
||||||
|
SerialRngPt rngSerial_{nullptr};
|
||||||
// object store
|
// object store
|
||||||
std::vector<ObjInfo> object_;
|
std::vector<ObjInfo> object_;
|
||||||
std::map<std::string, unsigned int> objectAddress_;
|
std::map<std::string, unsigned int> objectAddress_;
|
||||||
|
@ -93,3 +93,18 @@ GridParallelRNG & ModuleBase::rng4d(void)
|
|||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GridSerialRNG & ModuleBase::rngSerial(void)
|
||||||
|
{
|
||||||
|
auto &r = *env().getSerialRng();
|
||||||
|
|
||||||
|
if (makeSeedString() != seed_)
|
||||||
|
{
|
||||||
|
seed_ = makeSeedString();
|
||||||
|
LOG(Message) << "Seeding Serial RNG " << &r << " with string '"
|
||||||
|
<< seed_ << "'" << std::endl;
|
||||||
|
r.SeedUniqueString(seed_);
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
/*************************************************************************************
|
/*************************************************************************************
|
||||||
|
|
||||||
Grid physics library, www.github.com/paboyle/Grid
|
Grid physics library, www.github.com/paboyle/Grid
|
||||||
|
|
||||||
Source file: Hadrons/Module.hpp
|
Source file: Hadrons/Module.hpp
|
||||||
|
|
||||||
Copyright (C) 2015-2019
|
Copyright (C) 2015-2019
|
||||||
@ -196,6 +195,7 @@ protected:
|
|||||||
DEFINE_VM_ALIAS;
|
DEFINE_VM_ALIAS;
|
||||||
// RNG seeded from module string
|
// RNG seeded from module string
|
||||||
GridParallelRNG &rng4d(void);
|
GridParallelRNG &rng4d(void);
|
||||||
|
GridSerialRNG &rngSerial(void);
|
||||||
private:
|
private:
|
||||||
std::string makeSeedString(void);
|
std::string makeSeedString(void);
|
||||||
private:
|
private:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user