五種主要多核並行程式設計方法分析與比較

2021-08-03 12:24:41 字數 1736 閱讀 5490

隨著多核時代的到來與流行,傳統的單執行緒序列程式的程式設計模式必將改變,取而代之的將是並行程式設計。目前已經有五種主要並行程式設計模型,下面將對此五種模型進行概括性的分析與比較:

1. mpi

mpi(message passing inte***ce)訊息傳遞介面是mpi論壇發布的乙個庫,而不是一門實現語言,支援c/c++/fortran。是一種訊息傳遞程式設計模型,為程序間通訊服務。mpi提供了一種與平台無關,可以被廣泛使用的編寫訊息傳遞程式的標準。用它來編寫訊息傳遞程式,不僅實用、可移植、高效和靈活,而且和當前已有的實現沒有太大的變化。目前mpi的主要實現有以下三種:

優點:可以在集群上使用,也可以在單核/多核cpu上使用,它能協調多台主機間的平行計算,因此並行規模上的可伸縮性很強,能在從個人電腦到世界top10的超級計算機上使用。

缺點:第一,基於訊息傳遞,需要顯示劃分和分布計算任務,顯示進行訊息傳遞與同步,且不易增量開發序列程式的並行性;第二,使用程序間通訊的方式協調平行計算,這導致並行效率較低、記憶體開銷大、不直觀、程式設計麻煩。

參考資料:mpi論壇

2. openmp

openmp(open multi processing)是由open arb發布的一種用於並行程式設計的規範,是建立在序列語言上的擴充套件,目前可以在c/c++/fortran中使用。

openmp由三部分組成:編譯指導(compiler directive)、執行庫(runtime library)和環境變數(environment variables)。其語言模型基於以下假設:執行單元是共享乙個位址空間的執行緒,即openmp是基於派生/連線(fork/join)的程式設計模型。fork/join的並行機制如下圖所示:

fork/join並行機制:並行區前,序列命令派生出多條並行命令並行執行,執行到並行區末等待,等所有並行任務都結束,再轉到序列執行。

openmp有兩種常用的並行開發形式:一是通過簡單的fork/join對序列程式並行化;二是採用單程式多資料對序列程式並行化。

優點:第一,共享儲存模型,使得程式設計師不必進行資料劃分和分布,使得開發並行程式比較容易;第二,更適合於smp系統;第三,主要面向迴圈級的並行開發,可以容易地實現增量性的並行化。

缺點:第一,openmp只適用於smp結構;第二,openmp主要開發迴圈級的並行程式,受此限制,對某些應用並不適合;第三,openmp的編寫、正確性除錯和效能排程複雜。

參考資料:open arb - openmp

優點:是經過效能高度優化的庫,執行效率高。

缺點:專用於intel處理器和某些領域,不方便移植。

參考資料:intel ipp產品介紹

4. intel tbb

intel tbb(threading building blocks),intel執行緒構建模組,是乙個為建立可靠的、可移植的和可擴充套件的並行程式的c++模板庫。專用於編寫高層抽象的c++程式,和可移植的程式。

優點:可移植、可擴充套件。

缺點:效能沒有ipp高。

五種主要多核並行程式設計方法分析與比較

隨著多核時代的到來與流行,傳統的單執行緒序列程式的程式設計模式必將改變,取而代之的將是並行程式設計。目前已經有五種主要並行程式設計模型,下面將對此五種模型進行概括性的分析與比較 1.mpi mpi message passing inte ce 訊息傳遞介面是mpi論壇發布的乙個庫,而不是一門實現語...

五種主要多核並行程式設計方法分析與比較

隨著多核時代的到來與流行,傳統的單執行緒序列程式的程式設計模式必將改變,取而代之的將是並行程式設計。目前已經有五種主要並行程式設計模型,下面將對此五種模型進行概括性的分析與比較 1.mpi mpi message passing inte ce 訊息傳遞介面是mpi論壇發布的乙個庫,而不是一門實現語...

幾種多核並行程式設計方法的比較

隨著多核時代的到來與流行,傳統的單執行緒序列程式的程式設計模式必將改變,取而代之的將是並行程式設計。目前已經有五種主要並行程式設計模型,下面將對此五種模型進行概括性的分析與比較 mpi mpi message passing inte ce 訊息傳遞介面是mpi論壇發布的乙個庫,而不是一門實現語言,...