计算机体系结构/汇编,阿姆达尔定律



对于一个70%可并行化的程序,在假设完美负载平衡的情况下,在4、8和16路多处理器上运行它相对于单处理器的速度会是多少。

所以我很难解决这个问题,我知道等式是:

改进的执行时间=受影响的执行时间/(改进系数+不受影响的执行时间)

但我不确定我应该插入什么,为什么我应该,或者我应该如何重写方程来解决问题

谢谢!

也许图片有帮助:

           +----------------+----------+----------+----------+----------+
1 core:    |     non-par.   |               parallelizable              |
           |     (1 - Q)    |                      Q                    |
           +----------------+----------+----------+----------+----------+
                            |
                    ||      |
                            |
           +----------------+----------+    --+
n cores:   |                |          |      |
           +----------------+----------+      |
                            |          |      |
                            +----------+      +-- n times
                            |          |      |
                            +----------+      |
                            |          |      |
                            +----------+    --+

time:      |- (1 - Q) * T  -|------------------ Q * T ------------------|
           |                | Q*T / n  | Q*T / n  | Q*T / n  | Q*T / n  |

因此,如果顺序时间是T,并且分数Q是可并行的,那么当并行到n核时所需的总时间是(1−Q)*T+Q*T/n

(维基百科的文章使用Q=1−B)。

有趣的情况是Q=0,当根本没有加速并且算法在任何数量的核上花费时间T时,以及Q=1,当算法完全并行并且在n核上花费了时间T/n

最新更新