訊息傳遞介面

訊息傳遞介面(英語: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). 

外部連結 編輯