集羣系統:
利用網絡將計算機按照某種結構連接起來,在並行計算環境下支持統一調度的並行系統。
多核技術:
一個處理器中集成兩個或更多完整的計算引擎(核),使用多線程充分執行多個執行內核。
並行編程模型(針對SMP?):
數據並行,消息傳遞,共享存儲三種。
消息傳遞模型:
底層爲一組處理器,每個處理器有自己的內存且只能訪問本地的指令和數據(MPI爲標準例子)。
MPI的優缺點:
MPI可移植到分佈式和共享存儲系統結構上,允許靜態任務調度,使用於粗粒度的並行。
MPI對於細粒度並行會引發大量通信,動態負載平衡困難,並行改進需要大量修改原有串行代碼,調試難度大。
共享存儲:
底層硬件爲一系列處理器,所有處理器訪問同一個共享存儲器(OpenMP爲標準例子)。
MPI和OpenMP混合編程模型:
MPI分解問題,劃分任務,使得各部分(每部分分配到一個多核節點上)之間的通信較少,OpenMP將每個節點上的部分進一步分解,分配到不同核心上,由多個線程通過共享存儲通信來並行執行。
混合編程模型優分析:
優點:
1:有效改善MPI代碼可擴展性,實現更好的並行粒度(MPI僅負責通信,實行粗粒度並行,OpenMP纔是真正實現節點內部的並行,不存在負載均衡問題)
2:更少的通信開銷(減少進程數,讓線程完成任務,減少進程間通信)
3:空閒CPU可以被派生的線程利用(某個線程可以通過派生線程搶佔其他線程空閒的CPU)
4:帶寬沒有影響,延遲減少了(發送的消息減少,每個消息長度增加)
缺點:
1:純MPI應用匯導致CPU無法飽和結點間的帶寬
2:增加系統開銷(如線程fork/join)
以上總結純屬參考,總結來自張軍、萬劍怡的《多核集羣系統上的混合編程模型》,介紹一下混合編程模型的大概,不代表個人觀點。