加速计算的核心数

时间:2017-07-14 10:18:04

标签: parallel-processing x86 cpu cpu-architecture hyperthreading

我正在尝试使用Amdahl定律计算代码的加速,以下是我的CPU规格: enter image description here

Amdahl定律: -

Speedup = 1 / 1-p+ (p/n)

其中n =处理器数量。

根据我的规格,它表示core = 4而逻辑处理器= 8

我应该将什么用作等式中的number of processors

1 个答案:

答案 0 :(得分:2)

首先,让我解释一下核心和逻辑处理器代表你不知道的情况。核心意味着实际的物理处理器核心,在您的情况下,您有4个核心。另一方面,逻辑处理器意味着,您正在使用超线程,这意味着在一个物理核心上,您可以同时运行两个进程。您可以在以下链接中找到更多信息:https://en.wikipedia.org/wiki/Hyper-threading

您的问题需要考虑两件事。首先,Amdahl定律比超线程更早,因此法律本身假定您拥有物理处理器。其次,虽然超线程会提高性能,但如果使用两个逻辑处理器而不是一个逻辑处理器,则无法加倍。因此,从Amdahl定律的角度来看,如果你使用4个核心进行计算会更好。

例如,如果50%的代码可以并行化,并且有4个物理内核,那么您将拥有:

Speedup = 1/ ((1-0.5) + (0.5 / 4)) = 1.6

如果您使用了8个处理器,那么您将拥有:

Speedup = 1/ ((1-0.5) + (0.5 / 8)) = 1.833

但是,在使用逻辑核心的情况下,您永远不会达到1.833。也许你最多可以达到1.7。在物理内核使用情况下,由于内存延迟和分支,您可能会达到1.55。要记住的主要事项是,Amdahl定律不包括核心数量,但是加速到基线情况,因此,您不会达到计算的理论数量。

注意:在研究社区中,对于性能计算和实验,通常不会包含超线程和逻辑核心。