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

Jay Mashl mashl at kermit.ncsa.uiuc.edu
Thu Jul 21 18:52:21 CEST 2005

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).
> 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.
> 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.


R. Jay Mashl                  \                    University of Illinois
mashl at uiuc.edu                \            4027 Beckman Institute, MC-251
Tel. 217-244-5818, -2909(fax) \  405 N. Mathews Avenue; Urbana, IL  61801

More information about the gromacs.org_gmx-developers mailing list