我正在做一篇关于多线程的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)。这是错误还是我理解错了?
答案 0 :(得分:6)
在第一个中,f是串行代码的一部分,在第二个中,f是并行的分数。
如果你将(1-f)插入f中的任何一个等式中,你将得到另一个