




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、武漢理工大學碩士研究生課程大作業(yè)課程:并行計算開課學院:信息工程學院學期:2010-2011年度第1學期成績并行計算課程報告題目: MPI并行編程環(huán)境概要 指導老師:阮幼林 教授 學院:信息工程學院班級:信息研1001班姓名:余 華學號: 104972102820時間: 2011年01-10摘要隨著科技的發(fā)展,新一代的計算機,無論計算能力和計算速度,都比舊的計算機優(yōu)越。但人類對高性能計算的需求,也不斷提高.除了增強處理器本身的計算能力外,并行處理是一種提高計算能力的有效手段.從前,并行處理要采用昂貴的專用計算機,隨著個人計算機及網(wǎng)絡成本下降,現(xiàn)已廣泛用分布式網(wǎng)絡計算機系統(tǒng)進行并行處理。在分布網(wǎng)
2、絡計算機系統(tǒng)中,采用消息傳遞方法實現(xiàn)進程間的通訊。當前流行基于消息傳遞的并行編程環(huán)境是MPI(Message Passing Interface)。關鍵詞:消息傳遞;消息傳遞接口;并行編程;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ā)展,因此,在不同的并行計算機體系結構都有相應的并行計算機軟件。并行計算機軟件可分并行計算機系統(tǒng)軟件和并行計算機應用軟件。并行計算機系統(tǒng)軟件管理及協(xié)調(diào)并行計算機運作,并為用戶提供計算機的并行接口。因此它對充分發(fā)揮并行計算機的性能、令用戶能有效及友善地使用算機十分重要。并行系統(tǒng)軟件包括并行操作
6、系統(tǒng)及并行編譯系統(tǒng)。并行計算機應用軟件是解決具體應用問題的程序,不同問題有不同應用軟件。并行計算機應用軟件廣泛應用于科學計算、圖形、圖象處理等領域。并行程序在運行時,需要如任務的創(chuàng)建和終止、同步及通訊等操作。操作系統(tǒng)和編譯系統(tǒng)是分兩個層次處理:低層操作,如任務的創(chuàng)建和終止、同步鎖、點對點消息傳遞等由系統(tǒng)提供。高層操作如編程方面,由程序員直接調(diào)用共享存儲器并行機上的宏任務庫、分布存儲器并行機上的并行虛擬機器(Parallel Virtual Machine)及消息傳遞接口(Message passing interface)等并行函數(shù)庫;或在并行編譯器輔助下,由程序員間接調(diào)用并行函數(shù)庫。1.2并
7、行程序設計語言并行計算機系統(tǒng)體系結構、并行計算機軟件和并行算法是并行處理的三個要素。發(fā)揮并行計算機系統(tǒng)效率關鍵,在于充分利用程序中的并行部分。并行程序設計語言提供描述并行處理的語言設施。并行程序設計語言可分為向量計算機的向量語言、共享存儲器并行計算機及分布式存儲器并行計算機的并行語言。分布式存儲器的并行系統(tǒng),每臺計算機有獨立的地址空間,數(shù)據(jù)通訊常用消息傳遞方式。即必須通過發(fā)送及接收消息來交換計算機上的數(shù)據(jù)。合理的數(shù)據(jù)分布,能減少遠程訪問,提高運行效率。而其它影響效率的因素有:負載平衡、通訊延遲、通訊模式等。消息傳遞方式有點對點通訊及集體通訊。這種系統(tǒng)結構使用的并行程序設計語言須具備分布式數(shù)據(jù)描
8、述及消息傳遞功能。并行程序設計語言中的實現(xiàn)消息傳遞機制的方法有:一、在原語言上提供并行函數(shù)庫如PVM、MPI等;二、擴充原來的語言的關鍵字及語法,如C+、Fortran-M等;三、建立一種新的語言如Occam。第一種方法的好處是編寫并行程序時,只要在原語言上調(diào)用并行函數(shù)庫,不用掌握新語言。1.3并行計算機系統(tǒng)體系結構并行計算機體系結構是具體執(zhí)行并行處理的實體,可分為向量并行計算機、共享存儲器并行計算機及分布式存儲器并行計算機。一)向量并行計算機能對向量計算進行高速并行處理。二)共享存儲器并行計算機系統(tǒng)特征是多個處理器共享內(nèi)存。三)分布式存儲器并行計算機由多個節(jié)點構成,每個節(jié)點都有獨立的處理器及
9、內(nèi)存節(jié)點之間以網(wǎng)絡相連,而節(jié)點的數(shù)目可以由幾個到有數(shù)千個不等。2 MPI發(fā)展及并行編程環(huán)境2.1消息傳遞接口消息傳遞接口MPI (Message-Passing Interface)是一個基于消息傳遞的標準并行函數(shù)庫,提供在并行機系統(tǒng)及網(wǎng)絡并行計算機上編寫并行程序的環(huán)境。來自美國及歐洲各國,共40個組織的80多位專家,其中包括生產(chǎn)并行機的廠家、大學、政府實驗室和工廠的科研人員,參與了MPI標準化工作。1992年4月,召開關于消息傳遞標準的工作會議,會上探討了標準消息傳遞的基本和必要的特點,成立一個工作組繼續(xù)進行標準化工作。同年11月完成MPI的第一個草稿(MPI-1),于1993年3月發(fā)表修訂
10、版。1994年5月,MPI標準正式發(fā)表,于同年6月發(fā)表MPI 1.1。在這段期間,他們制定了一個可移植的消息傳遞庫定義標準,命名為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)進程等。1995年的春天舉行MPI-2論壇,此時并行計算已有很大的變化。若干舊式
11、系統(tǒng)停產(chǎn),新系統(tǒng)進入市場。MPI-2的標準化始于1995年4月,并于1997年4月間完成。首先修訂94年原文件,更改了容易產(chǎn)生誤解的地方及一些函數(shù)名稱。MPI-2的文件中也包括MPI 1.2。MPI 1.2加進了討論MPI-1時忽略的功能,如提取MPI版本號碼。MPI-2包括并行I/O,遠程儲存器操作(或稱單邊通訊)及動態(tài)進程管理。也加進了一些新功能,如外部接口格式、支持C+及Fortran-90、支持多線程(threads)及混合語言編程等。MPI-1的主要功能包括:一、提供大量點對點通訊函數(shù)二、為進程組提供大量集體通訊函數(shù)三、使用通訊子(communicator)改善通訊的安全性四、進程拓
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ù)進行調(diào)用。作為一種消息傳遞式的并行編程環(huán)境,MPI 并行程序要求將任務分塊,同時啟動多個進程并發(fā)執(zhí)行,各進程之間通過調(diào)用MPI的庫函數(shù)實現(xiàn)消息傳遞。(1)進程創(chuàng)建和執(zhí)行一個MPI 并行程序山若干個并發(fā)進程組成,這些進程可以相同也可以不同。MPI只支持靜態(tài)進程創(chuàng)建,即:每個進程在執(zhí)行
13、前必須在MPI環(huán)境中登記,且它們必須一起啟動。通常啟動可執(zhí)行的MPI程序是通過命令行來實現(xiàn)的。啟動方法山具體實現(xiàn)確定。例如在MPICH實現(xiàn)中通過下列命令行可同時在獨立的機器上啟動相同的可執(zhí)行程序:mpirun -np N programname其中N是同時運行的進程的個數(shù),program-name是可執(zhí)行的MPI程序的程序名。以這種方式執(zhí)行時,需要首先對可用的機器進行配置,配置文件是$HOME/mpich/util/machines/machines.LINUX 。在這個文件中,每一行寫上可用的機器名。例如:這樣就有6臺機器可供MPI使用,每臺機器執(zhí)行一個進程。(2)MPI的初始化與結束MPI
14、程序的初始化工作是通過調(diào)用MPI_ Init()函數(shù)完成的,該函數(shù)是MPI程序的第一個函數(shù)調(diào)用,也是MPI程序的第一條可執(zhí)行語句。NIPI_ Finalize()函數(shù)是MPI程序的最后一個調(diào)用,它結束MPI程序的運行,是MPI程序的最后一條執(zhí)行語句,如果沒有該函數(shù)調(diào)用,程序的運行結果是不可預知的。命令行的參數(shù)將傳遞給MPI_ Init (),以允許MPI進行設置要發(fā)生的動作,即:main(int argc,char*argv)MPI_Init(&argc,&argv);MPI_Finalize();初始化后,MPI自動創(chuàng)建一個通信域稱為MPI_COMM_WORLD,由它定義通信操作的作用域。并
15、為域內(nèi)每個進程分配一個獨立的序號(進程標志),如果有n個進程,則其標識為0n1。用戶可以使用MPI初始化創(chuàng)建的通信域,也可以按照MPI提供的函數(shù)調(diào)用方式,在己有的通信域上生成新的通信域。(3)MPI消息傳遞函數(shù)MPI提供了點對點通信和組通信的消息傳遞函數(shù),兩類函數(shù)調(diào)用其通信方式上都是用了通信域,用這種方法,可以使庫的通信域與用戶程序分開。點對點通信通信在兩個進程之間進行,即:將消息由源進程傳遞到目的進程。通常用MPI的發(fā)送和接收函數(shù)調(diào)用來完成。有4種函數(shù)調(diào)用模式,分別是:標準模式、緩存模式、同步模式和就緒模式。其中最常用的是標準模式,該模式下發(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ù)(非負整數(shù));datatype:發(fā)送數(shù)據(jù)的數(shù)據(jù)類型(句柄);dest:目的進程標識號(整型);tag:消息標志(整型);comm:通信域(句柄)。組通信通信的范圍涉及組內(nèi)所有進程。MPI提供了一個廣播函數(shù)和一組匯集和散播函數(shù)調(diào)用,它們是:MPI_Bcast ()從根進程向所有進程廣播消息;MPI_Gather ()根進程匯集所有進程發(fā)送的消息;MPI_Scatter ()根進程散播消
17、息給所有進程;MPI_Alltoall()所有進程向所有進程發(fā)送消息;MPI_Reduce()將所有進程發(fā)送緩沖區(qū)中的數(shù)據(jù)按給定操作組合,結果存入根進程的接受緩沖區(qū);MPI_Reduce_scatter()在前個功能基礎上再散播給所有進程;MPI_Scan()每個進程歸約其及前面進程發(fā)送緩沖區(qū)中的數(shù)據(jù)。2.3 MPI基本并行程序設計MPI為消息傳遞和相關操作提供了功能強大而又豐富的庫函數(shù),其內(nèi)有上百個甚至幾百個函數(shù)調(diào)用接口,但最常用的只是由6個函數(shù)構成的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結束函數(shù)MPI_Finalize()最后一個MPI函數(shù)調(diào)用,使程序退出MPI編程環(huán)境。(3)獲取當前進程標識MPI_Comm_rank(MPI_Comm comm,int*rank)這一調(diào)用返回調(diào)用進程在給定的通信域中的進程標識號,有了這一標識號,不同的進程就可以將自己和其他的進程區(qū)別開來,實現(xiàn)各進程的并行和協(xié)作。(4)通信域包含的進程數(shù)MPI_Comm_size(MPI_Comm comm,int *size)這一調(diào)用返回給定的通信域中所包括的進程的個數(shù),不同的進程通過這一調(diào)用得知在給定的通信域中
19、一共有多少個進程在并行執(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ā)送到目的進程,目的進程在通信域中的標識號是dest,本次發(fā)送的消息標志是tag,使用這一標志,就可以把本次發(fā)送的消息和本進程向同一目的進程發(fā)送的其他消息區(qū)別開來。該操作指定的發(fā)送緩沖區(qū)是由count個類型為datatype的連續(xù)數(shù)據(jù)空間組成,起始地址為buf。注意這里不是以字節(jié)計數(shù),而是以數(shù)據(jù)類型為單位指定消息的長度,這樣就
20、獨立于具體的實現(xiàn),并且更接近于用戶的觀點。datatype數(shù)據(jù)類型可以是MPI的預定義類型,也可以是用戶自定義的類型。(6)消息接收MPI_Recv(void*buf,int count MPI_Datatype datatype,int source,int tag,MPI_Comm comm,MPI_Status *status) 該調(diào)用從指定的進程source接收消息,并且該消息的數(shù)據(jù)類型和消息標識號和本接收進程指定的datatype和tag相一致,接收到的消息所包含的數(shù)據(jù)元素的個數(shù)最多不能超過count。接收緩沖區(qū)是由count個datatype的連續(xù)元素空間組成,由datatype指定其類型,起始地址為buf。接收到消息的長度必須小于或等于接收緩沖區(qū)的長度,這是因為如果接收到的數(shù)據(jù)過大,MPI沒有截斷,接收緩沖區(qū)會發(fā)生溢出錯誤,因此要保證接收緩沖區(qū)的長度不小于發(fā)送數(shù)據(jù)的長度。如果一個短于接收緩沖區(qū)的消息到達,那么只有相應于這個消息的那些地址被修改。count可以是零,在這種情況下,消息的數(shù)據(jù)部分是空的。data
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校雇用消毒人員合同
- 事件性新聞寫作
- 塑粉采購合同塑料制品購銷合同
- 歷史文物保護與修復技術試卷分析
- 玻璃體相關知識培訓課件
- 港口裝卸與倉儲管理作業(yè)指導書
- 家庭家居保潔服務合同書
- 森林碳匯項目開發(fā)與合作協(xié)議
- 2025年安徽省黃山市單招職業(yè)傾向性測試題庫往年題考
- 任務6.2.4 建筑物沉降觀測
- 致病菌引起的食品安全事件
- 浙江省溫州市(2024年-2025年小學五年級語文)人教版期中考試(下學期)試卷及答案
- 企業(yè)員工背景審查制度
- 數(shù)據(jù)要素白皮書(2024年)-中國通信標準化協(xié)會
- 鋼管樁工程施工方案
- 《魏書生班主任工作漫談》讀書心得體會課件
- 冰淇淋店選址與競爭環(huán)境分析
- 領導干部離任交接表
- 儲運安全檢查分析(SCL)評價記錄
- 人教版六年級上冊道德與法治教案(5篇)
- (中職)中職生創(chuàng)新創(chuàng)業(yè)能力提升教課件完整版
評論
0/150
提交評論