定量分析,Amdahl定律

两个概念:

1.可改进比例\frac{可改进部件的执行时间}{总执行时间}

2.部件加速比\frac{改进前的部件的执行时间 }{ 改进后部件的执行时间}

(类比跑50米,花20秒后改进为10秒,加速比为\frac{20}{10} =2,也就是提高两倍)

举一个例子:一个需要运行60秒的程序中有20秒的运算可以加速,那么他的 可改进比例 = \frac{20}{60}

现在假如 这个20秒可以提速为10秒,那么他的 部件加速比 = \frac{20}{10} ,比原本提高两倍

改进后的总执行时间  = 不可改进部分的执行时间 + 可改进部分改进后的执行时间 \implies 40 + 10 = 50

换一种算法:

不可改进部分的执行时间 =  (1 - 可改进比例) \times 改进前总执行时间 \implies

不可改进部分的执行时间 =  \frac{不可改进部分的执行时间}{改进前总执行时间} \times 改进前总执行时间

可改进部分改进后的执行时间 = \frac{改进前可改进部分的执行时间}{改进前总执行时间} \times \frac{改进前总执行时间}{部件加速比} \implies

可改进部分改进后的执行时间 = 改进前可改进部分的执行时间 \times \frac{改进后的执行时间}{改进前可改进部分的执行时间}

由上面这两个式子可得:

改进后的总执行时间  =  (1 - 可改进比例)\times 改进前总执行时间 + 可改进比例 \times \frac{改进前总执行时间}{部件加速比}   \implies (1 - \frac{20}{60} ) \times 60  +  \frac{20}{60} \times \frac{60}{部件加速比} \implies 40 + \frac{20}{部件加速比} \implies 40 + 20 \times \frac{10}{20} =  50

由公式可得:已知改进前系统总执行时间可改进比例(改进前此部件执行时间占整个系统总执行时间的百分之多少),还有部件加速比(部件改进后的速度比改进前提高了多少倍),就可以算出 改进后系统的总执行时间

3.系统加速比:  \frac{改进前的总执行时间}{改进后的总执行时间} \implies \frac{60}{50} = 1.2

刚才已经求出 改进后的总执行时间,把改进前总执行时间抽出来合并一下,可得:

改进后的总执行时间 = ( (1 - 可改进比例) + \frac{可改进比例}{部件加速比} ) ) \times 改进前总执行时间

那么,系统加速比 = \frac{改进前的总执行时间}{( (1 - 可改进比例) + \frac{可改进比例}{部件加速比}) \times  改进前总执行时间}

\implies 系统加速比 = \frac{1}{(1 - 可改进比例+ \frac{可改进比例}{部件加速比})}

\implies   \frac{1}{((1 - \frac{20}{60} )+\frac{20}{60} \div \frac{20}{10}  ) } \frac{1}{\frac{40}{60}+\frac{10}{60}  } = \frac{1}{\frac{50}{60} } = 1.2

由公式可得:已知可改进比例(改进前此部件执行时间占整个系统总执行时间的百分之多少),还有部件加速比(部件改进后的速度比改进前提高了多少倍),就可以算出 整个系统的加速比

由公式:系统加速比 = \frac{1}{(1 - 可改进比例+ \frac{可改进比例}{部件加速比})} 可以得出:

当部件可改进比例为0时,系统加速比为1;

当部件加速比趋于无穷大时,\frac{可改进比例}{部件加速比} 就会趋于0,这时有:系统加速比 = \frac{1}{1-可改进比例}

所以可得到一个重要推论:如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过\frac{1}{1 - 可改进比例}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第1章 计算机系统结构基础及并行性的开发 1.2 计算机系统结构、组成、实现 计算机系统结构、组成、实现三者互不相...
    差Q叉阅读 4,583评论 0 2
  • 摘要 构建软件的并行版本可使应用在更短的时间内运行指定的数据集,在固定时间内运行多个数据集,或运行非线程软件禁止运...
    SeanCheney阅读 10,015评论 0 2
  • 第1章 计算机系统结构的基本概念 1.1 解释下列术语 层次结构:按照计算机语言从低级到高级的次序,把计算机系统按...
    拓荒者C阅读 7,144评论 0 2
  • 题库 分析论述题 指令级并行、数据级并行、线程级并行的思想和发展历程 (L05-P5~ 、L06-P32?书本P2...
    YvonneH阅读 8,680评论 1 8
  • Gene Amdahl, 计算领域的早期先锋之一, 对提升系统的某一部分性能所带来的效果做出了简单却有见地的观察,...
    YAN_DAOJIANG阅读 5,914评论 0 0