【发布时间】:2015-06-24 09:07:08
【问题描述】:
对于一个 70% 可并行化的程序,假设完美的负载平衡,在 4,8 和 16 路多处理器上运行它相对于单处理器的加速是多少。
所以我很难解决这个问题,我知道等式是:
改进的执行时间=受影响的执行时间/(改进因子 + 不受影响的执行时间)
但我不确定我应该插入什么以及为什么应该或如何重写方程来解决问题
谢谢!
【问题讨论】:
标签: assembly computer-science computer-architecture
对于一个 70% 可并行化的程序,假设完美的负载平衡,在 4,8 和 16 路多处理器上运行它相对于单处理器的加速是多少。
所以我很难解决这个问题,我知道等式是:
改进的执行时间=受影响的执行时间/(改进因子 + 不受影响的执行时间)
但我不确定我应该插入什么以及为什么应该或如何重写方程来解决问题
谢谢!
【问题讨论】:
标签: assembly computer-science computer-architecture
也许图片有帮助:
+----------------+----------+----------+----------+----------+
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.
(Wikipedia article 使用 Q = 1 - B)。
有趣的情况是Q = 0,当根本没有加速并且算法在任意数量的核心上花费时间T,并且Q当算法完全并行并且在 n 个内核上花费时间 T / n 时, = 1。
【讨论】: