计算化学公社

 找回密码 Forget password
 注册 Register
Views: 13449|回复 Reply: 18

[xtb] 分享关于xTB效率和内存占用的小测试

[复制链接 Copy URL]

24

帖子

0

威望

109

eV
积分
133

Level 2 能力者

发表于 Post on 2021-2-2 12:10:59 | 显示全部楼层 Show all |阅读模式 Reading model
本帖最后由 TaylorWu 于 2021-2-2 12:14 编辑

Grimme的xTB软件应该来说还是很有潜力的一款针对大孤立体系(比方说蛋白质或者大团簇)的计算软件,这点社长的博文也提到了(http://sobereva.com/214)。许多使用过该软件的前辈表示xTB并行效率不算太好,超过12核心以上就不太能提升效率了,而我自己在计算的时候又遇到了由于体系比较大(指轨道数太多)导致服务器爆内存的情况。

xTB官方的手册中也提到了核心数越多,内存占用会越多的情况:
Note that the memory requirement will increase with the system size and the number of requested threads. Currently, for 3000 atom system each thread requires around 16GB of memory due to the usage of dense matrix algebra for the xTB Hamiltonian.
为此,我针对一个3160原子(其中非氢原子约1500)的已经在GFN2下优化过的蛋白质进行了不同核心数下的单点能计算,看看内存占用情况和并行效率。
我用于测试的机器是17年买的E5服务器,双路各22核心,主频2.2GHz,内存共256GB(频率和几通道未知)计算设置和体系参数如下:

          ...................................................
          :                      SETUP                      :
          :.................................................:
          :  # basis functions                7984          :
          :  # atomic orbitals                7973          :
          :  # shells                         4757          :
          :  # electrons                      8804          :
          :  max. iterations                   250          :
          :  Hamiltonian                  GFN2-xTB          :
          :  restarted?                      false          :
          :  GBSA solvation                   true          :
          :  PC potential                    false          :
          :  electronic temp.          300.0000000     K    :
          :  accuracy                    1.0000000          :
          :  -> integral cutoff          0.2500000E+02      :
          :  -> integral neglect         0.1000000E-07      :
          :  -> SCF convergence          0.1000000E-05 Eh   :
          :  -> wf. convergence          0.1000000E-03 e    :
          :  Broyden damping             0.4000000          :
          ...................................................废话不多说,直接上结果:
coreMaxMem%SCFSteptotal timetotal time(s)total speedSCF time C/W rate totalC/W rate SCF
4
12.90%
15
17m3s
1023
0.00097752
16m30s
3.456
3.488
6
16.80%
15
12m20s
740
0.00135135
11m52s
4.976
5.053
8
20.80%
15
10m17s
617
0.00162075
9m51s
6.474
6.604
10
24.80%
15
8m52s
532
0.0018797
8m28s
7.937
8.132
12
28.70%
15
8m11s
491
0.00203666
7m48s
9.306
9.559
14
32.70%
15
7m33s
453
0.00220751
7m10s
10.738
11.07
16
36.70%
15
7m7s
427
0.002342
6m44s
12.374
12.793
18
39.60%
15
6m58
418
0.002392
6m35s
13.753
14.239
结果分析:
1.内存随着核心数的增加会线性增长,但是还有一个小的截距,这一部分内存推测是各个核心公用的,而随着核心数量增长而增长的则是每个核心独享的moment,额不,memory。
2.total speed 是total time的倒数,它的scaling其实挺不理想的18核的速度是4核的4.5倍核心,但是只有2.5倍速度。并且基本上速度已经到极限了,更多的核心(24核往上)可能甚至会拖慢速度。
3.xTB输出文件的最后会给出CPU time和Wall Time的ratio,但是那个ratio不是加速比!准确地说应该是CPU占用时间和现实时间的比例。计算速度并没有这么高的比例!
4.附上一张图:红色对角线是以4核时的速度为基准的理想标度,蓝色点线是实测值。

Conclusion Time:
xTB的GFN2方法最佳计算核心数大约是12-14核左右,但是如果追求极致速度可以上到18-20核,在往上速度可能会不升反降。另外xTB是吃内存大户,建议大家内存插满,或者想办法简化自己的体系

未来的计划:1.计算不同成分的体系的xTB内存占用和效率(比如过渡金属)。目前已经有了一些初步的内存占用数据,256GB的内存在12核心下,能够算到大约一万五千个轨道的体系。
2.xTB很多人用来做几何优化,但是本次测试时间有限没有拿来尝试做几何优化,不过考虑到几何优化里面的时间大头其实也是在算单点,所以单点的这个效率标度可以大致近似为几何优化的速度标度。有空我还是会测一下几何优化的。



微信截图_20210202120232.png

评分 Rate

参与人数
Participants 5
eV +27 收起 理由
Reason
ZZZ2556540 + 4 赞!
akber123 + 5 谢谢
Novice + 3 谢谢分享
sobereva + 10 欢迎讨论
tjuptz + 5 好物!

查看全部评分 View all ratings

221

帖子

1

威望

1775

eV
积分
2016

Level 5 (御坂)

发表于 Post on 2021-2-2 12:23:14 | 显示全部楼层 Show all
本帖最后由 lyj714 于 2021-2-2 12:30 编辑

应该还可以测试下不同主频cpu下的差异,我认为高主频的cpu效率会高不少。xtb的并行策略应该是mkl thread + omp的组合效率最高(这个默认发布的就是这种),众所周知,omp对于核心越多,加速效率提升越不明显。所以对于xtb这类软件,主频还是起到关键作用。由于最新的xtb6.4.0已经开始向gpu加速上迁移(pgi gpu加速),因此将来可能会有显著提升

6697

帖子

0

威望

4014

eV
积分
10711

Level 6 (一方通行)

发表于 Post on 2021-2-2 12:30:26 | 显示全部楼层 Show all
对于稍微大一点的体系,半经验计算的决速步是Fock矩阵的对角化,而对角化不好并行化。为了进一步提升效率,必须改用比如说基于密度矩阵或者局域轨道的算法,避免对角化整个Fock矩阵,但Grimme组的主要关注点不在这个上面,应该没做。

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
卡开发发 + 2 我很赞同

查看全部评分 View all ratings

BDF(https://bdf-manual.readthedocs.io/zh_CN/latest/Introduction.html)、ORCA(https://orcaforum.kofo.mpg.de/index.php)开发团队成员

24

帖子

0

威望

109

eV
积分
133

Level 2 能力者

 楼主 Author| 发表于 Post on 2021-2-2 16:24:30 | 显示全部楼层 Show all
lyj714 发表于 2021-2-2 12:23
应该还可以测试下不同主频cpu下的差异,我认为高主频的cpu效率会高不少。xtb的并行策略应该是mkl thread +  ...

自然高主频(高IPC)的CPU同样核心下算什么都快,您想说的是,高主频/单核心能强的CPU它的最大并行核数可以提升吗?也就是说高单核性能的CPU它的并行效率会更高?这个倒是值得去探索一下!

24

帖子

0

威望

109

eV
积分
133

Level 2 能力者

 楼主 Author| 发表于 Post on 2021-2-2 16:27:14 | 显示全部楼层 Show all
wzkchem5 发表于 2021-2-2 12:30
对于稍微大一点的体系,半经验计算的决速步是Fock矩阵的对角化,而对角化不好并行化。为了进一步提升效率, ...

Grimme组的人在xTB手册里面提到了xTB的哈密顿量是用密度矩阵的算法。我之前也听说(纯听说嗷)有人说xTB大概可以看成是半经验的DFT,所以应该不是Fock矩阵?还请您赐教~

6697

帖子

0

威望

4014

eV
积分
10711

Level 6 (一方通行)

发表于 Post on 2021-2-2 17:33:40 | 显示全部楼层 Show all
TaylorWu 发表于 2021-2-2 16:27
Grimme组的人在xTB手册里面提到了xTB的哈密顿量是用密度矩阵的算法。我之前也听说(纯听说嗷)有人说xTB ...

说的应该是Fock矩阵是用密度矩阵构建的吧
我的意思是,有的半经验程序会完全避开Fock矩阵对角化、再用对角化出来的MO轨道系数计算密度矩阵这个步骤,而是直接把能量看作密度矩阵的函数,对能量做极小化。相当于高斯里的direct minimization算法,SCF迭代次数会比普通SCF算法更多,但是因为避免了矩阵对角化,当矩阵对角化是决速步的时候,有可能比传统算法快、并行效率高。
BDF(https://bdf-manual.readthedocs.io/zh_CN/latest/Introduction.html)、ORCA(https://orcaforum.kofo.mpg.de/index.php)开发团队成员

10

帖子

0

威望

57

eV
积分
67

Level 2 能力者

发表于 Post on 2021-3-14 22:49:27 | 显示全部楼层 Show all
本帖最后由 lizw@dicp.ac.cn 于 2021-3-14 22:51 编辑

请问怎么调CPU并行数?我在.bashrc里调OMP_NUM_THREADS,发现有时并不起作用,请问是什么问题呢?
但有时又有变化,比如从1调到2有变化,但从2调到4就没有变化了,运行时查看还是2并行。

31

帖子

1

威望

366

eV
积分
417

Level 3 能力者

发表于 Post on 2021-3-15 01:17:24 | 显示全部楼层 Show all
lizw@dicp.ac.cn 发表于 2021-3-14 22:49
请问怎么调CPU并行数?我在.bashrc里调OMP_NUM_THREADS,发现有时并不起作用,请问是什么问题呢?
但有时 ...

試試看command手動指定 -P 4  !?

6697

帖子

0

威望

4014

eV
积分
10711

Level 6 (一方通行)

发表于 Post on 2021-3-15 01:23:56 | 显示全部楼层 Show all
lizw@dicp.ac.cn 发表于 2021-3-14 22:49
请问怎么调CPU并行数?我在.bashrc里调OMP_NUM_THREADS,发现有时并不起作用,请问是什么问题呢?
但有时 ...

你是怎么查看的?top或者ps aux是吗?
xTB并行效率不是太高,可能指定4核的时候4核全都用上了,但是每个核平均只占用一半,导致CPU利用率只有200%
BDF(https://bdf-manual.readthedocs.io/zh_CN/latest/Introduction.html)、ORCA(https://orcaforum.kofo.mpg.de/index.php)开发团队成员

10

帖子

0

威望

57

eV
积分
67

Level 2 能力者

发表于 Post on 2021-3-15 11:02:03 | 显示全部楼层 Show all
wzkchem5 发表于 2021-3-15 01:23
你是怎么查看的?top或者ps aux是吗?
xTB并行效率不是太高,可能指定4核的时候4核全都用上了,但是每个 ...

对,我是top看的

10

帖子

0

威望

57

eV
积分
67

Level 2 能力者

发表于 Post on 2021-3-15 11:07:18 | 显示全部楼层 Show all
ms860309 发表于 2021-3-15 01:17
試試看command手動指定 -P 4  !?

-P 4也可以。不过top查看并行效率还是200%,有可能是xtb本身并行效率就不高导致的,如9#楼所说。

10

帖子

0

威望

57

eV
积分
67

Level 2 能力者

发表于 Post on 2021-3-15 11:14:23 | 显示全部楼层 Show all
本帖最后由 lizw@dicp.ac.cn 于 2021-3-15 11:38 编辑

对于附件中的输入文件,1个cpu可以算,两个以上并行就出错,出错信息如下:
----------------------------------------------------------------------------------------------------------------
          ...................................................
          :                      SETUP                      :
          :.................................................:
          :  # basis functions                1845          :
          :  # atomic orbitals                1842          :
          :  # shells                         1106          :
          :  # electrons                      2020          :
          :  max. iterations                   250          :
          :  Hamiltonian                  GFN2-xTB          :
          :  restarted?                      false          :
          :  GBSA solvation                  false          :
          :  PC potential                    false          :
          :  electronic temp.          300.0000000     K    :
          :  accuracy                    1.0000000          :
          :  -> integral cutoff          0.2500000E+02      :shi
          :  -> integral neglect         0.1000000E-07      :
          :  -> SCF convergence          0.1000000E-05 Eh   :
          :  -> wf. convergence          0.1000000E-03 e    :
          :  Broyden damping             0.4000000          :
          ...................................................
Segmentation fault (core dumped)

---------------------------------------------------------------------------------------------------------------

我在.bashrc里的设置如下:
----------------------------------------------------------------------------------------------------------------
export PATH=$PATH:/home/li/opt/xtb-6.3.3/bin
export XTBPATH=/home/li/opt/xtb-6.3.3/share/xtb
export OMP_NUM_THREADS=2
export MKL_NUM_THREADS=2
ulimit -s unlimited

----------------------------------------------------------------------------------------------------------------

通过调节“OMP_NUM_THREADS=2"或提交作业时手动"-P 2"来设置并行。我的内存是16G,运行时查看内存还剩很多,好像并没有溢出。
比它原子数少的体系(比如500个原子)就不会出现这样的问题,请问这是什么原因呢?

0.xyz

32.85 KB, 下载次数 Times of downloads: 10

31

帖子

1

威望

366

eV
积分
417

Level 3 能力者

发表于 Post on 2021-3-15 11:54:55 | 显示全部楼层 Show all
btw, 我有遇到過1, 2 core正常但是4 core scf不收斂
結果我那時用orca當optimizer似乎沒確認scf convergence導致誤差越來越大

221

帖子

1

威望

1775

eV
积分
2016

Level 5 (御坂)

发表于 Post on 2021-3-15 13:05:49 | 显示全部楼层 Show all
lizw@dicp.ac.cn 发表于 2021-3-15 11:14
对于附件中的输入文件,1个cpu可以算,两个以上并行就出错,出错信息如下:
---------------------------- ...

把OMP_STACKSIZE设置大点,比如export OMP_STACKSIZE=4G

10

帖子

0

威望

57

eV
积分
67

Level 2 能力者

发表于 Post on 2021-3-15 13:17:46 | 显示全部楼层 Show all
本帖最后由 lizw@dicp.ac.cn 于 2021-3-15 13:18 编辑
lyj714 发表于 2021-3-15 13:05
把OMP_STACKSIZE设置大点,比如export OMP_STACKSIZE=4G

谢谢!试了,也不行,很奇怪。请问附件中的输入文件在您机器上可以多核并行吗?

本版积分规则 Credits rule

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

GMT+8, 2023-2-7 03:08 , Processed in 0.204639 second(s), 25 queries .

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