Amdahl定理

阿姆達爾定律英語Amdahl's lawAmdahl's argument),一個計算機科學界的 經驗法則 ,因 吉恩·阿姆達爾 而得名。它表明了 處理器 平行運算 以後效率提高的能力。
並行計算 中的加速比是用並行前的執行速度和並行後的執行速度之比來表示的,它表示了在並行化以後的效率提高狀況。
阿姆達爾定律固定負載(計算總量不變時)時的量化標準。可用公式:\frac{W_s來表示。式中W_s,分別表示問題規模的串行份量(問題中不能並行化的那一部分)和並行份量,p表示處理器數量。
Amdahl定律對多核處理器性能的影響
隨着技術的發展,多核心處理器已成爲現今處理器發展的潮流.提升處理器性能的方法有許多,其中主要有提升頻率與增長核心數量等.提升頻率在現有條件下已經比較困難且不經濟,增長核心數量之路又能走多遠.加速比是衡量系統性能提高的一個重要指標,Amdahl定律即是其中之一.Amdahl定律的範圍內(且不考慮包括通信開銷等在內的並行開銷),經過對單一核心提升頻率和增長核心數量兩個方面的討論能夠得出:在可並行執行部分的執行時間佔總執行時間的比例f=0.5,提升單一核心頻率與增長核心所得加速比相同;f<0.5,提升單一核心頻率可比增長核心數量得到更大加速比;f>0.5,增長核心數量得到的加速比更大些.所以,在覈心數量增長到必定程度時,經過提升單一核心的頻率可得到更高加速比,也多是更經濟有效的方案。
在過去的不少年裏,軟件性能的提高很大程度上源自處理器速度的增加。軟件工程師面對客戶抱怨說軟件運行得太慢的一般回答是:升級你的系統。
然而如今因爲處理器速度逐漸逼近物理極限,繼續提升處理器的時鐘速度會致使發熱量顯著增長,甚至核心熔化。江郎才盡的硬件工程師想出了一個能保住本身飯碗的辦法:既然不能提升單個核心的速度,那就在一個處理器裏面封裝多個核心。因而咱們進入了多核處理器的時代。
今天,隨着多核處理器的發展,計算領域正在發生具備革命性影響的轉變。
如今犯難的就是軟件工程師了:沒有了處理器速度不斷提高的免費便車,接下來不得不面對的問題就是如何有效地利用處理器裏面的多個核,也就是並行計算。
然而多核面對一個彷佛沒法迴避的難題:阿姆達爾定律(Amdahl's Law)。
阿姆達爾定律告訴咱們:系統中某一部件因爲採用某種更快的執行方式後整個系統性能的提升與這種執行方式使用頻率佔總執行時間的比例有關。因爲採用特殊的方法所能得到的加速比爲:
在多核處理器中加速比是衡量並行程序性能的一個重要參數,定義爲Speedup=使用單處理器執行時間/使用多處理器執行時間。根據阿姆達爾定律:
其中,s是系統中串行執行部分佔整個系統的比例,n是多核處理器中核的數目。當s=5%時,8核的加速比爲5.93倍,16核的加速比爲9.14倍,與理想狀態的8倍、16倍有不小的差距。當s=30%時,8核的加速比僅有2.58倍,16核的加速比僅有2.91倍,徹底沒有發揮多核的優點。更加糟糕的是,實際狀況每每比Amdahl定律給出的結果更差。考慮到核間交互帶來的額外開銷,核間同步影響整個系統的併發處理,設計糟糕的系統在多核下甚至比單核下的性能還要低得多。
n趨近於無窮大時(即假設咱們有無窮多個核心),速度提高的上限是 1/s,即速度提高的上限取決於程序不能被並行計算的部分。
這個定律的結果就是,即使咱們可以有效地並行計算一個程序的95%,剩下 5%只能串行計算的部分限制了這個程序的運行速度最多能提高1/5%=20倍。而現有的程序中不多可以作到95%以上部分的並行計算。
並且,若是你想在一個並行、線程化的應用中使用不僅一個內核,就須要某種通訊/同步,並且,對於一個固定的工做負載,通訊/同步開銷是做業所用 CPU 內核數量的單調遞增函數。由此,咱們須要對阿姆達爾定律作些簡單修改:
其中,T爲解決某計算問題所需的總時間,Ts是完成串行工做所需的時間,Tp 是完成全部並行工做所需的時間,N是並行工做中所使用的處理器數量,To是每顆處理器的通訊與同步開銷。T正是傳統阿姆達爾定律公式中所沒有的——隨着處理器的增多,總開銷也會增長。
在沒有引入通訊/同步開銷的傳統標準模型中,總時間T就是處理器數N的一個單調遞減函數,會逐漸接近於Ts。而在修改後的公式中,咱們很清楚地看到,因爲存在通訊開銷,隨着處理器數N的增長,在達到某一臨界點後,總時間T就會開始增長。所以,對於一個徹底並行的應用 (Ts=0)來講,其所需處理器的最優數量是:
所以,可否有效下降串行執行比例和下降交互開銷決定了可否充分發揮多核的性能,其中的關鍵在於:合理劃分任務、減小核間通訊。這正是當今多核處理器的發展趨勢。
相關文章
相關標籤/搜索