<div>Thanks a bunch for the help Mark!</div>
<div>I made some additional changes that seem to work the way I need it.</div>
<div> </div>
<div>src/mdlib/sim_util.c:122: fprintf(stderr, "Fraction complete: %g\n", (step - ir->init_step) / (float) ir->nsteps);<br>src/mdlib/sim_util.c-123-<br>src/mdlib/sim_util.c-124- f = fopen("progress.txt", "w");<br>
src/mdlib/sim_util.c-125- if (!f) return;<br>src/mdlib/sim_util.c-126- fprintf(f, "%g", (step - ir->init_step) / (float) ir->nsteps);<br>src/mdlib/sim_util.c-127- fclose(f);<br>src/mdlib/sim_util.c-128- }<br>
<br><br></div>
<div class="gmail_quote">On Thu, Sep 24, 2009 at 6:58 PM, Mark Abraham <span dir="ltr"><<a href="mailto:Mark.Abraham@anu.edu.au">Mark.Abraham@anu.edu.au</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div>
<div></div>
<div class="h5">Jack Shultz wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">I am hoping for an update every 10 minutes just to satisfy the anxieties of volunteers crunching on my project, but every hour may be satisfactory. And if I can do this without requiring any shell scripts it would be better in my environment. So I started making some code modifications which apparently did not work<br>
src/mdlib/sim_util.c:93:void print_time(FILE *out,time_t start,int step,t_inputrec *ir)<br>src/mdlib/sim_util.c-94-{<br>src/mdlib/sim_util.c-95- static real time_per_step;<br>src/mdlib/sim_util.c-96- static time_t end;<br>
src/mdlib/sim_util.c-97- time_t finish;<br>src/mdlib/sim_util.c-98- double dt, fc;<br>src/mdlib/sim_util.c-99- char buf[48];<br>src/mdlib/sim_util.c-100- FILE *progress="progress.txt";<br>src/mdlib/sim_util.c-101-<br>
src/mdlib/sim_util.c-102- if (!gmx_parallel_env)<br>src/mdlib/sim_util.c-103- fprintf(out,"\r");<br>src/mdlib/sim_util.c-104- fprintf(out,"step %d",step);<br>src/mdlib/sim_util.c-105- if ((step >= ir->nstlist)) {<br>
src/mdlib/sim_util.c-106- if ((ir->nstlist == 0) || ((step % ir->nstlist) == 0)) {<br>src/mdlib/sim_util.c-107- /* We have done a full cycle let's update time_per_step */<br>src/mdlib/sim_util.c-108- end=time(NULL);<br>
src/mdlib/sim_util.c-109- dt=difftime(end,start);<br>src/mdlib/sim_util.c-110- time_per_step=dt/(step - ir->init_step + 1);<br>src/mdlib/sim_util.c-111- }<br>src/mdlib/sim_util.c-112- dt=(ir->nsteps + ir->init_step - step)*time_per_step;<br>
src/mdlib/sim_util.c-113-<br>src/mdlib/sim_util.c-114- if (dt >= 300) { src/mdlib/sim_util.c-115- finish = end+(time_t)dt;<br>src/mdlib/sim_util.c-116- sprintf(buf,"%s",ctime(&finish));<br>
src/mdlib/sim_util.c-117- buf[strlen(buf)-1]='\0';<br>src/mdlib/sim_util.c-118- fprintf(out,", will finish %s",buf);<br>src/mdlib/sim_util.c-119- }<br>src/mdlib/sim_util.c-120- else<br>src/mdlib/sim_util.c-121- fprintf(out,", remaining runtime: %5d s ",(int)dt);<br>
src/mdlib/sim_util.c-122- fc = (int)dt / ir->nstlist;<br>src/mdlib/sim_util.c-123- fprintf(stderr, "Fraction complete: %d \n", fc);<br></blockquote><br></div></div>You're doing integer division and writing an integer. That won't get you fraction complete, even if the ratio of dt (the remaining runtime in seconds) and ir->nstlist (the number of steps between neighboursearches) meant anything! Use<br>
<br>fprintf(stderr, "Fraction complete: %g\n", (step - ir->init_step) / (float) ir->nsteps);<br><br>Mark<br><br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div class="im">src/mdlib/sim_util.c-124- }<br>src/mdlib/sim_util.c-125- if (gmx_parallel_env)<br>src/mdlib/sim_util.c-126- fprintf(out,"\n");<br>src/mdlib/sim_util.c-127-<br>src/mdlib/sim_util.c-128- fflush(out);<br>
src/mdlib/sim_util.c-129-}<br> Back Off! I just backed up md.edr to ./#md.edr.4#<br>starting mdrun 'Protein in water'<br>500 steps, 1.0 ps.<br>step 100, remaining runtime: 122 s Fraction complete: 0<br>
step 200, remaining runtime: 92 s Fraction complete: 0<br><br><br></div>
<div class="im">On Thu, Sep 24, 2009 at 6:34 PM, Mark Abraham <<a href="mailto:Mark.Abraham@anu.edu.au" target="_blank">Mark.Abraham@anu.edu.au</a> <mailto:<a href="mailto:Mark.Abraham@anu.edu.au" target="_blank">Mark.Abraham@anu.edu.au</a>>> wrote:<br>
<br> Jack Shultz wrote:<br><br> I figured out another way to update the progress of my<br> simulation, but I need to report the fraction of completion at<br> the certain intervals of mdrun. Possibly at every time step or<br>
if that does not make sense every 100 timesteps. I don't think<br> this is a feature currently supported, so I will have to make<br> some source code chages. I am looking for the variables related<br>
to total number of time steps and where it controls the the<br> current time step so I can calculate the fraction of complete<br> where current-timestep / total-timestep<br><br><br> Under at least some circumstances GROMACS writes the expected<br>
runtime remaining to stderr, but I don't recall what/when. Piping<br> that to some useful script has to be a good start. You certainly<br> don't need this data every time step, and don't want to be<br> perturbing mdrun to get it.<br>
<br> Even if the above was unsuitable, surely progress would only need to<br> be moderately accurate and for simulations that last many hours. If<br> so, you'll get good enough data by grepping a gmxdump of the .tpr to<br>
get the expected frequencies of output and length of run, and then<br> watching the growth of whichever of .log/.trr/.edr is written most<br> frequently. I/O buffering will affect the numbers somewhat.<br><br> Mark<br>
<br> _______________________________________________<br> gmx-users mailing list <a href="mailto:gmx-users@gromacs.org" target="_blank">gmx-users@gromacs.org</a><br></div> <mailto:<a href="mailto:gmx-users@gromacs.org" target="_blank">gmx-users@gromacs.org</a>>
<div class="im"><br> <a href="http://lists.gromacs.org/mailman/listinfo/gmx-users" target="_blank">http://lists.gromacs.org/mailman/listinfo/gmx-users</a><br> Please search the archive at <a href="http://www.gromacs.org/search" target="_blank">http://www.gromacs.org/search</a> before<br>
posting!<br> Please don't post (un)subscribe requests to the list. Use the www<br> interface or send it to <a href="mailto:gmx-users-request@gromacs.org" target="_blank">gmx-users-request@gromacs.org</a><br></div>
<mailto:<a href="mailto:gmx-users-request@gromacs.org" target="_blank">gmx-users-request@gromacs.org</a>>.
<div class="im"><br> Can't post? Read <a href="http://www.gromacs.org/mailing_lists/users.php" target="_blank">http://www.gromacs.org/mailing_lists/users.php</a><br><br><br><br><br>-- <br>Jack<br><br><a href="http://drugdiscoveryathome.com/" target="_blank">http://drugdiscoveryathome.com</a><br>
<a href="http://hydrogenathome.org/" target="_blank">http://hydrogenathome.org</a><br><br><br></div>------------------------------------------------------------------------
<div class="im"><br><br>_______________________________________________<br>gmx-users mailing list <a href="mailto:gmx-users@gromacs.org" target="_blank">gmx-users@gromacs.org</a><br><a href="http://lists.gromacs.org/mailman/listinfo/gmx-users" target="_blank">http://lists.gromacs.org/mailman/listinfo/gmx-users</a><br>
Please search the archive at <a href="http://www.gromacs.org/search" target="_blank">http://www.gromacs.org/search</a> before posting!<br>Please don't post (un)subscribe requests to the list. Use the www interface or send it to <a href="mailto:gmx-users-request@gromacs.org" target="_blank">gmx-users-request@gromacs.org</a>.<br>
Can't post? Read <a href="http://www.gromacs.org/mailing_lists/users.php" target="_blank">http://www.gromacs.org/mailing_lists/users.php</a><br></div></blockquote>
<div>
<div></div>
<div class="h5">_______________________________________________<br>gmx-users mailing list <a href="mailto:gmx-users@gromacs.org" target="_blank">gmx-users@gromacs.org</a><br><a href="http://lists.gromacs.org/mailman/listinfo/gmx-users" target="_blank">http://lists.gromacs.org/mailman/listinfo/gmx-users</a><br>
Please search the archive at <a href="http://www.gromacs.org/search" target="_blank">http://www.gromacs.org/search</a> before posting!<br>Please don't post (un)subscribe requests to the list. Use the www interface or send it to <a href="mailto:gmx-users-request@gromacs.org" target="_blank">gmx-users-request@gromacs.org</a>.<br>
Can't post? Read <a href="http://www.gromacs.org/mailing_lists/users.php" target="_blank">http://www.gromacs.org/mailing_lists/users.php</a><br></div></div></blockquote></div><br><br clear="all">
<div></div><br>-- <br>Jack<br><br><a href="http://drugdiscoveryathome.com">http://drugdiscoveryathome.com</a><br><a href="http://hydrogenathome.org">http://hydrogenathome.org</a><br>