【轉載】OpenMP、MPICH與OpenMPI

原文網(wǎng)址

openmp比較簡單,修改現(xiàn)有的大段代碼也容易?;旧蟧penmp只要在已有程序基礎上根據(jù)需要加并行語句即可。而mpi有時甚至需要從基本設計思路上重寫整個程序,調試也困難得多,涉及到局域網(wǎng)通信這一不確定的因素。不過,openmp雖然簡單卻只能用于單機多CPU/多核并行,mpi才是用于多主機超級計算機集群的強悍工具,當然復雜。

(1)MPI=message passing interface:

在分布式內存(distributed-memory)之間實現(xiàn)信息通訊的一種 規(guī)范/標準/協(xié)議(standard)。它是一個庫,不是一門語言??梢员籪ortran,c,c++等調用。MPI 允許靜態(tài)任務調度,顯示并行提供了良好的性能和移植性,用 MPI 編寫的程序可直接在多核集群上運行。在集群系統(tǒng)中,集群的各節(jié)點之間可以采用 MPI 編程模型進行程序設計,每個節(jié)點都有自己的內存,可以對本地的指令和數(shù)據(jù)直接進行訪問,各節(jié)點之間通過互聯(lián)網(wǎng)絡進行消息傳遞,這樣設計具有很好的可移植性,完備的異步通信功能,較強的可擴展性等優(yōu)點。MPI 模型存在一些不足,包括:程序的分解、開發(fā)和調試相對困難,而且通常要求對代碼做大量的改動;通信會造成很大的開銷,為了最小化延遲,通常需要大的代碼粒度;細粒度的并行會引發(fā)大量的通信;動態(tài)負載平衡困難;并行化改進需要大量地修改原有的串行代碼,調試難度比較大

(2)MPICH和OpenMPI:

它們都是采用MPI標準,在并行計算中,實現(xiàn)節(jié)點間通信的開源軟件。各自有各自的函數(shù),指令和庫。
Reference:
They are two implementations of the MPI standard. In the late 90s and early 2000s, there were many different MPI implementations, and the implementors started to realize they were all re-inventing the wheel; there was something of a consolidation. The LAM/MPI team joined with the LA/MPI, FT-MPI, and eventually PACX-MPI teams to develop OpenMPI. LAM MPI stopped being developed in 2007. The code base for OpenMPI was completely new, but it brought in ideas and techniques from all the different teams.
Currently, the two major open-source MPI implementation code-bases are OpenMPI andMPICH2.
而MPICH2是MPICH的一個版本。
有的計算機廠商,也會針對旗下機型特點,自主開發(fā)基于MPICH的MPI軟件,從而使機器的并行計算效率得以提高。

(3)OpenMP:

在節(jié)點內(多核 SMP)執(zhí)行的基于共享內存的編程模型。
OpenMP是針對單主機上多核/多CPU并行計算而設計的工具,換句話說,OpenMP更適合單臺計算機共享內存結構上的并行計算。由于使用線程間共享內存的方式協(xié)調并行計算,它在多核/多CPU結構上的效率很高、內存開銷小、編程語句簡潔直觀,因此編程容易、編譯器實現(xiàn)也容易(現(xiàn)在最新版的C、C++、Fortran編譯器基本上都內置OpenMP支持)。不過OpenMP最大的缺點是只能在單臺主機上工作,不能用于多臺主機間的并行計算

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容