这是作业。
问题:A程序有20%的内存访问,50%的乘法,其余的用于其他与之无关的函数。如果需要总体加速比为1.2,那么如果两者都得到了同样的改进,那么内存访问和乘法都需要多少加速比。
我想如果我用Amdahl定律来寻找一个或另一个的加速比,我想我知道如何做到这一点,但是我不知道如何处理这个问题,以找到每一个问题的加速比,如果它们得到了同样的改进。
如果它只是在寻找内存访问,我想我会为x求解以下方程:
1.2 = 1/[(1 - 0.2) + 0.2/x]是将这两个百分比结合起来并在Amdahl定律中使用0.2 + 0.5 = 0.7的关键吗?
发布于 2014-07-02 21:12:48
假设当前执行时间为100秒。
预期的加速比为6/5,这意味着旧时间的新时间应该是5/6,减少16.67%或16.67秒。(安达尔的法则就是这样!)
你知道,20秒用于内存访问,50秒用于乘法,30秒用于其他内容。
“如果两者都得到同等改进”的问题是模棱两可的。这是否意味着两者都减少了相同的绝对值,即每一次减少16.67的一半,还是意味着它们按比例减少,从记忆中得到16.67秒的2/7,从乘法中减少5/7?
你从那里拿走!
顺便说一句:当学者们谈论性能调优时,他们往往会想到一些小的1页程序,其中内存访问和数学运算以及大O才是最重要的。现实世界的性能调优是非常不同的。它是关于如何找出软件是如何过度设计的,并使用性能诊断(如分析,但更好),以找出脂肪在哪里,并削减它,在多次迭代。https://stackoverflow.com/a/927773/23771
https://stackoverflow.com/questions/23576949
复制相似问题