计算化学公社

 找回密码 Forget password
 注册 Register
Views: 1750|回复 Reply: 8
打印 Print 上一主题 Last thread 下一主题 Next thread

[GROMACS] GROMACS-PLUMED自由能计算性能调优分享

[复制链接 Copy URL]

45

帖子

1

威望

1143

eV
积分
1208

Level 4 (黑子)

本帖最后由 Dempey 于 2024-5-14 08:55 编辑

GROMACS-PLUMED做metadynamics性能调优分享



前言
      目前GROMACS计算自由能的方法有多种,据笔者所知,主流可以做metadynamics的方法其一是与PLUMED联用,其二是与COLVARS联用。最近在尝试自由能计算,使用了GROMACS-PLUMED联用的方法,发现在gmx mdrun中"-pin"、"-ntomp"、"-ntmpi"等参数对计算表现有影响,现总结一下,进行分享,欢迎大家前来讨论。

1 测试平台
      系统:Alma Linux 8.9
      CPU:AMD EPYC 7542 (32核)
      GPU:NVIDIA GeForce RTX 4060 Ti (16G显存)

2 测试体系
      来源于本人课题中的蛋白质与药物分子的模拟,原子数19.7万,模拟步长2 fs,模拟时间1 ns。

3 编译工具与编译方式
      GCC编译器:11.4.0
      FFTW:3.3.10
      PLUMED:2.9.0
      OpenMPI:5.0.1
      CUDA:12.3
      (1) ThreadMPI + OpenMP + CUDA
  1. cmake .. -DGMX_GPU=CUDA -DCMAKE_INSTALL_PREFIX=/opt/software/gromacs-2023-float-threadmpi-gpu -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda - DCMAKE_PREFIX_PATH=/opt/tool/fftw-3.3.10-float
复制代码
     
      (2) OpenMPI + OpenMP + CUDA
  1. cmake .. -DGMX_GPU=CUDA -DCMAKE_INSTALL_PREFIX=/opt/software/gromacs-2023-float-openmpi-gpu -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -DCMAKE_PREFIX_PATH=/opt/tool/fftw-3.3.10-float -DGMX_MPI=ON
复制代码
     

4 测试结果
      (1) 只MD,不进行MetaMD
      注:这里为PLUMED打过补丁的GROMACS运行结果,不确保纯净版GROMACS的结果
ThreadMPI + OpenMP + CUDA
  1. gmx mdrun -ntmpi 1 -ntomp 16 -v -deffnm md
复制代码
     GPU-Util:94%    运行时间:1134 s

OpenMPI + OpenMP + CUDA
  1. mpirun -np 1 gmx_mpi mdrun -ntomp 16 -v -deffnm md
复制代码
     GPU-Util:13%-14%    运行时间:10104 s
  1. mpirun -np 1 gmx_mpi mdrun -pin on -ntomp 16 -v -deffnm md
复制代码
     GPU-Util:94%    运行时间:1187 s
  1. gmx_mpi mdrun -pin on -ntomp 16 -v -deffnm md
复制代码
      GPU-Util:94%    运行时间:1118 s
  1. gmx_mpi mdrun -ntomp 16 -v -deffnm md
复制代码
      GPU-Util:94%    运行时间:1196 s
  1. mpirun -np 16 gmx_mpi mdrun -ntomp 1 -v -deffnm md
复制代码
      GPU-Util:81%    运行时间:4720 s
  1. mpirun -np 16 gmx_mpi mdrun -pin on -ntomp 1 -v -deffnm md
复制代码
      GPU-Util:69%-80%    运行时间:4598 s

      (2) 进行MetaMD
ThreadMPI + OpenMP + CUDA
  1. gmx mdrun -ntmpi 1 -ntomp 16 - -deffnm md -plumed meta.dat
复制代码
      GPU-Util:0%-1%    运行时间:---- s 极慢,故取消作业
  1. gmx mdrun -pin on -ntmpi 1 -ntomp 16 -v -deffnm md -plumed meta.dat
复制代码
      GPU-Util:0%-1%    运行时间:---- s 极慢,故取消作业

OpenMPI + OpenMP + CUDA
  1. mpirun -np 1 gmx_mpi mdrun -ntomp 16 -v -deffnm md -plumed meta.dat
复制代码
     GPU-Util:20%    运行时间:---- s 极慢,故取消作业
  1. mpirun -np 1 gmx_mpi mdrun -pin on -ntomp 16 -v -deffnm md -plumed meta.dat
复制代码
     GPU-Util:73%-76%    运行时间:2351 s
  1. mpirun -np 2 gmx_mpi mdrun -pin on -ntomp 8 -deffnm md -plumed meta.dat
复制代码
     GPU-Util:81%    运行时间:3332 s
  1. mpirun -np 4 gmx_mpi mdrun -pin on -ntomp 4 -deffnm md -plumed meta.dat
复制代码
     GPU-Util:81%    运行时间:3865 s
  1. gmx_mpi -pin on -ntomp 16 -v -deffnm md -plumed meta.dat
复制代码
      GPU-Util:0%-1%    运行时间:---- s 极慢,故取消作业

5 结果汇总      
      在不进行MetaMD时,最好采用ThreadMPI + OpenMP + CUDA的方式运行作业,具体的tMPI进程数(-ntmpi)、OpenMP线程数(-ntomp)、以及其他参数需根据自己的情况调整。根据笔者经验,这些设置对时间的影响并不大,我在进行MD时的通用命令为
  1. gmx mdrun -pin on -ntmpi 1 -ntomp $NCORES -v -deffnm $INPUTNAME
复制代码
     在进行MetaMD时,采用OpenMPI + OpenMP + CUDA的方式运行作业,具体的MPI进程数(mpirun -np)、OpenMP线程数(-ntomp)根据自己的情况调整,切记一定要加上"-pin on",我在进行MetaMD时的通用命令为
  1. mpirun -np 1 gmx_mpi -pin on -ntomp $NCORES -v -deffnm $INPUTNAME -plumed $PLUMEDDAT
复制代码

6 讨论
      (1) PLUMED在编译时使用了OpenMPI + OpenMP并行的模式,故threadMPI版的GROMACS不能设置多个tMPI进程进行MetaMD,若在编译PLUMED时不开启MPI并行,threadMPI版的GROMACS也不能设置多个tMPI进程进行MetaMD,所以笔者推荐编译OpenMPI + OpenMP版的PLUMED和OpenMPI + OpenMP版的GROMACS。
      (2) GROMACS与PLUMED联用时,PLUMED部分在CPU上运行,不在GPU上运行,这是需要更长时间的原因。
      (3) OpenMPI + OpenMP版GROMACS运行时往往过多的MPI线程会增加通信时间而拖慢速度,故在单节点运行GROMACS时建议只使用一个MPI进程,但这时GROMACS的输出一小会就会停止,无法看到何时结束任务(也有可能是我编译或者命令有问题)。
      (4) OpenMPI版本的GROMACS如果不加"-pin on"模拟会变得奇慢无比,使用htop查看CPU情况,发现调用的CPU总利用率很低,且只有一个核满载工作。


欢迎大家讨论,上面的内容仅针对我的测试体系,目的是给大家一个参考,体系不同,或许并行参数的设置也不同,且其他的MPI的表现笔者没有测试过。
另:COLVARS + GROMACS的运行速度感觉上比PLUMED + GROMACS快很多,也可以考虑使用COLVARS联用计算自由能。


评分 Rate

参与人数
Participants 3
威望 +1 eV +6 收起 理由
Reason
laochuangsimida + 1 赞!
yihanxu + 5 谢谢分享
sobereva + 1 精品内容

查看全部评分 View all ratings

368

帖子

0

威望

2737

eV
积分
3105

Level 5 (御坂)

2#
发表于 Post on 2024-7-9 10:24:42 | 只看该作者 Only view this author
老师您好,metaMD适用于计算什么问题呢?运行MetaMD与运行MD是相互独立的吗?
live each day as if it was your last

3

帖子

0

威望

28

eV
积分
31

Level 2 能力者

3#
发表于 Post on 2024-9-3 01:53:49 | 只看该作者 Only view this author
老师您好,请问一下老师,我计算的下面的这个md.log文件中的日志记录正常吗?
为什么会有两行dE_term呢,分别代表什么呢?体系是一个RNA体系,一共有46万个原子,用的REST2方法做的计算。在300-1000度之间插值20个replicas.

之前算了一个300-1000之间插值5个replicas,算了15ns,没有一个副本交换,是不是我的代码有问题呢?谢谢老师和大家!

————————————
step 1000: timed with pme grid 72 72 72, coulomb cutoff 1.375: 549367.2 M-cycles
Replica exchange at step 1000 time 2.00000
Repl 0 <-> 1  dE_term = -0.000e+00 (kT)
dplumed =  7.619e+02  dE_Term =  7.619e+02 (kT)
Repl ex  0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19
Repl pr   .00       .00       .00       .00       .00       .00       .00       .00       .00       .00

202409030146074821..png (71.91 KB, 下载次数 Times of downloads: 4)

202409030146074821..png

49

帖子

0

威望

840

eV
积分
889

Level 4 (黑子)

4#
发表于 Post on 2024-10-23 21:34:19 | 只看该作者 Only view this author
updata-gpu模式是与plumed的metad不兼容吗?

45

帖子

1

威望

1143

eV
积分
1208

Level 4 (黑子)

5#
 楼主 Author| 发表于 Post on 2024-10-24 08:45:38 | 只看该作者 Only view this author
16aDream 发表于 2024-10-23 21:34
updata-gpu模式是与plumed的metad不兼容吗?

是的,PLUMED部分在CPU计算,而且GROMACS用NV热浴也不能update gpu

1096

帖子

6

威望

6271

eV
积分
7487

Level 6 (一方通行)

6#
发表于 Post on 2024-10-24 09:52:52 | 只看该作者 Only view this author
Colvars已经收编在Gromacs2024及未来的官方发布版中了,相比Plumed可以做更多的代码级别的优化

49

帖子

0

威望

840

eV
积分
889

Level 4 (黑子)

7#
发表于 Post on 2024-10-24 10:55:50 | 只看该作者 Only view this author
本帖最后由 16aDream 于 2024-10-24 11:00 编辑
Dempey 发表于 2024-10-24 08:45
是的,PLUMED部分在CPU计算,而且GROMACS用NV热浴也不能update gpu

NV热浴竟然也不能用update-gpu, 能简要说明一下吗

45

帖子

1

威望

1143

eV
积分
1208

Level 4 (黑子)

8#
 楼主 Author| 发表于 Post on 2024-10-25 23:03:25 | 只看该作者 Only view this author
16aDream 发表于 2024-10-24 10:55
NV热浴竟然也不能用update-gpu, 能简要说明一下吗

我也不知道是什么原理,知识有一次突然发现用NH热浴的update在CPU
  1. PP task will update and constrain coordinates on the CPU
复制代码
就想着试试能不能update gpu,一提交就报错了
  1. Inconsistency in user input:
  2. Update task on the GPU was required,
  3. but the following condition(s) were not satisfied:
  4. Nose-Hoover temperature coupling is not supported.
复制代码

79

帖子

0

威望

2508

eV
积分
2587

Level 5 (御坂)

9#
发表于 Post on 2024-11-10 17:28:45 | 只看该作者 Only view this author
如果plumed是在cpu下进行计算,那gmx+plumed连用在没有gpu下的性能会表现如何。
plumed没有使用mpi编译,就只能使用-ntmpi=1 -ntomp=n了

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-26 21:35 , Processed in 2.324469 second(s), 26 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list