QMCPACK
CloneManager.h
Go to the documentation of this file.
1 //////////////////////////////////////////////////////////////////////////////////////
2 // This file is distributed under the University of Illinois/NCSA Open Source License.
3 // See LICENSE file in top directory for details.
4 //
5 // Copyright (c) 2016 Jeongnim Kim and QMCPACK developers.
6 //
7 // File developed by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
8 // Jeremy McMinnis, jmcminis@gmail.com, University of Illinois at Urbana-Champaign
9 // Jaron T. Krogel, krogeljt@ornl.gov, Oak Ridge National Laboratory
10 // Raymond Clay III, j.k.rofling@gmail.com, Lawrence Livermore National Laboratory
11 // Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
12 //
13 // File created by: Jeongnim Kim, jeongnim.kim@gmail.com, University of Illinois at Urbana-Champaign
14 //////////////////////////////////////////////////////////////////////////////////////
15 
16 
17 /** @file CloneManager.h
18  * @brief Manager class to handle multiple threads
19  */
20 #ifndef QMCPLUSPLUS_CLONEMANAGER_H
21 #define QMCPLUSPLUS_CLONEMANAGER_H
24 
25 namespace qmcplusplus
26 {
27 class HamiltonianPool;
28 
29 /** Manager clones for threaded applications
30  *
31  * Clones for the ParticleSet, TrialWaveFunction and QMCHamiltonian
32  * are static to ensure only one set of clones persist during a run.
33  */
34 class CloneManager : public QMCTraits
35 {
36 public:
37  /// Constructor.
38  CloneManager();
39  ///virtual destructor
40  virtual ~CloneManager();
41 
42  // Clear static arrays of clones owned by the manager
43  static void clearClones();
44 
46  void makeClones(MCWalkerConfiguration& w, std::vector<TrialWaveFunction*>& psi, std::vector<QMCHamiltonian*>& ham);
48  void makeClones(TrialWaveFunction& guide);
49 
50  RealType acceptRatio() const;
51 
52 protected:
53  ///number of threads
55  /* A Non-owning pointer is passed into CloneManger, used by thread 0 and stored in XXX[0].
56  * Clones for all other threads are owned by CloneManager. For thread N, XXX_uptr[N-1] stores
57  * a unique_ptr and a non-owning copy of the pointer is stored in XXX[N].
58  */
59  ///walkers
61  static std::vector<MCWalkerConfiguration*> wClones;
63  ///trial wavefunctions
65  static std::vector<TrialWaveFunction*> psiClones;
66  ///guide wavefunctions
68  static std::vector<TrialWaveFunction*> guideClones;
69  ///Hamiltonians
71  static std::vector<QMCHamiltonian*> hClones;
72  ///update engines
73  std::vector<QMCUpdateBase*> Movers;
74  ///estimator managers
75  std::vector<EstimatorManagerBase*> estimatorClones;
76  ///trace managers
77  std::vector<TraceManager*> traceClones;
78  ///trace collectors
80 
81  //for correlated sampling.
82  static std::vector<UPtrVector<MCWalkerConfiguration>> WPoolClones_uptr;
83  static std::vector<std::vector<MCWalkerConfiguration*>> WPoolClones;
84  static std::vector<UPtrVector<TrialWaveFunction>> PsiPoolClones_uptr;
85  static std::vector<std::vector<TrialWaveFunction*>> PsiPoolClones;
86  static std::vector<UPtrVector<QMCHamiltonian>> HPoolClones_uptr;
87  static std::vector<std::vector<QMCHamiltonian*>> HPoolClones;
89 
90  ///Walkers per MPI rank
91  std::vector<int> wPerRank;
92 
94 };
95 } // namespace qmcplusplus
96 #endif
UPtrVector< WalkerLogCollector > wlog_collectors
trace collectors
Definition: CloneManager.h:79
A set of walkers that are to be advanced by Metropolis Monte Carlo.
static std::vector< TrialWaveFunction * > psiClones
Definition: CloneManager.h:65
virtual ~CloneManager()
virtual destructor
std::vector< int > wPerRank
Walkers per MPI rank.
Definition: CloneManager.h:91
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
QTBase::RealType RealType
Definition: Configuration.h:58
static UPtrVector< MCWalkerConfiguration > wgClones
Definition: CloneManager.h:62
static std::vector< std::vector< TrialWaveFunction * > > PsiPoolClones
Definition: CloneManager.h:85
static std::vector< TrialWaveFunction * > guideClones
Definition: CloneManager.h:68
Manager clones for threaded applications.
Definition: CloneManager.h:34
static std::vector< MCWalkerConfiguration * > wClones
Definition: CloneManager.h:61
Collection of Local Energy Operators.
UPtrVector< CSUpdateBase > CSMovers
Definition: CloneManager.h:88
std::vector< std::unique_ptr< T > > UPtrVector
std::vector< QMCUpdateBase * > Movers
update engines
Definition: CloneManager.h:73
Definition of CSVUpdateBase.
static UPtrVector< TrialWaveFunction > guideClones_uptr
guide wavefunctions
Definition: CloneManager.h:67
static UPtrVector< TrialWaveFunction > psiClones_uptr
trial wavefunctions
Definition: CloneManager.h:64
QMCTraits::IndexType IndexType
Definition: FSUtilities.h:11
static std::vector< UPtrVector< MCWalkerConfiguration > > WPoolClones_uptr
Definition: CloneManager.h:82
static UPtrVector< MCWalkerConfiguration > wClones_uptr
walkers
Definition: CloneManager.h:60
std::vector< EstimatorManagerBase * > estimatorClones
estimator managers
Definition: CloneManager.h:75
const IndexType NumThreads
number of threads
Definition: CloneManager.h:54
void makeClones(MCWalkerConfiguration &w, TrialWaveFunction &psi, QMCHamiltonian &ham)
CloneManager()
Constructor.
static std::vector< QMCHamiltonian * > hClones
Definition: CloneManager.h:71
std::vector< std::reference_wrapper< T > > RefVector
static std::vector< UPtrVector< TrialWaveFunction > > PsiPoolClones_uptr
Definition: CloneManager.h:84
static UPtrVector< QMCHamiltonian > hClones_uptr
Hamiltonians.
Definition: CloneManager.h:70
Class to represent a many-body trial wave function.
RealType acceptRatio() const
static std::vector< std::vector< QMCHamiltonian * > > HPoolClones
Definition: CloneManager.h:87
std::vector< TraceManager * > traceClones
trace managers
Definition: CloneManager.h:77
RefVector< WalkerLogCollector > getWalkerLogCollectorRefs()
traits for QMC variables
Definition: Configuration.h:49
Declare QMCUpdateBase class.
static std::vector< std::vector< MCWalkerConfiguration * > > WPoolClones
Definition: CloneManager.h:83
static std::vector< UPtrVector< QMCHamiltonian > > HPoolClones_uptr
Definition: CloneManager.h:86