本帖最后由 liyuanhe211 于 2016-12-29 12:30 编辑
网络上有不少对Gaussian并行效率的测试,其测试基本都如下图示意。只用2核时(横坐标),会占用“4格”时间(纵坐标),而用4核时,可能只需2格时间。这种只运行一个任务,大量CPU空余的情况并不符合实际。实际若有空闲CPU,常会运行其他任务(如有排队系统)。
故合理的测试应如下进行:若在8核的CPU上测试,应对比同时运行4个2核任务;和一个8核任务运行4遍的时间。
本文将对两种测试方法进行对比
--------------------------------------------
测试
--------------------------------------------
P.S. 本次测试结果实在是有些颠覆我之前的概念,期待大家讨论。如果有人愿意在其他机器上测试就更好了。
测试案例都是同一个普通的含CHN有机分子,初始结构相同,B3LYP/6-31G(d) opt freq。机器分别是 20核40线程的E5-2680 v2 *2 和12核24线程的E5-2643 v2 *2,配每核4G内存。Hyperthread 启用。
--------------------------------------------
单任务并行效率测试(前人测试方式)
按照前人的测试方式重复,结果在趋势上类似,以2核作为基准的并行效率如下表/下图所示。
原始时间数据:
多次SCF(多个L502和L703)在写程序提取时间的时候已经自动平均过了。已检查各次SCF循环次数相同
并行效率
可见L502的结果与前人的单点能测试类似,大概到4核并行的时候效率是很高的,超过4核的提升就远不如前面显著了。
同时L502的并行效率是各线程中最低的。可见 L703,L1110 和 L1002的多核并行效率都很高,使得总时间的并行效率在8核以下还是很显著的,12~16核也还可以接受。
本测试中发现一个问题,CPU在只使用一个Core时,会比使用所有Core有更多的Turbo,如E5-2680在只运行单线程时会Turbo到3.6GHz,在运行全部Core时只会Turbo到3.1GHz,频率的检测也确认了这个推测。如果这一现象在其他机器上存在,很可能错误的低估并行效率。
--------------------------------------------
恒定CPU使用率多任务并行效率测试
--------------------------------------------
因为与测试无关的原因,基组从6-31G(d)换成了6-31+G(d,p),应基本不影响结果。
依据之前的测试结果,开启Hyperthread但不使用Hyperthread出来的线程是较好的运行策略:
故CPU只使用50%(表观),即20核40线程的CPU,只运行总共20线程的任务。内存每核4G,所有任务平均分配。
原始时间数据: 除了对各进程平均,对并行的各相同任务间也做了平均
(单核运行的案例运行时间太长,没跑完就被我关掉了,以两核为基准)
并行效率:
可见结果与上面完全不同,可见与第一节的单任务测试相比,多核的并行效率上来了,这是表象;其实际原因可能是如前所述的,仅使用1、2个核时,Turbo频率较高,故这种接近实际的测试方式不存在常见的高估低核数效率的问题。
从总时间上来说,不同核数运行时并行效率都可以接受,与两核并行这个基准上下浮动不多。
根据测试结果,个人感觉在存在多个可运行任务时,使每个任务拥有 4~6 Core,同时运行多个任务使CPU满载(不含Hyperthread),可能是效率较高的方案。
期待讨论。
|