From 12d8599eee572fc24dc32f6f6ba71e89b7d55dd0 Mon Sep 17 00:00:00 2001 From: Omar Valsson <omar.valsson@gmail.com> Date: Tue, 19 Dec 2017 15:38:17 +0100 Subject: [PATCH] Instantameous gradient not on by default --- .../colvar.data.reference | 44 ++++++++-------- .../plumed.dat | 2 +- .../colvar.data.reference | 44 ++++++++-------- .../plumed.dat | 2 +- .../colvar.data.reference | 44 ++++++++-------- .../rt-opt-averaged-sgd-maskfile/plumed.dat | 2 +- .../rt-opt-averaged-sgd/colvar.data.reference | 44 ++++++++-------- regtest/ves/rt-opt-averaged-sgd/plumed.dat | 2 +- regtest/ves/rt-opt-dummy/plumed.dat | 1 + src/ves/Optimizer.cpp | 51 +++++++++++++------ src/ves/Optimizer.h | 2 + 11 files changed, 130 insertions(+), 108 deletions(-) diff --git a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/colvar.data.reference b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/colvar.data.reference index 24869d916..0868bd70a 100644 --- a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/colvar.data.reference +++ b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/colvar.data.reference @@ -1,24 +1,24 @@ -#! FIELDS time phi ves1.bias o1.gradrms o1.gradmax +#! FIELDS time phi ves1.bias #! SET min_phi -pi #! SET max_phi pi - 0.000000 -1.238 0.000 0.000 0.000 - 1.000000 -1.484 0.000 0.000 0.000 - 2.000000 -1.324 0.000 0.637 0.970 - 3.000000 -1.334 4.716 0.637 0.970 - 4.000000 -1.461 4.403 0.659 0.983 - 5.000000 -1.220 6.371 0.659 0.983 - 6.000000 -1.388 7.123 0.649 0.961 - 7.000000 -1.548 7.766 0.649 0.961 - 8.000000 -1.843 1.066 0.599 0.981 - 9.000000 -2.242 -3.365 0.599 0.981 - 10.000000 -1.148 8.387 0.439 0.847 - 11.000000 -1.758 5.325 0.439 0.847 - 12.000000 -1.319 12.218 0.523 0.975 - 13.000000 -2.991 -1.208 0.523 0.975 - 14.000000 -1.411 14.007 0.475 0.814 - 15.000000 -2.599 -0.724 0.475 0.814 - 16.000000 -1.461 15.304 0.451 0.755 - 17.000000 -1.379 17.133 0.451 0.755 - 18.000000 -1.677 11.559 0.598 0.988 - 19.000000 -1.524 17.994 0.598 0.988 - 20.000000 -1.200 15.348 0.585 0.965 + 0.000000 -1.238 0.000 + 1.000000 -1.484 0.000 + 2.000000 -1.324 0.000 + 3.000000 -1.334 4.716 + 4.000000 -1.461 4.403 + 5.000000 -1.220 6.371 + 6.000000 -1.388 7.123 + 7.000000 -1.548 7.766 + 8.000000 -1.843 1.066 + 9.000000 -2.242 -3.365 + 10.000000 -1.148 8.387 + 11.000000 -1.758 5.325 + 12.000000 -1.319 12.218 + 13.000000 -2.991 -1.208 + 14.000000 -1.411 14.007 + 15.000000 -2.599 -0.724 + 16.000000 -1.461 15.304 + 17.000000 -1.379 17.133 + 18.000000 -1.677 11.559 + 19.000000 -1.524 17.994 + 20.000000 -1.200 15.348 diff --git a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/plumed.dat b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/plumed.dat index 83edb9d94..8c91d9c00 100644 --- a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/plumed.dat +++ b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver-2/plumed.dat @@ -35,7 +35,7 @@ OPT_AVERAGED_SGD ... PRINT ... STRIDE=500 - ARG=phi,ves1.bias,o1.* + ARG=phi,ves1.bias FILE=colvar.data FMT=%6.3f ... PRINT diff --git a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/colvar.data.reference b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/colvar.data.reference index 0c1a8c5a0..d138bff4a 100644 --- a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/colvar.data.reference +++ b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/colvar.data.reference @@ -1,24 +1,24 @@ -#! FIELDS time phi ves1.bias o1.gradrms o1.gradmax +#! FIELDS time phi ves1.bias #! SET min_phi -pi #! SET max_phi pi - 0.000000 -1.238 0.000 0.000 0.000 - 1.000000 -1.484 0.000 0.000 0.000 - 2.000000 -1.324 0.000 0.637 0.970 - 3.000000 -1.334 4.716 0.637 0.970 - 4.000000 -1.461 4.403 0.659 0.983 - 5.000000 -1.220 8.417 0.659 0.983 - 6.000000 -1.388 9.566 0.649 0.961 - 7.000000 -1.548 11.484 0.649 0.961 - 8.000000 -1.843 1.350 0.599 0.981 - 9.000000 -2.242 -4.484 0.599 0.981 - 10.000000 -1.148 11.426 0.439 0.847 - 11.000000 -1.758 8.505 0.439 0.847 - 12.000000 -1.319 17.398 0.523 0.975 - 13.000000 -2.991 -2.357 0.523 0.975 - 14.000000 -1.411 21.113 0.475 0.814 - 15.000000 -2.599 -0.596 0.475 0.814 - 16.000000 -1.461 23.344 0.451 0.755 - 17.000000 -1.379 25.813 0.451 0.755 - 18.000000 -1.677 17.779 0.598 0.988 - 19.000000 -1.524 28.684 0.598 0.988 - 20.000000 -1.200 22.933 0.585 0.965 + 0.000000 -1.238 0.000 + 1.000000 -1.484 0.000 + 2.000000 -1.324 0.000 + 3.000000 -1.334 4.716 + 4.000000 -1.461 4.403 + 5.000000 -1.220 8.417 + 6.000000 -1.388 9.566 + 7.000000 -1.548 11.484 + 8.000000 -1.843 1.350 + 9.000000 -2.242 -4.484 + 10.000000 -1.148 11.426 + 11.000000 -1.758 8.505 + 12.000000 -1.319 17.398 + 13.000000 -2.991 -2.357 + 14.000000 -1.411 21.113 + 15.000000 -2.599 -0.596 + 16.000000 -1.461 23.344 + 17.000000 -1.379 25.813 + 18.000000 -1.677 17.779 + 19.000000 -1.524 28.684 + 20.000000 -1.200 22.933 diff --git a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/plumed.dat b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/plumed.dat index 6feca1ee9..0c309e09f 100644 --- a/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/plumed.dat +++ b/regtest/ves/rt-opt-averaged-sgd-exp-decaying-aver/plumed.dat @@ -35,7 +35,7 @@ OPT_AVERAGED_SGD ... PRINT ... STRIDE=500 - ARG=phi,ves1.bias,o1.* + ARG=phi,ves1.bias FILE=colvar.data FMT=%6.3f ... PRINT diff --git a/regtest/ves/rt-opt-averaged-sgd-maskfile/colvar.data.reference b/regtest/ves/rt-opt-averaged-sgd-maskfile/colvar.data.reference index 7ccf565f6..05a9c05c7 100644 --- a/regtest/ves/rt-opt-averaged-sgd-maskfile/colvar.data.reference +++ b/regtest/ves/rt-opt-averaged-sgd-maskfile/colvar.data.reference @@ -1,24 +1,24 @@ -#! FIELDS time phi ves1.bias o1.gradrms o1.gradmax +#! FIELDS time phi ves1.bias #! SET min_phi -pi #! SET max_phi pi - 0.000000 -1.238 0.000 0.000 0.000 - 1.000000 -1.484 0.000 0.000 0.000 - 2.000000 -1.324 0.000 0.637 0.970 - 3.000000 -1.334 3.269 0.637 0.970 - 4.000000 -1.461 3.220 0.659 0.983 - 5.000000 -1.220 4.325 0.659 0.983 - 6.000000 -1.388 5.057 0.649 0.961 - 7.000000 -1.548 6.027 0.649 0.961 - 8.000000 -1.843 1.879 0.599 0.981 - 9.000000 -2.242 -1.819 0.599 0.981 - 10.000000 -1.148 5.786 0.439 0.847 - 11.000000 -1.758 5.171 0.439 0.847 - 12.000000 -1.319 8.648 0.523 0.975 - 13.000000 -2.991 1.784 0.523 0.975 - 14.000000 -1.411 10.083 0.475 0.814 - 15.000000 -2.599 1.350 0.475 0.814 - 16.000000 -1.461 11.032 0.451 0.755 - 17.000000 -1.379 11.862 0.451 0.755 - 18.000000 -1.677 9.170 0.598 0.988 - 19.000000 -1.524 12.659 0.598 0.988 - 20.000000 -1.200 10.287 0.585 0.965 + 0.000000 -1.238 0.000 + 1.000000 -1.484 0.000 + 2.000000 -1.324 0.000 + 3.000000 -1.334 3.269 + 4.000000 -1.461 3.220 + 5.000000 -1.220 4.325 + 6.000000 -1.388 5.057 + 7.000000 -1.548 6.027 + 8.000000 -1.843 1.879 + 9.000000 -2.242 -1.819 + 10.000000 -1.148 5.786 + 11.000000 -1.758 5.171 + 12.000000 -1.319 8.648 + 13.000000 -2.991 1.784 + 14.000000 -1.411 10.083 + 15.000000 -2.599 1.350 + 16.000000 -1.461 11.032 + 17.000000 -1.379 11.862 + 18.000000 -1.677 9.170 + 19.000000 -1.524 12.659 + 20.000000 -1.200 10.287 diff --git a/regtest/ves/rt-opt-averaged-sgd-maskfile/plumed.dat b/regtest/ves/rt-opt-averaged-sgd-maskfile/plumed.dat index 949443111..a8b121097 100644 --- a/regtest/ves/rt-opt-averaged-sgd-maskfile/plumed.dat +++ b/regtest/ves/rt-opt-averaged-sgd-maskfile/plumed.dat @@ -33,7 +33,7 @@ OPT_AVERAGED_SGD ... PRINT ... STRIDE=500 - ARG=phi,ves1.bias,o1.* + ARG=phi,ves1.bias FILE=colvar.data FMT=%6.3f ... PRINT diff --git a/regtest/ves/rt-opt-averaged-sgd/colvar.data.reference b/regtest/ves/rt-opt-averaged-sgd/colvar.data.reference index d1d516bcc..7aeeeabc0 100644 --- a/regtest/ves/rt-opt-averaged-sgd/colvar.data.reference +++ b/regtest/ves/rt-opt-averaged-sgd/colvar.data.reference @@ -1,24 +1,24 @@ -#! FIELDS time phi ves1.bias o1.gradrms o1.gradmax +#! FIELDS time phi ves1.bias #! SET min_phi -pi #! SET max_phi pi - 0.000000 -1.238 0.000 0.000 0.000 - 1.000000 -1.484 0.000 0.000 0.000 - 2.000000 -1.324 0.000 0.637 0.970 - 3.000000 -1.334 4.716 0.637 0.970 - 4.000000 -1.461 4.403 0.659 0.983 - 5.000000 -1.220 6.371 0.659 0.983 - 6.000000 -1.388 7.123 0.649 0.961 - 7.000000 -1.548 7.766 0.649 0.961 - 8.000000 -1.843 1.066 0.599 0.981 - 9.000000 -2.242 -3.365 0.599 0.981 - 10.000000 -1.148 8.387 0.439 0.847 - 11.000000 -1.758 5.325 0.439 0.847 - 12.000000 -1.319 12.218 0.523 0.975 - 13.000000 -2.991 -1.159 0.523 0.975 - 14.000000 -1.411 13.737 0.475 0.814 - 15.000000 -2.599 -0.714 0.475 0.814 - 16.000000 -1.461 14.602 0.451 0.755 - 17.000000 -1.379 15.945 0.451 0.755 - 18.000000 -1.677 10.610 0.598 0.988 - 19.000000 -1.524 16.005 0.598 0.988 - 20.000000 -1.200 13.955 0.585 0.965 + 0.000000 -1.238 0.000 + 1.000000 -1.484 0.000 + 2.000000 -1.324 0.000 + 3.000000 -1.334 4.716 + 4.000000 -1.461 4.403 + 5.000000 -1.220 6.371 + 6.000000 -1.388 7.123 + 7.000000 -1.548 7.766 + 8.000000 -1.843 1.066 + 9.000000 -2.242 -3.365 + 10.000000 -1.148 8.387 + 11.000000 -1.758 5.325 + 12.000000 -1.319 12.218 + 13.000000 -2.991 -1.159 + 14.000000 -1.411 13.737 + 15.000000 -2.599 -0.714 + 16.000000 -1.461 14.602 + 17.000000 -1.379 15.945 + 18.000000 -1.677 10.610 + 19.000000 -1.524 16.005 + 20.000000 -1.200 13.955 diff --git a/regtest/ves/rt-opt-averaged-sgd/plumed.dat b/regtest/ves/rt-opt-averaged-sgd/plumed.dat index b5b82727d..339ced334 100644 --- a/regtest/ves/rt-opt-averaged-sgd/plumed.dat +++ b/regtest/ves/rt-opt-averaged-sgd/plumed.dat @@ -34,7 +34,7 @@ OPT_AVERAGED_SGD ... PRINT ... STRIDE=500 - ARG=phi,ves1.bias,o1.* + ARG=phi,ves1.bias FILE=colvar.data FMT=%6.3f ... PRINT diff --git a/regtest/ves/rt-opt-dummy/plumed.dat b/regtest/ves/rt-opt-dummy/plumed.dat index a07e8d631..38b7cc0c2 100644 --- a/regtest/ves/rt-opt-dummy/plumed.dat +++ b/regtest/ves/rt-opt-dummy/plumed.dat @@ -33,6 +33,7 @@ OPT_DUMMY ... HESSIAN_OUTPUT=1 HESSIAN_FMT=%12.6f TARGETDIST_AVERAGES_FMT=%12.6f + MONITOR_INSTANTANEOUS_GRADIENT ... OPT_DUMMY PRINT ... diff --git a/src/ves/Optimizer.cpp b/src/ves/Optimizer.cpp index b7785f366..f33da8151 100644 --- a/src/ves/Optimizer.cpp +++ b/src/ves/Optimizer.cpp @@ -48,6 +48,7 @@ Optimizer::Optimizer(const ActionOptions&ao): iter_counter(0), use_hessian_(false), diagonal_hessian_(true), + monitor_instantaneous_gradient_(false), use_mwalkers_mpi_(false), mwalkers_mpi_single_files_(true), dynamic_targetdists_(0), @@ -274,6 +275,10 @@ Optimizer::Optimizer(const ActionOptions&ao): log.printf(" the reweight factor c(t) will be updated very %u coefficent iterations\n",ustride_reweightfactor_); } } + + if(keywords.exists("MONITOR_INSTANTANEOUS_GRADIENT")) { + parseFlag("MONITOR_INSTANTANEOUS_GRADIENT",monitor_instantaneous_gradient_); + } if(keywords.exists("MONITOR_AVERAGE_GRADIENT")) { bool monitor_aver_gradient = false; @@ -709,9 +714,11 @@ Optimizer::Optimizer(const ActionOptions&ao): if(ncoeffssets_==1) { log.printf(" Output Components:\n"); log.printf(" "); - addComponent("gradrms"); componentIsNotPeriodic("gradrms"); - log.printf(" "); - addComponent("gradmax"); componentIsNotPeriodic("gradmax"); + if(monitor_instantaneous_gradient_) { + addComponent("gradrms"); componentIsNotPeriodic("gradrms"); + log.printf(" "); + addComponent("gradmax"); componentIsNotPeriodic("gradmax"); + } if(aver_gradient_pntrs_.size()>0) { log.printf(" "); addComponent("avergradrms"); componentIsNotPeriodic("avergradrms"); @@ -729,9 +736,11 @@ Optimizer::Optimizer(const ActionOptions&ao): log.printf(" Output Components for coefficent set %u:\n",i); std::string is=""; Tools::convert(i,is); is = "_" + coeffssetid_prefix_ + is; log.printf(" "); - addComponent("gradrms"+is); componentIsNotPeriodic("gradrms"+is); - log.printf(" "); - addComponent("gradmax"+is); componentIsNotPeriodic("gradmax"+is); + if(monitor_instantaneous_gradient_) { + addComponent("gradrms"+is); componentIsNotPeriodic("gradrms"+is); + log.printf(" "); + addComponent("gradmax"+is); componentIsNotPeriodic("gradmax"+is); + } if(aver_gradient_pntrs_.size()>0) { log.printf(" "); addComponent("avergradrms"+is); componentIsNotPeriodic("avergradrms"+is); @@ -837,6 +846,8 @@ void Optimizer::registerKeywords( Keywords& keys ) { // keys.reserveFlag("START_OPTIMIZATION_AFRESH",false,"if the iterations should be started afresh when a restart has been triggered by the RESTART keyword or the MD code."); // + keys.addFlag("MONITOR_INSTANTANEOUS_GRADIENT",false,"if the instantaneous gradient should be monitored."); + // keys.reserveFlag("MONITOR_AVERAGE_GRADIENT",false,"if the averaged gradient should be monitored."); keys.reserve("optional","MONITOR_AVERAGES_EXP_DECAY","use an exponentially decaying averaging with a given time constant when monitoring the averaged gradient"); // @@ -859,8 +870,8 @@ void Optimizer::registerKeywords( Keywords& keys ) { keys.use("UPDATE_FROM"); keys.use("UPDATE_UNTIL"); // Components that are always active - keys.addOutputComponent("gradrms","default","the root mean square value of the coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradrms-#."); - keys.addOutputComponent("gradmax","default","the largest absolute value of the coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradmax-#."); + keys.addOutputComponent("gradrms","MONITOR_INSTANTANEOUS_GRADIENT","the root mean square value of the coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradrms-#."); + keys.addOutputComponent("gradmax","MONITOR_INSTANTANEOUS_GRADIENT","the largest absolute value of the coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradmax-#."); ActionWithValue::useCustomisableComponents(keys); // keys.addOutputComponent("gradmaxidx","default","the index of the maximum absolute value of the gradient"); @@ -905,6 +916,8 @@ void Optimizer::useRestartKeywords(Keywords& keys) { void Optimizer::useMonitorAveragesKeywords(Keywords& keys) { keys.use("MONITOR_AVERAGE_GRADIENT"); keys.use("MONITOR_AVERAGES_EXP_DECAY"); + keys.addOutputComponent("avergradrms","MONITOR_AVERAGE_GRADIENT","the root mean square value of the averaged coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradrms-#."); + keys.addOutputComponent("avergradmax","MONITOR_AVERAGE_GRADIENT","the largest absolute value of the averaged coefficent gradient. For multiple biases this component is labeled using the number of the bias as gradmax-#."); } @@ -1074,12 +1087,15 @@ void Optimizer::updateOutputComponents() { if(!fixed_stepsize_) { getPntrToComponent("stepsize")->set( getCurrentStepSize(0) ); } - getPntrToComponent("gradrms")->set( gradient_pntrs_[0]->getRMS() ); - size_t gradient_maxabs_idx=0; - getPntrToComponent("gradmax")->set( gradient_pntrs_[0]->getMaxAbsValue(gradient_maxabs_idx) ); + if(monitor_instantaneous_gradient_) { + getPntrToComponent("gradrms")->set( gradient_pntrs_[0]->getRMS() ); + size_t gradient_maxabs_idx=0; + getPntrToComponent("gradmax")->set( gradient_pntrs_[0]->getMaxAbsValue(gradient_maxabs_idx) ); + } if(aver_gradient_pntrs_.size()>0) { getPntrToComponent("avergradrms")->set( aver_gradient_pntrs_[0]->getRMS() ); - getPntrToComponent("avergradmax")->set( aver_gradient_pntrs_[0]->getMaxAbsValue(gradient_maxabs_idx) ); + size_t avergradient_maxabs_idx=0; + getPntrToComponent("avergradmax")->set( aver_gradient_pntrs_[0]->getMaxAbsValue(avergradient_maxabs_idx) ); } } else { @@ -1088,12 +1104,15 @@ void Optimizer::updateOutputComponents() { if(!fixed_stepsize_) { getPntrToComponent("stepsize"+is)->set( getCurrentStepSize(i) ); } - getPntrToComponent("gradrms"+is)->set( gradient_pntrs_[i]->getRMS() ); - size_t gradient_maxabs_idx=0; - getPntrToComponent("gradmax"+is)->set( gradient_pntrs_[i]->getMaxAbsValue(gradient_maxabs_idx) ); + if(monitor_instantaneous_gradient_) { + getPntrToComponent("gradrms"+is)->set( gradient_pntrs_[i]->getRMS() ); + size_t gradient_maxabs_idx=0; + getPntrToComponent("gradmax"+is)->set( gradient_pntrs_[i]->getMaxAbsValue(gradient_maxabs_idx) ); + } if(aver_gradient_pntrs_.size()>0) { getPntrToComponent("avergradrms"+is)->set( aver_gradient_pntrs_[0]->getRMS() ); - getPntrToComponent("avergradmax"+is)->set( aver_gradient_pntrs_[0]->getMaxAbsValue(gradient_maxabs_idx) ); + size_t avergradient_maxabs_idx=0; + getPntrToComponent("avergradmax"+is)->set( aver_gradient_pntrs_[0]->getMaxAbsValue(avergradient_maxabs_idx) ); } } } diff --git a/src/ves/Optimizer.h b/src/ves/Optimizer.h index 6e49dc2b1..d10bc4a6f 100644 --- a/src/ves/Optimizer.h +++ b/src/ves/Optimizer.h @@ -67,6 +67,8 @@ private: bool diagonal_hessian_; bool hessian_covariance_from_averages_; // + bool monitor_instantaneous_gradient_; + // bool use_mwalkers_mpi_; bool mwalkers_mpi_single_files_; // -- GitLab