【发布时间】:2015-07-23 11:17:43
【问题描述】:
我正在使用 F# 中的“Parallel.For”并行执行我的程序 5000000 次。 每个任务的平均执行时间如下所示。
活动核心数:执行时间(微秒)
2 : 866
4 : 424
8 : 210
12 : 140
16 : 106
24 : 76
32 : 60
提供事实,
通过将核心数量增加一倍,我们可以获得的最大加速应该小于 2(理想情况下可以是 2)。
这种急剧加速的原因可能是什么。
【问题讨论】:
-
比率非常接近最佳值,我会将任何差异视为测量错误,
-
从 32 到 16 最大可能是一半,但小于一半。我反复进行了测量,提供的值是所有这些测量的平均值。
-
60*2 > 106 这是次优的。最佳值是 53
-
我所期待的,对于 2 个核心,它是 866,所以对于 4 个核心,它会超过 433,因为也会有一些同步开销。
-
投票结束,这个问题源于对一小部分数字的直接误解。
标签: parallel-processing f# multicore