Bug #713

MD with polarization does not work in parallel

Added by David van der Spoel over 9 years ago. Updated over 8 years ago.

Target version:
Affected version - extra info:
Affected version:


mdrun with any polarizable particles does not work in parallel. It seems like the coulomb force and pressure are computed incorrectly.
To reproduce, you need a double precision installation of gmx:
unpack the archive.

grompp_d -maxwarn 1

mdrun_d -e e1
mpirun -c 4 mdrun_d -e e4 -pd
(without -pd a SEGV occurs)
This does just 1 step but gives differences, e.g.:
% gmxcheck -e e1 -e2 e4 -tol 0 -abstol 0
Harmonic Pot. step 0: 4003.27, step 0: 3990.19
Coulomb (SR) step 0: -15807.1, step 0: -15794.1
Coul. recip. step 0: -1264.05, step 0: -1263.06
Potential step 0: -9859.72, step 0: -9858.8
Kinetic En. step 0: 0.746753, step 0: 0.785093
Total Energy step 0: -9858.98, step 0: -9858.01
Conserved En. step 0: -9858.98, step 0: -9858.01
Temperature step 0: 0.140224, step 0: 0.147423
Pressure step 0: -488.581, step 0: -463.677

The pressure differences make that simulations in parallel explode.

shellmd.tgz (18.4 KB) shellmd.tgz Test example David van der Spoel, 03/05/2011 09:39 AM
swm4.itp (3.41 KB) swm4.itp Fixed topology file. David van der Spoel, 01/03/2012 02:23 PM


#1 Updated by David van der Spoel over 9 years ago

Here is the example I mentioned.

#2 Updated by Rossen Apostolov over 9 years ago

Can this be fixed easily for 4.5.5?

#3 Updated by Rossen Apostolov about 9 years ago

  • Target version deleted (4.5.4)

#4 Updated by David van der Spoel over 8 years ago

My topology had a water molecule consisting of five charge groups. The mdrun code detects this and turns off shell prediction, which in turn leads to crashes. By fixing the topology (attached file), the code runs as expected and produces identical results with 1 or 4 threads. Using threads means domain decomposition rather than particle decomposition, which is good!

This then means that when inter-charge group shells are detected the code fails, so I propose to build in a fatal error in this case, in both mdrun and grompp.

#5 Updated by David van der Spoel over 8 years ago

  • Status changed from New to Closed

The problem was caused by SETTLE relying on atoms being within the same charge group (and hence not doing PBC calculations).
This has been fixed by introducing a fatal error in grompp when trying to process such a combination. If it is absolutely necessary to have atoms in different charge groups one should use normal constraints instead of settle. For 4.6/master SETTLE will be fixed to take into account PBC explicitly, so this patch should NOT be ported to 4.6.

Also available in: Atom PDF