"C++并发行动"中的Amdahl定律

Luk*_*keN 2 c++ concurrency multithreading

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

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

鉴于我发现的所有其他来源:

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

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

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

Jos*_*ung 6

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

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