[gmx-users] How exact are exact restarts?
Mark Abraham
Mark.Abraham at anu.edu.au
Tue Jul 12 08:22:02 CEST 2005
Hi,
I found some curious behaviour while verifying that "exact restarts" are
indeed that.
Using version 3.3_beta_20050202 on Itanium2, if I run
grompp -v -f simulate_60 -p 1oeh.top -c 1oeh_0 -t 1oeh_0 -e 1oeh_0 -o
1oeh_simulate -np 1
mpirun mdrun -v -s 1oeh_simulate -o 1oeh_1 -c 1oeh_1 -g 1oeh_1 -e 1oeh_1
to do a 60 step simulation using the *_0 starting point I get different
results from step 40 onwards than if I run a 30 step simulation using
*_0 starting point
grompp -v -f simulate_30 -p 1oeh.top -c 1oeh_0 -t 1oeh_0 -e 1oeh_0 -o
1oeh_simulate -np 1
mpirun mdrun -v -s 1oeh_simulate -o 1oeh_1 -c 1oeh_1 -g 1oeh_1 -e 1oeh_1
followed by another 30 step simulation using the *_1 starting point
grompp -v -f simulate_30 -p 1oeh.top -c 1oeh_1 -t 1oeh_1 -e 1oeh_1 -o
1oeh_simulate -np 1
mpirun mdrun -v -s 1oeh_simulate -o 1oeh_2 -c 1oeh_2 -g 1oeh_2 -e 1oeh_2
even though all the .mdp scripts have
constraints = all-bonds
unconstrained_start = yes
gen_vel = no
which is supposed to permit exact restarts, and that the relevant
information that has to come from the .edr energy files (for exact
restarts) was available for grompp (see the command lines).
The log file of the 60-step includes
Step Time Lambda
30 0.06000 0.00000
Rel. Constraint Deviation: Max between atoms RMS
Before LINCS 0.022406 38 39 0.004794
After LINCS 0.000076 91 93 0.000023
Energies (kJ/mol)
Angle Proper Dih. Ryckaert-Bell. LJ-14 Coulomb-14
2.66279e+02 8.93354e+00 4.45304e+01 1.37763e+02 1.03153e+03
LJ (SR) Coulomb (SR) Coul. recip. Potential Kinetic En.
7.32826e+04 -4.43550e+05 -3.45184e+04 -4.03297e+05 7.26535e+04
Total Energy Temperature Pressure (bar)
-3.30644e+05 2.98271e+02 -1.54504e+01
which is identical to the final step 30 for the first of the two-stage
30 step simulation. The start of the second of the two-stage 30 step
simulations has
Energies (kJ/mol)
Angle Proper Dih. Ryckaert-Bell. LJ-14 Coulomb-14
2.66279e+02 8.93354e+00 4.45304e+01 1.37763e+02 1.03153e+03
LJ (SR) Coulomb (SR) Coul. recip. Potential Kinetic En.
7.32826e+04 -4.43550e+05 -3.45184e+04 -4.03297e+05 7.26535e+04
Total Energy Temperature Pressure (bar)
-3.30643e+05 2.98271e+02 -1.54774e+01
This differs only in the Pressure output, however by the next output
(step "40") all the energy component values differ (and T and P) between
the two ostensibly equivalent states.
I can understand the butterfly effect making exact reproduction
impossible, unless complete machine precision is stored in the .trr and
.edr files. The fact that all the energy components are correct (to
output precision) suggests that the problem does not lie in getting the
correct information from the .trr file. Is it possible that the relevant
information in the .edr file necessary to reproduce the instantaneous
pressure is not at full machine precision (either there, or after
filtering through grompp)? The chip is an Itanium 2, so it has 64-bit
words... I can see how an erroneous 32-bit assumption in (for example)
grompp might cause this.
Even if so, there is clearly a system perturbation such that the two
step "40" configurations are in different regions of phase space. How
has this occurred?
Regards,
Mark
More information about the gromacs.org_gmx-users
mailing list