1 GROMACS 2016.4 Release Notes
2 ----------------------------
4 This version was released on September 15, 2017. These release notes
5 document the changes that have taken place in GROMACS since version
6 2016.3 to fix known issues. It also incorporates all fixes made in
7 version 5.1.4 and several since.
9 Fixes where mdrun could behave incorrectly
10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
12 Disabled PME tuning with the group scheme
13 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
14 PME tuning with the group cut-off scheme did not work correctly.
15 Interactions between charge-group pairs at distances between ``rlist``
16 and ``rcoulomb`` can go missing. The group scheme is deprecated, and
17 this issue would require considerable effort to fix and test, so we
18 have simply disabled PME tuning with the group scheme.
22 Fixed value of Ewald shift
23 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
24 In all the Ewald short-ranged kernel flavours, the value of the
25 potential at the cutoff is subtracted from the potential at the actual
26 distance, which was done incorrectly (failing to divide the shift
27 value by cutoff distance). Fortunately, the value of that distance is
28 often close to 1, and the inconsistent shifts often cancel in
29 practice, and energy differences computed on neighbour lists of the
30 same size will have the error cancel. The difference doesn't even show
31 up in the regressiontests, but would if we had a unit test of a single
36 Fixed orientation restraint reference
37 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
38 The resetting of the COM of the molecule with orientation restraints
39 for fitting to the reference structure was done with the COM of the
40 reference structure instead of the instantaneous structure. This does
41 not affect the restraining (unless ensemble averaging is used), only
42 the printed orientation tensor.
46 Fixed bugs with setup for orientation restraints
47 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
48 The orientation restraint initialization got moved to before the
49 initialization of the domain decomposition, which made the check
50 for domain decomposition fail.
51 Also fixed orientation restraints not working with the whole system
54 Worked around missing OpenMP implementation in orientation restraints
55 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
56 The orientation restraint code is not aware of OpenMP threads
57 and uses some global information. By only running it on the
58 master rank, results are now independent of number of threads
63 Enable group-scheme SIMD kernels on recent AVX extensions
64 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
65 The group-scheme code only runs using the feature set of AVX_256, but
66 that is supported on the more recent hardware, so we should have the
67 group scheme run with the maximum suitable SIMD. With previous releases,
68 building AVX_256 binaries was required for best performance with the
69 (deprecated) group scheme.
71 Fix FEP state with rerun
72 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
73 When using FEP states with rerun, the FEP state was always 0.
77 Fixed COM pull force with SD
78 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
79 The reported COM pull force when using the SD integrator was random
80 only. Now the pull force is summed over the systematic and random SD
81 update components. A better solution is to not add the random force
82 at all, but such a change should not be done in a release branch.
86 Fix PBC bugs in the swap code
87 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
90 Fixed flat-bottomed position restraints with multiple ranks
91 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
92 Reallocation was never done for flat-bottomed restraints, during
93 domain decomposition, so the indexing could go out of range, leading
98 Fixed null pointer print in DD
99 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
100 Fixed a (rather harmless) print of a null pointer string during
101 DD initialization. This would only show up with ``gmx mdrun -dlb yes``.
103 Improved the "files not present" error message
104 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
105 It's possible to use ``gmx mdrun -deffnm`` in restarts even if it
106 wasn't used in the initial simulation. This can lead to absurd
109 Expected output files not present or named differently:
113 where ``pullx.xvg`` and ``pullf.xvg`` are present and named exactly as
114 listed, but GROMACS expects them to be named as ``-deffnm`` requested.
116 The improved error message suggest to the user to check for that
119 :issue:`942` (partial workaround)
121 Fixed LJ-PME + switch grompp error
122 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
123 An error call was missing in grompp when LJ-PME was requested in
124 combination with a force or potential switch modifier.
128 Fixed unused SIMD PME table kernel
129 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
130 The Verlet-scheme 2xNN PME kernel with tabulated correction had
131 several issues. This kernel flavor could only be selected manually by
132 setting an environment variable, so no user simulations should be
137 Fixed bugs in most double-precision Simd4 implementations
138 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
139 The double precision version of reduce() and dotProduct() returned a
140 float with AVX2_256, AVX_256, AVX_128_FMA, AVX_512, MIC and IBM_QPX.
141 Only reduce() is used in double, in the PME force gather, and the
146 Avoid inf in SIMD double sqrt()
147 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
148 Arguments > 0 and < float_min to double precision SIMD sqrt()
149 would produce inf on many SIMD architectures. Now sqrt() will
150 return 0 for arguments in this range, which is not fully correct,
151 but should be unproblematic.
156 Fix NVML error messages
157 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
158 These should refer to the API calls that failed, e.g. when users lack
159 permissions to change clocks.
161 Fixed IMD interface malfunctions
162 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
165 Fixed initial temperature reporting
166 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
167 When continuing a simulation from a checkpoint, mdrun could report
168 double the intial temperature when ``nstcalcenergy=1`` or ``nsttcoupl=1``.
169 Note that this only affected reporting, the actual velocities were
171 Now the initial temperature is no longer reported for continuation
172 runs, since at continuation there is no "initial" temperature.
176 Fix exception in SIMD LJ PME solve
177 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
178 Clear SIMD padding elements in solve helper arrays to avoid,
179 otherwise harmles, fp overflow exceptions.
183 Fixes for ``gmx`` tools
184 ^^^^^^^^^^^^^^^^^^^^^^^
186 Fixed memory access issues in gmx solvate
187 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
188 There was out-of-bounds access if
189 1) the solvent configuration was given as a .pdb file, or
190 2) there was more than one type of residue in the solvent (which
193 Also fix a memory leak in the sorting routine.
195 Should fix crashes mentioned in :issue:`2148`
197 Fixed a consistency check in ``gmx make_edi`` for flooding
198 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
199 If one sets up a flooding .edi input file with ``gmx make_edi``,
200 the code should check that one does not use of the last 6 eigenvectors
201 of the covariance matrix, which correspond to the rotational and
202 translational degrees of freedom.
203 The check that was in the code erroneously checked against the
204 number of eigenvalues neig that was stored in the .xvg file,
205 not against the total number of eigenvectors which depends on
206 the number of atoms nav used in gmx covar. Thus the original
207 check would always fail if the .xvg eigenvalue file contained
210 Supported quiet trajectory-handling I/O
211 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
212 Permits ``GMX_TRAJECTORY_IO_VERBOSITY=0`` to be set to keep frame-reading
213 code quiet, which is convenient for tools using libgromacs.
215 Improved documentation
216 ^^^^^^^^^^^^^^^^^^^^^^
218 Migrated much content from the wiki to the user guide
219 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
221 * expanding the "Performance" section,
222 * reworking extending simulations, doing restarts and reproducibility,
223 * adding documentation for mdp option ``simulation-part``.
224 * adding documentation for issues relating to floating-point arithmetic
225 * adding documentation for run-time errors
227 Corrected the PDF manual to reflect that all tools are called ``gmx <tool>``
228 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
229 There were still a few occurrences of the old-style ``g_tool`` naming,
230 this patch removes. Deliberately left ``g_membed`` as is, because there
231 was never a ``gmx membed``, but instead it got incorporated into
234 Clarified ``gmx editconf`` help text
235 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
236 It is possible that users can confuse ``-c`` with ``-center`` so this
237 patch makes it clear that ``-center`` doesn't do anything unless the
238 user really wants to shift the center of the system away from the
243 Added missing .mdp file documentation for the enforced rotation module
244 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
246 Fixed parameter description for dihedral_restraints
247 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
248 The force-constant parameter for dihedral_restraints was not
249 documented in the table of interaction types.
253 Replaced instance of "group" by "coord" in pull .mdp documentation
254 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
256 Portability enhancements
257 ^^^^^^^^^^^^^^^^^^^^^^^^
259 Supported CUDA 9/Volta for nonbonded kernels
260 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
261 Implemented production-quality support for Volta GPUs and CUDA 9.
263 The code was adapted to support changes to the nature of warp
264 synchrony, without disturbing support for older GPUs and/or
265 CUDA. Further improvements may be seen (e.g. in the 2017 release).
267 Really enabled AVX512 in the GROMACS-managed build of FFTW
268 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
269 An earlier attempt to enable AVX512 on GCC 4.9 or newer and
270 Clang 3.9 or newer was wrongly implemented. Now this works on
271 all compilers we officially support (MSVC, GCC, clang, ICC).
273 Fixed aspects for compiling and running on Solaris
274 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
276 Fixed AVX512F compiler flags
277 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
278 Avoid using the MIC code generation flags for the Xeon code path.
280 Fixed compiler flags for using MKL
281 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
283 Fixes compilation issues with ARM SIMD
284 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
285 ARM_NEON has never supported double precision SIMD, so disabled it
286 with GROMACS double-precision build.
288 The maskzR* functions used the wrong argument order in the debug-mode
289 pre-masking (and sometimes in a typo-ed syntax).
291 In the shift operators, the clang-based compilers (including the
292 armclang v6 compiler series) seem to check that the required immediate
293 integer argument is given before inlining the call to the operator
294 function. The inlining seems to permit gcc to recognize that the
295 callers always use an immediate. In theory, the new code might
296 generate code that runs a trifle slower, but we don't use it at the
297 moment and the cost might be negligible if other effects dominate