《多處理器編程的藝術》讀書筆記(1)— 並行的困境和加速比

來源:互聯網
上載者:User
       從單一處理器升級到n路關聯多處理器應該提高了n倍的計算能力,實際是這樣嗎?
       假設有5個朋友要粉刷一套有5個房間的屋子。如果所有房間大小都一樣,那麼可以指定每人負責一間,只要這5個人以同樣的速度來粉刷,就能獲得相當於由一個人完成整個粉刷工作5倍的加速比。如果每個房間的大小不一,問題就複雜多了。例如,若有一個房間是其他房間的2倍,那麼這5個人同時工作就不可能獲得5倍的加速比,因為整個任務的完成時間取決於粉刷時間最長的那個房間。
      Amdahl定律是這樣說的:對電腦系統的某個部分採用最佳化措施後所獲得的電腦效能的提高,依賴於這部分的執行時間在整個執行時間中所佔的比例。換句話說,工作的某部分最佳化(並行)獲得效能提升是有限的,受限於必須被串列執行的部分。
      工作的加速比S定義為由一個處理器來完成一項工作的時間與採用n個處理器並發完成該工作的時間之比,p是該工作中可以並存執行的部分。為簡單起見,假設由一個處理器完成整個工作需用1個單位的時間,使用n個處理器並發執行工作中的並行部分需用時p/n,串列部分需用時為1-p。因此,並行化以後的工作時間為:
                                                                                  1 - p + p / n
                                                                              按照加速比的定義得到
                                                                            S = 1 / (1 - p + p / n)

      回頭再看粉刷屋子的例子,假定每個小房間是1個單位,唯一的大房間是2個單位。每個房間指定一個人(處理器)粉刷意味著6個單位中的5個可以並行粉刷,
即p = 5 / 6,1 - p = 1 / 6,S = 1 / ( 1 - p + p / n) = 1 / (1 / 6 + 1 / 6) = 3。由此可知,若有一間房間的大小是其他房間的2倍,那麼5個人同時粉刷屋子的加速比僅僅是一個人粉刷的3倍。
    如果由10個人分別粉刷10間房間,其中一間房間是其他房間的2倍,情況將變得更慘,S = 1 / (1 / 11 + 1 / 11) = 5.5,可以看出,僅僅微小的失衡就使10個人粉刷屋子只能獲得5.5倍的加速比,幾乎是預期值的一半。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.