“C ++并发行动”中的Amdahl定律

时间:2016-10-12 12:50:58

标签: c++ multithreading concurrency

我正在做一篇关于多线程的BSc论文,一篇参考书目是Anthony Williams的“C ++ Concurrency in Action”。它帮助我使用std线程很多,但有一件事我不确定。 Amdahl定律中提到的公式是

  

P(N)= 1 /(f +(1-f)/ N)

我找到的所有其他来源都给出了:

  

P(N)= 1 /(1-f + f / N)

在这两种情况下,P是性能增益因子,f是“串行”的常数部分,[0,1]中的独立部分和N是处理器数量(自然数)。

在第一种情况下,即使是函数的水平渐近线是1 / f,在第二种情况下,它也是1 /(1-f)。这是错误还是我理解错了?

1 个答案:

答案 0 :(得分:6)

在第一个中,f是串行代码的一部分,在第二个中,f是并行的分数。

如果你将(1-f)插入f中的任何一个等式中,你将得到另一个