From a767ca331776dc01356e2b730dda1ff28dd19a4f Mon Sep 17 00:00:00 2001 From: Brett Morris Date: Mon, 7 Dec 2015 10:40:44 -0800 Subject: [PATCH 1/3] Fixing elapsed time calculation for timed MCMC runs --- README.md | 6 ++++++ stsp.c | 22 +++++++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e8fb99c..605f525 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,12 @@ STSP In and out of transit starspot modeling code +V4.5.1 2015-12-07 + +Refactoring the elapsed time calculation for timed runs. STSP runs can be timed by +setting the MCMC step number to a negative number, which will be interpreted as the +negative of the maximum number of seconds to run the chains. + V4.5 2015-11-30 Added the functionality for analyzing planets on eccentric orbits. diff --git a/stsp.c b/stsp.c index 0ec8063..e544ba6 100644 --- a/stsp.c +++ b/stsp.c @@ -3,8 +3,8 @@ #include #include -#define QUIET 0 //0 -> prints things, 1 -> only prints errors -#define QUIETMCMC 0 //0 -> mcmc prints as it goes, 1-> stays quiet (0 overridden by QUIET) +#define QUIET 1 //0 -> prints things, 1 -> only prints errors +#define QUIETMCMC 1 //0 -> mcmc prints as it goes, 1-> stays quiet (0 overridden by QUIET) #define ALWAYSPRINTVIS 0 #define WHICHPRINTVIS 1 // what sort of visualization file to output (j-1,g-2) #define ANYPRINTVIS 0 //0 for speed, overrides other PRINTVIS preferences @@ -4226,7 +4226,8 @@ void mcmc(stardata *star,planetdata planet[MAXPLANETS],spotdata spot[MAXSPOTS],i { char goodparams,filename[128]; int i,j,k,r,msi,nparam,curstep,potstep,*updated,*naccepted,maxsteps; - long int memused,maxtime,time0,time1,avgtime; + long int memused; + double maxtime,time0,time1,avgtime,elapsed_time,elapsed_time_at_next_step; double **param[2],*chisq[2]; //param[0-1][chain number][parameter number] double sqrtascale,oosqrtascale,smooascale,z,alpha,rn; double bestchisq,*bestparam,torig; @@ -4491,17 +4492,17 @@ void mcmc(stardata *star,planetdata planet[MAXPLANETS],spotdata spot[MAXSPOTS],i else { maxsteps=TOOBIG; - maxtime=starttime-maxstepsortime; //time limit is passed as negative + maxtime=-maxstepsortime; //time limit is passed as negative # if !QUIETMCMC && !QUIET printf("start time: %li maxtime: %li (%li)\n",starttime,maxtime,maxstepsortime*(-1)); # endif } - avgtime=0; + if(maxtime||ALWAYSAVERAGETIME) + time0=timecheck(); for(msi=0;msimaxtime) + elapsed_time = time1-time0; + avgtime=elapsed_time/(msi+1); + elapsed_time_at_next_step = avgtime + elapsed_time; + + if(elapsed_time_at_next_step > maxtime) maxsteps=0; //make it stop, time is almost up } } //end of main mcmc loop From 6641e9f80ef7ec8ac276ced7d0841b3c27f27bf5 Mon Sep 17 00:00:00 2001 From: Brett Morris Date: Mon, 7 Dec 2015 10:42:35 -0800 Subject: [PATCH 2/3] Correcting indentation to new lines in previous commit --- stsp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stsp.c b/stsp.c index e544ba6..ea1a8b6 100644 --- a/stsp.c +++ b/stsp.c @@ -4227,7 +4227,7 @@ void mcmc(stardata *star,planetdata planet[MAXPLANETS],spotdata spot[MAXSPOTS],i char goodparams,filename[128]; int i,j,k,r,msi,nparam,curstep,potstep,*updated,*naccepted,maxsteps; long int memused; - double maxtime,time0,time1,avgtime,elapsed_time,elapsed_time_at_next_step; + double maxtime,time0,time1,avgtime,elapsed_time,elapsed_time_at_next_step; double **param[2],*chisq[2]; //param[0-1][chain number][parameter number] double sqrtascale,oosqrtascale,smooascale,z,alpha,rn; double bestchisq,*bestparam,torig; @@ -4643,9 +4643,9 @@ void mcmc(stardata *star,planetdata planet[MAXPLANETS],spotdata spot[MAXSPOTS],i if(maxtime||ALWAYSAVERAGETIME) { time1=timecheck(); - elapsed_time = time1-time0; + elapsed_time = time1-time0; avgtime=elapsed_time/(msi+1); - elapsed_time_at_next_step = avgtime + elapsed_time; + elapsed_time_at_next_step = avgtime + elapsed_time; if(elapsed_time_at_next_step > maxtime) maxsteps=0; //make it stop, time is almost up From 3dca69d08c2cd9a692a6828f113af2c7ad04dcc0 Mon Sep 17 00:00:00 2001 From: Brett Morris Date: Tue, 8 Dec 2015 16:30:10 -0800 Subject: [PATCH 3/3] Adding 5 minute buffer to timed runs --- stsp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/stsp.c b/stsp.c index ea1a8b6..a1e7972 100644 --- a/stsp.c +++ b/stsp.c @@ -4226,7 +4226,7 @@ void mcmc(stardata *star,planetdata planet[MAXPLANETS],spotdata spot[MAXSPOTS],i { char goodparams,filename[128]; int i,j,k,r,msi,nparam,curstep,potstep,*updated,*naccepted,maxsteps; - long int memused; + long int memused, run_time_buffer; double maxtime,time0,time1,avgtime,elapsed_time,elapsed_time_at_next_step; double **param[2],*chisq[2]; //param[0-1][chain number][parameter number] double sqrtascale,oosqrtascale,smooascale,z,alpha,rn; @@ -4646,8 +4646,9 @@ void mcmc(stardata *star,planetdata planet[MAXPLANETS],spotdata spot[MAXSPOTS],i elapsed_time = time1-time0; avgtime=elapsed_time/(msi+1); elapsed_time_at_next_step = avgtime + elapsed_time; + run_time_buffer = 300; - if(elapsed_time_at_next_step > maxtime) + if(elapsed_time_at_next_step > maxtime - run_time_buffer) maxsteps=0; //make it stop, time is almost up } } //end of main mcmc loop