From 7fff4b5220840cb700462e87173d6278e4b9bfbf Mon Sep 17 00:00:00 2001 From: Jaron Krogel Date: Thu, 27 Jun 2019 08:48:51 -0400 Subject: [PATCH 1/6] add timers to 1rdm --- src/QMCHamiltonians/DensityMatrices1B.cpp | 56 +++++++++++++++++++++++ src/QMCHamiltonians/DensityMatrices1B.h | 11 +++++ 2 files changed, 67 insertions(+) diff --git a/src/QMCHamiltonians/DensityMatrices1B.cpp b/src/QMCHamiltonians/DensityMatrices1B.cpp index 998e3c41dd..4ef7ef2c86 100644 --- a/src/QMCHamiltonians/DensityMatrices1B.cpp +++ b/src/QMCHamiltonians/DensityMatrices1B.cpp @@ -359,6 +359,17 @@ void DensityMatrices1B::initialize() normalize(); } + // jtk timer + // add timers + eval_timer = TimerManager.createTimer("DensityMatrices1B::evaluate", timer_level_medium); + gen_samples_timer = TimerManager.createTimer("DensityMatrices1B::generate_samples", timer_level_fine); + gen_sample_basis_timer = TimerManager.createTimer("DensityMatrices1B::generate_sample_basis", timer_level_fine); + gen_sample_ratios_timer = TimerManager.createTimer("DensityMatrices1B::generate_sample_ratios", timer_level_fine); + gen_particle_basis_timer = TimerManager.createTimer("DensityMatrices1B::generate_particle_basis", timer_level_fine); + matrix_products_timer = TimerManager.createTimer("DensityMatrices1B::evaluate_matrix_products", timer_level_fine); + accumulate_timer = TimerManager.createTimer("DensityMatrices1B::evaluate_matrix_accum", timer_level_fine); + // end jtk timer + initialized = true; } @@ -576,6 +587,10 @@ void DensityMatrices1B::warmup_sampling() DensityMatrices1B::Return_t DensityMatrices1B::evaluate(ParticleSet& P) { + // jtk timer + eval_timer->start(); + // end jtk timer + if (have_required_traces || !energy_mat) { if (check_derivatives) @@ -587,6 +602,11 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate(ParticleSet& P) else APP_ABORT("DensityMatrices1B::evaluate invalid evaluator"); } + + // jtk timer + eval_timer->stop(); + // end jtk timer + return 0.0; } @@ -612,6 +632,9 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_matrix(ParticleSet& P) generate_sample_ratios(Psi_NM); // conj(Psi ratio) : particles x samples generate_particle_basis(P, Phi_NB); // conj(basis) : particles x basis_size // perform integration via matrix products + // jtk timer + matrix_products_timer->start(); + // end jtk timer for (int s = 0; s < nspecies; ++s) { Matrix_t& Psi_nm = *Psi_NM[s]; @@ -627,7 +650,13 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_matrix(ParticleSet& P) product_AtB(Phi_nb, Phi_Psi_nb, *E_BB[s]); // (energies*conj(basis))^T*ratio*basis } } + // jtk timer + matrix_products_timer->stop(); + // end jtk timer // accumulate data into collectables + // jtk timer + accumulate_timer->start(); + // end jtk timer const int basis_size2 = basis_size * basis_size; int ij = nindex; for (int s = 0; s < nspecies; ++s) @@ -664,6 +693,9 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_matrix(ParticleSet& P) } } } + // jtk timer + accumulate_timer->stop(); + // end jtk timer // jtk come back to this @@ -874,6 +906,9 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_loop(ParticleSet& P) inline void DensityMatrices1B::generate_samples(RealType weight, int steps) { + // jtk timer + gen_samples_timer->start(); + // end jtk timer RandomGenerator_t& rng = *uniform_random; bool save = false; if (steps == 0) @@ -927,6 +962,9 @@ inline void DensityMatrices1B::generate_samples(RealType weight, int steps) app_log() << " rmean = " << rmean << std::endl; app_log() << " rstd = " << rstd << std::endl; } + // jtk timer + gen_samples_timer->stop(); + // end jtk timer } @@ -1128,6 +1166,9 @@ void DensityMatrices1B::get_energies(std::vector& E_n) void DensityMatrices1B::generate_sample_basis(Matrix_t& Phi_mb) { + // jtk timer + gen_sample_basis_timer->start(); + // end jtk timer int mb = 0; for (int m = 0; m < samples; ++m) { @@ -1135,11 +1176,17 @@ void DensityMatrices1B::generate_sample_basis(Matrix_t& Phi_mb) for (int b = 0; b < basis_size; ++b, ++mb) Phi_mb(mb) = basis_values[b]; } + // jtk timer + gen_sample_basis_timer->stop(); + // end jtk timer } void DensityMatrices1B::generate_sample_ratios(std::vector Psi_nm) { + // jtk timer + gen_sample_ratios_timer->start(); + // end jtk timer int p = 0; for (int s = 0; s < nspecies; ++s) { @@ -1156,11 +1203,17 @@ void DensityMatrices1B::generate_sample_ratios(std::vector Psi_nm) } } } + // jtk timer + gen_sample_ratios_timer->stop(); + // end jtk timer } void DensityMatrices1B::generate_particle_basis(ParticleSet& P, std::vector& Phi_nb) { + // jtk timer + gen_particle_basis_timer->start(); + // end jtk timer int p = 0; for (int s = 0; s < nspecies; ++s) { @@ -1173,6 +1226,9 @@ void DensityMatrices1B::generate_particle_basis(ParticleSet& P, std::vectorstop(); + // end jtk timer } diff --git a/src/QMCHamiltonians/DensityMatrices1B.h b/src/QMCHamiltonians/DensityMatrices1B.h index ba982a56d3..5946e62428 100644 --- a/src/QMCHamiltonians/DensityMatrices1B.h +++ b/src/QMCHamiltonians/DensityMatrices1B.h @@ -138,6 +138,17 @@ class DensityMatrices1B : public QMCHamiltonianBase RandomGenerator_t* uniform_random; + // jtk timer + NewTimer* eval_timer; + NewTimer* gen_samples_timer; + NewTimer* gen_sample_basis_timer; + NewTimer* gen_sample_ratios_timer; + NewTimer* gen_particle_basis_timer; + NewTimer* matrix_products_timer; + NewTimer* accumulate_timer; + // end jtk timer + + //constructor/destructor DensityMatrices1B(ParticleSet& P, TrialWaveFunction& psi, ParticleSet* Pcl); DensityMatrices1B(DensityMatrices1B& master, ParticleSet& P, TrialWaveFunction& psi); From e5d6b42cc5ade5c0be75cd4b7f638c957f3377ae Mon Sep 17 00:00:00 2001 From: Jaron Krogel Date: Thu, 27 Jun 2019 16:41:19 -0400 Subject: [PATCH 2/6] optimize ratio eval in 1rdm estimator --- src/QMCHamiltonians/DensityMatrices1B.cpp | 22 ++++++++++++---------- src/QMCHamiltonians/DensityMatrices1B.h | 1 + 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/QMCHamiltonians/DensityMatrices1B.cpp b/src/QMCHamiltonians/DensityMatrices1B.cpp index 998e3c41dd..b77f284f4d 100644 --- a/src/QMCHamiltonians/DensityMatrices1B.cpp +++ b/src/QMCHamiltonians/DensityMatrices1B.cpp @@ -312,6 +312,7 @@ void DensityMatrices1B::initialize() rsamples.resize(samples); sample_weights.resize(samples); + psi_ratios.resize(nparticles); if (evaluator == matrix) { @@ -1140,19 +1141,20 @@ void DensityMatrices1B::generate_sample_basis(Matrix_t& Phi_mb) void DensityMatrices1B::generate_sample_ratios(std::vector Psi_nm) { - int p = 0; - for (int s = 0; s < nspecies; ++s) + for (int m = 0; m < samples; ++m) { - int nm = 0; - Matrix_t& P_nm = *Psi_nm[s]; - for (int n = 0; n < species_size[s]; ++n, ++p) + // get N ratios for the current sample point + Pq.makeVirtualMoves(rsamples[m]); + Psi.evaluateRatiosAlltoOne(Pq, psi_ratios); + + // collect ratios into per-species matrices + int p = 0; + for (int s = 0; s < nspecies; ++s) { - PosType& Rp = Pq.R[p]; - for (int m = 0; m < samples; ++m, ++nm) + Matrix_t& P_nm = *Psi_nm[s]; + for (int n = 0; n < species_size[s]; ++n, ++p) { - Pq.makeMove(p, rsamples[m] - Rp); - P_nm(nm) = qmcplusplus::conj(Psi.full_ratio(Pq, p)); - Pq.rejectMove(p); + P_nm(n,m) = qmcplusplus::conj(psi_ratios[p]); } } } diff --git a/src/QMCHamiltonians/DensityMatrices1B.h b/src/QMCHamiltonians/DensityMatrices1B.h index ba982a56d3..7c3a4d71cd 100644 --- a/src/QMCHamiltonians/DensityMatrices1B.h +++ b/src/QMCHamiltonians/DensityMatrices1B.h @@ -71,6 +71,7 @@ class DensityMatrices1B : public QMCHamiltonianBase bool warmed_up; std::vector rsamples; Vector sample_weights; + std::vector psi_ratios; RealType dens; PosType drift; int nindex; From 84087f75c78917c5e70aed09bcf4eadb5fc2d151 Mon Sep 17 00:00:00 2001 From: Jaron Krogel Date: Fri, 28 Jun 2019 06:44:33 -0400 Subject: [PATCH 3/6] cleanup timers --- src/QMCHamiltonians/DensityMatrices1B.cpp | 46 +++-------------------- src/QMCHamiltonians/DensityMatrices1B.h | 2 - 2 files changed, 6 insertions(+), 42 deletions(-) diff --git a/src/QMCHamiltonians/DensityMatrices1B.cpp b/src/QMCHamiltonians/DensityMatrices1B.cpp index e96d6b7485..0f113d3210 100644 --- a/src/QMCHamiltonians/DensityMatrices1B.cpp +++ b/src/QMCHamiltonians/DensityMatrices1B.cpp @@ -360,16 +360,13 @@ void DensityMatrices1B::initialize() normalize(); } - // jtk timer - // add timers - eval_timer = TimerManager.createTimer("DensityMatrices1B::evaluate", timer_level_medium); - gen_samples_timer = TimerManager.createTimer("DensityMatrices1B::generate_samples", timer_level_fine); - gen_sample_basis_timer = TimerManager.createTimer("DensityMatrices1B::generate_sample_basis", timer_level_fine); - gen_sample_ratios_timer = TimerManager.createTimer("DensityMatrices1B::generate_sample_ratios", timer_level_fine); + eval_timer = TimerManager.createTimer("DensityMatrices1B::evaluate", timer_level_medium); + gen_samples_timer = TimerManager.createTimer("DensityMatrices1B::generate_samples", timer_level_fine); + gen_sample_basis_timer = TimerManager.createTimer("DensityMatrices1B::generate_sample_basis", timer_level_fine); + gen_sample_ratios_timer = TimerManager.createTimer("DensityMatrices1B::generate_sample_ratios", timer_level_fine); gen_particle_basis_timer = TimerManager.createTimer("DensityMatrices1B::generate_particle_basis", timer_level_fine); - matrix_products_timer = TimerManager.createTimer("DensityMatrices1B::evaluate_matrix_products", timer_level_fine); - accumulate_timer = TimerManager.createTimer("DensityMatrices1B::evaluate_matrix_accum", timer_level_fine); - // end jtk timer + matrix_products_timer = TimerManager.createTimer("DensityMatrices1B::evaluate_matrix_products", timer_level_fine); + accumulate_timer = TimerManager.createTimer("DensityMatrices1B::evaluate_matrix_accum", timer_level_fine); initialized = true; } @@ -588,10 +585,7 @@ void DensityMatrices1B::warmup_sampling() DensityMatrices1B::Return_t DensityMatrices1B::evaluate(ParticleSet& P) { - // jtk timer eval_timer->start(); - // end jtk timer - if (have_required_traces || !energy_mat) { if (check_derivatives) @@ -603,11 +597,7 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate(ParticleSet& P) else APP_ABORT("DensityMatrices1B::evaluate invalid evaluator"); } - - // jtk timer eval_timer->stop(); - // end jtk timer - return 0.0; } @@ -633,9 +623,7 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_matrix(ParticleSet& P) generate_sample_ratios(Psi_NM); // conj(Psi ratio) : particles x samples generate_particle_basis(P, Phi_NB); // conj(basis) : particles x basis_size // perform integration via matrix products - // jtk timer matrix_products_timer->start(); - // end jtk timer for (int s = 0; s < nspecies; ++s) { Matrix_t& Psi_nm = *Psi_NM[s]; @@ -651,13 +639,9 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_matrix(ParticleSet& P) product_AtB(Phi_nb, Phi_Psi_nb, *E_BB[s]); // (energies*conj(basis))^T*ratio*basis } } - // jtk timer matrix_products_timer->stop(); - // end jtk timer // accumulate data into collectables - // jtk timer accumulate_timer->start(); - // end jtk timer const int basis_size2 = basis_size * basis_size; int ij = nindex; for (int s = 0; s < nspecies; ++s) @@ -694,9 +678,7 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_matrix(ParticleSet& P) } } } - // jtk timer accumulate_timer->stop(); - // end jtk timer // jtk come back to this @@ -907,9 +889,7 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_loop(ParticleSet& P) inline void DensityMatrices1B::generate_samples(RealType weight, int steps) { - // jtk timer gen_samples_timer->start(); - // end jtk timer RandomGenerator_t& rng = *uniform_random; bool save = false; if (steps == 0) @@ -963,9 +943,7 @@ inline void DensityMatrices1B::generate_samples(RealType weight, int steps) app_log() << " rmean = " << rmean << std::endl; app_log() << " rstd = " << rstd << std::endl; } - // jtk timer gen_samples_timer->stop(); - // end jtk timer } @@ -1167,9 +1145,7 @@ void DensityMatrices1B::get_energies(std::vector& E_n) void DensityMatrices1B::generate_sample_basis(Matrix_t& Phi_mb) { - // jtk timer gen_sample_basis_timer->start(); - // end jtk timer int mb = 0; for (int m = 0; m < samples; ++m) { @@ -1177,17 +1153,13 @@ void DensityMatrices1B::generate_sample_basis(Matrix_t& Phi_mb) for (int b = 0; b < basis_size; ++b, ++mb) Phi_mb(mb) = basis_values[b]; } - // jtk timer gen_sample_basis_timer->stop(); - // end jtk timer } void DensityMatrices1B::generate_sample_ratios(std::vector Psi_nm) { - // jtk timer gen_sample_ratios_timer->start(); - // end jtk timer for (int m = 0; m < samples; ++m) { // get N ratios for the current sample point @@ -1205,17 +1177,13 @@ void DensityMatrices1B::generate_sample_ratios(std::vector Psi_nm) } } } - // jtk timer gen_sample_ratios_timer->stop(); - // end jtk timer } void DensityMatrices1B::generate_particle_basis(ParticleSet& P, std::vector& Phi_nb) { - // jtk timer gen_particle_basis_timer->start(); - // end jtk timer int p = 0; for (int s = 0; s < nspecies; ++s) { @@ -1228,9 +1196,7 @@ void DensityMatrices1B::generate_particle_basis(ParticleSet& P, std::vectorstop(); - // end jtk timer } diff --git a/src/QMCHamiltonians/DensityMatrices1B.h b/src/QMCHamiltonians/DensityMatrices1B.h index 97bf5df0bf..f16b8e6e15 100644 --- a/src/QMCHamiltonians/DensityMatrices1B.h +++ b/src/QMCHamiltonians/DensityMatrices1B.h @@ -139,7 +139,6 @@ class DensityMatrices1B : public QMCHamiltonianBase RandomGenerator_t* uniform_random; - // jtk timer NewTimer* eval_timer; NewTimer* gen_samples_timer; NewTimer* gen_sample_basis_timer; @@ -147,7 +146,6 @@ class DensityMatrices1B : public QMCHamiltonianBase NewTimer* gen_particle_basis_timer; NewTimer* matrix_products_timer; NewTimer* accumulate_timer; - // end jtk timer //constructor/destructor From 9f976ab5c8f526c74038aac4c8c155bbdefd4158 Mon Sep 17 00:00:00 2001 From: Jaron Krogel Date: Fri, 28 Jun 2019 11:58:11 -0400 Subject: [PATCH 4/6] meet timer requirements --- src/QMCHamiltonians/DensityMatrices1B.cpp | 44 ++++++++++++----------- src/QMCHamiltonians/DensityMatrices1B.h | 14 ++++++++ 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/src/QMCHamiltonians/DensityMatrices1B.cpp b/src/QMCHamiltonians/DensityMatrices1B.cpp index 0f113d3210..a29840ae3a 100644 --- a/src/QMCHamiltonians/DensityMatrices1B.cpp +++ b/src/QMCHamiltonians/DensityMatrices1B.cpp @@ -360,13 +360,15 @@ void DensityMatrices1B::initialize() normalize(); } - eval_timer = TimerManager.createTimer("DensityMatrices1B::evaluate", timer_level_medium); - gen_samples_timer = TimerManager.createTimer("DensityMatrices1B::generate_samples", timer_level_fine); - gen_sample_basis_timer = TimerManager.createTimer("DensityMatrices1B::generate_sample_basis", timer_level_fine); - gen_sample_ratios_timer = TimerManager.createTimer("DensityMatrices1B::generate_sample_ratios", timer_level_fine); - gen_particle_basis_timer = TimerManager.createTimer("DensityMatrices1B::generate_particle_basis", timer_level_fine); - matrix_products_timer = TimerManager.createTimer("DensityMatrices1B::evaluate_matrix_products", timer_level_fine); - accumulate_timer = TimerManager.createTimer("DensityMatrices1B::evaluate_matrix_accum", timer_level_fine); + const TimerNameList_t + DMTimerNames = {{DM_eval , "DensityMatrices1B::evaluate"}, + {DM_gen_samples , "DensityMatrices1B::generate_samples"}, + {DM_gen_sample_basis , "DensityMatrices1B::generate_sample_basis"}, + {DM_gen_sample_ratios , "DensityMatrices1B::generate_sample_ratios"}, + {DM_gen_particle_basis, "DensityMatrices1B::generate_particle_basis"}, + {DM_matrix_products , "DensityMatrices1B::evaluate_matrix_products"}, + {DM_accumulate , "DensityMatrices1B::evaluate_matrix_accum"}}; + setup_timers(timers,DMTimerNames,timer_level_fine); initialized = true; } @@ -585,7 +587,7 @@ void DensityMatrices1B::warmup_sampling() DensityMatrices1B::Return_t DensityMatrices1B::evaluate(ParticleSet& P) { - eval_timer->start(); + timers[DM_eval]->start(); if (have_required_traces || !energy_mat) { if (check_derivatives) @@ -597,7 +599,7 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate(ParticleSet& P) else APP_ABORT("DensityMatrices1B::evaluate invalid evaluator"); } - eval_timer->stop(); + timers[DM_eval]->stop(); return 0.0; } @@ -623,7 +625,7 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_matrix(ParticleSet& P) generate_sample_ratios(Psi_NM); // conj(Psi ratio) : particles x samples generate_particle_basis(P, Phi_NB); // conj(basis) : particles x basis_size // perform integration via matrix products - matrix_products_timer->start(); + timers[DM_matrix_products]->start(); for (int s = 0; s < nspecies; ++s) { Matrix_t& Psi_nm = *Psi_NM[s]; @@ -639,9 +641,9 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_matrix(ParticleSet& P) product_AtB(Phi_nb, Phi_Psi_nb, *E_BB[s]); // (energies*conj(basis))^T*ratio*basis } } - matrix_products_timer->stop(); + timers[DM_matrix_products]->stop(); // accumulate data into collectables - accumulate_timer->start(); + timers[DM_accumulate]->start(); const int basis_size2 = basis_size * basis_size; int ij = nindex; for (int s = 0; s < nspecies; ++s) @@ -678,7 +680,7 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_matrix(ParticleSet& P) } } } - accumulate_timer->stop(); + timers[DM_accumulate]->stop(); // jtk come back to this @@ -889,7 +891,7 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_loop(ParticleSet& P) inline void DensityMatrices1B::generate_samples(RealType weight, int steps) { - gen_samples_timer->start(); + timers[DM_gen_samples]->start(); RandomGenerator_t& rng = *uniform_random; bool save = false; if (steps == 0) @@ -943,7 +945,7 @@ inline void DensityMatrices1B::generate_samples(RealType weight, int steps) app_log() << " rmean = " << rmean << std::endl; app_log() << " rstd = " << rstd << std::endl; } - gen_samples_timer->stop(); + timers[DM_gen_samples]->stop(); } @@ -1145,7 +1147,7 @@ void DensityMatrices1B::get_energies(std::vector& E_n) void DensityMatrices1B::generate_sample_basis(Matrix_t& Phi_mb) { - gen_sample_basis_timer->start(); + timers[DM_gen_sample_basis]->start(); int mb = 0; for (int m = 0; m < samples; ++m) { @@ -1153,13 +1155,13 @@ void DensityMatrices1B::generate_sample_basis(Matrix_t& Phi_mb) for (int b = 0; b < basis_size; ++b, ++mb) Phi_mb(mb) = basis_values[b]; } - gen_sample_basis_timer->stop(); + timers[DM_gen_sample_basis]->stop(); } void DensityMatrices1B::generate_sample_ratios(std::vector Psi_nm) { - gen_sample_ratios_timer->start(); + timers[DM_gen_sample_ratios]->start(); for (int m = 0; m < samples; ++m) { // get N ratios for the current sample point @@ -1177,13 +1179,13 @@ void DensityMatrices1B::generate_sample_ratios(std::vector Psi_nm) } } } - gen_sample_ratios_timer->stop(); + timers[DM_gen_sample_ratios]->stop(); } void DensityMatrices1B::generate_particle_basis(ParticleSet& P, std::vector& Phi_nb) { - gen_particle_basis_timer->start(); + timers[DM_gen_particle_basis]->start(); int p = 0; for (int s = 0; s < nspecies; ++s) { @@ -1196,7 +1198,7 @@ void DensityMatrices1B::generate_particle_basis(ParticleSet& P, std::vectorstop(); + timers[DM_gen_particle_basis]->stop(); } diff --git a/src/QMCHamiltonians/DensityMatrices1B.h b/src/QMCHamiltonians/DensityMatrices1B.h index f16b8e6e15..70e97b2197 100644 --- a/src/QMCHamiltonians/DensityMatrices1B.h +++ b/src/QMCHamiltonians/DensityMatrices1B.h @@ -22,6 +22,20 @@ namespace qmcplusplus { class DensityMatrices1B : public QMCHamiltonianBase { +protected: + enum DMTimers + { + DM_eval, + DM_gen_samples, + DM_gen_sample_basis, + DM_gen_sample_ratios, + DM_gen_particle_basis, + DM_matrix_products, + DM_accumulate, + }; + + TimerList_t timers; + public: enum { From 8741f81885f90345f8c82eff86c0d77734a2d63a Mon Sep 17 00:00:00 2001 From: Jaron Krogel Date: Fri, 28 Jun 2019 12:22:17 -0400 Subject: [PATCH 5/6] completely remove old timers --- src/QMCHamiltonians/DensityMatrices1B.h | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/QMCHamiltonians/DensityMatrices1B.h b/src/QMCHamiltonians/DensityMatrices1B.h index 70e97b2197..f433856ac2 100644 --- a/src/QMCHamiltonians/DensityMatrices1B.h +++ b/src/QMCHamiltonians/DensityMatrices1B.h @@ -153,14 +153,6 @@ class DensityMatrices1B : public QMCHamiltonianBase RandomGenerator_t* uniform_random; - NewTimer* eval_timer; - NewTimer* gen_samples_timer; - NewTimer* gen_sample_basis_timer; - NewTimer* gen_sample_ratios_timer; - NewTimer* gen_particle_basis_timer; - NewTimer* matrix_products_timer; - NewTimer* accumulate_timer; - //constructor/destructor DensityMatrices1B(ParticleSet& P, TrialWaveFunction& psi, ParticleSet* Pcl); From c713ab8c2d135504ff33b413f0e39b8b7ea1fb36 Mon Sep 17 00:00:00 2001 From: Jaron Krogel Date: Fri, 28 Jun 2019 12:33:24 -0400 Subject: [PATCH 6/6] meet even pickier timer requirements --- src/QMCHamiltonians/DensityMatrices1B.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/QMCHamiltonians/DensityMatrices1B.cpp b/src/QMCHamiltonians/DensityMatrices1B.cpp index a29840ae3a..a0ea4ef44f 100644 --- a/src/QMCHamiltonians/DensityMatrices1B.cpp +++ b/src/QMCHamiltonians/DensityMatrices1B.cpp @@ -587,7 +587,7 @@ void DensityMatrices1B::warmup_sampling() DensityMatrices1B::Return_t DensityMatrices1B::evaluate(ParticleSet& P) { - timers[DM_eval]->start(); + ScopedTimer t(timers[DM_eval]); if (have_required_traces || !energy_mat) { if (check_derivatives) @@ -599,7 +599,6 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate(ParticleSet& P) else APP_ABORT("DensityMatrices1B::evaluate invalid evaluator"); } - timers[DM_eval]->stop(); return 0.0; } @@ -891,7 +890,7 @@ DensityMatrices1B::Return_t DensityMatrices1B::evaluate_loop(ParticleSet& P) inline void DensityMatrices1B::generate_samples(RealType weight, int steps) { - timers[DM_gen_samples]->start(); + ScopedTimer t(timers[DM_gen_samples]); RandomGenerator_t& rng = *uniform_random; bool save = false; if (steps == 0) @@ -945,7 +944,6 @@ inline void DensityMatrices1B::generate_samples(RealType weight, int steps) app_log() << " rmean = " << rmean << std::endl; app_log() << " rstd = " << rstd << std::endl; } - timers[DM_gen_samples]->stop(); } @@ -1147,7 +1145,7 @@ void DensityMatrices1B::get_energies(std::vector& E_n) void DensityMatrices1B::generate_sample_basis(Matrix_t& Phi_mb) { - timers[DM_gen_sample_basis]->start(); + ScopedTimer t(timers[DM_gen_sample_basis]); int mb = 0; for (int m = 0; m < samples; ++m) { @@ -1155,13 +1153,12 @@ void DensityMatrices1B::generate_sample_basis(Matrix_t& Phi_mb) for (int b = 0; b < basis_size; ++b, ++mb) Phi_mb(mb) = basis_values[b]; } - timers[DM_gen_sample_basis]->stop(); } void DensityMatrices1B::generate_sample_ratios(std::vector Psi_nm) { - timers[DM_gen_sample_ratios]->start(); + ScopedTimer t(timers[DM_gen_sample_ratios]); for (int m = 0; m < samples; ++m) { // get N ratios for the current sample point @@ -1179,13 +1176,12 @@ void DensityMatrices1B::generate_sample_ratios(std::vector Psi_nm) } } } - timers[DM_gen_sample_ratios]->stop(); } void DensityMatrices1B::generate_particle_basis(ParticleSet& P, std::vector& Phi_nb) { - timers[DM_gen_particle_basis]->start(); + ScopedTimer t(timers[DM_gen_particle_basis]); int p = 0; for (int s = 0; s < nspecies; ++s) { @@ -1198,7 +1194,6 @@ void DensityMatrices1B::generate_particle_basis(ParticleSet& P, std::vectorstop(); }