MPI

MPI

信息傳遞接口
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 orPython直接調用。MPI優于老式信息傳遞庫是因為他的可移植性和速度。[1]
    中文名:信息傳遞接口 外文名: 别名: 英文名:MPI 用途:編寫并行計算機 目标:高性能,大規模性和可移植性

簡介

與OpenMP并行程序不同,MPI是一種基于信息傳遞的并行編程技術。消息傳遞接口是一種編程接口标準,而不是一種具體的編程語言。簡而言之,MPI标準定義了一組具有可移植性的編程接口。

組成

數據類型

定義了精确的數據類型參數而不使用字節計數,以數據類型為單位指定消息的長度;對于C和Fortran,MPI均預定義了一組數據類型和一些附加的數據類型;可以發送或接收連續的數據,還可以處理不連續的數據;允許發送和接收不同的數據類型。

通信域

MPICH中的一個通信域定義了一組進程和一個通信的上下文,虛拟處理器拓撲、屬性等内容。它以對象形式存在,作為通信操作的附加參數。MPI預定義的通信域:mpi comm world(包含所有進程)、mpi comm self(隻包含各個進程自己的進程組)。

分類

1.mpi init()初始化MPI執行環境,建立多個MPI進程之間的聯系,為後續通信做準備;

2.mpi finalize結束MPI執行環境;

3.mpi comm rank用來标識各個MPI進程的,給出調用該函數的進程的進程号,返回整型的錯誤值。兩個參數:MPI_Comm類型的通信域,标識參與計算的MPI進程組;&rank返回調用進程中的标識号;

4.mpi comm size用來标識相應進程組中有多少個進程;

5.mpi send(buf,counter,datatype,dest,tag,comm):buf:發送緩沖區的起始地址,可以是數組或結構指針;count:非負整數,發送的數據個數;datatype:發送數據的數據類型;dest:整型,目的的進程号;tag:整型,消息标志;comm:MPI進程組所在的通信域

含義:向通信域中的dest進程發送數據,數據存放在buf中,類型是datatype,個數是count,這個消息的标志是tag,用以和本進程向同一目的進程發送的其它消息區别開來。

6.mpi recv(buf,count,datatype,source,tag,comm,status):source:整型,接收數據的來源,即發送數據進程的進程号;status:MPI_Status結構指針,返回狀态信息。

MPI并行編程

并行編程模式

對等模式—程序的各個部分地位相同,功能和代碼基本一緻,隻是處理的數據或對象不同;主從模式—程序通信進程之間的一種主從或依賴關系。

點對點通信模式

阻塞—發送完成的數據已經拷貝出發送緩沖區,即發送緩沖區可以重新分配使用,阻塞接受的完成意味着接收數據已經拷貝到接收緩沖區,即接收方已可以使用。非阻塞—在必要的硬件支持下,可以實現計算和通信的重疊。4種通信模式:标準通信模式、緩存通信模式、同步通信模式、就緒通信模式。

組通信

一個特定組内所有進程都參加全局的數據處理和通信操作。

功能:通信—組内數據的傳輸;同步—所有進程在特定的點上取得一緻;計算—對給定的數據完成一定的操作。

類型:1)數據移動:廣播(mpi bcast)收集(mpi gather)散射(mpi scater)組收集(mpi all gather)全交換(all to all);2)聚集:規約(mpi reduce)将組内所有的進程輸入緩沖區中的數據按,定操作OP進行運算,并将起始結果返回到root進程的接收緩沖區掃描(mpi scan)要求每一個進程對排在它前面的進程進行規約操作,結果存入自身的輸出緩沖區;3)同步:路障(mpi barrier)實現通信域内所有進程互相同步,它們将處于等待狀态,直到所有進程執行它們各自的MPI-BARRIER調用。

曆史

創建信息傳遞接口的讨論始于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作了重大擴充的基礎上又推出了MPI的擴充部分MPI-2而把原來的MPI各種版本稱為MPI-1。MPI-2的擴充很多但主要是三個方面并行I/O,遠程存儲訪問和動态進程管理

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

MPI标準定義了核心庫的語法和語義,這個庫可以被Fortran和C調用構成可移植的信息傳遞程序。MPI提供了适應各種并行硬件商的基礎集,他們都被有效的實現。這導緻了是硬件商可以基于這一系列底層标準來創建高層次的慣例,從而為分布式内存交互系統提供他們的并行機。MPI提供了一個簡單易用的可移植接口,足夠強大到程序員可以用它在高級機器上進行進行高性能信息傳遞操作。

在創建“真正”的MPI标準過程中,研究員們集成了幾個系統最有用的特征到MPI中,而不是用一個系統來适應标準。其特征為IBM,Intel,nCUBE,PVM,Express,P4 and PARMACS等系統所用。

信息傳遞模式非常之吸引人,皆因它的廣泛可移植性,以及能被用于分布式内存/共享内存的多核處理器,工作站網絡,和這些架構的組合。信息傳遞模式可用于多重設定,獨立于網絡速度和内存架構。

相關詞條

相關搜索

其它詞條