Jack Shultz wrote:
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 src/mdlib/sim_util.c:93:void print_time(FILE *out,time_t start,int step,t_inputrec *ir)
src/mdlib/sim_util.c-94-{
src/mdlib/sim_util.c-95-  static real time_per_step;
src/mdlib/sim_util.c-96-  static time_t end;
src/mdlib/sim_util.c-97-  time_t finish;
src/mdlib/sim_util.c-98-  double dt, fc;
src/mdlib/sim_util.c-99-  char buf[48];
src/mdlib/sim_util.c-100-  FILE *progress="progress.txt";
src/mdlib/sim_util.c-101-
src/mdlib/sim_util.c-102-  if (!gmx_parallel_env)
src/mdlib/sim_util.c-103-    fprintf(out,"\r");
src/mdlib/sim_util.c-104-  fprintf(out,"step %d",step);
src/mdlib/sim_util.c-105-  if ((step >= ir->nstlist)) {
src/mdlib/sim_util.c-106- if ((ir->nstlist == 0) || ((step % ir->nstlist) == 0)) { src/mdlib/sim_util.c-107- /* We have done a full cycle let's update time_per_step */
src/mdlib/sim_util.c-108-      end=time(NULL);
src/mdlib/sim_util.c-109-      dt=difftime(end,start);
src/mdlib/sim_util.c-110-      time_per_step=dt/(step - ir->init_step + 1);
src/mdlib/sim_util.c-111-    }
src/mdlib/sim_util.c-112- dt=(ir->nsteps + ir->init_step - step)*time_per_step;
src/mdlib/sim_util.c-113-
src/mdlib/sim_util.c-114- if (dt >= 300) { src/mdlib/sim_util.c-115- finish = end+(time_t)dt;
src/mdlib/sim_util.c-116-      sprintf(buf,"%s",ctime(&finish));
src/mdlib/sim_util.c-117-      buf[strlen(buf)-1]='\0';
src/mdlib/sim_util.c-118-      fprintf(out,", will finish %s",buf);
src/mdlib/sim_util.c-119-    }
src/mdlib/sim_util.c-120-    else
src/mdlib/sim_util.c-121- fprintf(out,", remaining runtime: %5d s ",(int)dt);
src/mdlib/sim_util.c-122-      fc = (int)dt / ir->nstlist;
src/mdlib/sim_util.c-123- fprintf(stderr, "Fraction complete: %d \n", fc);

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

fprintf(stderr, "Fraction complete: %g\n", (step - ir->init_step) / (float) ir->nsteps);

Mark

src/mdlib/sim_util.c-124-  }
src/mdlib/sim_util.c-125-  if (gmx_parallel_env)
src/mdlib/sim_util.c-126-    fprintf(out,"\n");
src/mdlib/sim_util.c-127-
src/mdlib/sim_util.c-128-  fflush(out);
src/mdlib/sim_util.c-129-}
Back Off! I just backed up md.edr to ./#md.edr.4#
starting mdrun 'Protein in water'
500 steps,      1.0 ps.
step 100, remaining runtime:   122 s          Fraction complete: 0
step 200, remaining runtime:    92 s          Fraction complete: 0


On Thu, Sep 24, 2009 at 6:34 PM, Mark Abraham <[email protected] <mailto:[email protected]>> wrote:

    Jack Shultz wrote:

        I figured out another way to update the progress of my
        simulation, but I need to report the fraction of completion at
        the certain intervals of mdrun. Possibly at every time step or
        if that does not make sense every 100 timesteps. I don't think
        this is a feature currently supported, so I will have to make
        some source code chages. I am looking for the variables related
        to total number of time steps and where it controls the the
        current time step so I can calculate the fraction of complete
        where current-timestep / total-timestep


    Under at least some circumstances GROMACS writes the expected
    runtime remaining to stderr, but I don't recall what/when. Piping
    that to some useful script has to be a good start. You certainly
    don't need this data every time step, and don't want to be
    perturbing mdrun to get it.

    Even if the above was unsuitable, surely progress would only need to
    be moderately accurate and for simulations that last many hours. If
    so, you'll get good enough data by grepping a gmxdump of the .tpr to
    get the expected frequencies of output and length of run, and then
    watching the growth of whichever of .log/.trr/.edr is written most
    frequently. I/O buffering will affect the numbers somewhat.

    Mark

    _______________________________________________
    gmx-users mailing list    [email protected]
    <mailto:[email protected]>
    http://lists.gromacs.org/mailman/listinfo/gmx-users
    Please search the archive at http://www.gromacs.org/search before
    posting!
    Please don't post (un)subscribe requests to the list. Use the www
    interface or send it to [email protected]
    <mailto:[email protected]>.
    Can't post? Read http://www.gromacs.org/mailing_lists/users.php




--
Jack

http://drugdiscoveryathome.com
http://hydrogenathome.org


------------------------------------------------------------------------

_______________________________________________
gmx-users mailing list    [email protected]
http://lists.gromacs.org/mailman/listinfo/gmx-users
Please search the archive at http://www.gromacs.org/search before posting!
Please don't post (un)subscribe requests to the list. Use the www interface or send it to [email protected].
Can't post? Read http://www.gromacs.org/mailing_lists/users.php
_______________________________________________
gmx-users mailing list    [email protected]
http://lists.gromacs.org/mailman/listinfo/gmx-users
Please search the archive at http://www.gromacs.org/search before posting!
Please don't post (un)subscribe requests to the list. Use the www interface or send it to [email protected].
Can't post? Read http://www.gromacs.org/mailing_lists/users.php

Reply via email to