1. 程式人生 > >MPI和OpenMP優缺點比較

MPI和OpenMP優缺點比較

OpenMP(Open Multi-Processing)是一套支援跨平臺共享記憶體方式的多執行緒併發的程式設計API,使用C,C++和Fortran語言,可以在大多數的處理器體系和作業系統中執行,包括Solaris, AIX, HP-UX, GNU/Linux, Mac OS X, 和Microsoft Windows。包括一套編譯器指令、庫和一些能夠影響執行行為的環境變數。OpenMP採用可移植的、可擴充套件的模型,為程式設計師提供了一個簡單而靈活的開發平臺,從標準桌面電腦到超級計算機的並行應用程式介面[1]。

訊息傳遞介面/介面(英語:Message Passing Interface,縮寫MPI)是一個平行計算的應用程式介面(API),常在超級電腦、電腦簇等非共享記憶體環境程式設計[2]。

下面是我在使用他們的過程中,對這兩種API優缺點的認識。

OpenMP的優點:
- OpenMP相對於MPI而言更容易使用。
- OpenMp對原序列程式碼改動較小,可以保護程式碼原貌。
- 程式碼更容易理解和維護
- 允許漸進式並行化

OpenMP的缺點 :
- 所有執行緒共享記憶體空間,硬體制約較大
- 目前主要針對迴圈並行化

MPI的優點:
- 無論硬體是否共享記憶體空間,都可以使用。(但是執行緒間不共享記憶體空間)
- 與OpenMP相比,可以處理規模更大的問題
- 每個執行緒有自己的記憶體和變數,這樣不用擔心衝突問題(在OpenMP中要使用critical等處理)

MPI的缺點:
- 演算法上經常有較大改動(建立communication等)
- 較難使用
- 效能上會受到通訊網路的影響