Gustafson 定律

Overview

Gustafson 定律(Gustafson’s law)闡述了數據並行帶來的影響。Gustafson 定律是由 John L. Gustafson 在1988年提出的。是並行計算領域除了 Amdahl 定律之後又一個重要定律。

Introduction

Amdahl 定律有一個重要前提,就是處理的數據集大小是固定的,但是這在大數據計算的領域裏,這個假設並不經常能達到,因爲人們總是會爲了在短時間內處理更多的數據,而爲了達到目的,往往會在計算集羣增加更多的處理器。

Gustafson 定律的提出,始於 Gustafson 實驗室的一個實驗,在一個擁有1024個處理器的計算機,觀察到了超線性加速比,分別獲得了1021x/1020x/1016x的加速比,如果按照 Amdahl 定律,1024核,早就在某處歇菜了,哪裏來1000x以上的加速。

1021 for beam stress analysis using conjugate gradients, 1020 for baffled surface wave simulation using explicit finite differences, and 1016 for unstable fluid flow using flux-corrected transport.

現在看看這個下面這個圖,可以理解一下,數據規模和處理器個數以及時間的關係。

image_1e1c9239s1t3dg0u113qleqv79.png-28.4kB

解讀一下這個圖,爲了達到隨着數據規模 nn 增大,所用到的處理器 pp 也成倍增加。所以加速比,可以用相同時間處理的數據量來衡量,用下面的公式表示。

s(p)=tseq+p×tpartseq+tpars_{(p)} = \frac{t_{seq} + p \times t_{par}}{t_{seq} + t_{par}}

下面的公式,說明在一臺機器裏,串行代碼的比例 aseqa_{seq},其實就是串行代碼運行的時間 tseqt_{seq} 和串行以及並行代碼運行時間的和 tseq+tpart_{seq} + t_{par} 的比值

aseq=tseqtseq+tpar a_{seq}= \frac{t_{seq}}{t_{seq} + t_{par}}

經過換元,加速比公式可以換成下面那種形式。

s(p)=aseq+p×tpartseq+tpars_{(p)} = a_{seq} + \frac{p \times t_{par}}{t_{seq} + t_{par}}

又知道並行代碼所佔的比例 apara_{par}tpart_{par} 和串行以及並行代碼運行時間的和 tseq+tpart_{seq} + t_{par} 的比值

apar=tpartseq+tpar a_{par}= \frac{t_{par}}{t_{seq} + t_{par}}

又來換元了,所以加速比的公式簡化成下面的樣子。

s(p)=aseq+p×apar s_{(p)} = a_{seq} + p \times a_{par}

已知 aseqa_{seq} 是固定的,那麼加速比 sps_{p} 就會向 p×aparp \times a_{par} 漸近。

Summary

Gustafson 認爲,串行部分代碼比例固定的前提加,加速比會隨着處理器個數增加而增加。需要注意下圖 aa 表示串行代碼的部分,可以見到,隨着串行部分代碼的增加,加速比越來越弱雞。

image_1e1c9scvp1irjat2gsl1l065spp.png-130.5kB

所以 Gustafson 的意思就是說,如果你代碼裏少點串行的部分,你的代碼可以在多核環境下起飛(當然也不是沒有限制)。

Reference

  1. Reevaluating Amdahl’s Law
  2. Gustafson’s law
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章