Amdahl's law(阿姆达尔定律)公式推导与思考

原文地址:https://www.inlighting.org/archives/amdahls-law-and-its-proof

1. 介绍

Amdahl's law(阿姆达尔定律) 由计算机科学家 Gene Amdahl 在 1967 年提出,旨在用公式描述在并行计算中,多核处理器理论上能够提高多少倍速度,公式如下:
S=\frac{1}{1-a+\frac{a}{n}}
S 为 speedup,代表全局加速倍速(原来总时间/ 加速后总时间),a 为并行计算所占比例(可以并行计算代码量 / 总代码量),n 为并行节点处理个数,可以理解为 CPU 的核心数,这里先简要介绍下,后面会详细说明并且推导。

2. 前置说明

2.1 Fraction enhanced

Fraction enhanced 顾名思义是部分提高。例如我的程序总共有 100 行代码,其中 50 行是可以通过并行计算的,那么这 50 行代码就是 Fraction enhanced 。但是实际上 Fraction enhanced 是一个比例数值,是并行计算代码 / 总代码量
Fraction\ enhanced=\frac{parallel\ code}{total\ code}
例如上面的例子,Fraction\ enhanced = 50/100=0.5 ,由此我们可以发现,Fraction enhanced 的值永远小于 1

2.2 Speedup enhanced

Speedup\ enhanced=\frac{Old\ execution\ time}{New\ execution\ time}

如上面公式所得,Speedup enhanced 等于 原有运行时间 / 并行计算加速后的时间 。例如系统原来串行计算需要 6 秒,加速后只需要 3 秒,那么 Speed\ enhanced=6/3=2 。由此可知 Speedup enhanced 的值永远大于 1

2.3 带入 Amdahl's law

我们分别把 Fraction enhancedSpeedup enhanced 带入 Amdahl's lawFraction enhanced 对应公式中的 a ,即并行计算所占比例。Speedup enhanced 对应 n ,即并行节点处理个数。

Speedup enhanced 为什么可以代替 n

这里大家可能有一点疑问,Speedup enhanced 明明是 未加速前时间 / 加速后的时间,为什么就可以代表并行节点处理个数。在理论上,单核处理器处理一个任务需要 100 秒,那么双核处理它应该需要 50 秒。时间上它提速了 2 倍, cpu 个数上它也提升了 2 倍,故两个可以替换。

\begin{aligned} Speedup\ enhanced&=\frac{Old\ execution\ time}{New\ execution\ time} \\ &=\frac{100}{50}=2 \\ &=\frac{New\ cpu\ cores}{Old\ cpu\ cores} \\ &=\frac{2}{1}=2\\ \end{aligned}

带入后公示得:
\begin{aligned} S&=\frac{Old\ total\ execution\ time}{New\ total\ execution\ time}\\ &=\frac{1}{{1-Fraction_{enhanced}}+Fraction_{enhanced}/Speedup_{enhanced}}\\ \end{aligned}

3. 证明

  • S 为我们所需要的结果,全局提速倍速
  • Old\ total\ execution\ time (原来系统执行总时间)为 T
  • New\ total\ execution\ time (加速后系统执行总时间)为 T'
  • 系统中并行代码块(指能够通过并行计算加速的代码块)原来执行时间为 t
  • 系统中并行代码块(指能够通过并行计算加速的代码块)加速后执行时间为 t'
  • 系统中串行代码块(指不能通过并行计算加速的代码块)执行时间为 t_n
  • Fraction_{enhanced}f'
  • Speedup_{enhanced}s'

S=\frac{T}{T'}\\ T=t_n+t\\ T'=t_n+t'\\ f' = \frac{t}{T}=\frac{t}{t_n+t}\\ s'=\frac{t}{t'}\\ \frac{f'}{s'}=\frac{t}{t_n+t} \div \frac{t}{t'}=\frac{t'}{t_n+t}\\

带入公式得:
\begin{aligned} S&=\frac{T}{T'}\\ &=\frac{t_n+t}{t_n+t'}\\ &=\frac{1}{(t_n+t')/(t_n+t)}\\ &=\frac{1}{1-\frac{t}{t_n+t}+\frac{t'}{t_n+t}}\\ &=\frac{1}{1-f'+\frac{f'}{s'}}\\ &=\frac{1}{{1-Fraction_{enhanced}}+Fraction_{enhanced}/Speedup_{enhanced}}\\ &=\frac{1}{1-a+\frac{a}{n}} \end{aligned}
证明完毕!

4. 总结

让我们回到最初的公式
S=\frac{1}{1-a+\frac{a}{n}}
a 为并行计算所占比例,n 为并行节点处理个数。当 a=0 时(即只有串行没有并行),无论 n 为多少,加速比 S 均为 1。当 n \rightarrow +\infty ,当 cpu 核心数无限增多的时候,极限加速比 S=1/(1-a) 。例如若并行代码有 75%,极限加速比不能超出 4。

由此我们可知,在并行系统中一味的增加运算资源,并不能永远成倍的提升系统整体性能。

5. 参考资料

阿姆达尔定律

Computer Organization | Amdahl’s law and its proof

理解性能提升By阿姆达尔定律(Amdahl's law)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353