计算化学公社

 找回密码 Forget password
 注册 Register
Views: 14586|回复 Reply: 15
打印 Print 上一主题 Last thread 下一主题 Next thread

[综合交流] CPU(带HT) 一半线程 vs 100%使用 效率实测

[复制链接 Copy URL]

3098

帖子

28

威望

1万

eV
积分
16892

Level 6 (一方通行)

本帖最后由 liyuanhe211 于 2017-2-6 14:28 编辑

曾有谣传说做计算应当在BIOS中关闭HyperThread(超线程),Sob已经辟谣:

(p.s. 如何调整图片大小?)



我对不要关闭超线程是没有异议的,但对“2N比N核并行是否性能有提升”感兴趣,遂做了下列测试:

CPU核数为N。线程数为2N。
一种情况下使得该输入文件占用N个线程,单独运行;
另一种情况同时启动两个同样的输入文件,每个文件占用N个线程,使得2N个线程占满。
(不使用2N线程而是使用2个N线程文件是为了排除Gaussian并行效率不是100%的影响)

测试的硬件,两台机器,一台E5-2680 v2 *2 (20核40线程),一台E5-2643 v2*2(12核24线程),计算分配每线程2G内存。
测试环境是CentOS 6.2,Gaussian 09 D.01 Linux,测试样例,一个47个原子含CHN的有机羧酸负离子(选它只是因为最近算过,想做其他的比较),测试路径[B3LYP/6-31+G(d,p) opt freq]


各进程所用时间(l503和l702 已对循环平均),总CPU时间和总Wall time见下表。
注意看两行高亮的即可,该数值>1说明使用N个核有利,反之说明2N个核效率更高(单位时间内能完成的任务量)。





从结果可见,E5-2643上使用2N个核的效率稍高10%~15%左右;E5-2680视进程不同结论不同,从总CPU时间上来看使用2N个线程几乎和N个线程,表观上(仅仅是表观上)50%的CPU使用率和100%CPU使用的效率几乎是一样的!总时间上用2N个核心效率还低了4%


以2643 v2为例,这是测试了 【1*12线程计算】 和 【2*12线程计算】的区别,如果测试 【2*6线程】 和 【2*12线程】估计前者会比现在更占优(并行效率<<100%),所以上面的ratio会更接近/超过 1,即使用50%的CPU有利。



综上,对N核、2N个线程的CPU,使用2N线程(100% CPU)并行和N线程(50% CPU)并行,单位Wall Time可完成的任务是基本一样的,但前者使用了两倍的CPU Time。故使用 N线程(表观 50% CPU)是合理的。


该结果只对我自己负责╮(╯▽╰)╭




评分 Rate

参与人数
Participants 3
eV +19 收起 理由
Reason
复前行79 + 4 好物!
ggdh + 5 赞!
sobereva + 10

查看全部评分 View all ratings

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

2#
发表于 Post on 2015-11-13 06:01:51 | 只看该作者 Only view this author
如果单个任务用N个线程的时候,可以同时跑2个相同的任务(控制变量),这样的话更有可比性。

5万

帖子

99

威望

5万

eV
积分
112496

管理员

公社社长

3#
发表于 Post on 2015-11-13 06:29:52 | 只看该作者 Only view this author
很有益的测试。
图片大小只能在传图之前缩放合适。(仅当超过论坛最大宽度的时候才会缩到最大宽度)
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

3098

帖子

28

威望

1万

eV
积分
16892

Level 6 (一方通行)

4#
 楼主 Author| 发表于 Post on 2015-11-13 13:35:44 | 只看该作者 Only view this author
本帖最后由 liyuanhe211 于 2015-11-13 16:45 编辑
smutao 发表于 2015-11-13 06:01
如果单个任务用N个线程的时候,可以同时跑2个相同的任务(控制变量),这样的话更有可比性。

没明白什么意思,你是觉得应当2*6和2*12比,不是1*12.和2*12比吗?我觉得这样反而没控制变量。

3098

帖子

28

威望

1万

eV
积分
16892

Level 6 (一方通行)

5#
 楼主 Author| 发表于 Post on 2015-11-13 16:47:16 | 只看该作者 Only view this author
smutao 发表于 2015-11-13 06:01
如果单个任务用N个线程的时候,可以同时跑2个相同的任务(控制变量),这样的话更有可比性。

用2*6和2*12比较就不能单纯的测量CPU性能的差异,而是掺入了Gaussian并行效率的因素,换个软件可能差别很大。

Gaussian并行效率已经有人测试过了,如果需要2*6和2*12比较的结果,只需要在我测出的当前的数值上乘以Gaussian在6线程和12线程的并行效率的比值就可以了。

293

帖子

8

威望

1694

eV
积分
2147

Level 5 (御坂)

6#
发表于 Post on 2015-11-13 23:26:58 | 只看该作者 Only view this author
liyuanhe211 发表于 2015-11-13 16:47
用2*6和2*12比较就不能单纯的测量CPU性能的差异,而是掺入了Gaussian并行效率的因素,换个软件可能差别很 ...

我的意思是当你只用N的线程的时候,CPU并没有像用2N个线程时那样100%工作着。但是当你跑了2个相同的任务,每个任务占N线程的时候,CPU就100%工作了,这个结果也许可以和2N的情况比较。

评分 Rate

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

查看全部评分 View all ratings

3622

帖子

3

威望

1万

eV
积分
18442

Level 6 (一方通行)

第一原理惨品小作坊

7#
发表于 Post on 2015-11-13 23:47:28 | 只看该作者 Only view this author
smutao 发表于 2015-11-13 23:26
我的意思是当你只用N的线程的时候,CPU并没有像用2N个线程时那样100%工作着。但是当你跑了2个相同的任务 ...

以前不开超线程的时候这样干过,两个任务如果各自使用N/2核心总共使用N个核心,比一个任务单独使用N/2核心还慢。开超线程是怎么个情况我还真不知道呢
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

3098

帖子

28

威望

1万

eV
积分
16892

Level 6 (一方通行)

8#
 楼主 Author| 发表于 Post on 2015-11-14 00:19:02 | 只看该作者 Only view this author
本帖最后由 liyuanhe211 于 2015-11-14 00:24 编辑
smutao 发表于 2015-11-13 23:26
我的意思是当你只用N的线程的时候,CPU并没有像用2N个线程时那样100%工作着。但是当你跑了2个相同的任务 ...

You completely miss my point. 或许我说的不够明白
你这样测出来的是Gaussian在N线程和2N线程的并行效率,我并不想测这个数值,这个数值别人已经测过了。
我想测试的就是CPU只跑N个线程(表观50%)和跑2N的线程(100%)时的CPU性能差异

因为超线程把一个物理核心变成了两个逻辑线程以压榨剩余资源,但满载时被分配在同一个核心上的两个线程会抢资源,可能因为来回Switch任务,没榨出资源反而效率降低了。

我就是想测试CPU在满载时,使用100%比使用50%时有多大的提高(根据上述推测,应该远小于2),所以做了这个测试,结果是大概110%~115% for E5-2643,也就是用超线程在E5-2643上榨出了10%,而E5-2680是96%,说明资源没榨出来,反而损失了4%。

用Gaussian只不过是一种把CPU塞满的方法,而且又有一定得实用性而已。

3098

帖子

28

威望

1万

eV
积分
16892

Level 6 (一方通行)

9#
 楼主 Author| 发表于 Post on 2015-11-14 00:20:45 | 只看该作者 Only view this author
卡开发发 发表于 2015-11-13 23:47
以前不开超线程的时候这样干过,两个任务如果各自使用N/2核心总共使用N个核心,比一个任务单独使用N/2核 ...

你这个现象是不是因为CPU只用一半核心的时候可以Turbo到更高的频率(和满载相比)?

3622

帖子

3

威望

1万

eV
积分
18442

Level 6 (一方通行)

第一原理惨品小作坊

10#
发表于 Post on 2015-11-14 00:58:13 | 只看该作者 Only view this author
liyuanhe211 发表于 2015-11-14 00:20
你这个现象是不是因为CPU只用一半核心的时候可以Turbo到更高的频率(和满载相比)?

不好说,下次可以找找原因,比如全部限制Turbo。
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

593

帖子

12

威望

4720

eV
积分
5553

Level 6 (一方通行)

密度泛函·小卒

11#
发表于 Post on 2016-1-2 11:41:36 | 只看该作者 Only view this author
本帖最后由 yjcmwgk 于 2016-1-2 11:45 编辑
liyuanhe211 发表于 2015-11-14 00:19
You completely miss my point. 或许我说的不够明白
你这样测出来的是Gaussian在N线程和2N线程的并行效 ...

这么一来岂不是说,开不开超线程简直无所谓了吗?无论是提高10%还是损失4%,都在可接受范围内呢。
考虑其他方面:
(1)自己私用的服务器,或者有排队系统的公用服务器,那就打开超线程好了,电脑一边干重活儿,那些逻辑核心还能跑个小小轻活儿;
(2)没有排队系统的公用服务器,一定要关掉超线程吧,免得某些人看到CPU利用率只有50%就兴冲冲又提交了更多任务。

评分 Rate

参与人数
Participants 1
eV +1 收起 理由
Reason
sobereva + 1

查看全部评分 View all ratings

一出生响亮登场,十几岁快乐成长,
二十岁天天向上,三十岁基本定向,
四十岁拼命打创,五十岁回首一望,
六十岁告老还乡,七十岁搓搓麻将,
八十岁躺在床上,九十岁挂在墙上,
人生一世,匆匆忙忙,生得嘹亮,走得凄凉!
生活就像五味瓶,酸甜苦辣难消停!
该吃吃,该喝喝,遇事别去心里搁,
想哭哭,想笑笑,烦恼就往云外抛,
记住甜,忘掉苦,亲人朋友好相处,
心情好,最重要,自我麻痹乐逍遥!

3098

帖子

28

威望

1万

eV
积分
16892

Level 6 (一方通行)

12#
 楼主 Author| 发表于 Post on 2016-1-2 13:44:24 | 只看该作者 Only view this author
yjcmwgk 发表于 2016-1-2 11:41
这么一来岂不是说,开不开超线程简直无所谓了吗?无论是提高10%还是损失4%,都在可接受范围内呢。{:5_117 ...

测试是开了超线程,但是只用了一半的逻辑核心,不知道直接BIOS里关掉会是什么结果。
确实是,没有排队系统又有不自觉的确实没招。不过就算是关了超线程,没排队 CPU 100%照样有不自觉的能提交。

12

帖子

0

威望

22

eV
积分
34

Level 2 能力者

13#
发表于 Post on 2017-2-6 13:25:57 | 只看该作者 Only view this author
cpu使用时间和cpu寿命之间毫无影响,除非你想一个cpu用10年

903

帖子

37

威望

5324

eV
积分
6967

Level 6 (一方通行)

14#
发表于 Post on 2017-2-6 14:17:33 | 只看该作者 Only view this author
卡开发发 发表于 2015-11-14 00:58
不好说,下次可以找找原因,比如全部限制Turbo。

面对越来越胖的节点。这个问题值得研究。
比如我有一个40核的cpu。同时我有1000个任务。
那么是每个任务设多少个核能够最快的算完呢?

593

帖子

12

威望

4720

eV
积分
5553

Level 6 (一方通行)

密度泛函·小卒

15#
发表于 Post on 2017-2-7 08:17:14 | 只看该作者 Only view this author
ggdh 发表于 2017-2-6 14:17
面对越来越胖的节点。这个问题值得研究。
比如我有一个40核的cpu。同时我有1000个任务。
那么是每个任 ...

40核?难道你买了E5-2698v4双路服务器?出个评测呗~
一出生响亮登场,十几岁快乐成长,
二十岁天天向上,三十岁基本定向,
四十岁拼命打创,五十岁回首一望,
六十岁告老还乡,七十岁搓搓麻将,
八十岁躺在床上,九十岁挂在墙上,
人生一世,匆匆忙忙,生得嘹亮,走得凄凉!
生活就像五味瓶,酸甜苦辣难消停!
该吃吃,该喝喝,遇事别去心里搁,
想哭哭,想笑笑,烦恼就往云外抛,
记住甜,忘掉苦,亲人朋友好相处,
心情好,最重要,自我麻痹乐逍遥!

本版积分规则 Credits rule

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

GMT+8, 2024-11-27 10:55 , Processed in 0.198486 second(s), 29 queries , Gzip On.

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