Incorrect output of dH to other lambdas in GROMACS 2022 on GPU.
Summary
Inconsistent BAR results are observed from GROMACS2021.3 and GROMACS2022.3 with the same simulation setup to calculate relative hydration free energy between two molecules.
GROMACS version
v2022.3
Steps to reproduce
Please download the attachment first.
Next, execute comands as below.
# Supposing we have 2 Gromacs versions installed in `/path/to/gmx2021` and `/path/to/gmx2021` respectively.
OLD_PATH=$PATH
PATH=/path/to/gmx2021:${OLD_PATH}
version=gmx21
tar zxf reproduce.tar.gz
for device in cpu gpu; do
cd $device/$version
sh run.sh
cd ../..
done
PATH=/path/to/gmx2022:${OLD_PATH}
version=gmx22
tar zxf reproduce.tar.gz
for device in cpu gpu; do
cd $device/$version
sh run.sh
cd ../..
done
Now, check values of \xD\f{}H \xl\f{} to (0.6000, 1.0000)
in files as below:
./gpu/gmx22/2/gmx22_rerun_gpu/dhdl.xvg
./gpu/gmx22/2/gmx21_rerun_gpu/dhdl.xvg
./gpu/gmx22/2/md.xvg
./gpu/gmx22/2/gmx21_rerun_cpu/dhdl.xvg
./gpu/gmx22/2/gmx22_rerun_cpu/dhdl.xvg
What is the current bug behavior?
Inconsistent BAR results are observed from GROMACS2021.3 and GROMACS2022.3 with the same simulation setup to calculate relative hydration free energy between two molecules, toluene and benzene, for example. The inconsistency comes from the intermediate steps of changing the partial charges from toluene to benzene. Below shows the comparison of dG calculated by gmx bar for two neighboring lambda windows in the intermediate steps, values in kJ/mol.
Device | GROMACS2021.3 BAR (2 x 1 ns) | GROMACS2022.3 BAR (2 x 1 ns) |
---|---|---|
GPU | 3.92 | 1.42 |
CPU | 3.92 | 3.92 |
Interestingly, the results calculated by TI are all in agreement, which indicates there maybe something wrong with the dH output from GROMACS2022.3 running on GPU. Further comparing the dH output from GROMACS2022.3(GPU) with the dH outputs from rerun using the trajectory produced by GROMACS2022.3(GPU):
Comparing the values of column s4 legend "\xD\f{}H \xl\f{} to (0.6000, 1.0000)"
Time (ps) | GROMACS2022.3(GPU) | GROMACS2022.3(GPU) rerun | GROMACS2022.3(CPU) rerun | GROMACS2021.3(GPU) rerun | GROMACS2021.3(CPU) rerun |
---|---|---|---|---|---|
0.0000 | 1.5620121 | 1.5620243 | 4.0245035 | 4.0243885 | 4.0244259 |
10.0000 | 1.5159204 | 1.5159204 | 4.0204750 | 4.0204754 | 4.0204723 |
20.0000 | 1.1021023 | 1.1021084 | 3.6126774 | 3.6126739 | 3.6127457 |
30.0000 | 1.0576748 | 1.0576931 | 3.5818871 | 3.5818819 | 3.5818789 |
To clarify, dH values from GROMACS2022.3(GPU) are different to the dH values produced by rerun on the same trajectory using GROMACS2022.3(CPU) and GROMACS2021.3.
What did you expect the correct behavior to be?
BAR result of Gromacs-2022.3 GPU is consistent with that of other devices or versions.
Possible fixes
None.