國家973項(xiàng)目高性能計算環(huán)境支持講座_第1頁
國家973項(xiàng)目高性能計算環(huán)境支持講座_第2頁
國家973項(xiàng)目高性能計算環(huán)境支持講座_第3頁
國家973項(xiàng)目高性能計算環(huán)境支持講座_第4頁
國家973項(xiàng)目高性能計算環(huán)境支持講座_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、PAGE 1PAGE 41國家9773項(xiàng)目目高性能能計算環(huán)環(huán)境支持持講座MPI與與PETTSc莫則堯(北京應(yīng)應(yīng)用物理理與計算算數(shù)學(xué)研研究所)日期內(nèi)容8155上午進(jìn)程與消消息傳遞遞、MPI應(yīng)應(yīng)用現(xiàn)狀狀、MPI并并行程序序設(shè)計入入門、初步的MMPI消消息傳遞遞函數(shù)下午作業(yè)一、討論8166上午作業(yè)一講講評、先進(jìn)的MMPI函函數(shù)、并行程序序示例22、MPI的的發(fā)展下午作業(yè)二、討論8177上午作業(yè)二講講評、并行可擴(kuò)擴(kuò)展科學(xué)學(xué)計算工工具箱PPETSSc介紹紹下午PETSSc程序序示例個人介紹紹莫則堯,男,漢漢族,119711年7月月生,副副研究員員:19922年國防防科技大大學(xué)應(yīng)用用數(shù)學(xué)專專業(yè)本科科畢業(yè);

2、19977年國防防科技大大學(xué)計算算機(jī)應(yīng)用用專業(yè)并并行算法法方向博博士畢業(yè)業(yè);19999年北京京應(yīng)用物物理與計計算數(shù)學(xué)學(xué)數(shù)學(xué)博博士后流流動站出出站,并并留所工工作;主要從事事大規(guī)模模科學(xué)與與工程并并行計算算研究。消息傳遞遞并行編編程環(huán)境境MPII進(jìn)程與消消息傳遞遞MPI環(huán)環(huán)境的應(yīng)應(yīng)用現(xiàn)狀狀MPI并并行程序序設(shè)計入入門(程程序例11)初步的MMPI消消息傳遞遞函數(shù)作業(yè)一先進(jìn)的MMPI函函數(shù)MPI并并行程序序示例22(求解解-u=ff);MPI環(huán)環(huán)境的發(fā)發(fā)展作業(yè)二一、進(jìn)程程與消息息傳遞1單個個進(jìn)程(proocesss)進(jìn)程是一一個程序序,同時時包含它它的執(zhí)行行環(huán)境(內(nèi)存、寄存器器、程序序計數(shù)器器等)

3、,是操作作系統(tǒng)中中獨(dú)立存存在的可可執(zhí)行的的基本程程序單位位;通俗理解解:串行行應(yīng)用程程序編譯譯形成的的可執(zhí)行行代碼,分為“指令”和“數(shù)據(jù)”兩個部部分,并并在程序序執(zhí)行時時“獨(dú)立地地申請和和占有”內(nèi)存空空間,且且所有計計算均局局限于該該內(nèi)存空空間。進(jìn)程1進(jìn)程2 內(nèi)存2單機(jī)機(jī)內(nèi)多個個進(jìn)程:多個進(jìn)程程可以同同時存在在于單機(jī)機(jī)內(nèi)同一一操作系系統(tǒng):由由操作系系統(tǒng)負(fù)責(zé)責(zé)調(diào)度分分時共享享處理機(jī)機(jī)資源(CPUU、內(nèi)存存、存儲儲、外設(shè)設(shè)等);進(jìn)程間相相互獨(dú)立立(內(nèi)存空空間不相相交):在操作作系統(tǒng)調(diào)調(diào)度下各各自獨(dú)立立地運(yùn)行行,例如如多個串串行應(yīng)用用程序在在同一臺臺計算機(jī)機(jī)中運(yùn)行行;進(jìn)程間可可以相互互交換信信息:例

4、例如數(shù)據(jù)據(jù)交換、同步等等待,消消息是這這些交換換信息的的基本單單位,消消息傳遞遞是指這這些信息息在進(jìn)程程間的相相互交換換,是實(shí)實(shí)現(xiàn)進(jìn)程程間通信信的唯一一方式;最基本的的消息傳傳遞操作作:發(fā)送送消息(sennd)、接受消消息(rreceeivee)、進(jìn)進(jìn)程同步步(baarriier)、規(guī)約約(reeducctioon);消息傳遞遞的實(shí)現(xiàn)現(xiàn):共享享內(nèi)存或或信號量量,用戶戶不必關(guān)關(guān)心; 進(jìn)程11 進(jìn)程程2 發(fā)送送數(shù)據(jù) 接收收數(shù)據(jù) (消息傳傳遞) 內(nèi)存空空間3包含含于通過過網(wǎng)絡(luò)聯(lián)聯(lián)接的不不同計算算機(jī)的多多個進(jìn)程程:進(jìn)程獨(dú)立立存在:進(jìn)程位位于不同同的計算算機(jī),由由各自獨(dú)獨(dú)立的操操作系統(tǒng)統(tǒng)調(diào)度,享有獨(dú)獨(dú)立

5、的CCPU和和內(nèi)存資資源;進(jìn)程間相相互信息息交換:消息傳傳遞;消息傳遞遞的實(shí)現(xiàn)現(xiàn):基于于網(wǎng)絡(luò)ssockket機(jī)機(jī)制,用用戶不必必關(guān)心;4消息息傳遞庫庫函數(shù):應(yīng)用程序序接口(APII):提提供給應(yīng)應(yīng)用程序序(FOORTRRAN、C、CC+語語言)的的可直接接調(diào)用的的完成進(jìn)進(jìn)程間消消息傳遞遞的某項(xiàng)項(xiàng)特定功功能的函函數(shù);消息傳遞遞庫:所所有定義義的消息息傳遞函函數(shù)編譯譯形成的的軟件庫庫,調(diào)用用其內(nèi)部部函數(shù)的的應(yīng)用程程序,通通過與之之聯(lián)接,即可成成為可并并行執(zhí)行行的程序序;目前流行行的消息息傳遞函函數(shù)庫:PVMM 3.3.111、MMPICCH 11.2、LAMMMPII 6.4等;5標(biāo)準(zhǔn)準(zhǔn)消息傳傳遞

6、界面面(MPPI:MMesssagee Paassiing Intterffacee):MPI標(biāo)標(biāo)準(zhǔn):根根據(jù)應(yīng)用用程序?qū)ο鱾鬟f功能能的需求求,全球球工業(yè)、應(yīng)用和和研究部部門聯(lián)合合推出標(biāo)標(biāo)準(zhǔn)的消消息傳遞遞界面函函數(shù),不不考慮其其具體實(shí)實(shí)現(xiàn),以以保證并并行應(yīng)用用程序的的可移植植性;MPI的的具體實(shí)實(shí)現(xiàn):消消息傳遞遞庫函數(shù)數(shù),目前前有影響響的為MMPICCH和LLAMMMPI,我們注注重MPPICHH系列;6基于于消息傳傳遞的并并行程序序執(zhí)行模模式:SPMDD模式:單程序序多數(shù)據(jù)據(jù)流并行應(yīng)用程序代碼 可執(zhí)執(zhí)行代碼碼 運(yùn)行行復(fù)制多份并獨(dú)立執(zhí)行,形成多個獨(dú)立的進(jìn)程 進(jìn)程三(內(nèi)存)進(jìn)程二(內(nèi)存)進(jìn)程

7、一(內(nèi)存)消息傳遞(交換數(shù)據(jù)、同步、規(guī)約)協(xié)同MPMDD模式:多程序序多數(shù)據(jù)據(jù)流,除除初始啟啟動多個個可執(zhí)行行代碼,其余與與SPMMD模式式一致;7共享享存儲與與分布式式存儲:屬于并行行機(jī)體系系結(jié)構(gòu)的的范疇,與消息息傳遞并并行程序序設(shè)計平平臺無關(guān)關(guān); 節(jié)點(diǎn)CPUCPU CPUCPUCPUCPUMMM互連網(wǎng)絡(luò)互連網(wǎng)絡(luò)MMM 分布式式存儲 共共享存儲儲消息傳遞遞是相對對于進(jìn)程程間通信信方式而而言的,與具體體并行機(jī)機(jī)存儲模模式無關(guān)關(guān),任何何支持進(jìn)進(jìn)程間通通信的并并行機(jī),均可支支持消息息傳遞并并行程序序設(shè)計;幾乎所有有共享和和分布存存儲并行行計算環(huán)環(huán)境均支支持進(jìn)程程間的消消息傳遞遞通信;二、MPPI環(huán)

8、境境的應(yīng)用用現(xiàn)狀MPI(消息傳傳遞界面面)是全全球工業(yè)業(yè)、政府府和科研研部門聯(lián)聯(lián)合推出出的適合合進(jìn)程間間進(jìn)行標(biāo)標(biāo)準(zhǔn)消息息傳遞的的并行程程序設(shè)計計平臺,最初版版MPII 1.0本于于19994年66月推出出,目前前最新的的為MPPI 22.0版版,于119988年年低低推出;MPI的的具體實(shí)實(shí)現(xiàn):MMPICCH和LLAMMMPI,目前均均已實(shí)現(xiàn)現(xiàn)MPII 1.2版,適用于于任何并并行計算算平臺;部分并并行機(jī)已已實(shí)現(xiàn)MMPI 2.00版;MPI是是目前應(yīng)應(yīng)用最廣廣的并行行程序設(shè)設(shè)計平臺臺,幾乎乎被所有有并行計計算環(huán)境境(共享享和分布布式存儲儲并行機(jī)機(jī)、MPPP、機(jī)機(jī)群系統(tǒng)統(tǒng)等)和和流行的的多進(jìn)程程

9、操作系系統(tǒng)(UUNIXX、Wiindoows NT)所支持持,基于于它開發(fā)發(fā)的應(yīng)用用程序具具有最佳佳的可移移植性;目前高效效率的超超大規(guī)模模并行計計算(110000個處理理器)最最可信賴賴的平臺臺;工業(yè)、科科學(xué)與工工程計算算部門的的大量科科研和工工程軟件件(氣象象、石油油、地震震、空氣氣動力學(xué)學(xué)、核等等)目前前已經(jīng)移移植到MMPI平平臺,發(fā)發(fā)揮了重重要作用用;目前,MMPI相相對于PPVM:優(yōu)點(diǎn):功功能強(qiáng)大大,性能能高,適適應(yīng)面廣廣,使用用方便,可擴(kuò)展展性好;缺點(diǎn):進(jìn)進(jìn)程數(shù)不不能動態(tài)態(tài)改變;三、MPPI并行行程序設(shè)設(shè)計入門門MPI并并行程序序設(shè)計平平臺由標(biāo)標(biāo)準(zhǔn)消息息傳遞函函數(shù)及相相關(guān)輔助助函數(shù)

10、構(gòu)構(gòu)成,多多個進(jìn)程程通過調(diào)調(diào)用這些些函數(shù)(類似調(diào)調(diào)用子程程序),進(jìn)行通通信;MPI程程序:SPMDD執(zhí)行模模式:一一個程序序同時啟啟動多份份,形成成多個獨(dú)獨(dú)立的進(jìn)進(jìn)程,在在不同的的處理機(jī)機(jī)上運(yùn)行行,擁有有獨(dú)立的的內(nèi)存空空間,進(jìn)進(jìn)程間通通信通過過調(diào)用MMPI函函數(shù)來實(shí)實(shí)現(xiàn);每個進(jìn)程程開始執(zhí)執(zhí)行時,將獲得得一個唯唯一的序序號(rrankk)。例例如啟動動P個進(jìn)進(jìn)程,序序號依次次為0,1,P-1;MPI程程序例11:進(jìn)程程0發(fā)送送一個整整數(shù)給進(jìn)進(jìn)程1;進(jìn)程11將該數(shù)數(shù)加1,傳遞給給進(jìn)程22;進(jìn)程程2再將將該數(shù)加加1,再再傳遞給給進(jìn)程33;依次次類推,最后,進(jìn)程PP-1將將該數(shù)傳傳遞給進(jìn)進(jìn)程0,由進(jìn)程

11、程0負(fù)責(zé)責(zé)廣播該該數(shù)給所所有進(jìn)程程,并打打印輸出出。 prrogrram exxampple11 iinclludee “mpiif.hh” ! MMPI系系統(tǒng)頭文文件 iinteegerr staatuss(MPPI_SSTATTUS_SIZZE),my_rannk,pp,soourcce,ddestt,taag,iierrr,daatacc進(jìn)入入MPII系統(tǒng) ccalll MPPI_IInitt(ieerr) ccalll MPPI_CCommm_raank(MPII_COOMM_WORRLD,my_rannk,iierrr) ccalll MPPI_CCommm_siize(MPII_C

12、OOMM_WORRLD,p,iierrr)cc數(shù)據(jù)據(jù)交換 ddataa=0 ttag = 5 ssourrce= myy_raank-1 iif(ssourrce.eq.-1) soourcce=pp-1 ddestt =mmy_rrankk+1 iif(ddestt.eqq.p) deest=0 iif(mmy_rrankk.eqq.0) thhen ccalll MPPI_SSendd(daata,1,MMPI_INTTEGEER,ddestt,taag,MMPI_COMMM_WWORLLD,iierrr) ccalll MPPI_RRecvv(daata,1,MMPI_INTTEGEER

13、,ssourrce,tagg,MPPI_CCOMMM_WOORLDD,sttatuus,iierrr) eelsee ccalll MPPI_RRecvv(daata,1,MMPI_INTTEGEER,ssourrce,tagg,MPPI_CCOMMM_WOORLDD,sttatuus,iierrr) ddataa=daata+1 ccalll MPPI_SSendd(daata,1,MMPI_INTTEGEER,ddestt,taag,MMPI_COMMM_WWORLLD,iierrr) eendiifcc廣播播數(shù)據(jù) ccalll MPPI_BBcasst(ddataa,1,MPII_INN

14、TEGGER,0,MMPI_COMMM_WWORLLD,iierrr)cc打印輸輸出 iif(mmy_rrankk.eqq.0) thhen iif(ddataa.eqq.p-1) theen pprinnt *,”Succcesssfuul, datta=”,daata eelsee pprinnt *,”Faiilurre, datta=”,daata eendiif eendiifc calll MMPI_Finnaliize(ierrr) endd編譯命令令: mpiif777 -o exaam.ee eexammplee.f 運(yùn)行命令令: mpiirunn np 4 exxam.e

15、運(yùn)行效果果:MPPI系統(tǒng)統(tǒng)選擇相相同或不不同的44個處理理機(jī),在在每個處處理機(jī)上上運(yùn)行程程序代碼碼exaam.ee。 MPPI函數(shù)數(shù) 進(jìn)進(jìn)程0 進(jìn)程11 進(jìn)程程2 進(jìn)進(jìn)程3進(jìn)入MPI系統(tǒng) IInitt() Commm_raank() mmy_rrankk=0 mmyraank=1 myyrannk=22 my_rannk=33Commm_siize() pp=4 p=4 p=44 p=44 ttag=5,ddataa=0 taag=55,daata=0 tagg=5,datta=00 taag=55,daata=0 ssourrce=3 souurcee=0 soourcce=11 soour

16、cce=22 desst=11 deest=2 ddestt=3 desst=00數(shù)據(jù)交換換 ssendd() reecv() rrecvv() reecv() reccv() datta=ddataa+1 空 seend() 閑 daata=datta+11 等 sennd() 待 ddataa=daata+1 消息傳傳遞 sennd()Broaadcaast() ssendd() reecv() rrecvv() reecv()退出MPI系統(tǒng) ooutpput “datta”Finaalizze()3MPPI重要要概念進(jìn)程序號號(raank);各進(jìn)進(jìn)程通過過函數(shù)MMPI_Commm_rra

17、nkk()獲獲取各自自的序號號;消息號:消息的的標(biāo)號;通信器(Commmunnicaatorr):11)理解解為一類類進(jìn)程的的集合,且在該該集合內(nèi)內(nèi),進(jìn)程程間可以以相互通通信;類類比:郵郵局、電電話局、國際網(wǎng)網(wǎng);2)任何MMPI通通信函數(shù)數(shù)均必須須在某個個通信器器內(nèi)發(fā)生生;3) MPPI系統(tǒng)統(tǒng)提供省省缺的通通信器MMPI_COMMM_WWORLLD,所所有啟動動的MPPI進(jìn)程程通過調(diào)調(diào)用函數(shù)數(shù)MPII_Innit()包含含在該通通信器內(nèi)內(nèi);4)各進(jìn)程程通過函函數(shù)MPPI_CCommm_siize()獲取取通信器器包含的的(初始始啟動)的MPPI進(jìn)程程個數(shù);消息:分分為數(shù)據(jù)據(jù)(daata)和包裝

18、(envveloope)兩個部部分,其其中,包包裝由接接收進(jìn)程程序號、發(fā)送進(jìn)進(jìn)程序號號、消息標(biāo)標(biāo)號和通信器器四部分分組成,數(shù)據(jù)包包含用戶戶將要傳傳遞的內(nèi)內(nèi)容;進(jìn)程組:一類進(jìn)進(jìn)程的集集合,在在它的基基礎(chǔ)上,可以定定義新的的通信器器;基本數(shù)據(jù)據(jù)類型:對應(yīng)于于FORRTRAAN和CC語言的的內(nèi)部數(shù)數(shù)據(jù)類型型(INNTEGGER,REAAL,DDOUBBLE PREECISSIONN,COOMPLLEX,LOGGICAAL,CCHARRACTTER),MPPI系統(tǒng)統(tǒng)提供已已定義好好的對應(yīng)應(yīng)數(shù)據(jù)類類型(MMPI_INTTEGEER,MMPI_REAAL,MMPI_DOUUBLEE_PRRECIISIOO

19、N, MPII_COOMPLLEX,MPII_LOOGICCAL,MPII_CHHARAACTEER);自定義數(shù)數(shù)據(jù)類型型:基于于基本數(shù)數(shù)據(jù)類型型,用戶戶自己定定義的數(shù)數(shù)據(jù)類型型(后面面介紹);MPI對對象: MPII系統(tǒng)內(nèi)內(nèi)部定義義的數(shù)據(jù)據(jù)結(jié)構(gòu),包括數(shù)數(shù)據(jù)類型型、進(jìn)程程組、通通信器等等,它們們對用戶戶不透明明,在FFORTTRANN語言中中,所有有MPII對象均均必須說說明為“整型變變量INNTEGGER”;MPI聯(lián)聯(lián)接器(hanndlee):聯(lián)聯(lián)接MPPI對象象和用戶戶的橋梁梁,用戶戶可以通通過它訪訪問和參參與相應(yīng)應(yīng)MPII對象的的具體操操作;例例如,MMPI系系統(tǒng)內(nèi)部部提供的的通信器器M

20、PII_COOMM_WORRLD;在FOORTRRAN語語言中,所有MMPI聯(lián)聯(lián)接器均均必須說說明為“整型變變量INNTEGGER”;進(jìn)程拓?fù)鋼浣Y(jié)構(gòu):進(jìn)程組組內(nèi)部進(jìn)進(jìn)程之間間的一種種相互連連接結(jié)構(gòu)構(gòu),如333 網(wǎng)網(wǎng)格,將將在后面面介紹。 3 3 網(wǎng)格拓拓?fù)浣Y(jié)構(gòu)構(gòu)靜態(tài)進(jìn)程程個數(shù):進(jìn)程數(shù)數(shù)由命令令“mpiirunn np xxxx”初始確確定為xxxx個個,程序序執(zhí)行過過程中不不能動態(tài)態(tài)改變進(jìn)進(jìn)程的個個數(shù);消息緩存存區(qū):應(yīng)應(yīng)用程序序產(chǎn)生的的消息包包含的數(shù)數(shù)據(jù)所處處的內(nèi)存存空間;標(biāo)準(zhǔn)輸入入:所有有進(jìn)程的的標(biāo)準(zhǔn)輸輸入reead(*,*)均省省缺為當(dāng)當(dāng)前終端端屏幕,且只能能由0號號進(jìn)程執(zhí)執(zhí)行該操操作,其

21、其他進(jìn)程程需要這這些輸入入?yún)?shù),只能由由0號進(jìn)進(jìn)程執(zhí)行行數(shù)據(jù)廣廣播操作作;標(biāo)準(zhǔn)輸出出:所有有進(jìn)程可可以獨(dú)立立執(zhí)行標(biāo)標(biāo)準(zhǔn)輸出出wriite(*,*),但但其省缺缺為當(dāng)前前終端屏屏幕;4MPPI函數(shù)數(shù)格式:FORTTAN語語言中,最后一一個參數(shù)數(shù)為該函函數(shù)調(diào)用用是否成成功的標(biāo)標(biāo)志:00表示成成功,其其它表示示各種可可能的錯錯誤;C語言中中,該標(biāo)標(biāo)志又函函數(shù)參數(shù)數(shù)返回;C : ieerr=MPII_Coomm_rannk(mmyraank)F : MPPI_CCommm_raank(myrrankk,ieerr)5. MPII函數(shù)的的使用查查詢:由函數(shù)名名查詢: maan 函函數(shù)名 ( MMPI_X

22、xxxx), 注意意大小寫寫,例如如 maan MMPI_Commm_rrankk, mman MPII_Seend, maan MMPI_reccv.MPI函函數(shù)的學(xué)學(xué)習(xí)與使使用:注重MPPI函數(shù)數(shù)的各類類功能,由應(yīng)用用程序的的通信需需求出發(fā)發(fā),尋找找匹配的的函數(shù)類類型,在在查找具具體函數(shù)數(shù)名,采采用maan命令令可以查查詢該函函數(shù)的具具體參數(shù)數(shù)含義和和使用方方法。7. 一一般的MMPI程程序設(shè)計計流程圖圖程序參數(shù)說明Call MPI_Init ( ) 進(jìn)進(jìn)入MPPI系統(tǒng)統(tǒng),通信信器 MPPI_CCOMMM_WOORLDD形成Call MPI_Comm_rank ( )Call MPI_Co

23、mm_size ( )建立新的通信器、定義新的數(shù)據(jù)類型和進(jìn)程拓?fù)浣Y(jié)構(gòu)應(yīng)用程序?qū)嶓w:計算控制程序體;進(jìn)程間通信; 退出MMPI系系統(tǒng)Call MPI_Finalize ( )End四、初步步的MPPI消息息傳遞函函數(shù)1點(diǎn)對對點(diǎn)通信信(poointt-too-poointt)定義:給給定屬于于同一通通信器內(nèi)內(nèi)的兩個個進(jìn)程,其中一一個發(fā)送送消息,一個接接收消息息;MPI系系統(tǒng)定義義的所有有通信方方式均建建立在點(diǎn)點(diǎn)對點(diǎn)通通信之上上;四種模式式:標(biāo)準(zhǔn)準(zhǔn)模式、緩存區(qū)區(qū)模式、同步模模式、就就緒模式式;2標(biāo)準(zhǔn)準(zhǔn)模式點(diǎn)點(diǎn)對點(diǎn)通通信進(jìn)程可以以隨意地地發(fā)送(接收)消息,與是否否存在匹匹配的消消息接收收(發(fā)送送)進(jìn)程

24、程無關(guān);進(jìn)程0進(jìn)程1 發(fā)收匹匹配: 進(jìn)程2進(jìn)程1進(jìn)程0 發(fā)收不不匹配:兩類:阻塞式:消息發(fā)發(fā)送函數(shù)數(shù)返回,用戶可可以對消消息緩存存區(qū)進(jìn)行行處理,不會影影響已發(fā)發(fā)送的消消息數(shù)據(jù)據(jù);接受受函數(shù)返返回,用用戶可以以使用接接受到的的消息數(shù)數(shù)據(jù);非阻塞式式:發(fā)送送和接受受函數(shù)返返回后,必須調(diào)調(diào)用另一一類函數(shù)數(shù)來確保保它們的的正確完完成; 阻塞式式 非阻阻塞式 INTEEGERR AA INTTEGEER AA=1000 AA=1000MPI_Sennd(AA,1,.) MPPI_IIsennd(AA,1,)A=2000 AA=2000 消息數(shù)數(shù)據(jù): A=1100 A=1100 或 AA=2000 MPI

25、I_Issendd(A,1,flaag,) MPII_Waait(flaag,) A=2200消息數(shù)據(jù)據(jù): AA=1000 A=1000 3點(diǎn)對對點(diǎn)通信信函數(shù)舉舉例阻塞式標(biāo)標(biāo)準(zhǔn)消息息發(fā)送函函數(shù)MPI_Sennd(bbuf,couunt,dattatyype,desst,ttag,commm,iierrr) Reeal*8(iinteegerr,)buuf : 消消息發(fā)送送緩存區(qū)區(qū)起始地地址 (FForttrann, 用用戶的待待發(fā)送的的第一個個數(shù)據(jù)) inntegger coountt :bbuf起起始的數(shù)數(shù)據(jù)單元元個數(shù) inntegger daatattypee :數(shù)據(jù)類類型(基基本或用用戶

26、定義義的) inntegger deest : 接收收進(jìn)程序序號 inntegger taag : 消息息的標(biāo)號號 inntegger coomm : 通信器器 inntegger ieerr : 函函數(shù)調(diào)用用返回錯錯誤碼reall *88 aa(1000,1100)inteegerr bb(600,600)c發(fā)發(fā)送500個雙精精度數(shù)“a(55,200) : a(54,20)”到2號號進(jìn)程calll MPPI_SSendd( aa (55,200),550,MMPI_DOUUBLEE_PRRECIISIOON,22, & 999999,MPII_COOMM_WORRLD,ierrr )c發(fā)發(fā)送

27、200個整型型數(shù)“b(220,440) : bb(399,400)”到5號號進(jìn)程calll MPPI_SSendd( bb (220,440),20,MPII_DOOUBLLE_PPRECCISIION,5, & 999999,MPII_COOMM_WORRLD,ierrr )阻塞式標(biāo)標(biāo)準(zhǔn)消息息接收函函數(shù)MPI_Reccv(bbuf,couunt,dattatyype,desst,ttag,commm,sstattus, ieerr) Reeal*8(iinteegerr,)buuf : 消消息接收收緩存區(qū)區(qū)起始地地址 (FForttrann, 用用戶用于于接受的的第一個個數(shù)據(jù)) innteg

28、ger coountt :bbuf起起始的數(shù)數(shù)據(jù)單元元個數(shù) inntegger daatattypee :數(shù)據(jù)類類型(基基本或用用戶定義義的) inntegger deest : 發(fā)送送進(jìn)程序序號 inntegger taag : 消息息的標(biāo)號號 inntegger coomm : 通信器器 inntegger sttatuus(MMPI_STAATUSS_SIIZE) : 接收狀狀態(tài)數(shù)組組; inntegger ieerr : 函函數(shù)調(diào)用用返回錯錯誤碼reall *88 aa(1000,1100)inteegerr bb(600,600)c從從2號進(jìn)進(jìn)程接收收50個個雙精度度數(shù)到“a(55,

29、200) : a(54,20)”calll MPPI_RRecvv( aa (55,200),550,MMPI_DOUUBLEE_PRRECIISIOON,22, & 999999,MPII_COOMM_WORRLD,staatuss,ieerr )c從從5號進(jìn)進(jìn)程接收收20個個整型數(shù)數(shù)到“b(220,440) : bb(399,400)”calll MPPI_RRecvv( bb (220,440),20,MPII_DOOUBLLE_PPRECCISIION,5, & 999999,MPII_COOMM_WORRLD,staatuss,ieerr )其他點(diǎn)對對點(diǎn)通信信函數(shù):參考手手冊;4聚合

30、合通信(Colllecctivve CCommmuniicattionn)定義:屬屬于同一一通信器器的所有有MPII進(jìn)程均均必須參參與的通通信操作作;參與方式式:調(diào)用用同一聚聚合通信信函數(shù);函數(shù)類型型:同步通信信函數(shù):所有進(jìn)進(jìn)程在某某個程序序點(diǎn)上同同步; MMPI_Barrrieer ( coomm , iierrr )全局通信信函數(shù): 廣播: MPII_Bccastt(buuf,ccounnt,ddtyppe,rroott,coomm,ierrr)roott 發(fā)送送 ottherr 接受受收集:MMPI_Gattherr(buufs,buffr,ccounnt,ddtyppe,rroott,

31、coomm,ierrr)all 發(fā)送大大小一致致的數(shù)據(jù)據(jù)塊 rooot接接受并按按序號連連續(xù)存放放全收集:MPII_Alllgaatheer()all 發(fā)送 alll接受受 索引收集集:MPPI_GGathhervv() aall 發(fā)送大大小不等等的數(shù)據(jù)據(jù)塊 rooot接接受并按按索引間間斷存放放索引全收收集:MMPI_Alllgattherrv() aall 發(fā)送大大小不等等的數(shù)據(jù)據(jù)塊 Alll接受受并按索索引間斷斷存放分散:MMPI_Scaatteer(bbufss,buufr,couunt,dtyype,rooot,ccommm,ieerr)roott 發(fā)送送連續(xù)的的大小一一致數(shù)據(jù)據(jù)塊

32、Alll 接接受索引分散散: MMPI_Scaatteerv()roott 發(fā)送送間斷的的大小不不一致數(shù)數(shù)據(jù)塊 Alll 接接受全交換: MMPI_Allltoaall() All 發(fā)送大大小一致致數(shù)據(jù)塊塊到各進(jìn)進(jìn)程 Alll接受受大小一一致數(shù)據(jù)據(jù)塊并按按序號連連續(xù)存放放索引全交交換: MPII_Allltooalllv()全局規(guī)約約(gllobaal rreduuctiion)函數(shù):規(guī)約: MPPI_RReduuce(sbuuf,rrbuff,coountt,dttypee,opp,rooot, commm,iierrr);規(guī)約操作作類型oop : MMPI_SUMM, MMPI_MINN,

33、 MMPI_MAXX, MPII_PRROD等等12種種; 例子: 求求兩個向向量的內(nèi)內(nèi)積,并并將結(jié)果果返回進(jìn)進(jìn)程0 suubrooutiine parr_bllas11(m,a,bb,c,commm) reeal a(m),b(mm) ! loocall sllicee off arrrayy reeal c ! reesullt reeal suum inntegger m,commm,ii,ieerrcc !llocaal ssum ssum=0.00d0 ddo i=11,m summ=suum+aa(i)*bb(i) eendddoc ! glooball suum caall MP

34、II_Reeducce(ssum,c,11,MPPI_RREALL,MPPI_SSUM,0, & commm,iierrr)全規(guī)約: MPPI_AAllrreduuce(), 除要求求將結(jié)果果返回到到所有進(jìn)進(jìn)程外,與MPPI_RReduuce()一致致;規(guī)約分散散: MMPI_Redducee_sccattter(),將將規(guī)約結(jié)結(jié)果分散散到各進(jìn)進(jìn)程;并行前綴綴計算:MPII_Sccan()五、作業(yè)業(yè)一 P個進(jìn)進(jìn)程,第第i個進(jìn)程程將其包包含1000個雙雙精度數(shù)數(shù)據(jù)的數(shù)數(shù)組A(1000)傳送送給第(i +11)mood PP個進(jìn)程程,同時時從第(i -11)mood PP個進(jìn)程程接受1100個個雙

35、精度度數(shù)據(jù)到到另一個個數(shù)組BB(1000)中中,令數(shù)數(shù)組C(1:1100)=A(1:1100)+B(1:1100),然后后求數(shù)組組C(11:1000)各各元素的的類加和和,最后后在將該該和全部部累加到到0號進(jìn)進(jìn)程,打打印并輸輸出該和和。 提示:可在例例1的基基礎(chǔ)上修修改,編編制。六、先進(jìn)進(jìn)的MPPI函數(shù)數(shù)1自定定義數(shù)據(jù)據(jù)類型定義:在在MPII系統(tǒng)已已定義的的基本數(shù)數(shù)據(jù)類型型(MPPI_IINTEEGERR,MPPI_RREALL,MPPI_DDOUBBLE_PREECISSIONN,MPPI_CCHARRACTTER等等)基礎(chǔ)礎(chǔ)上,用用戶根據(jù)據(jù)需求,自己定定義的數(shù)數(shù)據(jù)類型型; reeal a(

36、10000) 發(fā)送 : a(55:9) caall MPII_Seend(a(55), 5, MPII_ RREALL,.) OK 發(fā)送 : a(55),aa(7),a(9),a(111),a(113),a(115) ddo ii=5, 155, 22 ccalll MPPI_SSendd(a(i),11,MPPI_RREALL,.) OOK eendddo 缺點(diǎn): 多多次發(fā)送送,效率率低,程程序設(shè)計計繁瑣 改進(jìn): 用戶戶定義新新的數(shù)據(jù)據(jù)類型 caall MPPI_TTypee_veectoor(55,1,2,MMPI_REAAL,nnewttypee,ieerr) ccalll MMPI_T

37、yppe_ccommmit(newwtyppe , ieerr) 提交 ccalll MMPI_Sennd(aa(5), 11, nnewttypee,.) ccalll MMPI_Typpe_ffreee(neewtyype,ierrr) 釋放放在用戶已已定義好好的數(shù)據(jù)據(jù)類型基基礎(chǔ)上,還可以以進(jìn)一步步定義新新的數(shù)據(jù)據(jù)類型;用戶定義義的數(shù)據(jù)據(jù)類型,必須由由函數(shù)MMPI_Typpe_CCommmit()提交交給MPPI系統(tǒng)統(tǒng);此后后,就可可以象基基本數(shù)據(jù)據(jù)類型一一樣,在在消息傳傳遞函數(shù)數(shù)中重復(fù)復(fù)使用;并由函函數(shù)MPPI_TTypee_frree()釋放放;具體自定定義數(shù)據(jù)據(jù)類型函函數(shù),請請參考手

38、手冊;2進(jìn)程程拓?fù)浣Y(jié)結(jié)構(gòu)定義:根根據(jù)應(yīng)用用程序的的特征,在進(jìn)程程間建立立的一種種虛擬拓拓?fù)溥B接接方式,以方便便并行程程序設(shè)計計和提高高并行計計算性能能;例:二維維規(guī)則區(qū)區(qū)域,33*3 區(qū)域分分解,99個進(jìn)程程,建立立Carrtessionn坐標(biāo),進(jìn)程(i,j)的的相鄰進(jìn)進(jìn)程為 (i-1,j), (ii+1,j), (ii,j-1), (ii,j+1);2(0,2)1(0,1)0(0,0)2105(1,2)4(1,1)3(1,0)4358762(2,2)0(2,0)1(2,1)3并行行I/OO各進(jìn)程可可以類似似于串行行程序獨(dú)獨(dú)立地讀讀/寫不不同的文文件;MPICCH 11.2以以上版本本支持所所

39、有進(jìn)程程并行讀讀寫同一一個文件件;七、MPPI并行行程序示示例2一維Diiricchleet問題題:- uu (xx) = f(x) xx =(0,11)u(0)=0.0, u(11)=00.0, f(x)=4.00 算法法: 均勻勻網(wǎng)格有有限差分分離散,Jaccobii迭代求求解。 區(qū)區(qū)域分解解:npprocc=4, n = 221, ns = (n-11)/nnprooc+11 =66 0 11 22 33 0 00.5 11 proograam exaamplle imppliccit reaal*88 (aa-h,o-zz) inccludde “mpiif.hh” parrameet

40、err ( n = 211, nnprooc = 4, nss = (n-1)/nprroc+1) parrameeterr ( errrtoll=1.e-44,niitmaax=1100) dimmenssionn uu(nss), f(nns), sooluttionn(nss),uuoldd(0:ns) ! u(00) : lleftt duummyy grrid poiint ! u(nns+11) : rigght dummmy griid ppoinnt inttegeer sttatuus(MMPI_STAATUSS_SIIZE),siizecc entter intto MMP

41、I calll MPII_Innit(ierrr) calll MPII_Coomm_rannk(MMPI_COMMM_WWORLLD,mmyraank,ierrr) calll MPII_Coomm_sizze(MMPI_COMMM_WWORLLD,ssizee,ieerr) if(sizze.nne.nnprooc) theen priint *,”+ errrorrs ffor nummberr off prroceess disstriibuttionns +” gotto 8888 enddifcc asssignn innitiial valluess h = 11.0dd0/(n

42、-11) ! disscreete steep ssizee xstt = myrrankk*(nns-11)*hh ! staart x-ccoorrdinnatee off loocall doomaiin nloocall=nss-1 ! loocall nuumbeer oof ggridd poointt istt=1 if(myrrankk.eqq.0) isst=iist+1 do i=11,nss f(ii)=44.0dd0 u(ii)=00.0dd0 uolld(ii)=00.0dd0 xauuxi=xstt+(ii-1)*h sollutiion(i)= -22*xaaux

43、ii*(xxauxxi-11.0dd0) endddo u(00)=00.0dd0c nlpp=myyrannk-11 ! lleftt prroceess nrpp=myyrannk+11 ! riightt prroceess if(nlpp.ltt.0) nllp=MMPI_PROOC_NNULLL if(nrpp.gtt.npprocc-1) nnrp=MPII_PRROC_NULLL ! nuull proocesss, nulll ccommmuniicattionn opperaatiooncc Jaccobii itteraatinng nitt =0 ! cuurreent

44、iteerattionnscconttinuuec swaappiing dummmy eleemennts aloong pseeudoo-boounddaryy calll MMPI_Sennd(uuoldd(1),1,MPII_DOOUBLLE_PPRECCISIION, & nlpp,niit, MPII_COOMM_WORRLD,ierrr) calll MMPI_Sennd(uuoldd(nllocaal),1, MPII_DOOUBLLE_PPRECCISIION, & nrpp,niit,MMPI_COMMM_WWORLLD,iierrr) calll MMPI_Reccv(u

45、uoldd(nllocaal+11),11,MPPI_DDOUBBLE_PREECISSIONN, & nrpp,niit, MPII_COOMM_WORRLD,staatuss,ieerr) calll MMPI_Reccv(uuoldd(0),1, MPPI_DDOUBBLE_PREECISSIONN, & nlpp,niit, MPII_COOMM_WORRLD,staatuss, iierrr)c iteerattingg annd cconvverggencc chheckkingg errror=0.00d0 do i=istt,nllocaal uu(i)=(hh*h*f(ii)

46、+uuoldd(i-1)+uolld(ii+1)/22 xxauxxi= dabbs(uu(i)-sooluttionn(i) iif(ddabss(xaauxii).ggt.eerroor) errrorr=xaauxii ennddoocc maxximuum eerroor calll MMPI_Alllredducee(errrorr,xaauxii,1,MPII_DOOUBLLE_PPRECCISIION,MPII_MAAX, & MPPI_CCOMMM_WOORLDD,ieerr) errror=xauuxi if(errror.gt.errrtoll) tthenn doo i=

47、istt,nllocaal uoold(i)=u(ii) ennddoo iff(niit.llt.nnitmmax) thhen nitt=niit+11 if(myrrankk.eqq.0) prrintt *,niit=,niit, errrorr=,errror gotto 110 enndiff enndiffc iff(myyrannk.eeq.00) tthenn if(nitt.lee.niitmaax.aand.errror.le.errrtoll) tthenn wrritee(*,1000) nnit formmat(1x, “Suucceessffullly ttoucch tthe exaact sollutiion aftter nitt = ”, & i4, “ iteerattionns”) elsse wrritee(*,2000) nnit forrmatt(1xx, “Faail to touuch thee exxactt sooluttionn affterr niit = ”, & i4, “ iteerattionns”) enddif enndiffccalll MPPI_FFinaalizze(iierrr)c ennd1. 編譯 LINNUX : mp

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論