訊息傳遞介面

訊息傳遞界面/接口英語:Message Passing Interface,縮寫MPI)是一個並行計算應用程式接口(API),常在超級電腦、電腦簇等非共享記憶體環境程式設計。

歷史,概述,特色,例子,實現,

歷史

創建信息傳遞接口的討論始於1991的夏天,一個組研究員於在奧地利進行山中修養時。那次討論之後,於1992年4月29-30號於維吉尼亞威廉士伯格召開了一次關於分散式記憶體環境下的信息傳遞標準設定研討會。在這次研討會上討論了對標準信息傳遞接口至關重要的一些基本特徵,並創建了一個繼續標準化此過程的工作組。Jack Dongarra, Rolf Hempel, Tony Hey, and David W. Walker於1992年11月提出了一些初始草稿提議,後被稱為MPI1。在1992年11月,一個MPI的工作組會議在Minneapolis召開,他們決定了為此標準化過程創建一個更正式的標註。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- 是自由軟體開放原始碼實現。走鵑(2008年6月-2009年11月TOP500第一快的超級電腦)及(2011年6月至今第一快的超級電腦)也使用Open MPI。
  • Intel MPI-Intel基於開放原始碼的MPICH2與MVAPICH2研發成的MPI。
  • Platform MPI-Platform公司收購Scali MPI及HP MPI,研發成Platform MPI。

相關詞條

熱門詞條

聯絡我們