【问题标题】:Computer Architecture: Speedup计算机架构:加速
【发布时间】:2014-05-10 03:57:57
【问题描述】:

这是作业。

问题: 一个程序有 20% 的内存访问,50% 的乘法,其余的用于与两者无关的其他功能。如果需要 1.2 的整体加速,那么如果内存访问和乘法都得到同样的改进,则需要多少加速。

如果我正在使用阿姆达尔定律寻找其中一个或另一个的加速,我想我知道如何做到这一点,但我不确定如何解决这个问题以找到每个问题的加速,如果它们得到同样的改进.

如果它只是寻找内存访问,我想我会为 x 求解以下方程:

1.2 = 1/[(1 - 0.2) + 0.2/x]

将这两个百分比结合起来并在阿姆达尔定律中使用0.2 + 0.5 = 0.7 的关键是什么?

【问题讨论】:

  • “这是作业。”恭喜!
  • 是的,由于这两个组件的改进是相同的,因此可以通过将它们贡献的分数相加来将它们视为单个组件。

标签: performance equation computer-architecture parallelism-amdahl


【解决方案1】:

假设当前执行时间为 100 秒。

所需的加速是 6/5,这意味着新时间比旧时间应该是 5/6,减少了 16.67% 或 16.67 秒。 (这就是阿姆达尔定律的全部内容!)

你知道 20 秒用于内存访问,50 秒用于乘法,30 秒用于其他事情。

“如果两者都得到同等改善”的问题是模棱两可的。 这是否意味着两者都减少了相同的绝对数量,即每个 16.67 的一半, 或者这是否意味着它们按比例减少,16.67 秒的 2/7 来自内存,5/7 来自乘法?

你从那里拿走它!

顺便说一句:当学者们谈论性能调优时,他们往往会想到只有一页纸的小程序,其中内存访问和数学运算以及大 O 就是全部内容。 现实世界的性能调优是非常不同的。 它是关于找出软件是如何过度设计的,并使用性能诊断(如分析,但更好)来找出脂肪在哪里,并在多次迭代中将其切除。 Example.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    相关资源
    最近更新 更多