GROMACS 2016 Release Notes¶
These release notes document the functionality changes that have taken place in GROMACS since version 5.1.
Some bug fixes are mentioned here, but those fixed in 5.0 or 5.1 branches are (or will be) documented there. If the same functionality is supported in both branches, bugs fixed on older branches can generally be assumed to be fixed in patch releases of subsequent major/minor versions.
Highlights¶
Here’s some highlights of what you can expect, along with more detail in the links below!
- As always, we’ve got several useful performance improvements, with or without GPUs. CPU-side SIMD and threading enhancements will make GPU-accelerated simulations faster even if we’d left the GPU code alone! Thanks to these and additional GPU kernel improvements, in GPU-accelerated runs expect around 15% improvement in throughput. (And not just for plain vanilla MD, either... the pull code now supports OpenMP threading throughout, and multi-simulations have less coupling between simulations.)
- We have a new C++11 portability layer permitting us to accelerate in SIMD on the CPU lots of minor routines. These will also often improve runs that use accelerators or many nodes through better load balancing. POWER8, ARM64, AVX512 (KNL), and more are fully SIMD accelerated now because they are supported in the new portability layer!
- We made further SIMD acceleration of bonded interactions which reduces their calculation time by about a factor of 2. This improves load balance at high parallelization by a factor of 2, and shows significantly better scaling.
- Similarly, SIMD acceleration of SETTLE reduces the time for constraints by a factor of 3 to 5 - which has a strong effect for GPU runs.
- OpenCL GPU support is now available with all combinations of MPI, thread-MPI and GPU sharing (ie. the same as CUDA). Kernel performance has improved by up to 60%. AMD GPUs benefit the most, OpenCL on NVIDIA is generally still slow.
- Tools in the new analysis framework can handle trajectories that are subsets of the simulation system.
- New pull coordinate geometries angle-axis, dihedral, and normal angle.
- Checkpoint restarts work only in the cases where the implementation can always do what the user wants.
- The version numbering has changed to be the year of the release, plus (in future) a patch number. GROMACS 2016 will be the initial release from this branch, then GROMACS 2016.1 will have the set of bugs that have been fixed in GROMACS 2016, etc.
Details¶
- New and improved features
- Changed to require a C++11 compiler
- Changed to support only CUDA 5.0 and more recent versions
- Allowed rcoulomb > rvdw with PME
- Added optional support for portable hardware locality (hwloc)
- Made normal-mode calculations work with shells and vsites
- Changed pull group count for coords stored in tpr file
- Added pull coordinate geometry angle-axis
- Added pull coordinate geometry dihedral (angle)
- Added pull coordinate geometry angle
- Replaced
pull-print-com1,2
mdp option withpull-print-com
- Added pull potential flat-bottom-high
- Added
gmx grompp
check for pull group - Added new swapping functionality to computational electrophysiology module
- Fixed logic for DD missing-interactions check
- Permitted forces and velocities to be written to compressed TNG
- Added new notes to the user when coupling algorithms are unavailable
- Added mdrun check for finite energies
- Added
gmx grompp
check for unbound atoms - Improved multi-simulation signalling
- Changed multi-simulation nsteps behaviour
- Added working directory to things reported in .log file
- Prevented fragile use cases involving checkpoint restarts and/or appending
- Removed warning after OpenMP core-count check
- Preparation for hardware detection might try to force offline cores to work
- Added new suggestion for users to try e.g. hyper-threading, if its disabled
- Performance improvements
- Improvements to GROMACS tools
- Supported replacing solvent in
gmx insert-molecules
- Default random seeds have changed for some analysis tools
- Made
gmx solvate
andgmx insert-molecules
work better with PDB inputs - Tools in the new analysis framework can read trajectory files with subsets
- Made moleculetype name case sensitive
- Added number density normalization option for
gmx rdf
- Simplified
gmx genconf
by removing-block
,-sort
and-shuffle
- Used macros for units and conversions in
gmx wham
- Improved
gmx sasa
error message - Made
gmx vanhove
work without PBC - Fix
gmx hbond
group overlap check - Made
gmx dos
work again. - Add checks for too much memory in
gmx nmeig
- Supported replacing solvent in
- Bugs fixed
- Fixed two problems related to restarts for velocity-Verlet
- Fixed Verlet buffer calculation with nstlist=1
- Fixed large file issue on 32-bit platforms
- Avoided using abort() for fatal errors
- Fixed possible division by zero in polarization code
- Avoided numerical overflow with overlapping atoms in Verlet scheme
- Relax pull PBC check
- Add detection for ARMv7 cycle counter support
- Introduced fatal error for too few frames in
gmx dos
- Properly reset CUDA application clocks
- Fixed replica-exchange debug output to all go to the debug file
- Fixed gmx mdrun -membed to always run on a single rank
- Fixed issues with using int for number of simulation steps
- Fixed trr magic-number reading
- Changed to use only legal characters in OpenCL cache filename
- Fixes for bugs introduced during development
- Fixed bug in v-rescale thermostat & replica exchange
- Fixed vsite bug with MPI+OpenMP
- Fixed some thread affinity cases
- Removed OpenMP overhead at high parallelization
- Removed std::thread::hardware_concurrency()
- Added support for linking against external TinyXML-2
- Fixed data race in hwinfo with thread-MPI
- Fixes for Power7 big-endian
- Reduce hwloc & cpuid test requirements
- Work around compilation issue with random test on 32-bit machines
- Updated
gmx wham
for the new pull setup - Fix membed with partial revert of 29943f
- Removed mdrun features
- Miscellaneous
- Various improvements to documentation and tests
- Improved make_ndx help text
- Addded checks on number of items read in mdp statements
- Work around glibc 2.23 with CUDA
- Split NBNXN CUDA kernels into four compilation units
- Added stream flushes when not writing newline character
- Supported cmap with QMMM
- Upgraded support for lmfit library
- libxml2 is no longer a dependency
- Disable automated FFTW3 builds on Windows
- Remove warnings on checkpoint mismatch
- Report the filename and the line number on failure
- Handled constraint errors with EM
- Disable static libcudart on OS X
- Fixed rare issue linking with clock_gettime
- Disabled NVIDIA JIT cache with OpenCL