訊息傳遞介面

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

歷史 編輯

建立資訊傳遞介面的努力始於1991夏天一小群研究員在奧地利的一個度假山莊開始的討論。那次討論之後,於1992年4月29-30號於維珍尼亞州威廉斯堡召開了一次關於分散式記憶體環境下的資訊傳遞標準設置研討會。在這次研討會上討論了對標準資訊傳遞介面至關重要的一些基本特徵,並建立了一個繼續標準化此過程的工作群組。傑克·唐加拉, Rolf Hempel, 托尼·黑英語Tony Hey, and David W. Walker於1992年11月提出了一些初始草稿提議,後被稱為MPI1。在1992年11月,一個MPI的工作群組會議在明尼阿波利斯召開,他們決定了為此標準化過程建立一個更正式的標註。MPI工作群組在1993年的頭九個月每6個星期見面一次。MPI標準草稿在93年11月的超級電腦會議上提出。在經過一陣子的公眾論議後,MPI修改了一些部分,並於1994年6月發佈了MPI1.0版本。這些會議和郵件共同建立了MPI討論區,此討論區後來開放至所有高效能計算的成員。

MPI包含了80個人40個組織的共同努力,他們主要都在美國和歐洲。主要的時下電腦供應商也涉入MPI,還有大學的研究員,政府公務員和產業界。

MPI標準定義了核心函式庫的語法和語意,這個函式庫可以被Fortran和C呼叫構成可移植的資訊傳遞程式。MPI提供了適應各種並列硬件商的基礎集,他們都被有效的實現。這導致了是硬件商可以基於這一系列底層標準來建立高層次的慣例,從而為分散式記憶體互動系統提供他們的並列機。MPI提供了一個簡單易用的可移植介面,足夠強大到程式設計師可以用它在進階機器上進行進行高效能資訊傳遞操作。

在建立「真正」的MPI標準過程中,研究員們整合了幾個系統最有用的特徵到MPI中,而不是用一個系統來適應標準。其特徵為IBM,Intel, nCUBE, PVM, Express, P4 and PARMACS等系統所用。

資訊傳遞模式非常之吸引人,皆因它的廣泛可移植性,以及能被用於分散式記憶體/共用記憶體的多核處理器,工作站網絡,和這些架構的組合。資訊傳遞模式可用於多重設定,獨立於網絡速度和記憶體架構。

概述 編輯

MPI是一個跨語言的通訊協定,用於編寫平行計算機。支援對等和廣播。MPI是一個資訊傳遞應用程式介面,包括協定和和語意說明,他們指明其如何在各種實現中發揮其特性。MPI的目標是高效能,大規模性,和可移植性。MPI在今天仍為高效能計算的主要模型。

主要的MPI-1模型不包括共用記憶體概念,MPI-2只有有限的分佈共用記憶體概念。 但是MPI程式經常在共用記憶體的機器上執行。在MPI模型周邊設計程式比在NUMA架構下設計要好因為MPI鼓勵記憶體本地化。

儘管MPI屬於OSI參考模型的第五層或者更高,他的實現可能通過傳輸層的sockets和Transmission Control Protocol (TCP)覆蓋大部分的層。大部分的MPI實現由一些指定慣例集(API)組成,可由C,C++,Fortran,或者有此類別館的語言比如C#, Java or Python直接呼叫。MPI優於老式資訊傳遞庫是因為他的可移植性和速度。

特色 編輯

大多數訊息傳遞介面的實現為函式庫,亦不需要編譯器支援。

例子 編輯

由多行程來執行Hello World:

#include <stdio.h>
#include <mpi.h>

int main(int argc, char *argv[])
{
 char processor_name[MPI_MAX_PROCESSOR_NAME];
 int len;

 MPI_Init(&argc, &argv);

 MPI_Get_processor_name(processor_name, &len);
 printf("Hello World from %s\n", processor_name);

 MPI_Finalize();
 
 return 0;
}

執行結果:

% mpicc hello.c

% cat nodefile
node1
node2

% mpirun -np 1 -hostfile nodefile a.out(由1節點來執行)
Hello World from node1

% mpirun -np 2 -hostfile nodefile a.out(由2節點來執行)
Hello World from node1
Hello World from node2

實現 編輯

  • Open MPI- 是自由軟件開放原始碼實現。[1] 走鵑(2008年6月-2009年11月TOP500第一快的超級電腦)[2](2011年6月至今第一快的超級電腦)也使用Open MPI。[3] [4]
  • Intel MPI-Intel基於開放原始碼的MPICH2與MVAPICH2研發成的MPI。[5]
  • Platform MPI-Platform公司收購Scali MPI及HP MPI,研發成Platform MPI。[6]

參考文獻 編輯

  1. ^ Open MPI: Open Source High Performance Computing. [2011-04-10]. (原始內容存檔於2006-07-02). 
  2. ^ Jeff Squyres. Open MPI: 10^15 Flops Can't Be Wrong (PDF). Open MPI. [2008-11-22]. (原始內容存檔 (PDF)於2021-02-23). 
  3. ^ Programming on K computer (PDF). Fujitsu. [2011-06-24]. (原始內容存檔 (PDF)於2020-07-02). 
  4. ^ Open MPI powers 8 petaflops. 思科系統. [2011-06-24]. (原始內容存檔於2011-06-28). 
  5. ^ Intel MPI Library - Intel Software Network. [2011-04-10]. (原始內容存檔於2011-03-12). 
  6. ^ Platform MPI. [2011-04-10]. (原始內容存檔於2011-07-11). 

外部連結 編輯