这是作业。
问题: 程序具有20%的存储器访问,50%的乘法,其余的与其他功能无关。如果需要总体加速比为1.2,如果两者都得到同等改善,则内存访问和乘法需要多少加速。
我想如果我使用Amdahl定律在一个或另一个中寻找加速,我知道如何做到这一点,但我不知道如何解决这个问题找到如果它们得到同等改善,每个人的加速。
如果只是寻找内存访问,我想我会为x解决以下等式:
1.2 = 1/[(1 - 0.2) + 0.2/x]
关键是将两个百分比结合起来并在Amdahl定律中使用0.2 + 0.5 = 0.7
吗?
答案 0 :(得分:1)
假设当前执行时间为100秒。
所需的加速比为6/5,这意味着旧时间的新时间应为5/6,减少16.67%或16.67秒。 (这就是所有阿姆达尔定律!)
你知道内存访问花了20秒,乘法花了50秒,其他东西花了30秒。
问题"如果两者均得到均衡改善"很暧昧。 这是否意味着两者都减少了相同的绝对量,即每个16.67的一半, 或者它是否意味着它们按比例减少,16.67秒中有2/7来自记忆,其中5/7来自乘法?
你从那里拿走它!
BTW:当学者们谈论性能调优时,他们往往会想到一些小页面的程序,其中内存访问和数学运算以及big-O就是它的全部内容。 真实世界的性能调整是非常不同的。 它是关于找出软件如何过度设计并使用性能诊断(如分析,但更好)来找出脂肪的位置并在多次迭代中将其切掉。 Example.