Use DriverWalker instead of FatWalker.

This commit is contained in:
Ye Luo 2021-03-01 14:54:08 -06:00
parent 99bcbcbd6f
commit c8fe44c44e
10 changed files with 25 additions and 25 deletions

View File

@ -13,7 +13,7 @@
namespace qmcplusplus
{
Crowd::Crowd(EstimatorManagerNew& emb,
const FatWalkerResourceCollection& fatwalker_res,
const DriverWalkerResourceCollection& fatwalker_res,
const MultiWalkerDispatchers& dispatchers)
: dispatchers_(dispatchers), fatwalker_resource_collection_(fatwalker_res), estimator_manager_crowd_(emb)
{}

View File

@ -16,7 +16,7 @@
#include "Estimators/EstimatorManagerCrowd.h"
#include "RandomGenerator.h"
#include "MultiWalkerDispatchers.h"
#include "FatWalkerTypes.h"
#include "DriverWalkerTypes.h"
namespace qmcplusplus
{
@ -43,7 +43,7 @@ public:
/** This is the data structure for walkers within a crowd
*/
Crowd(EstimatorManagerNew& emb,
const FatWalkerResourceCollection& fatwalker_res,
const DriverWalkerResourceCollection& fatwalker_res,
const MultiWalkerDispatchers& dispatchers);
~Crowd();
@ -93,7 +93,7 @@ public:
const EstimatorManagerCrowd& get_estimator_manager_crowd() const { return estimator_manager_crowd_; }
FatWalkerResourceCollection& getSharedResource() { return fatwalker_resource_collection_; }
DriverWalkerResourceCollection& getSharedResource() { return fatwalker_resource_collection_; }
int size() const { return mcp_walkers_.size(); }
@ -119,7 +119,7 @@ private:
RefVector<QMCHamiltonian> walker_hamiltonians_;
/** }@ */
FatWalkerResourceCollection fatwalker_resource_collection_;
DriverWalkerResourceCollection fatwalker_resource_collection_;
EstimatorManagerCrowd estimator_manager_crowd_;

View File

@ -74,7 +74,7 @@ void DMCBatched::advanceWalkers(const StateForThread& sft,
int nnode_crossing(0);
auto& walkers = crowd.get_walkers();
FatWalkerResourceCollectionLock pbyp_lock(crowd.getSharedResource(), crowd.get_walker_elecs()[0],
DriverWalkerResourceCollectionLock pbyp_lock(crowd.getSharedResource(), crowd.get_walker_elecs()[0],
crowd.get_walker_twfs()[0], crowd.get_walker_hamiltonians()[0]);
const RefVectorWithLeader<ParticleSet> walker_elecs(crowd.get_walker_elecs()[0], crowd.get_walker_elecs());
const RefVectorWithLeader<TrialWaveFunction> walker_twfs(crowd.get_walker_twfs()[0], crowd.get_walker_twfs());
@ -290,7 +290,7 @@ void DMCBatched::advanceWalkers(const StateForThread& sft,
for (int iw = 0; iw < walkers.size(); ++iw)
{
FatWalkerResourceCollectionLock tmove_lock(crowd.getSharedResource(), crowd.get_walker_elecs()[iw],
DriverWalkerResourceCollectionLock tmove_lock(crowd.getSharedResource(), crowd.get_walker_elecs()[iw],
crowd.get_walker_twfs()[iw], crowd.get_walker_hamiltonians()[iw]);
walker_non_local_moves_accepted[iw] = walker_hamiltonians[iw].makeNonLocalMoves(walker_elecs[iw]);
@ -305,7 +305,7 @@ void DMCBatched::advanceWalkers(const StateForThread& sft,
if (moved_nonlocal_walkers.size())
{
FatWalkerResourceCollectionLock tmove_lock(crowd.getSharedResource(), crowd.get_walker_elecs()[0],
DriverWalkerResourceCollectionLock tmove_lock(crowd.getSharedResource(), crowd.get_walker_elecs()[0],
crowd.get_walker_twfs()[0], crowd.get_walker_hamiltonians()[0]);
twf_dispatcher.flex_evaluateGL(moved_nonlocal_walker_twfs, moved_nonlocal_walker_elecs, false);

View File

@ -27,7 +27,7 @@
#include "type_traits/template_types.hpp"
#include "QMCWaveFunctions/TrialWaveFunction.h"
#include "MultiWalkerDispatchers.h"
#include "FatWalkerTypes.h"
#include "DriverWalkerTypes.h"
namespace qmcplusplus
{
@ -156,7 +156,7 @@ void WalkerControl::writeDMCdat(int iter, const std::vector<FullPrecRealType>& c
int WalkerControl::branch(int iter,
MCPopulation& pop,
const MultiWalkerDispatchers& dispatchers,
FatWalkerResourceCollection& fatwalker_res,
DriverWalkerResourceCollection& fatwalker_res,
bool do_not_branch)
{
if (debug_disable_branching_)
@ -256,7 +256,7 @@ int WalkerControl::branch(int iter,
const auto wf_list_no_leader =
convertUPtrToRefVectorSubset(pop.get_twfs(), untouched_walkers, num_walkers - untouched_walkers);
FatWalkerResourceCollection_PsetTWF_Lock pbyp_lock(fatwalker_res, *pop.get_golden_electrons(), pop.get_golden_twf());
DriverWalkerResourceCollection_PsetTWF_Lock pbyp_lock(fatwalker_res, *pop.get_golden_electrons(), pop.get_golden_twf());
// a defensive update may not be necessary due to loadWalker above. however, load walker needs to be batched.
const RefVectorWithLeader<ParticleSet> p_list(*pop.get_golden_electrons(), p_list_no_leader);

View File

@ -30,7 +30,7 @@
namespace qmcplusplus
{
class MultiWalkerDispatchers;
struct FatWalkerResourceCollection;
struct DriverWalkerResourceCollection;
/** Class for controlling the walkers for DMC simulations.
* w and w/o MPI. Fixed and dynamic population in one place.
@ -73,7 +73,7 @@ public:
int branch(int iter,
MCPopulation& pop,
const MultiWalkerDispatchers& dispatchers,
FatWalkerResourceCollection& fatwalker_res,
DriverWalkerResourceCollection& fatwalker_res,
bool do_not_branch);
bool put(xmlNodePtr cur);

View File

@ -17,19 +17,19 @@
namespace qmcplusplus
{
struct FatWalkerResourceCollection
struct DriverWalkerResourceCollection
{
ResourceCollection pset_res;
ResourceCollection twf_res;
ResourceCollection ham_res;
FatWalkerResourceCollection() : pset_res("ParticleSet"), twf_res("TrialWaveFunction"), ham_res("Hamiltonian") {}
DriverWalkerResourceCollection() : pset_res("ParticleSet"), twf_res("TrialWaveFunction"), ham_res("Hamiltonian") {}
};
class FatWalkerResourceCollectionLock
class DriverWalkerResourceCollectionLock
{
public:
FatWalkerResourceCollectionLock(FatWalkerResourceCollection& fatwalker_res, ParticleSet& pset, TrialWaveFunction& twf, QMCHamiltonian& ham)
DriverWalkerResourceCollectionLock(DriverWalkerResourceCollection& fatwalker_res, ParticleSet& pset, TrialWaveFunction& twf, QMCHamiltonian& ham)
: pset_res_lock_(fatwalker_res.pset_res, pset), twf_res_lock_(fatwalker_res.twf_res, twf), ham_res_lock_(fatwalker_res.ham_res, ham)
{}
@ -39,10 +39,10 @@ private:
ResourceCollectionLock<QMCHamiltonian> ham_res_lock_;
};
class FatWalkerResourceCollection_PsetTWF_Lock
class DriverWalkerResourceCollection_PsetTWF_Lock
{
public:
FatWalkerResourceCollection_PsetTWF_Lock(FatWalkerResourceCollection& fatwalker_res, ParticleSet& pset, TrialWaveFunction& twf)
DriverWalkerResourceCollection_PsetTWF_Lock(DriverWalkerResourceCollection& fatwalker_res, ParticleSet& pset, TrialWaveFunction& twf)
: pset_res_lock_(fatwalker_res.pset_res, pset), twf_res_lock_(fatwalker_res.twf_res, twf)
{}

View File

@ -334,7 +334,7 @@ void QMCDriverNew::initialLogEvaluation(int crowd_id,
auto& ham_dispatcher = crowd.dispatchers_.ham_dispatcher_;
auto& walkers = crowd.get_walkers();
FatWalkerResourceCollectionLock pbyp_lock(crowd.getSharedResource(), crowd.get_walker_elecs()[0],
DriverWalkerResourceCollectionLock pbyp_lock(crowd.getSharedResource(), crowd.get_walker_elecs()[0],
crowd.get_walker_twfs()[0], crowd.get_walker_hamiltonians()[0]);
const RefVectorWithLeader<ParticleSet> walker_elecs(crowd.get_walker_elecs()[0], crowd.get_walker_elecs());
const RefVectorWithLeader<TrialWaveFunction> walker_twfs(crowd.get_walker_twfs()[0], crowd.get_walker_twfs());

View File

@ -39,7 +39,7 @@
#include "QMCDrivers/ContextForSteps.h"
#include "OhmmsApp/ProjectData.h"
#include "MultiWalkerDispatchers.h"
#include "FatWalkerTypes.h"
#include "DriverWalkerTypes.h"
class Communicate;
@ -363,7 +363,7 @@ protected:
* per crowd resources are copied from this gold instance
* it should be activated when dispatchers don't serialize walkers
*/
struct FatWalkerResourceCollection golden_resource_;
struct DriverWalkerResourceCollection golden_resource_;
/// multi walker dispatchers
const MultiWalkerDispatchers dispatchers_;

View File

@ -46,7 +46,7 @@ void VMCBatched::advanceWalkers(const StateForThread& sft,
auto& twf_dispatcher = crowd.dispatchers_.twf_dispatcher_;
auto& ham_dispatcher = crowd.dispatchers_.ham_dispatcher_;
auto& walkers = crowd.get_walkers();
FatWalkerResourceCollectionLock pbyp_lock(crowd.getSharedResource(), crowd.get_walker_elecs()[0],
DriverWalkerResourceCollectionLock pbyp_lock(crowd.getSharedResource(), crowd.get_walker_elecs()[0],
crowd.get_walker_twfs()[0], crowd.get_walker_hamiltonians()[0]);
const RefVectorWithLeader<ParticleSet> walker_elecs(crowd.get_walker_elecs()[0], crowd.get_walker_elecs());
const RefVectorWithLeader<TrialWaveFunction> walker_twfs(crowd.get_walker_twfs()[0], crowd.get_walker_twfs());

View File

@ -40,7 +40,7 @@ public:
UPtrVector<TrialWaveFunction> twfs;
UPtrVector<QMCHamiltonian> hams;
std::vector<TinyVector<double, 3>> tpos;
FatWalkerResourceCollection fatwalker_resource_collection_;
DriverWalkerResourceCollection fatwalker_resource_collection_;
const MultiWalkerDispatchers dispatchers_;
public:
@ -96,7 +96,7 @@ TEST_CASE("Crowd integration", "[drivers]")
// The above was required behavior for crowd at one point.
// TODO: determine whether it still is, I don't think so.
const MultiWalkerDispatchers dispatchers(true);
FatWalkerResourceCollection fatwalker_resource_collection_;
DriverWalkerResourceCollection fatwalker_resource_collection_;
Crowd crowd(em, fatwalker_resource_collection_, dispatchers);
}