Message passing interface(MPI)

  • 大量的平行運算對電腦而言,實際上是個非常複雜及花時間的過程,因此發展了MPI(Message Passing Interface 訊息傳輸介面) ,才得以標準化平行處理計算。

  • 在平行計算領域內,主要的並行程式設計模型有三類模型:資料並行、消息傳遞、共享變數。

    • 資料並行 (for shared memory):相同的操作同時作用於不同的資料。
    • 共享變數 (for shared memory):用共享變數實現並行行程間的通訊。
    • 消息傳遞模型 (for distributed memory):不同節點上的行程可以通過網路傳遞訊息相互通信,實現行程間的訊息交換、協調步閥,控制執行等。
  • 其中基於消息傳遞的 MPI 程式設計模型和基於共用變數的 OpenMP 程式設計模型是最為流行的並行程式設計模型。

  • OpenMP比較簡單,修改現有的大段代碼也容易。基本上OpenMP只要在已有程式基礎上根據需要加並行語句即可。而MPI有時甚至需要從基本設計思路上重寫整個程式,除錯也困難得多,涉及到局域網路通信這一不確定的因素。不過,OpenMP雖然簡單卻只能用於單機多CPU/多核並行,MPI才是用於多主機超級電腦集群的強悍工具,當然複雜。

  • MPI是在分散式記憶體(distributed-memory)之間實現資訊通訊的一種規範/標準/協定(standard)。它是一個函式庫,而不是一門語言,因此可以被Fortran,C/C++程式語言等調用。

  • MPI 允許靜態任務調度,顯示並行提供了良好的性能和移植性,用 MPI 編寫的程式可直接在多核集群上運行。在集群系統中,集群的各節點之間可以採用 MPI 程式設計模型進行程式設計,每個節點都有自己的記憶體,可以對本地的指令和資料直接進行訪問,各節點之間通過互聯網路進行消息傳遞,這樣設計具有很好的可攜性,完備的非同步通信功能,較強的可擴展性等優點。

  • 然而MPI 模型存在一些不足,包括:程式的分解、開發和除錯相對困難,而且通常要求對代碼做大量的改動;通信會造成很大的開銷,為了最小化延遲,通常需要大的代碼細微性;細細微性的並行會引發大量的通信;動態負載平衡困難;並行化改進需要大量地修改原有的串列代碼,調試難度比較大。

MPI目前最新的標準為3.1 (June, 2015),而MPI目前較知名的實作版本如下:MPICH, MVAPICH, OpenMPI,而大型軟體商也有開發自已的MPI實作,如IBM MPI, MS-MPI,Intel MPI等。

  • MPI標準包含了

    • Point-to-point communication,
    • Datatypes,
    • Collective operations,
    • Process groups,
    • Communication contexts,
    • Process topologies,
    • Environmental management and inquiry,
    • The Info object,
    • Process creation and management,
    • One-sided communication,
    • External interfaces,
    • Parallel file I/O,
    • Language bindings for Fortran and C,
    • Tool support
  • MPICH為針對乙太網路,但不支援InfiniBand 網路的MPI實作。

  • MVAPICH為基於MPICH上針對InfiniBand 網路的MPI實作。
  • MPICH、MVAPICH、、Open MPI等MPI編譯環境編譯命令基本一致,一些編譯參數有些不同 MPI作業提交的參數也有所不同。

  • MPI採用簡單暴力的多進程來實現並行。即將同樣的程式拷貝給所有的處理器去執行。 沒有冗余容錯機制,也沒有MapRecude。 唯一提供的就是進程間的通信。由於其靈活性很大,所以可以寫出能發揮出硬體最大性能的程式。

    PC Cluster

    叢集式電腦系統的發展,源自大型超級電腦建置不易,以及數值運算需要大量 CPU 時間而出現, 一般來說,利用幾台個人電腦或工作站,透過網路來傳遞資料以及交換邊界條件,就可以取代超級電腦的工作,除了維護方便之外,擴充性也是相當令人滿意。

PC Cluster(PC 群組)的概念被提出之後,大型的程式設計紛紛採用這種方式以提高效率。雖然每台 PC 個別的計算效率遠低於大型電腦,但是 PC 群組的整體效能卻可比擬大型電腦甚至超越大型電腦。平行運算實際上已經發展多年,而近年來也因為 PC Cluster 成本低,效能漸漸可以超過大型電腦,於是被大量採用。目前平行運算所採用的傳輸標準為 MPI,MPI 標準不但能夠在許多大型平台使用,也可用在 PC Cluster 上。

參考文獻

1Barney, Blaise and others, Introduction to parallel computing, 2010.

results matching ""

    No results matching ""