同一个程序包,核多的不如核少的快,可能的原因有哪些?

2017-04-21 08:44:58 +08:00
 yanyuechuixue

同样的程序源码,同样的编译方式,同样的执行方式(mpirun -np 2 ./program),发现核多的机器更慢一些。

核心多的机器是 Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz 核心少的机器是 E3-1225 v5

用的程序包是对多线程支持不错的。且能看到在两个机器上, cpu 都跑满了。

那么可能的原因是哪些?

两个机器都是机械硬盘。

3396 次点击
所在节点    问与答
23 条回复
SourceMan
2017-04-21 09:23:01 +08:00
那张图你看过吗,一核工作,多核围观
irenicus
2017-04-21 09:26:57 +08:00
看了一下, e3 的主频是 3.1GHz , e5 是 2.4GHz
不过核数相差有点大

e5 只跑了 4 个线程的话,从主频上看应该是 e3 快
但如果 e5 每个线程都跑满的话,只能猜是线程间通信时 cpu 的 cache 一致性引起的了,不过影响应该不会这么大吧。。。
zmj1316
2017-04-21 09:30:42 +08:00
E5 该不会是多路 CPU 吧? NUMA ?
ihuotui
2017-04-21 09:31:26 +08:00
吞吐量 不一定多线程就快了。
Ouyangan
2017-04-21 09:33:31 +08:00
会不会是线程创建+上下文切换开销太大.
yanyuechuixue
2017-04-21 09:38:46 +08:00
@zmj1316 对对对,是双路 CPU 跟这个相关么?
yanyuechuixue
2017-04-21 09:39:21 +08:00
@Ouyangan 这个会这么高么?请问怎么查看这种开销?
Ouyangan
2017-04-21 09:46:12 +08:00
@yanyuechuixue #7 Lmbench3
macworld
2017-04-21 10:05:40 +08:00
用了代码里有类似全局锁之类的东西?
jarlyyn
2017-04-21 10:09:08 +08:00
主频的问题吧
yanyuechuixue
2017-04-21 10:10:37 +08:00
@macworld 那应该不会有,我是在做计算物理的,这个包能在泰坦超算上跑,所以应该不会是全局锁之类的东西。
yanyuechuixue
2017-04-21 10:11:27 +08:00
@jarlyyn 哪怕双核并不是 1x2, 就算是 1x0.6 , 那 56 个核心,光算主频叠加, 也比四个强啊
domty
2017-04-21 10:12:14 +08:00
阿姆达尔定律?
并发程序的串行处理部分比率过高,导致程序的伸缩性不好,在少核心高主频上的执行效果反而好于多核心低主频?
coderluan
2017-04-21 10:47:04 +08:00
都没人提 MPI ,我认为这个问题起码应该先不用 MPI ,直接跑一遍./program ,看看结果是否还是这样再讨论,否则现在就两种可能:是 MPI 的原因(不分布式跑 MPI 变慢很正常)和不是 MPI 的原因(上边提到的可能)。
ericls
2017-04-21 10:56:07 +08:00
可能 overhead 太大?
yanyuechuixue
2017-04-21 12:01:37 +08:00
@domty 只是这个程序设计的时候就是为多核心设计的啊。。。
yanyuechuixue
2017-04-21 12:03:40 +08:00
@coderluan 多谢,可是不知道程序作者怎么想的,强制使用 mpirun , 而且要求 -np 不小于 2 ...
zmj1316
2017-04-21 12:31:01 +08:00
@yanyuechuixue 把线程限制到单 CPU 核心数目, NUMA 架构跨 CPU 通信会导致内存和 cache 性能下降,还是放一个 CPU 上面跑比较快
wulin
2017-04-21 13:12:16 +08:00
主频高的那个可能快很多,我之前 go 写的文件内容查找程序也是, cpu 多,主频低的 E5606 @ 2.13GHz 服务器的反而跑不过办公的 I5 @3.2GHZ
shalk
2017-04-21 13:31:13 +08:00
你的程序没有把多核性能发挥出来,两个 CPU 的 speccpu 分差是明显的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/356324

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX