diff --git a/Grid/qcd/action/ActionBase.h b/Grid/qcd/action/ActionBase.h index 17980ee0..fa69b4e5 100644 --- a/Grid/qcd/action/ActionBase.h +++ b/Grid/qcd/action/ActionBase.h @@ -40,6 +40,29 @@ class Action public: bool is_smeared = false; + RealD deriv_norm_sum; + RealD deriv_max_sum; + int deriv_num; + RealD deriv_us; + RealD S_us; + RealD refresh_us; + void reset_timer(void) { + deriv_us = S_us = refresh_us = 0.0; + deriv_num=0; + deriv_norm_sum = deriv_max_sum=0.0; + } + void deriv_log(RealD nrm, RealD max) { deriv_max_sum+=max; deriv_norm_sum+=nrm; deriv_num++;} + RealD deriv_max_average(void) { return deriv_max_sum/deriv_num; }; + RealD deriv_norm_average(void) { return deriv_norm_sum/deriv_num; }; + RealD deriv_timer(void) { return deriv_us; }; + RealD S_timer(void) { return deriv_us; }; + RealD refresh_timer(void) { return deriv_us; }; + void deriv_timer_start(void) { deriv_us-=usecond(); } + void deriv_timer_stop(void) { deriv_us+=usecond(); } + void refresh_timer_start(void) { refresh_us-=usecond(); } + void refresh_timer_stop(void) { refresh_us+=usecond(); } + void S_timer_start(void) { S_us-=usecond(); } + void S_timer_stop(void) { S_us+=usecond(); } // Heatbath? virtual void refresh(const GaugeField& U, GridSerialRNG &sRNG, GridParallelRNG& pRNG) = 0; // refresh pseudofermions virtual RealD S(const GaugeField& U) = 0; // evaluate the action