计算化学公社

标题: Amber内置XTB严重的并行负优化 [打印本页]

作者
Author:
ZetaFunction    时间: 2024-5-15 17:14
标题: Amber内置XTB严重的并行负优化
前段时间发布的Amber24中,QM/MM模块终于迎来更新,可以通过动态编译的方法将DFTB+和XTB内嵌如sander中以实现半经验算法。旧版Amber的DFTB不支持D3矫正和H4/H5矫正,局限性极大,现在终于可以支持完整的DFTB了。XTB本身虽然也可以跑动力学或者借助ORCA跑动力学,但是二者都不支持周期性边界,也就无法控制NVT或者NPT系综,对于上万个原子的蛋白体系跑QM/MM MD也很麻烦。在Amber22以及更早版本中,想要实现XTB QM/MM MD,只能通过外调ORCA连接XTB,这样的递归调用初步估计至少三分之二的时间浪费在了进程通讯上。由于XTB本身并行效率不高,对于150个原子左右的体系,在学校超算上测试下来Amber+ORCA+XTB以8核并行最快,速度可以到达120ps/day。

现在Amber24支持将XTB内嵌,原本我预计速度很有希望可以到达0.5ns/day,但不幸的是情况并非如此。我按照Amber Manual上写的方法,先编译XTB的动态库后在编译Amber,sander运行XTB QM/MM一切正常,单核速度就有80ps/day。然而当我尝试并行“mpirun -np 8 sander.MPI”,却发现速度居然掉到了60ps/day!用XTB程序算QM区域的单点,8核并行的加速效果非常明显,也就是说Amber内嵌的XTB没有正常并行。而且Amber输出文件中还有这样一段内容:
  1. |QMMM: Running QMMM calculation in parallel mode on    8 threads.
  2. |QMMM: All atom division among threads:
  3. |QMMM:                  Start       End      Count
  4. |QMMM: Thread(   0):        1->    4746  (    4746)
  5. |QMMM: Thread(   1):     4747->    9492  (    4746)
  6. |QMMM: Thread(   2):     9493->   14238  (    4746)
  7. |QMMM: Thread(   3):    14239->   18984  (    4746)
  8. |QMMM: Thread(   4):    18985->   23730  (    4746)
  9. |QMMM: Thread(   5):    23731->   28476  (    4746)
  10. |QMMM: Thread(   6):    28477->   33222  (    4746)
  11. |QMMM: Thread(   7):    33223->   37962  (    4740)
复制代码
Amber内置的QM/MM模块的并行策略疑似是将QM区域的原子按照核数拆分成多个小块后分别处理的,当然也可能只是在预处理部分做拆分QM计算依然是整体计算。也许是因为XTB程序的并行方式是OpenMP,和基于OpenMPI的sander.MPI不太适配。我也尝试过设置“export OMP_NUM_THREADS=8”和“export MKL_NUM_THREADS=8”后再用sander,也没有任何加速效果。

虽然目前只能单核运行,但是速度还是可以到达原先递归调用时8核并行的三分之二,足见递归调用时大部分的时间都浪费在了进程通讯上。虽然80ps/day的速度也勉强够用了,但是这显然远远不是极限。刚刚邮件联系了Amber XTB模块的开发者Timothy J. Giese,不知道有没有什么解决方法。

作者
Author:
喵星大佬    时间: 2024-5-15 20:21
抓个虫,ORCA/xtb不能用周期性边界条件不妨碍NVT系综
如果生物体系模拟xtb/DFTB+的精度绝对是不足够的,尤其是涉及金属的时候(CYP/Zinc-Finger/EFHand等等)
目前QM/MM直接用内置的Quick或者调用ORCA/Gaussian至少在正规DFT级别计算才是正解,基本上不能比B3LYP/6-31G*这个级别再低了
作者
Author:
ZetaFunction    时间: 2024-5-15 20:54
喵星大佬 发表于 2024-5-15 20:21
抓个虫,ORCA/xtb不能用周期性边界条件不妨碍NVT系综
如果生物体系模拟xtb/DFTB+的精度绝对是不足够的,尤 ...

ORCA的MD只能通过定义“反弹边界”的方式实现体积控制,而且只能是方形球形等特定形状,感觉和真正的NVT系综还是有所差异的。B3LYP/6-31g(d)即便是不到五十个原子的小体系,即便设定间隔时间1fs,在Gaussian中设置int=fine,极限速度最快最快也只有3-5ps/day,超过100个原子一天也跑不完一皮秒。对于某些类型的任务,比如伞形采样/Meta MD,尤其是二维的PMF,这个速度完全无法接受。现在流行的做法是先用DFTB或者XTB等半经验方法得到PMF,然后选取一部分结构用DFT矫正。
作者
Author:
喵星大佬    时间: 2024-5-16 10:21
本帖最后由 喵星大佬 于 2024-5-16 10:24 编辑
ZetaFunction 发表于 2024-5-15 20:54
ORCA的MD只能通过定义“反弹边界”的方式实现体积控制,而且只能是方形球形等特定形状,感觉和真正的NVT ...

在IRC上做US完全可以每个窗口独立做,比如去商业超算上一次开几十台机器其实也用不了多久

再就是开边界也属于NVT,对于Amber挂gaussian/orca/qchem等程序做QM/MM的时候QM区显然是开边界,PBC的MM部分用ORCA显然不如挂在amber里
作者
Author:
ZetaFunction    时间: 2024-5-16 22:55
喵星大佬 发表于 2024-5-16 10:21
在IRC上做US完全可以每个窗口独立做,比如去商业超算上一次开几十台机器其实也用不了多久

再就是开边 ...

IRC上要怎么做伞形采样?是根据IRC组合CV吗?IRC上的点是0K绝热近似下的静态结构,跑动力学初始速度要怎么赋予?而且一个窗口至少也要几千帧甚至上万帧,这个计算量对于大体系感觉还是有点吃不消。
作者
Author:
ZetaFunction    时间: 2024-5-17 01:05
以下是Amber XTB模块的开发者Timothy J. Giese的回复:
The MPI parallelization of sander/xtb only improves the performance of (1) the MM calculation, and (2) pre-SCF calculation of the QM/MM Ewald planewaves. As you correctly note, the XTB software does not support MPI parallelization. In my experience, the parallelization of XTB is not that great for systems with ~150 atoms; however, the XTB performance is similar to other programs such as DFTB+ and SQM.

他认为XTB并行效率不高所以单核运行也无所谓
作者
Author:
Rowena    时间: 2024-5-21 09:22
试一试sander.OMP




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3