GROMACS 2023.2 release notes#

This version was released on July 12th, 2023. These release notes document the changes that have taken place in GROMACS since the previous 2023.1 version, to fix known issues. It also incorporates all fixes made in version 2022.6 and earlier, which you can find described in the Release notes.

Fixes where mdrun could behave incorrectly#

Fix mdrun segfault when perturbing only LJ-14 parameters#

Issue 4769

Fix numerical instability with free-energy and LJ-PME#

When combining free-energy calculation with PME for Lennard-Jones interactions, large rounding error would cause instabilities when two atoms were at short distance.

Issue 4780

Fix mdrun domain decomposition setup limit of 715827882 atoms#

An overflow in the domain decomposition grid setup limited the maximum number of atoms that could be simulated to max_int/3, unless the -dd option was specified.

Issue 4627

Allow bonded pair interactions to be missing#

With -noddcheck, mdrun did not allow bonded pair interactions to be missing. This is now allowed again.

Issue 4787

Increase and check for atom count limits in output files#

The maximum number of atoms in the checkpoint and trr files was 715 827 882 and has been increased to 1 431 655 765 atoms. Now mdrun exits with a clear error message when these limits are exceeded. For XTC files, the limit is raised by a separate fix.

Issue 4627

Fix assertion failure with annealing and multiple T-coupling groups#

Issue 4800

Properly update the backup checkpoint#

In 2023 and 2023.1, the state_prev.cpt file was never overwritten, and thus always contained the very first checkpoint for the run.

Issue 4810

Fix domain decomposition with bonded interactions with long distances#

mdrun would exit with an error about missing bonded interactions when domain decomposition was used and bonded interactions involved distances longer than the pairlist cutoff.

Issue 4818

Fixes for gmx tools#

Avoid error in tools reading tpr files with energy minimization#

Many tools would exit with an error “No v in input file” when reading a tpr file with integrator set to energy minimization, NM or TPI.

Issue 4774

Tools now retain chain identifiers when reading PDB is used as input#

Issue 4776

The gmx hbond tool could produce random ouput#

Because memory was not initialized, the gmx hbond tool could produce random output. This would not go unnoticed. This also fixes issues with the -ac and -life options.

Issue 4801

Fixes that affect portability#

CMake config package#

Depending on the build environment, GROMACS 2023 and 2023.1 could install a malformed gromacs-config.cmake file in prefix/share/cmake/gromacs$SUFFIX/ that could cause failure of the find_package(gromacs) CMake command.

  • rocfft is no longer ever a public dependency.

  • The config package file now fully express the dependency on hipSYCL (Open SYCL), when relevant.

Issue 4793, Issue 4797


gmxapi.commandline_operation environment variable filtering#

A new utility (gmxapi.runtime.filtered_mpi_environ()) is available to remove MPI-related environment variables from os.environ, such as to prepare the subprocess environment of gmxapi.commandline_operation.

This is a follow-up to Issue 4423, for which the original fix appeared to be insufficient.

Issue 4736

build-dependent checking for gmxapi runtime arguments#

Depending on whether GROMACS was built with MPI support or thread-MPI support, some gmx mdrun options are not defined. Such errors may only appear in the MD log file, and can thus be hard to identify in API use cases.

Additional checking has been added to gmxapi.simulation.workflow.from_tpr() to try to preempt user errors, and additional usage notes have been added to gmxapi.mdrun.

Issue 4771

gmxapi.mdrun task uniqueness#

Fix a bug in which all gmxapi.mdrun simulation tasks had the same ID (and working directory).

Issue 4795

Fix for crash when CUDA Graphs are enabled on multi-GPU#

A bug was introduced into version 2023.1 resulting in a crash when the non-default CUDA Graphs experimental feature was enabled on multi-GPU, caused by the introduction of extra synchronization which is not required for the CUDA graphs codepath. This version fixes the issue by avoiding this synchronization when graphs are in use.

Issue 4786

Enable XTC support for gigantic systems#

The (old) XTC format uses an internal char buffer whose size in bytes was stored as an integer in the file, which led to crashes when storing systems with more than roughly 300 million atoms. This version fixes the issue by introducing a 64-bit size only for large systems, and using a different magic number (2023) in the XTC header. This will only change the XTC format for large systems (which anyway would lead to crashes in the old version). Short-term the large system XTC files might not be readable by external tools (you will get errors about incorrect magic number), but we are working with external packages to update their implementations.

Issue 4628

Fix resource leak in OpenCL#

gmx mdrun built with OpenCL was slowly leaking memory when running on GPUs. That’s fixed now.

Issue 4807

Allow convert-tpr to assign initial velocities#

To help ensemble projects like free energy that sometimes rely on thousands of simulations for each system, we now allow convert-tpr to assign a new set of random velocities rather than using grompp to regenerate the full tpr. This also fixes a bug where using 0 for velocity seed in the mdp file would have the same effect as -1 and cause a new seed to be generated from the OS.

Issue 4809

Correct formulas for Nosé-Hoover thermostat#

Several formulas describing Nosé-Hoover temperature coupling contained inconsistencies. The reference manual was updated to match the actual implementation.

Issue 4695

Fix commandline-test on broken gcc versions#

gcc 9.3.1 would fail generating proper paths for comparison, resulting in test failures.

Issue 4785

Fix SIMD detection/recommendation on AMD Zen 4 / Genoa#

Zen 4 provides a single AVX-512 unit, but in contrast to Intel chips it is still faster to use the single AVX-512 unit than the double AVX2 units, likely due to higher clock and lower instruction pressure. This change will select AVX-512 by default on Zen 4 (which can improve performance 5-10%), and it modifies the hardware detection so we only try to count AVX units on Intel CPUs. It also clarifies detection messages to make it clear it’s based on expected performance rather than hardware support for a particular instruction set, and makes sure the stdout messages fit in a single line.

Issue 4715