计算化学公社

标题: ORCA并行效率小测试 [打印本页]

作者
Author:
ggdh    时间: 2022-5-4 04:29
标题: ORCA并行效率小测试
本帖最后由 ggdh 于 2022-5-4 10:27 编辑

测试环境:硬件:
Intel 8375c * 2 + 32*16内存
AMD 7T83 * 2 + 32*16内存
软件:
Fedora release 35
Gaussian16 A.03 AVX2
ORCA 5.0.3
openmpi 4.1.1
GCC 11.2.1
测试方法:
测试脚本: xbench 3.0 使用方法可以去g16/orca速度测试脚本xbench 3.0
测试体系: Gaussian Test Job 397
运算级别: 见下方具体描述
NUMA策略: 非满占据情况下默认使用分布式策略

防拱火声明
本次测试中同时对Gaussian16和ORCA进行了测试,但是由于Gausssian和ORCA的默认精度完全不同(包括格点精度,积分精度,收敛精度,ri加速等)。所以,除了测试体系一样,运算级别一样以外,两者的运算速度完全没有可比性。另外Gaussian的运算稳定性也比ORCA要好一些。
所以,以下所有关于ORCA和G16速度的对比讨论,就是基于这两者的运算速度完全没有可比性的前提进行的。

一句话结论:
64核以下如果内存足够ORCA的单节点并行效率都不错,64到128核速度提升比较小;如果有多个任务需要运行,和一次只运行一个任务比,同时运行多个任务的总收益提升比Gaussian更大。

测试一,单任务单点计算并行效率
a) 在8375c 上进行B3LYP/def2SVP级别的计算
测试命令:
  1. xbench.sh -n "8 16 24 32 48 64" -t 1 -p g16 -r 3 -k "B3LYP def2SVP scf(tight) g09default"  #g16
  2. xbench.sh -n "8 16 24 32 48 64" -t 1 -p orca -r 3 -k "B3LYP def2SVP tightscf"  #orca
复制代码
测试结果:
(, 下载次数 Times of downloads: 70)
对于小任务,并行到64核速度仍有提升,但48核后速度提升不大
小任务G16比开启RIJCOSX的ORCA快
b) 在8375c 上进行B3LYP/def2TZVP级别的计算
测试命令:
  1. xbench.sh -n "8 16 24 32 48 64" -t 1 -p g16 -r 3 -k "B3LYP def2TZVP scf(tight) g09default"  #g16
  2. xbench.sh -n "8 16 24 32 48 64" -t 1 -p orca -r 3 -k "B3LYP def2TZVP tightscf"  #orca
复制代码
测试结果:
(, 下载次数 Times of downloads: 70)
对于大任务G16被开启RIJCOSX的ORCA反超
c) 在7T83 上进行B3LYP/def2TZVP级别的计算
测试命令:
  1. xbench.sh -n "16 32 64 128" -t 1 -p g16 -r 3 -k "B3LYP def2TZVP scf(tight) g09default"  #g16
  2. xbench.sh -n "16 32 64 128" -t 1 -p orca -r 3 -k "B3LYP def2TZVP tightscf"  #orca
复制代码
测试结果:
(, 下载次数 Times of downloads: 61)
orca在8375C上采用少量核心并行时,速度不稳定,原因未知(已经用-cpu-list实现核心绑定)
8375c和7T83上的并行效率和运算速度相仿
128核对比64核速度仍有提升,此时orca的提升(1.1倍)低于gaussian(1.4倍)

d) 在7T83 上进行r2SCAN-3C/def2TZVP级别的计算
测试命令:
  1. xbench.sh -n "16 32 64 128" -t 1 -p orca -r 3 -k "r2scan-3c tightscf"  #orca
复制代码
测试结果:
(, 下载次数 Times of downloads: 71)
纯泛函比杂化泛函快了很多,def2-mTZVPP级别的基组比杂化泛函用def2-SVP级别的还快

测试二,多任务单点计算并行效率
在7T83 上进行B3LYP/def2TZVP级别的计算
测试命令:
  1. xbench.sh -n "16 32 64 128" -t m -p g16 -r 3 -k "B3LYP def2TZVP scf(tight) g09default"  #g16
  2. xbench.sh -n "16 32 64 128" -t m -p orca -r 3 -k "B3LYP def2TZVP tightscf"  #orca
复制代码
测试结果:
(, 下载次数 Times of downloads: 71)
已知同时跑的任务越多,算力越高,这个效应对于orca更显著

测试三,单任务TDDFT计算并行效率
在7T83 上进行TD-B3LYP/def2TZVP级别的计算
测试命令:
  1. xbench.sh -n "16 32 64 128" -t 1 -p g16 -r 3 -k "B3LYP def2TZVP TD scf(tight) g09default"  #g16
  2. xbench.sh -n "16 32 64 128" -t 1 -p orca -r 3 -k "B3LYP def2TZVP tightscf" -b "%TDDFT NROOTS 3\nEND" #orca
复制代码
测试结果:
(, 下载次数 Times of downloads: 67)
TD任务ORCA比Gaussian快了非常多
但是并行效率比Gaussian低

测试四,单任务DLPNO计算并行效率
在7T83 上进行DLNPO-CCSD(T)/cc-pVDZ级别的计算
测试命令:
  1. xbench.sh -n "16 32 64 128" -t 1 -p orca -r 3 -m 2000c -k "cc-pVDZ cc-pVDZ/C DLPNO-CCSD(T) NormalPNO TightSCF"  #orca fix mem per core
  2. xbench.sh -n "16 32 64 128" -t 1 -p orca -r 3 -m 500 -k "cc-pVDZ cc-pVDZ/C DLPNO-CCSD(T) NormalPNO TightSCF" #orca fix total mem
复制代码
测试结果:
(, 下载次数 Times of downloads: 66)


2000MB/Core的设定是为了避免内存不同对并行效率产生影响
DLNPO-CCSD(T)并行到64核后速度基本不提升
另外如果控制总内存为500GB, 可以看到并行效率下降的更快
这个体系小,结论的有效性对于TZ级别的基组存疑
我膨胀了,试图用cc-pVTZ进行测试,算了2天一个任务没有跑完,就放弃了。




作者
Author:
Freeman    时间: 2022-5-4 11:02
之前我测试过频率计算,有机分子,原子数约50,B3LYP-D3(BJ)/def2-TZVP,40核,开rijcosx的orca比g16快5倍。太过瘾了。
作者
Author:
ggdh    时间: 2022-5-4 11:13
Freeman 发表于 2022-5-4 11:02
之前我测试过频率计算,有机分子,原子数约50,B3LYP-D3(BJ)/def2-TZVP,40核,开rijcosx的orca比g16快5倍 ...

啊 频率计算ORCA都比Gaussian 快么?真的假的
作者
Author:
Freeman    时间: 2022-5-4 11:21
ggdh 发表于 2022-5-4 11:13
啊 频率计算ORCA都比Gaussian 快么?真的假的

是这样的。rijcosx太香了。
作者
Author:
ggdh    时间: 2022-5-4 11:23
Freeman 发表于 2022-5-4 11:21
是这样的。rijcosx太香了。

卧槽这有点颠覆我的认知了我去测一下
作者
Author:
ionexchangeC    时间: 2022-5-4 11:44
而且ORCA5在做40个以上原子的大体系振动分析的时候会分IBatch求解CPSCF方程,速度提升不少(40这个数是个人经验,不一定准确)

作者
Author:
sobereva    时间: 2022-5-4 14:22
振动分析一般很少用到def2-TZVP
基组不大的话,RIJCOSX给ORCA来带的优势就相对有限了
之前我用ORCA 4.0对比过40个纯重原子纳米管体系的振动分析速度,B3LYP/def2-SVP的时候ORCA开RIJCOSX时明显慢于Gaussian。ORCA 5振动分析速度提升不少,但此时也不至于能明显超过Gaussian。

作者
Author:
mfdsrax2    时间: 2022-5-4 14:25
为什么核心越多计算耗时越长?是用的CPU时间计算的吗?
作者
Author:
ggdh    时间: 2022-5-4 17:11
mfdsrax2 发表于 2022-5-4 14:25
为什么核心越多计算耗时越长?是用的CPU时间计算的吗?

看纵坐标 一般都是耗时的倒数乘以10000
作者
Author:
mfdsrax2    时间: 2022-5-4 18:03
再请问一下,内存对单点计算的影响如何?是越大越好吗?
作者
Author:
ggdh    时间: 2022-5-4 18:33
mfdsrax2 发表于 2022-5-4 18:03
再请问一下,内存对单点计算的影响如何?是越大越好吗?

一般来说 DFT不怎么吃内存, 用很大的内存估计速度不会快
如果是DLPNO-CCSD(T)级别的计算,比较吃内存,内存不够不让算。
作者
Author:
MisakaFaction    时间: 2022-5-5 15:18
内存对于ORCA的并行影响这么大么,为什么我用64核比32核反而要慢不少
平台:AMD 7452*2 + 16*16内存 + ORCA 5.0.3 + openmpi 4.1.1
作者
Author:
ggdh    时间: 2022-5-5 15:39
MisakaFaction 发表于 2022-5-5 15:18
内存对于ORCA的并行影响这么大么,为什么我用64核比32核反而要慢不少
平台:AMD 7452*2 + 16*16内存 +  ...

你是什么任务啊?

作者
Author:
胡说    时间: 2022-5-6 14:51
从“b) 在8375c 上进行B3LYP/def2TZVP级别的计算”这个测试结果看,对于8375C来说,ORCA在使用8、16、24核的速度不太合理,明显偏慢很多,比如32核速度竟然是16核的3倍,这反常识了。但是在“c) 在7T83 上进行B3LYP/def2TZVP级别的计算”可以看到对于7T83来说,32核速度是16核的2倍不到一点,这结果很合理。可惜没有7T83的8、24核的速度,不然可以更加清楚的看出两个CPU在较少核心数下的区别,正常情况下,两个CPU应该差不多才合理。我用老师的脚本在8171M上测试了下,如下图,发现较少核心数下结果是合理的,从图中可知ORCA在8171M用8、16、24核的速度比8375C还快,这也说明8375C使用8、16、24核的速度不太合理;另外从图中也可以大致看出8375C或7T83在同核心数下速度比8171M要快20-40%左右,且并行核心数越多,差距越大。所以有理由怀疑是不是CPU本身问题或是系统环境编译等其他原因导致的8375C在ORCA使用8、16、24核的速度偏慢很多。另外,对于8375C,这种偏慢情况是否在以8、16、24核同时运行多个任务时也存在呢(帖子中只测了7T83)?
作者
Author:
ggdh    时间: 2022-5-6 16:58
本帖最后由 ggdh 于 2022-5-6 17:00 编辑
胡说 发表于 2022-5-6 14:51
从“b) 在8375c 上进行B3LYP/def2TZVP级别的计算”这个测试结果看,对于8375C来说,ORCA在使用8、16、24核 ...

你看的这么仔细啊 哈哈
这个现象确实比较诡异8/16/24核跑的时候 有概率非常快(其实是正常发挥?)可以跑完, 下面是我跑了8次对应的耗时

(, 下载次数 Times of downloads: 56)
这里跑的时候核心都是绑定的, 设置都是一样, 并且是用xbench -r 连续跑的。
为什么会出现这个现象,还不清楚。


作者
Author:
胡说    时间: 2022-5-7 19:36
ggdh 发表于 2022-5-6 16:58
你看的这么仔细啊 哈哈
这个现象确实比较诡异8/16/24核跑的时候 有概率非常快(其实是正常发挥?)可以跑完 ...

这个结果真诡异,快速和慢速差别也好大,而且32核及以后就不会出现了,难以理解。
作者
Author:
Geyer    时间: 2022-5-31 13:14
本帖最后由 Geyer 于 2022-5-31 13:19 编辑
ggdh 发表于 2022-5-6 16:58
你看的这么仔细啊 哈哈
这个现象确实比较诡异8/16/24核跑的时候 有概率非常快(其实是正常发挥?)可以跑完 ...

请问这里有指定核心吗?尤其是对于双路节点来说
分布在两个u上的任务数据过qpi总线的时候会带来延迟,但若分享了更大的内存带宽则可能加快运算速度
此外8/16/24/32核下的heavy avx负载倍频肯定不一样,具体可以查一查(比如win下打开hwinfo
ps:没仔细看…我的锅orz核心绑定了的话这个情况就很怪了
传说中icl在负载很轻的情况下开启某个设置会boost到4g以上,不过有效性存疑


作者
Author:
大村驴    时间: 2022-5-31 19:46
你这个纵坐标的选取可能稍微有点误导吧……倒数本身就不是线性函数,当耗时已经很大的时候,10000/耗时对耗时的偏导绝对值远小于耗时很小的时候
作者
Author:
ggdh    时间: 2022-6-9 23:11
大村驴 发表于 2022-5-31 19:46
你这个纵坐标的选取可能稍微有点误导吧……倒数本身就不是线性函数,当耗时已经很大的时候,10000/耗时对耗 ...

这个问题很有意思啊
时间的倒数是软件的效率或者是算力, 这时候时效率是线性的
比如我可以说orca 是gausian效率的两倍
或者是7T83是8375C算力的1.4倍
并行效率也是这样, 我要比64核是32核的效率的多少倍 感觉用倒数更合适
用时间的话, 感觉不直观,
就拿我跟sob比, 我发一个帖子的功夫sob可以发50个博文, 这时候说sob的产出是我的50倍比较直接。而不是说我的耗时是sob的50倍。
作者
Author:
lonemen    时间: 2022-7-3 10:32
请问10000/耗时,是个什么单位呢,代表的是什么意思呢?
作者
Author:
ggdh    时间: 2022-10-15 17:59
5995wx
4.54
8.51
12.61
16.09
18.67
20.86
22.68
23.87





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