计算化学公社

标题: Gaussian 并行效率新测 [打印本页]

作者
Author:
liyuanhe211    时间: 2015-11-24 16:29
标题: Gaussian 并行效率新测
本帖最后由 liyuanhe211 于 2016-12-29 12:30 编辑

网络上有不少对Gaussian并行效率的测试,其测试基本都如下图示意。只用2核时(横坐标),会占用“4格”时间(纵坐标),而用4核时,可能只需2格时间。这种只运行一个任务,大量CPU空余的情况并不符合实际。实际若有空闲CPU,常会运行其他任务(如有排队系统)。
(, 下载次数 Times of downloads: 78)

故合理的测试应如下进行:若在8核的CPU上测试,应对比同时运行4个2核任务;和一个8核任务运行4遍的时间。

(, 下载次数 Times of downloads: 86)
本文将对两种测试方法进行对比

--------------------------------------------
测试
--------------------------------------------
P.S. 本次测试结果实在是有些颠覆我之前的概念,期待大家讨论。如果有人愿意在其他机器上测试就更好了。

测试案例都是同一个普通的含CHN有机分子,初始结构相同,B3LYP/6-31G(d) opt freq。机器分别是 20核40线程的E5-2680 v2 *2 和12核24线程的E5-2643 v2 *2,配每核4G内存。Hyperthread 启用。

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

单任务并行效率测试(前人测试方式)
(, 下载次数 Times of downloads: 80)

按照前人的测试方式重复,结果在趋势上类似,以2核作为基准的并行效率如下表/下图所示。

原始时间数据:

多次SCF(多个L502和L703)在写程序提取时间的时候已经自动平均过了。已检查各次SCF循环次数相同

(, 下载次数 Times of downloads: 78)


并行效率


(, 下载次数 Times of downloads: 81)


(, 下载次数 Times of downloads: 84)


可见L502的结果与前人的单点能测试类似,大概到4核并行的时候效率是很高的,超过4核的提升就远不如前面显著了。
同时L502的并行效率是各线程中最低的。可见 L703,L1110 和 L1002的多核并行效率都很高,使得总时间的并行效率在8核以下还是很显著的,12~16核也还可以接受。

本测试中发现一个问题,CPU在只使用一个Core时,会比使用所有Core有更多的Turbo,如E5-2680在只运行单线程时会Turbo到3.6GHz,在运行全部Core时只会Turbo到3.1GHz,频率的检测也确认了这个推测。如果这一现象在其他机器上存在,很可能错误的低估并行效率。

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

恒定CPU使用率多任务并行效率测试

(, 下载次数 Times of downloads: 105)

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


因为与测试无关的原因,基组从6-31G(d)换成了6-31+G(d,p),应基本不影响结果。
依据之前的测试结果,开启Hyperthread但不使用Hyperthread出来的线程是较好的运行策略:
《CPU(带HT) 一半线程 vs 100%使用 效率实测》
http://bbs.keinsci.com/forum.php?mod=viewthread&tid=2105&extra=

故CPU只使用50%(表观),即20核40线程的CPU,只运行总共20线程的任务。内存每核4G,所有任务平均分配。

原始时间数据:
除了对各进程平均,对并行的各相同任务间也做了平均

(, 下载次数 Times of downloads: 85)
(单核运行的案例运行时间太长,没跑完就被我关掉了,以两核为基准)

并行效率:

(, 下载次数 Times of downloads: 81)


(, 下载次数 Times of downloads: 89)



可见结果与上面完全不同,可见与第一节的单任务测试相比,多核的并行效率上来了,这是表象;其实际原因可能是如前所述的,仅使用1、2个核时,Turbo频率较高,故这种接近实际的测试方式不存在常见的高估低核数效率的问题。


从总时间上来说,不同核数运行时并行效率都可以接受,与两核并行这个基准上下浮动不多。
根据测试结果,个人感觉在存在多个可运行任务时,使每个任务拥有 4~6 Core,同时运行多个任务使CPU满载(不含Hyperthread),可能是效率较高的方案。

期待讨论。











作者
Author:
我本是个娃娃    时间: 2015-11-24 16:40
抢沙发,看起来好腻害滴样子
作者
Author:
女神的兔子    时间: 2015-11-24 18:18
李大师,我来暖贴了
作者
Author:
liyuanhe211    时间: 2015-11-24 18:49
女神的兔子 发表于 2015-11-24 18:18
李大师,我来暖贴了

已经升级成大师了

(, 下载次数 Times of downloads: 70)



(, 下载次数 Times of downloads: 78)




作者
Author:
978142355    时间: 2015-11-24 20:05
想问问Li老师,%mem给的是多大?
作者
Author:
liyuanhe211    时间: 2015-11-24 20:21
978142355 发表于 2015-11-24 20:05
想问问Li老师,%mem给的是多大?

除列出的以外,每核4G,上面写了。
作者
Author:
smutao    时间: 2015-11-24 22:38
从第二部分的测试来看
似乎任务很多的时候集中火力一个一个任务跑反而是效率最高的
这个也不难理解——因为实际的计算时间不光和CPU有关,还和内存的读写、硬盘的读写有关。
这一部分的测试也正是我上次在你的帖子里面回复提到的,多谢测试!


作者
Author:
978142355    时间: 2015-11-24 23:50
liyuanhe211 发表于 2015-11-24 20:21
除列出的以外,每核4G,上面写了。

分子中原子个数似乎对%mem的不同,计算速度也不同。
作者
Author:
liyuanhe211    时间: 2015-11-25 03:07
smutao 发表于 2015-11-24 22:38
从第二部分的测试来看
似乎任务很多的时候集中火力一个一个任务跑反而是效率最高的
这个也不难理解——因 ...

这个结论只对l703成立,如果观察其他几项,如总时间,似乎最高的还是较少的核数。另外根据检测,整个过程中CPU等待io都很低,所以硬盘读写可能不够成决速步。一些读写较多的任务比如post-HF可能确实会有你说的问题。
作者
Author:
liyuanhe211    时间: 2015-11-25 03:09
978142355 发表于 2015-11-24 23:50
分子中原子个数似乎对%mem的不同,计算速度也不同。

呃,没懂。记得有人说内存和线程数成正比是比较合理的,即所有的内存平分给各核用。故而这样分配内存,不知道这个说法对不对。
作者
Author:
978142355    时间: 2015-11-25 08:25
liyuanhe211 发表于 2015-11-25 03:09
呃,没懂。记得有人说内存和线程数成正比是比较合理的,即所有的内存平分给各核用。故而这样分配内存,不 ...

对,我就是这个意思,比如算苯分子,内存给的极小和极大,算的时间都比合适地给要长。我想你如果都给力4个G对于计算会不会有影响呢?
作者
Author:
liyuanhe211    时间: 2015-11-25 11:04
978142355 发表于 2015-11-25 08:25
对,我就是这个意思,比如算苯分子,内存给的极小和极大,算的时间都比合适地给要长。我想你如果都给力4 ...

可能对计算确实有影响,有一个理想值,我记得还有一个经验公式来算,给多少内存合适。不过这么做的假设是,绝对速度与内存有关,但使用不同核数且内存与核数成正比时,不同核数之间的相对速度基本不受影响。有时间也可以测试一下。
作者
Author:
978142355    时间: 2015-11-25 12:27
liyuanhe211 发表于 2015-11-25 11:04
可能对计算确实有影响,有一个理想值,我记得还有一个经验公式来算,给多少内存合适。不过这么做的假设是 ...

其实我一直就想做这个测试,只不过只有1个4个核的机器,没法做。经验公式?Li老师在哪里看到的?
作者
Author:
liyuanhe211    时间: 2015-11-25 13:11
978142355 发表于 2015-11-25 12:27
其实我一直就想做这个测试,只不过只有1个4个核的机器,没法做。经验公式?Li老师在哪里看到的?

呃~~忘记了~~好像有一个自变量是基函数个数,可以查一下。
以及想怎么测?用2个核不就能测了
作者
Author:
978142355    时间: 2015-11-25 19:12
liyuanhe211 发表于 2015-11-25 13:11
呃~~忘记了~~好像有一个自变量是基函数个数,可以查一下。
以及想怎么测?用2个核不就能测了

恩,谢谢Li老师,谷歌一下看一看能不能找到。
作者
Author:
youyno    时间: 2015-11-25 23:01
有没有测试超线程开启情况下的效率?
作者
Author:
liyuanhe211    时间: 2015-11-25 23:41
youyno 发表于 2015-11-25 23:01
有没有测试超线程开启情况下的效率?

已经开了
作者
Author:
Aminus    时间: 2015-12-8 21:30
建议做如下测试:
1. 同一个节点上,对同一任务,计算分别为4,8,12,16,20,24核,然后看总的计算时间,找出最优使用的核心数,
2. 如果以上最优核心数小于总核数的一半以上,分别再测试同一任务在最优核使用情况下,同时提交两个三个任务,再看

楼主没有提到的参数还有,临时文件,输出文件log,写在哪里,是在计算节点,还是其他节点(如存贮节点),这些也是影响因素。
作者
Author:
liyuanhe211    时间: 2015-12-8 21:48
Aminus 发表于 2015-12-8 21:30
建议做如下测试:
1. 同一个节点上,对同一任务,计算分别为4,8,12,16,20,24核,然后看总的计算时间 ...

没懂为什么这样合理。
显然CPU的总占用率跟任务的最佳核数是相关的,故作这样的的正交优化显然不一定能得到最优解。

目前所有测试都是单台工作站的测试。以及有前人测试的结果表明硬盘写入不构成决速步。
作者
Author:
hcxytpp@163.com    时间: 2015-12-9 08:52
我们服务器是以节点来分配的,为了资源合理利用,只给使用12核
作者
Author:
psfan    时间: 2015-12-24 08:04
很不错的测试,为更好使用胖节点提供依据。




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