![]() |
QMCPACK
|
An abstract class for gridded estimators. More...
Public Types | |
using | QMCT = QMCTraits |
using | FullPrecRealType = QMCT::FullPrecRealType |
using | MCPWalker = Walker< QMCTraits, PtclOnLatticeTraits > |
using | Data = std::vector< QMCT::RealType > |
Public Member Functions | |
OperatorEstBase (DataLocality dl) | |
constructor More... | |
OperatorEstBase (const OperatorEstBase &oth) | |
Shallow copy constructor! This alows us to keep the default copy constructors for derived classes which is quite useful to the spawnCrowdClone design. More... | |
virtual | ~OperatorEstBase ()=default |
virtual destructor More... | |
virtual void | accumulate (const RefVector< MCPWalker > &walkers, const RefVector< ParticleSet > &psets, const RefVector< TrialWaveFunction > &wfns, const RefVector< QMCHamiltonian > &hams, RandomBase< FullPrecRealType > &rng)=0 |
Accumulate whatever it is you are accumulating with respect to walkers. More... | |
virtual void | collect (const RefVector< OperatorEstBase > &oebs) |
Reduce estimator result data from crowds to rank. More... | |
virtual void | normalize (QMCT::RealType invToWgt) |
virtual void | startBlock (int steps)=0 |
std::vector< QMCT::RealType > & | get_data () |
virtual void | registerOperatorEstimator (hdf_archive &file) |
virtual std::unique_ptr< OperatorEstBase > | spawnCrowdClone () const =0 |
void | write (hdf_archive &file) |
Write to previously registered observable_helper hdf5 wrapper. More... | |
void | zero () |
zero data appropriately for the DataLocality More... | |
QMCT::FullPrecRealType | get_walkers_weight () const |
Return the total walker weight for this block. More... | |
const std::string & | get_my_name () const |
virtual void | registerListeners (QMCHamiltonian &ham_leader) |
Register 0-many listeners with a leading QMCHamiltonian instance i.e. More... | |
bool | isListenerRequired () |
DataLocality | get_data_locality () const |
Protected Attributes | |
DataLocality | data_locality_ |
locality for accumulation of estimator data. More... | |
std::string | my_name_ |
name of this object – only used for debugging and h5 output More... | |
QMCT::FullPrecRealType | walkers_weight_ |
std::vector< ObservableHelper > | h5desc_ |
Data | data_ |
bool | requires_listener_ = false |
An abstract class for gridded estimators.
Definition at line 39 of file OperatorEstBase.h.
using Data = std::vector<QMCT::RealType> |
Definition at line 46 of file OperatorEstBase.h.
Definition at line 43 of file OperatorEstBase.h.
using MCPWalker = Walker<QMCTraits, PtclOnLatticeTraits> |
Definition at line 44 of file OperatorEstBase.h.
Definition at line 42 of file OperatorEstBase.h.
OperatorEstBase | ( | DataLocality | dl | ) |
constructor
Definition at line 20 of file OperatorEstBase.cpp.
OperatorEstBase | ( | const OperatorEstBase & | oth | ) |
Shallow copy constructor! This alows us to keep the default copy constructors for derived classes which is quite useful to the spawnCrowdClone design.
Data is likely to be quite large and since the OperatorEstBase design is that the children reduce to the parent it is infact undesirable for them to copy the data the parent has. Initialization of Data (i.e. call to resize) if any is the responsibility of the derived class.
Definition at line 22 of file OperatorEstBase.cpp.
|
virtualdefault |
virtual destructor
|
pure virtual |
Accumulate whatever it is you are accumulating with respect to walkers.
This method is assumed to be called from the crowd context It provides parallelism with respect to computational effort of the estimator without causing a global sync. Depending on data locality the accumlation of the result may be different from the single thread write directly into the OperatorEstimator data.
[in] | walkers | |
[in,out] | pset_target | crowd scope target pset (should be returned to starting state after call) |
[in] | psets | per walker psets |
[in] | wnfs | per walker TrialWaveFunction |
[in,out] | rng | crowd scope RandomGenerator |
Implemented in MomentumDistribution, SpinDensityNew, SelfHealingOverlap, PerParticleHamiltonianLogger, and FakeOperatorEstimator.
|
virtual |
Reduce estimator result data from crowds to rank.
This is assumed to be called from only from one thread per crowds->rank reduction. Implied is this is during a global sync or there is a guarantee that the crowd operator estimators accumulation data is not being written to.
There could be concurrent operations inside the scope of the collect call.
Reimplemented in MomentumDistribution, SpinDensityNew, SelfHealingOverlap, MagnetizationDensity, and PerParticleHamiltonianLogger.
Definition at line 26 of file OperatorEstBase.cpp.
References OperatorEstBase::data_, and OperatorEstBase::walkers_weight_.
Referenced by MagnetizationDensity::collect(), SelfHealingOverlap::collect(), SpinDensityNew::collect(), and MomentumDistribution::collect().
|
inline |
Definition at line 94 of file OperatorEstBase.h.
References OperatorEstBase::data_.
Referenced by SpinDensityNew::collect(), EstimatorManagerNewTest::fakeSomeOperatorEstimatorSamples(), and qmcplusplus::TEST_CASE().
|
inline |
Definition at line 134 of file OperatorEstBase.h.
References OperatorEstBase::data_locality_.
Referenced by MomentumDistributionTests::testCopyConstructor().
|
inline |
Definition at line 121 of file OperatorEstBase.h.
References OperatorEstBase::my_name_.
|
inline |
Return the total walker weight for this block.
Definition at line 119 of file OperatorEstBase.h.
References OperatorEstBase::walkers_weight_.
|
inline |
Definition at line 132 of file OperatorEstBase.h.
References OperatorEstBase::requires_listener_.
|
virtual |
|
inlinevirtual |
Register 0-many listeners with a leading QMCHamiltonian instance i.e.
a QMCHamiltonian that has acquired the crowd scope QMCHamiltonianMultiWalkerResource. This must be called for each crowd scope estimator that listens to register listeners into the crowd scope QMCHamiltonianMultiWalkerResource.
Many estimators don't need per particle values so the default implementation is no op.
Reimplemented in PerParticleHamiltonianLogger.
Definition at line 130 of file OperatorEstBase.h.
|
inlinevirtual |
Reimplemented in OneBodyDensityMatrices, MomentumDistribution, SpinDensityNew, SelfHealingOverlap, MagnetizationDensity, and FakeOperatorEstimator.
Definition at line 102 of file OperatorEstBase.h.
|
pure virtual |
|
pure virtual |
void write | ( | hdf_archive & | file | ) |
Write to previously registered observable_helper hdf5 wrapper.
if you haven't registered Operator Estimator this will do nothing.
Definition at line 42 of file OperatorEstBase.cpp.
References qmcplusplus::syclBLAS::copy_n(), OperatorEstBase::data_, OperatorEstBase::h5desc_, and hdf_archive::pop().
Referenced by OneBodyDensityMatricesTests< T >::testRegisterAndWrite().
void zero | ( | ) |
zero data appropriately for the DataLocality
Definition at line 64 of file OperatorEstBase.cpp.
References qmcplusplus::crowd, OperatorEstBase::data_, OperatorEstBase::data_locality_, qmcplusplus::rank, and OperatorEstBase::walkers_weight_.
|
protected |
Definition at line 158 of file OperatorEstBase.h.
Referenced by MagnetizationDensity::accumulate(), SelfHealingOverlap::accumulate(), MomentumDistribution::accumulate(), SpinDensityNew::accumulateToData(), OperatorEstBase::collect(), SpinDensityNew::collect(), OneBodyDensityMatricesTests< T >::dumpData(), OneBodyDensityMatrices::evaluateMatrix(), FakeOperatorEstimator::FakeOperatorEstimator(), OperatorEstBase::get_data(), MagnetizationDensity::MagnetizationDensity(), MomentumDistribution::MomentumDistribution(), OperatorEstBase::normalize(), OneBodyDensityMatrices::OneBodyDensityMatrices(), OEBAccessor::operator[](), SelfHealingOverlap::registerOperatorEstimator(), SelfHealingOverlap::SelfHealingOverlap(), PerParticleHamiltonianLogger::spawnCrowdClone(), SelfHealingOverlap::spawnCrowdClone(), MagnetizationDensity::spawnCrowdClone(), SpinDensityNew::spawnCrowdClone(), MomentumDistribution::spawnCrowdClone(), OneBodyDensityMatrices::spawnCrowdClone(), SpinDensityNew::SpinDensityNew(), SpinDensityNew::startBlock(), OneBodyDensityMatricesTests< T >::testAccumulate(), SpinDensityNewTests::testCopyConstructor(), MomentumDistributionTests::testCopyConstructor(), OneBodyDensityMatricesTests< T >::testCopyConstructor(), MagnetizationDensityTests::testData(), OneBodyDensityMatricesTests< T >::testEvaluateMatrix(), OneBodyDensityMatricesTests< T >::testRegisterAndWrite(), OperatorEstBase::write(), and OperatorEstBase::zero().
|
protected |
locality for accumulation of estimator data.
This designates the memory scheme used for the estimator The default is: DataLocality::Crowd, each crowd and the rank level estimator have a full representation of the data Memory Savings Schemes: One: DataLocality::Rank, This estimator has the full representation of the data but its crowd spawn will have One per crowd: DataLocality::Queue This estimator accumulates queue of values to collect to the Rank estimator data DataLocality::? Another way to reduce memory use on thread/crowd local estimators.
Definition at line 148 of file OperatorEstBase.h.
Referenced by SpinDensityNew::accumulateToData(), MagnetizationDensity::collect(), SelfHealingOverlap::collect(), SpinDensityNew::collect(), MomentumDistribution::collect(), FakeOperatorEstimator::FakeOperatorEstimator(), OperatorEstBase::get_data_locality(), MagnetizationDensity::MagnetizationDensity(), MomentumDistribution::MomentumDistribution(), OneBodyDensityMatrices::OneBodyDensityMatrices(), PerParticleHamiltonianLogger::PerParticleHamiltonianLogger(), SelfHealingOverlap::SelfHealingOverlap(), PerParticleHamiltonianLogger::spawnCrowdClone(), SelfHealingOverlap::spawnCrowdClone(), MagnetizationDensity::spawnCrowdClone(), SpinDensityNew::spawnCrowdClone(), MomentumDistribution::spawnCrowdClone(), OneBodyDensityMatrices::spawnCrowdClone(), SpinDensityNew::SpinDensityNew(), SpinDensityNew::startBlock(), MagnetizationDensityTests::testCopyConstructor(), and OperatorEstBase::zero().
|
protected |
Definition at line 156 of file OperatorEstBase.h.
Referenced by MagnetizationDensity::registerOperatorEstimator(), SelfHealingOverlap::registerOperatorEstimator(), SpinDensityNew::registerOperatorEstimator(), MomentumDistribution::registerOperatorEstimator(), OneBodyDensityMatrices::registerOperatorEstimator(), and OperatorEstBase::write().
|
protected |
name of this object – only used for debugging and h5 output
Definition at line 151 of file OperatorEstBase.h.
Referenced by OperatorEstBase::get_my_name(), MagnetizationDensity::MagnetizationDensity(), MomentumDistribution::MomentumDistribution(), OneBodyDensityMatrices::OneBodyDensityMatrices(), PerParticleHamiltonianLogger::PerParticleHamiltonianLogger(), MagnetizationDensity::registerOperatorEstimator(), SpinDensityNew::registerOperatorEstimator(), OneBodyDensityMatrices::registerOperatorEstimator(), and SpinDensityNew::SpinDensityNew().
|
protected |
Definition at line 160 of file OperatorEstBase.h.
Referenced by OperatorEstBase::isListenerRequired(), and PerParticleHamiltonianLogger::PerParticleHamiltonianLogger().
|
protected |
Definition at line 153 of file OperatorEstBase.h.
Referenced by MagnetizationDensity::accumulate(), SelfHealingOverlap::accumulate(), SpinDensityNew::accumulate(), MomentumDistribution::accumulate(), OperatorEstBase::collect(), SpinDensityNew::collect(), OperatorEstBase::get_walkers_weight(), OneBodyDensityMatrices::implAccumulate(), FakeOperatorEstimator::set_walker_weights(), and OperatorEstBase::zero().