Post-processing for trajectory file obtained by GPU acceleration "mdrun -deffnm npt-nopr -nb gpu"

GROMACS version: 2022.4

GROMACS modification: No

I have adopted the following steps to obtain xxx.xtc while running Gromacs on GPU,

  1. obtain the xxx.tpr without energygrps in npt-nopr-md.mdp through “gmx grompp -f npt-nopr-md.mdp -c npt-pr.gro -p fws.top -o npt-nopr.tpr”.

  2. run the obtained npt-nopr.tpr on GPU through “gmx mdrun -deffnm npt-nopr -v -nb gpu”.

  3. obtain the xxx.tpr with energygrps in npt-nopr-md.mdp through “ggmx grompp -f npt-nopr-md.mdp -c npt-pr.gro -p fws.top -o npt-nopr-new.tpr”.

  4. rerun the npt-nopr.trr (running on GPU) obtained in the second step together with npt-nopr-new.tpr obtained in the third step through “gmx mdrun -s npt-nopr-new.tpr -rerun npt-nopr.trr -nb cpu”.

  5. obtain the xxx.xtc through “gmx trjconv -f traj.trr -s npt-nopr-new.tpr -o npt-nopr.xtc -pbc nojump -ur compact -center”.

The above five steps are the most answers in terms of running Gromacs on GPU. However, I find the simulation results (i.e., the RMSD) obtained by the abovementioned procedures are different from those obtained by running Gromacs on CPU. And my questions are,

  1. Are there any errors in the five steps mentioned above?

  2. I found that when I add another input parameter in the fourth step, i.e., “gmx mdrun -s npt-nopr-new.tpr -e npt-nopr.edr -rerun npt-nopr.trr -nb cpu”, the RMSD curve obtained by GPU is much similar to that running on CPU. However, I do not know whether this modification is correct. (npt-nopr.edr is obtained in step 2).

Hope someone can answer these two questions. Thanks a lot.

  • Could the difference just be stochastic noise?
  • Is your RMSD evaluated on a group that is expected to stay together (e.g., a single molecule)?
  • was your molecule all in the same box in all the .tpr files? If not, maybe -pbc mol instead of -pbc nojump?

I get that you’re concerned that the difference is GPU vs no GPU, but seems reasonable to rule out the other candidates first.