[gmx-developers] Double precision restarts are exact, single precision are not in gromacs 3.2.1

David spoel at xray.bmc.uu.se
Thu Jul 21 19:23:17 CEST 2005

On Thu, 2005-07-21 at 11:52 -0500, Jay Mashl wrote:
> On Fri, 22 Jul 2005, Mark Abraham wrote:
> > After posting twice to gmx-users about this problem and apparently being 
> > ignored, I've done yet more testing and discovered a clear difference in the 
> > way single precision and double precision gromacs handle MD restarts in 
> > version 3.2.1 (using Berendsen thermostat and barostat, and PME, on Pentium 4 
> > architecture).
Sorry, I don't have answers to all questions. Berk is the person to
answer this, but apparently he is offline...

> >
> > Single precision restarts using the previous run's trajectory (.trr) and 
> > energy (.edr) files to obtain the configuration and other information (and 
> > using unconstrained_start = yes, and gen_vel = no in the .mdp file to make 
> > sure that the old configuration is preserved) do in fact reproduce the 
> > configuration exactly, in that the energy components calculated by the force 
> > field are identical in Step 0 of the restart with those of the final Step in 
> > the previous run. However the total pressure is different, and by 10 steps 
> > later (my next output interval), all energy components as well as the 
> > pressure have diverged from those obtained for a run. This suggests that 
> > values used to calculate the total pressure (e.g. the virial) are not being 
> > preserved correctly across the restart, and this is subsequently perturbing 
> > the system, at least through the barostat.
> >
> > However double precision gromacs performs "correctly" - all energy components 
> > and the total pressure are reproduced correctly in Step 0 of the restart, and 
> > future steps agree exactly (within output precision over only a few tens of 
> > MD steps) with those obtained from a run that extended over the restart time 
> > from the original starting point.
Is your original trr in double? In that case try an original trr in

> >
> > This suggests that something is being written or read at an inappropriate 
> > precision in the .edr files. Can this be brought to the attention of somebody 
> > who knows how that code is supposed to work, please? They may wish to see if 
> > they can reproduce my observations & work out what is wrong.
> The file include/types/energy.h has a mixture of real and double types for 
> variables that accumulate energy data. Maybe the doubles when changed to reals 
> might work.
Don't meddle with these vars...
It could be that in order to retain precision one needs more double
precision vars.

> Jay
David van der Spoel, PhD, Assoc. Prof., Molecular Biophysics group,
Dept. of Cell and Molecular Biology, Uppsala University.
Husargatan 3, Box 596,          75124 Uppsala, Sweden
phone:  46 18 471 4205          fax: 46 18 511 755
spoel at xray.bmc.uu.se    spoel at gromacs.org   http://xray.bmc.uu.se/~spoel

More information about the gromacs.org_gmx-developers mailing list