基于MPI并行編程環(huán)境簡述_第1頁
基于MPI并行編程環(huán)境簡述_第2頁
基于MPI并行編程環(huán)境簡述_第3頁
基于MPI并行編程環(huán)境簡述_第4頁
基于MPI并行編程環(huán)境簡述_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、武漢理工大學(xué)碩士研究生課程大作業(yè)課程:并行計算開課學(xué)院:信息工程學(xué)院學(xué)期:2010-2011年度第1學(xué)期成績并行計算課程報告題目: MPI并行編程環(huán)境概要 指導(dǎo)老師:阮幼林 教授 學(xué)院:信息工程學(xué)院班級:信息研1001班姓名:余 華學(xué)號: 104972102820時間: 2011年01-10摘要隨著科技的發(fā)展,新一代的計算機,無論計算能力和計算速度,都比舊的計算機優(yōu)越。但人類對高性能計算的需求,也不斷提高.除了增強處理器本身的計算能力外,并行處理是一種提高計算能力的有效手段.從前,并行處理要采用昂貴的專用計算機,隨著個人計算機及網(wǎng)絡(luò)成本下降,現(xiàn)已廣泛用分布式網(wǎng)絡(luò)計算機系統(tǒng)進(jìn)行并行處理。在分布網(wǎng)

2、絡(luò)計算機系統(tǒng)中,采用消息傳遞方法實現(xiàn)進(jìn)程間的通訊。當(dāng)前流行基于消息傳遞的并行編程環(huán)境是MPI(Message Passing Interface)。關(guān)鍵詞:消息傳遞;消息傳遞接口;并行編程;AbstractBecause of the development of technology, the new generation of computer should be better than the former ones in the power and speed of computing. But the peoples demand of high performance of com

3、puting is increasing too. In addition to enhancing the computing power of the processor, parallel processing is also an efficient way toenhance the power of computing. In the past, the parallel processing can only run on the expensive and special computers. As the cost of personal computers and netw

4、orks decreased, and now, it is popular to process the parallel processing on the distributed network computing systems. In the distributed network computing systems, messagepassing is used for the communication between processes. MPI (Message Passing Interface) are common development environments of

5、 parallel processing based on message passing.Keyword:Message passing; Message passing interface; Parallel programming;1并行計算機系統(tǒng)介紹1.1并行計算機的軟件并行計算機的軟件緊隨并行實體發(fā)展,因此,在不同的并行計算機體系結(jié)構(gòu)都有相應(yīng)的并行計算機軟件。并行計算機軟件可分并行計算機系統(tǒng)軟件和并行計算機應(yīng)用軟件。并行計算機系統(tǒng)軟件管理及協(xié)調(diào)并行計算機運作,并為用戶提供計算機的并行接口。因此它對充分發(fā)揮并行計算機的性能、令用戶能有效及友善地使用算機十分重要。并行系統(tǒng)軟件包括并行操作

6、系統(tǒng)及并行編譯系統(tǒng)。并行計算機應(yīng)用軟件是解決具體應(yīng)用問題的程序,不同問題有不同應(yīng)用軟件。并行計算機應(yīng)用軟件廣泛應(yīng)用于科學(xué)計算、圖形、圖象處理等領(lǐng)域。并行程序在運行時,需要如任務(wù)的創(chuàng)建和終止、同步及通訊等操作。操作系統(tǒng)和編譯系統(tǒng)是分兩個層次處理:低層操作,如任務(wù)的創(chuàng)建和終止、同步鎖、點對點消息傳遞等由系統(tǒng)提供。高層操作如編程方面,由程序員直接調(diào)用共享存儲器并行機上的宏任務(wù)庫、分布存儲器并行機上的并行虛擬機器(Parallel Virtual Machine)及消息傳遞接口(Message passing interface)等并行函數(shù)庫;或在并行編譯器輔助下,由程序員間接調(diào)用并行函數(shù)庫。1.2并

7、行程序設(shè)計語言并行計算機系統(tǒng)體系結(jié)構(gòu)、并行計算機軟件和并行算法是并行處理的三個要素。發(fā)揮并行計算機系統(tǒng)效率關(guān)鍵,在于充分利用程序中的并行部分。并行程序設(shè)計語言提供描述并行處理的語言設(shè)施。并行程序設(shè)計語言可分為向量計算機的向量語言、共享存儲器并行計算機及分布式存儲器并行計算機的并行語言。分布式存儲器的并行系統(tǒng),每臺計算機有獨立的地址空間,數(shù)據(jù)通訊常用消息傳遞方式。即必須通過發(fā)送及接收消息來交換計算機上的數(shù)據(jù)。合理的數(shù)據(jù)分布,能減少遠(yuǎn)程訪問,提高運行效率。而其它影響效率的因素有:負(fù)載平衡、通訊延遲、通訊模式等。消息傳遞方式有點對點通訊及集體通訊。這種系統(tǒng)結(jié)構(gòu)使用的并行程序設(shè)計語言須具備分布式數(shù)據(jù)描

8、述及消息傳遞功能。并行程序設(shè)計語言中的實現(xiàn)消息傳遞機制的方法有:一、在原語言上提供并行函數(shù)庫如PVM、MPI等;二、擴充原來的語言的關(guān)鍵字及語法,如C+、Fortran-M等;三、建立一種新的語言如Occam。第一種方法的好處是編寫并行程序時,只要在原語言上調(diào)用并行函數(shù)庫,不用掌握新語言。1.3并行計算機系統(tǒng)體系結(jié)構(gòu)并行計算機體系結(jié)構(gòu)是具體執(zhí)行并行處理的實體,可分為向量并行計算機、共享存儲器并行計算機及分布式存儲器并行計算機。一)向量并行計算機能對向量計算進(jìn)行高速并行處理。二)共享存儲器并行計算機系統(tǒng)特征是多個處理器共享內(nèi)存。三)分布式存儲器并行計算機由多個節(jié)點構(gòu)成,每個節(jié)點都有獨立的處理器及

9、內(nèi)存節(jié)點之間以網(wǎng)絡(luò)相連,而節(jié)點的數(shù)目可以由幾個到有數(shù)千個不等。2 MPI發(fā)展及并行編程環(huán)境2.1消息傳遞接口消息傳遞接口MPI (Message-Passing Interface)是一個基于消息傳遞的標(biāo)準(zhǔn)并行函數(shù)庫,提供在并行機系統(tǒng)及網(wǎng)絡(luò)并行計算機上編寫并行程序的環(huán)境。來自美國及歐洲各國,共40個組織的80多位專家,其中包括生產(chǎn)并行機的廠家、大學(xué)、政府實驗室和工廠的科研人員,參與了MPI標(biāo)準(zhǔn)化工作。1992年4月,召開關(guān)于消息傳遞標(biāo)準(zhǔn)的工作會議,會上探討了標(biāo)準(zhǔn)消息傳遞的基本和必要的特點,成立一個工作組繼續(xù)進(jìn)行標(biāo)準(zhǔn)化工作。同年11月完成MPI的第一個草稿(MPI-1),于1993年3月發(fā)表修訂

10、版。1994年5月,MPI標(biāo)準(zhǔn)正式發(fā)表,于同年6月發(fā)表MPI 1.1。在這段期間,他們制定了一個可移植的消息傳遞庫定義標(biāo)準(zhǔn),命名為MPI(Message Passing Interface),可被C及Fortran 77語言調(diào)用。MPI給出了并行庫的規(guī)格說明,提供一套完整的消息傳遞函數(shù)庫中例程。MPI引入一些新的概念,如派生數(shù)據(jù)類型(derived datatypes)、上下文(contexts)及通訊子(communicators)。雖然MPI集消息傳遞模型的優(yōu)點,但也有欠缺,如并行I/0操作及PVM所提供的動態(tài)進(jìn)程等。1995年的春天舉行MPI-2論壇,此時并行計算已有很大的變化。若干舊式

11、系統(tǒng)停產(chǎn),新系統(tǒng)進(jìn)入市場。MPI-2的標(biāo)準(zhǔn)化始于1995年4月,并于1997年4月間完成。首先修訂94年原文件,更改了容易產(chǎn)生誤解的地方及一些函數(shù)名稱。MPI-2的文件中也包括MPI 1.2。MPI 1.2加進(jìn)了討論MPI-1時忽略的功能,如提取MPI版本號碼。MPI-2包括并行I/O,遠(yuǎn)程儲存器操作(或稱單邊通訊)及動態(tài)進(jìn)程管理。也加進(jìn)了一些新功能,如外部接口格式、支持C+及Fortran-90、支持多線程(threads)及混合語言編程等。MPI-1的主要功能包括:一、提供大量點對點通訊函數(shù)二、為進(jìn)程組提供大量集體通訊函數(shù)三、使用通訊子(communicator)改善通訊的安全性四、進(jìn)程拓

12、撲(Process topology)五、使用剖析功能(Profiling)供調(diào)試用六、產(chǎn)生派生數(shù)據(jù)類型處理不相連性數(shù)據(jù)七、支持C及Fortran語言的消息傳遞函數(shù)八、環(huán)境管理與查詢函數(shù)2.2 MPI并行編程環(huán)境MPI由一組庫函數(shù)組成,在Fortran77 ,Fortran99 , C和C+語言中皆可以直接對這些函數(shù)進(jìn)行調(diào)用。作為一種消息傳遞式的并行編程環(huán)境,MPI 并行程序要求將任務(wù)分塊,同時啟動多個進(jìn)程并發(fā)執(zhí)行,各進(jìn)程之間通過調(diào)用MPI的庫函數(shù)實現(xiàn)消息傳遞。(1)進(jìn)程創(chuàng)建和執(zhí)行一個MPI 并行程序山若干個并發(fā)進(jìn)程組成,這些進(jìn)程可以相同也可以不同。MPI只支持靜態(tài)進(jìn)程創(chuàng)建,即:每個進(jìn)程在執(zhí)行

13、前必須在MPI環(huán)境中登記,且它們必須一起啟動。通常啟動可執(zhí)行的MPI程序是通過命令行來實現(xiàn)的。啟動方法山具體實現(xiàn)確定。例如在MPICH實現(xiàn)中通過下列命令行可同時在獨立的機器上啟動相同的可執(zhí)行程序:mpirun -np N programname其中N是同時運行的進(jìn)程的個數(shù),program-name是可執(zhí)行的MPI程序的程序名。以這種方式執(zhí)行時,需要首先對可用的機器進(jìn)行配置,配置文件是$HOME/mpich/util/machines/machines.LINUX 。在這個文件中,每一行寫上可用的機器名。例如:這樣就有6臺機器可供MPI使用,每臺機器執(zhí)行一個進(jìn)程。(2)MPI的初始化與結(jié)束MPI

14、程序的初始化工作是通過調(diào)用MPI_ Init()函數(shù)完成的,該函數(shù)是MPI程序的第一個函數(shù)調(diào)用,也是MPI程序的第一條可執(zhí)行語句。NIPI_ Finalize()函數(shù)是MPI程序的最后一個調(diào)用,它結(jié)束MPI程序的運行,是MPI程序的最后一條執(zhí)行語句,如果沒有該函數(shù)調(diào)用,程序的運行結(jié)果是不可預(yù)知的。命令行的參數(shù)將傳遞給MPI_ Init (),以允許MPI進(jìn)行設(shè)置要發(fā)生的動作,即:main(int argc,char*argv)MPI_Init(&argc,&argv);MPI_Finalize();初始化后,MPI自動創(chuàng)建一個通信域稱為MPI_COMM_WORLD,由它定義通信操作的作用域。并

15、為域內(nèi)每個進(jìn)程分配一個獨立的序號(進(jìn)程標(biāo)志),如果有n個進(jìn)程,則其標(biāo)識為0n1。用戶可以使用MPI初始化創(chuàng)建的通信域,也可以按照MPI提供的函數(shù)調(diào)用方式,在己有的通信域上生成新的通信域。(3)MPI消息傳遞函數(shù)MPI提供了點對點通信和組通信的消息傳遞函數(shù),兩類函數(shù)調(diào)用其通信方式上都是用了通信域,用這種方法,可以使庫的通信域與用戶程序分開。點對點通信通信在兩個進(jìn)程之間進(jìn)行,即:將消息由源進(jìn)程傳遞到目的進(jìn)程。通常用MPI的發(fā)送和接收函數(shù)調(diào)用來完成。有4種函數(shù)調(diào)用模式,分別是:標(biāo)準(zhǔn)模式、緩存模式、同步模式和就緒模式。其中最常用的是標(biāo)準(zhǔn)模式,該模式下發(fā)送調(diào)用一般格式如下: MPI_ Send (voi

16、d *buf,int count,MPI_Datatype datatype,int dest ,int tag,MPI_Comm comm)buf:發(fā)送緩沖區(qū)的起始地址(可選類型);count:將發(fā)送的數(shù)據(jù)的個數(shù)(非負(fù)整數(shù));datatype:發(fā)送數(shù)據(jù)的數(shù)據(jù)類型(句柄);dest:目的進(jìn)程標(biāo)識號(整型);tag:消息標(biāo)志(整型);comm:通信域(句柄)。組通信通信的范圍涉及組內(nèi)所有進(jìn)程。MPI提供了一個廣播函數(shù)和一組匯集和散播函數(shù)調(diào)用,它們是:MPI_Bcast ()從根進(jìn)程向所有進(jìn)程廣播消息;MPI_Gather ()根進(jìn)程匯集所有進(jìn)程發(fā)送的消息;MPI_Scatter ()根進(jìn)程散播消

17、息給所有進(jìn)程;MPI_Alltoall()所有進(jìn)程向所有進(jìn)程發(fā)送消息;MPI_Reduce()將所有進(jìn)程發(fā)送緩沖區(qū)中的數(shù)據(jù)按給定操作組合,結(jié)果存入根進(jìn)程的接受緩沖區(qū);MPI_Reduce_scatter()在前個功能基礎(chǔ)上再散播給所有進(jìn)程;MPI_Scan()每個進(jìn)程歸約其及前面進(jìn)程發(fā)送緩沖區(qū)中的數(shù)據(jù)。2.3 MPI基本并行程序設(shè)計MPI為消息傳遞和相關(guān)操作提供了功能強大而又豐富的庫函數(shù),其內(nèi)有上百個甚至幾百個函數(shù)調(diào)用接口,但最常用的只是由6個函數(shù)構(gòu)成的MPI子集,有了它們,就可以實現(xiàn)所有的消息傳遞并行程序功能。它們是C的調(diào)用格式描述:(1)MPI初始化函數(shù)MPI_Init(int *argc

18、, char*argv)第一個MPI函數(shù)調(diào)用,初始化MPI編程環(huán)境,只能被調(diào)用一次。(2)MPI結(jié)束函數(shù)MPI_Finalize()最后一個MPI函數(shù)調(diào)用,使程序退出MPI編程環(huán)境。(3)獲取當(dāng)前進(jìn)程標(biāo)識MPI_Comm_rank(MPI_Comm comm,int*rank)這一調(diào)用返回調(diào)用進(jìn)程在給定的通信域中的進(jìn)程標(biāo)識號,有了這一標(biāo)識號,不同的進(jìn)程就可以將自己和其他的進(jìn)程區(qū)別開來,實現(xiàn)各進(jìn)程的并行和協(xié)作。(4)通信域包含的進(jìn)程數(shù)MPI_Comm_size(MPI_Comm comm,int *size)這一調(diào)用返回給定的通信域中所包括的進(jìn)程的個數(shù),不同的進(jìn)程通過這一調(diào)用得知在給定的通信域中

19、一共有多少個進(jìn)程在并行執(zhí)行。(5)消息發(fā)送MPI_Send (void *buf,int count MPI_Datatype datatype,int dest,int tag,MPI_Comm comm)該調(diào)用將發(fā)送緩沖區(qū)中的count個datatype數(shù)據(jù)類型的數(shù)據(jù)發(fā)送到目的進(jìn)程,目的進(jìn)程在通信域中的標(biāo)識號是dest,本次發(fā)送的消息標(biāo)志是tag,使用這一標(biāo)志,就可以把本次發(fā)送的消息和本進(jìn)程向同一目的進(jìn)程發(fā)送的其他消息區(qū)別開來。該操作指定的發(fā)送緩沖區(qū)是由count個類型為datatype的連續(xù)數(shù)據(jù)空間組成,起始地址為buf。注意這里不是以字節(jié)計數(shù),而是以數(shù)據(jù)類型為單位指定消息的長度,這樣就

20、獨立于具體的實現(xiàn),并且更接近于用戶的觀點。datatype數(shù)據(jù)類型可以是MPI的預(yù)定義類型,也可以是用戶自定義的類型。(6)消息接收MPI_Recv(void*buf,int count MPI_Datatype datatype,int source,int tag,MPI_Comm comm,MPI_Status *status) 該調(diào)用從指定的進(jìn)程source接收消息,并且該消息的數(shù)據(jù)類型和消息標(biāo)識號和本接收進(jìn)程指定的datatype和tag相一致,接收到的消息所包含的數(shù)據(jù)元素的個數(shù)最多不能超過count。接收緩沖區(qū)是由count個datatype的連續(xù)元素空間組成,由datatype指定其類型,起始地址為buf。接收到消息的長度必須小于或等于接收緩沖區(qū)的長度,這是因為如果接收到的數(shù)據(jù)過大,MPI沒有截斷,接收緩沖區(qū)會發(fā)生溢出錯誤,因此要保證接收緩沖區(qū)的長度不小于發(fā)送數(shù)據(jù)的長度。如果一個短于接收緩沖區(qū)的消息到達(dá),那么只有相應(yīng)于這個消息的那些地址被修改。count可以是零,在這種情況下,消息的數(shù)據(jù)部分是空的。data

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論