From c8fe44c44ee21b4675af334adfbf2b1b857a2746 Mon Sep 17 00:00:00 2001 From: Ye Luo Date: Mon, 1 Mar 2021 14:54:08 -0600 Subject: [PATCH] Use DriverWalker instead of FatWalker. --- src/QMCDrivers/Crowd.cpp | 2 +- src/QMCDrivers/Crowd.h | 8 ++++---- src/QMCDrivers/DMC/DMCBatched.cpp | 6 +++--- src/QMCDrivers/DMC/WalkerControl.cpp | 6 +++--- src/QMCDrivers/DMC/WalkerControl.h | 4 ++-- .../{FatWalkerTypes.h => DriverWalkerTypes.h} | 12 ++++++------ src/QMCDrivers/QMCDriverNew.cpp | 2 +- src/QMCDrivers/QMCDriverNew.h | 4 ++-- src/QMCDrivers/VMC/VMCBatched.cpp | 2 +- src/QMCDrivers/tests/test_Crowd.cpp | 4 ++-- 10 files changed, 25 insertions(+), 25 deletions(-) rename src/QMCDrivers/{FatWalkerTypes.h => DriverWalkerTypes.h} (71%) diff --git a/src/QMCDrivers/Crowd.cpp b/src/QMCDrivers/Crowd.cpp index 00ef72ead..1d8ce19d8 100644 --- a/src/QMCDrivers/Crowd.cpp +++ b/src/QMCDrivers/Crowd.cpp @@ -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) {} diff --git a/src/QMCDrivers/Crowd.h b/src/QMCDrivers/Crowd.h index cd101b047..6a2cf24fa 100644 --- a/src/QMCDrivers/Crowd.h +++ b/src/QMCDrivers/Crowd.h @@ -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 walker_hamiltonians_; /** }@ */ - FatWalkerResourceCollection fatwalker_resource_collection_; + DriverWalkerResourceCollection fatwalker_resource_collection_; EstimatorManagerCrowd estimator_manager_crowd_; diff --git a/src/QMCDrivers/DMC/DMCBatched.cpp b/src/QMCDrivers/DMC/DMCBatched.cpp index c0a97b764..9124a5944 100644 --- a/src/QMCDrivers/DMC/DMCBatched.cpp +++ b/src/QMCDrivers/DMC/DMCBatched.cpp @@ -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 walker_elecs(crowd.get_walker_elecs()[0], crowd.get_walker_elecs()); const RefVectorWithLeader 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); diff --git a/src/QMCDrivers/DMC/WalkerControl.cpp b/src/QMCDrivers/DMC/WalkerControl.cpp index 067a11993..75d8f37b0 100644 --- a/src/QMCDrivers/DMC/WalkerControl.cpp +++ b/src/QMCDrivers/DMC/WalkerControl.cpp @@ -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& 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 p_list(*pop.get_golden_electrons(), p_list_no_leader); diff --git a/src/QMCDrivers/DMC/WalkerControl.h b/src/QMCDrivers/DMC/WalkerControl.h index 7088e9745..11a05f3a7 100644 --- a/src/QMCDrivers/DMC/WalkerControl.h +++ b/src/QMCDrivers/DMC/WalkerControl.h @@ -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); diff --git a/src/QMCDrivers/FatWalkerTypes.h b/src/QMCDrivers/DriverWalkerTypes.h similarity index 71% rename from src/QMCDrivers/FatWalkerTypes.h rename to src/QMCDrivers/DriverWalkerTypes.h index bd8eba7e5..aef7430bf 100644 --- a/src/QMCDrivers/FatWalkerTypes.h +++ b/src/QMCDrivers/DriverWalkerTypes.h @@ -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 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) {} diff --git a/src/QMCDrivers/QMCDriverNew.cpp b/src/QMCDrivers/QMCDriverNew.cpp index de86fa04d..77aaf57f7 100644 --- a/src/QMCDrivers/QMCDriverNew.cpp +++ b/src/QMCDrivers/QMCDriverNew.cpp @@ -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 walker_elecs(crowd.get_walker_elecs()[0], crowd.get_walker_elecs()); const RefVectorWithLeader walker_twfs(crowd.get_walker_twfs()[0], crowd.get_walker_twfs()); diff --git a/src/QMCDrivers/QMCDriverNew.h b/src/QMCDrivers/QMCDriverNew.h index 0501a6fc9..d67d1e931 100644 --- a/src/QMCDrivers/QMCDriverNew.h +++ b/src/QMCDrivers/QMCDriverNew.h @@ -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_; diff --git a/src/QMCDrivers/VMC/VMCBatched.cpp b/src/QMCDrivers/VMC/VMCBatched.cpp index f7a6946c7..7c61ece2d 100644 --- a/src/QMCDrivers/VMC/VMCBatched.cpp +++ b/src/QMCDrivers/VMC/VMCBatched.cpp @@ -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 walker_elecs(crowd.get_walker_elecs()[0], crowd.get_walker_elecs()); const RefVectorWithLeader walker_twfs(crowd.get_walker_twfs()[0], crowd.get_walker_twfs()); diff --git a/src/QMCDrivers/tests/test_Crowd.cpp b/src/QMCDrivers/tests/test_Crowd.cpp index 61616ca8e..c36a650c7 100644 --- a/src/QMCDrivers/tests/test_Crowd.cpp +++ b/src/QMCDrivers/tests/test_Crowd.cpp @@ -40,7 +40,7 @@ public: UPtrVector twfs; UPtrVector hams; std::vector> 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); }