版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、PAGE 1PAGE 41國家9773項目目高性能能計算環(huán)環(huán)境支持持講座MPI與與PETTSc莫則堯(北京應應用物理理與計算算數(shù)學研研究所)日期內(nèi)容8155上午進程與消消息傳遞遞、MPI應應用現(xiàn)狀狀、MPI并并行程序序設計入入門、初步的MMPI消消息傳遞遞函數(shù)下午作業(yè)一、討論8166上午作業(yè)一講講評、先進的MMPI函函數(shù)、并行程序序示例22、MPI的的發(fā)展下午作業(yè)二、討論8177上午作業(yè)二講講評、并行可擴擴展科學學計算工工具箱PPETSSc介紹紹下午PETSSc程序序示例個人介紹紹莫則堯,男,漢漢族,119711年7月月生,副副研究員員:19922年國防防科技大大學應用用數(shù)學專專業(yè)本科科畢業(yè);
2、19977年國防防科技大大學計算算機應用用專業(yè)并并行算法法方向博博士畢業(yè)業(yè);19999年北京京應用物物理與計計算數(shù)學學數(shù)學博博士后流流動站出出站,并并留所工工作;主要從事事大規(guī)模??茖W與與工程并并行計算算研究。消息傳遞遞并行編編程環(huán)境境MPII進程與消消息傳遞遞MPI環(huán)環(huán)境的應應用現(xiàn)狀狀MPI并并行程序序設計入入門(程程序例11)初步的MMPI消消息傳遞遞函數(shù)作業(yè)一先進的MMPI函函數(shù)MPI并并行程序序示例22(求解解-u=ff);MPI環(huán)環(huán)境的發(fā)發(fā)展作業(yè)二一、進程程與消息息傳遞1單個個進程(proocesss)進程是一一個程序序,同時時包含它它的執(zhí)行行環(huán)境(內(nèi)存、寄存器器、程序序計數(shù)器器等)
3、,是操作作系統(tǒng)中中獨立存存在的可可執(zhí)行的的基本程程序單位位;通俗理解解:串行行應用程程序編譯譯形成的的可執(zhí)行行代碼,分為“指令”和“數(shù)據(jù)”兩個部部分,并并在程序序執(zhí)行時時“獨立地地申請和和占有”內(nèi)存空空間,且且所有計計算均局局限于該該內(nèi)存空空間。進程1進程2 內(nèi)存2單機機內(nèi)多個個進程:多個進程程可以同同時存在在于單機機內(nèi)同一一操作系系統(tǒng):由由操作系系統(tǒng)負責責調(diào)度分分時共享享處理機機資源(CPUU、內(nèi)存存、存儲儲、外設設等);進程間相相互獨立立(內(nèi)存空空間不相相交):在操作作系統(tǒng)調(diào)調(diào)度下各各自獨立立地運行行,例如如多個串串行應用用程序在在同一臺臺計算機機中運行行;進程間可可以相互互交換信信息:例
4、例如數(shù)據(jù)據(jù)交換、同步等等待,消消息是這這些交換換信息的的基本單單位,消消息傳遞遞是指這這些信息息在進程程間的相相互交換換,是實實現(xiàn)進程程間通信信的唯一一方式;最基本的的消息傳傳遞操作作:發(fā)送送消息(sennd)、接受消消息(rreceeivee)、進進程同步步(baarriier)、規(guī)約約(reeducctioon);消息傳遞遞的實現(xiàn)現(xiàn):共享享內(nèi)存或或信號量量,用戶戶不必關(guān)關(guān)心; 進程11 進程程2 發(fā)送送數(shù)據(jù) 接收收數(shù)據(jù) (消息傳傳遞) 內(nèi)存空空間3包含含于通過過網(wǎng)絡聯(lián)聯(lián)接的不不同計算算機的多多個進程程:進程獨立立存在:進程位位于不同同的計算算機,由由各自獨獨立的操操作系統(tǒng)統(tǒng)調(diào)度,享有獨獨立
5、的CCPU和和內(nèi)存資資源;進程間相相互信息息交換:消息傳傳遞;消息傳遞遞的實現(xiàn)現(xiàn):基于于網(wǎng)絡ssockket機機制,用用戶不必必關(guān)心;4消息息傳遞庫庫函數(shù):應用程序序接口(APII):提提供給應應用程序序(FOORTRRAN、C、CC+語語言)的的可直接接調(diào)用的的完成進進程間消消息傳遞遞的某項項特定功功能的函函數(shù);消息傳遞遞庫:所所有定義義的消息息傳遞函函數(shù)編譯譯形成的的軟件庫庫,調(diào)用用其內(nèi)部部函數(shù)的的應用程程序,通通過與之之聯(lián)接,即可成成為可并并行執(zhí)行行的程序序;目前流行行的消息息傳遞函函數(shù)庫:PVMM 3.3.111、MMPICCH 11.2、LAMMMPII 6.4等;5標準準消息傳傳遞
6、界面面(MPPI:MMesssagee Paassiing Intterffacee):MPI標標準:根根據(jù)應用用程序?qū)ο鱾鬟f功能能的需求求,全球球工業(yè)、應用和和研究部部門聯(lián)合合推出標標準的消消息傳遞遞界面函函數(shù),不不考慮其其具體實實現(xiàn),以以保證并并行應用用程序的的可移植植性;MPI的的具體實實現(xiàn):消消息傳遞遞庫函數(shù)數(shù),目前前有影響響的為MMPICCH和LLAMMMPI,我們注注重MPPICHH系列;6基于于消息傳傳遞的并并行程序序執(zhí)行模模式:SPMDD模式:單程序序多數(shù)據(jù)據(jù)流并行應用程序代碼 可執(zhí)執(zhí)行代碼碼 運行行復制多份并獨立執(zhí)行,形成多個獨立的進程 進程三(內(nèi)存)進程二(內(nèi)存)進程
7、一(內(nèi)存)消息傳遞(交換數(shù)據(jù)、同步、規(guī)約)協(xié)同MPMDD模式:多程序序多數(shù)據(jù)據(jù)流,除除初始啟啟動多個個可執(zhí)行行代碼,其余與與SPMMD模式式一致;7共享享存儲與與分布式式存儲:屬于并行行機體系系結(jié)構(gòu)的的范疇,與消息息傳遞并并行程序序設計平平臺無關(guān)關(guān); 節(jié)點CPUCPU CPUCPUCPUCPUMMM互連網(wǎng)絡互連網(wǎng)絡MMM 分布式式存儲 共共享存儲儲消息傳遞遞是相對對于進程程間通信信方式而而言的,與具體體并行機機存儲模模式無關(guān)關(guān),任何何支持進進程間通通信的并并行機,均可支支持消息息傳遞并并行程序序設計;幾乎所有有共享和和分布存存儲并行行計算環(huán)環(huán)境均支支持進程程間的消消息傳遞遞通信;二、MPPI環(huán)
8、境境的應用用現(xiàn)狀MPI(消息傳傳遞界面面)是全全球工業(yè)業(yè)、政府府和科研研部門聯(lián)聯(lián)合推出出的適合合進程間間進行標標準消息息傳遞的的并行程程序設計計平臺,最初版版MPII 1.0本于于19994年66月推出出,目前前最新的的為MPPI 22.0版版,于119988年年低低推出;MPI的的具體實實現(xiàn):MMPICCH和LLAMMMPI,目前均均已實現(xiàn)現(xiàn)MPII 1.2版,適用于于任何并并行計算算平臺;部分并并行機已已實現(xiàn)MMPI 2.00版;MPI是是目前應應用最廣廣的并行行程序設設計平臺臺,幾乎乎被所有有并行計計算環(huán)境境(共享享和分布布式存儲儲并行機機、MPPP、機機群系統(tǒng)統(tǒng)等)和和流行的的多進程程
9、操作系系統(tǒng)(UUNIXX、Wiindoows NT)所支持持,基于于它開發(fā)發(fā)的應用用程序具具有最佳佳的可移移植性;目前高效效率的超超大規(guī)模模并行計計算(110000個處理理器)最最可信賴賴的平臺臺;工業(yè)、科科學與工工程計算算部門的的大量科科研和工工程軟件件(氣象象、石油油、地震震、空氣氣動力學學、核等等)目前前已經(jīng)移移植到MMPI平平臺,發(fā)發(fā)揮了重重要作用用;目前,MMPI相相對于PPVM:優(yōu)點:功功能強大大,性能能高,適適應面廣廣,使用用方便,可擴展展性好;缺點:進進程數(shù)不不能動態(tài)態(tài)改變;三、MPPI并行行程序設設計入門門MPI并并行程序序設計平平臺由標標準消息息傳遞函函數(shù)及相相關(guān)輔助助函數(shù)
10、構(gòu)構(gòu)成,多多個進程程通過調(diào)調(diào)用這些些函數(shù)(類似調(diào)調(diào)用子程程序),進行通通信;MPI程程序:SPMDD執(zhí)行模模式:一一個程序序同時啟啟動多份份,形成成多個獨獨立的進進程,在在不同的的處理機機上運行行,擁有有獨立的的內(nèi)存空空間,進進程間通通信通過過調(diào)用MMPI函函數(shù)來實實現(xiàn);每個進程程開始執(zhí)執(zhí)行時,將獲得得一個唯唯一的序序號(rrankk)。例例如啟動動P個進進程,序序號依次次為0,1,P-1;MPI程程序例11:進程程0發(fā)送送一個整整數(shù)給進進程1;進程11將該數(shù)數(shù)加1,傳遞給給進程22;進程程2再將將該數(shù)加加1,再再傳遞給給進程33;依次次類推,最后,進程PP-1將將該數(shù)傳傳遞給進進程0,由進程
11、程0負責責廣播該該數(shù)給所所有進程程,并打打印輸出出。 prrogrram exxampple11 iinclludee “mpiif.hh” ! MMPI系系統(tǒng)頭文文件 iinteegerr staatuss(MPPI_SSTATTUS_SIZZE),my_rannk,pp,soourcce,ddestt,taag,iierrr,daatacc進入入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 運行命令令: mpiirunn np 4 exxam.e
15、運行效果果:MPPI系統(tǒng)統(tǒng)選擇相相同或不不同的44個處理理機,在在每個處處理機上上運行程程序代碼碼exaam.ee。 MPPI函數(shù)數(shù) 進進程0 進程11 進程程2 進進程3進入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重要要概念進程序號號(raank);各進進程通過過函數(shù)MMPI_Commm_rra
17、nkk()獲獲取各自自的序號號;消息號:消息的的標號;通信器(Commmunnicaatorr):11)理解解為一類類進程的的集合,且在該該集合內(nèi)內(nèi),進程程間可以以相互通通信;類類比:郵郵局、電電話局、國際網(wǎng)網(wǎng);2)任何MMPI通通信函數(shù)數(shù)均必須須在某個個通信器器內(nèi)發(fā)生生;3) MPPI系統(tǒng)統(tǒng)提供省省缺的通通信器MMPI_COMMM_WWORLLD,所所有啟動動的MPPI進程程通過調(diào)調(diào)用函數(shù)數(shù)MPII_Innit()包含含在該通通信器內(nèi)內(nèi);4)各進程程通過函函數(shù)MPPI_CCommm_siize()獲取取通信器器包含的的(初始始啟動)的MPPI進程程個數(shù);消息:分分為數(shù)據(jù)據(jù)(daata)和包裝
18、(envveloope)兩個部部分,其其中,包包裝由接接收進程程序號、發(fā)送進進程序號號、消息標標號和通信器器四部分分組成,數(shù)據(jù)包包含用戶戶將要傳傳遞的內(nèi)內(nèi)容;進程組:一類進進程的集集合,在在它的基基礎上,可以定定義新的的通信器器;基本數(shù)據(jù)據(jù)類型:對應于于FORRTRAAN和CC語言的的內(nèi)部數(shù)數(shù)據(jù)類型型(INNTEGGER,REAAL,DDOUBBLE PREECISSIONN,COOMPLLEX,LOGGICAAL,CCHARRACTTER),MPPI系統(tǒng)統(tǒ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ù)類型型、進程程組、通通信器等等,它們們對用戶戶不透明明,在FFORTTRANN語言中中,所有有MPII對象均均必須說說明為“整型變變量INNTEGGER”;MPI聯(lián)聯(lián)接器(hanndlee):聯(lián)聯(lián)接MPPI對象象和用戶戶的橋梁梁,用戶戶可以通通過它訪訪問和參參與相應應MPII對象的的具體操操作;例例如,MMPI系系統(tǒng)內(nèi)部部提供的的通信器器M
20、PII_COOMM_WORRLD;在FOORTRRAN語語言中,所有MMPI聯(lián)聯(lián)接器均均必須說說明為“整型變變量INNTEGGER”;進程拓撲撲結(jié)構(gòu):進程組組內(nèi)部進進程之間間的一種種相互連連接結(jié)構(gòu)構(gòu),如333 網(wǎng)網(wǎng)格,將將在后面面介紹。 3 3 網(wǎng)格拓拓撲結(jié)構(gòu)構(gòu)靜態(tài)進程程個數(shù):進程數(shù)數(shù)由命令令“mpiirunn np xxxx”初始確確定為xxxx個個,程序序執(zhí)行過過程中不不能動態(tài)態(tài)改變進進程的個個數(shù);消息緩存存區(qū):應應用程序序產(chǎn)生的的消息包包含的數(shù)數(shù)據(jù)所處處的內(nèi)存存空間;標準輸入入:所有有進程的的標準輸輸入reead(*,*)均省省缺為當當前終端端屏幕,且只能能由0號號進程執(zhí)執(zhí)行該操操作,其
21、其他進程程需要這這些輸入入?yún)?shù),只能由由0號進進程執(zhí)行行數(shù)據(jù)廣廣播操作作;標準輸出出:所有有進程可可以獨立立執(zhí)行標標準輸出出wriite(*,*),但但其省缺缺為當前前終端屏屏幕;4MPPI函數(shù)數(shù)格式:FORTTAN語語言中,最后一一個參數(shù)數(shù)為該函函數(shù)調(diào)用用是否成成功的標標志:00表示成成功,其其它表示示各種可可能的錯錯誤;C語言中中,該標標志又函函數(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ù)的學學習與使使用:注重MPPI函數(shù)數(shù)的各類類功能,由應用用程序的的通信需需求出發(fā)發(fā),尋找找匹配的的函數(shù)類類型,在在查找具具體函數(shù)數(shù)名,采采用maan命令令可以查查詢該函函數(shù)的具具體參數(shù)數(shù)含義和和使用方方法。7. 一一般的MMPI程程序設計計流程圖圖程序參數(shù)說明Call MPI_Init ( ) 進進入MPPI系統(tǒng)統(tǒng),通信信器 MPPI_CCOMMM_WOORLDD形成Call MPI_Comm_rank ( )Call MPI_Co
23、mm_size ( )建立新的通信器、定義新的數(shù)據(jù)類型和進程拓撲結(jié)構(gòu)應用程序?qū)嶓w:計算控制程序體;進程間通信; 退出MMPI系系統(tǒng)Call MPI_Finalize ( )End四、初步步的MPPI消息息傳遞函函數(shù)1點對對點通信信(poointt-too-poointt)定義:給給定屬于于同一通通信器內(nèi)內(nèi)的兩個個進程,其中一一個發(fā)送送消息,一個接接收消息息;MPI系系統(tǒng)定義義的所有有通信方方式均建建立在點點對點通通信之上上;四種模式式:標準準模式、緩存區(qū)區(qū)模式、同步模模式、就就緒模式式;2標準準模式點點對點通通信進程可以以隨意地地發(fā)送(接收)消息,與是否否存在匹匹配的消消息接收收(發(fā)送送)進程
24、程無關(guān);進程0進程1 發(fā)收匹匹配: 進程2進程1進程0 發(fā)收不不匹配:兩類:阻塞式:消息發(fā)發(fā)送函數(shù)數(shù)返回,用戶可可以對消消息緩存存區(qū)進行行處理,不會影影響已發(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點對對點通信信函數(shù)舉舉例阻塞式標標準消息息發(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 : 接收收進程序序號 inntegger taag : 消息息的標號號 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號號進程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號號進程calll MPPI_SSendd( bb (220,440),20,MPII_DOOUBLLE_PPRECCISIION,5, & 999999,MPII_COOMM_WORRLD,ierrr )阻塞式標標準消息息接收函函數(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ā)送送進程序序號 inntegger taag : 消息息的標號號 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號進進程接收收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號進進程接收收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 )其他點對對點通信信函數(shù):參考手手冊;4聚合
30、合通信(Colllecctivve CCommmuniicattionn)定義:屬屬于同一一通信器器的所有有MPII進程均均必須參參與的通通信操作作;參與方式式:調(diào)用用同一聚聚合通信信函數(shù);函數(shù)類型型:同步通信信函數(shù):所有進進程在某某個程序序點上同同步; 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ù)塊塊到各進進程 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é)果果返回進進程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é)果果返回到到所有進進程外,與MPPI_RReduuce()一致致;規(guī)約分散散: MMPI_Redducee_sccattter(),將將規(guī)約結(jié)結(jié)果分散散到各進進程;并行前綴綴計算:MPII_Sccan()五、作業(yè)業(yè)一 P個進進程,第第i個進程程將其包包含1000個雙雙精度數(shù)數(shù)據(jù)的數(shù)數(shù)組A(1000)傳送送給第(i +11)mood PP個進程程,同時時從第(i -11)mood PP個進程程接受1100個個雙
35、精度度數(shù)據(jù)到到另一個個數(shù)組BB(1000)中中,令數(shù)數(shù)組C(1:1100)=A(1:1100)+B(1:1100),然后后求數(shù)組組C(11:1000)各各元素的的類加和和,最后后在將該該和全部部累加到到0號進進程,打打印并輸輸出該和和。 提示:可在例例1的基基礎上修修改,編編制。六、先進進的MPPI函數(shù)數(shù)1自定定義數(shù)據(jù)據(jù)類型定義:在在MPII系統(tǒng)已已定義的的基本數(shù)數(shù)據(jù)類型型(MPPI_IINTEEGERR,MPPI_RREALL,MPPI_DDOUBBLE_PREECISSIONN,MPPI_CCHARRACTTER等等)基礎礎上,用用戶根據(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 缺點: 多多次發(fā)送送,效率率低,程程序設計計繁瑣 改進: 用戶戶定義新新的數(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ù)類型基基礎上,還可以以進一步步定義新新的數(shù)據(jù)據(jù)類型;用戶定義義的數(shù)據(jù)據(jù)類型,必須由由函數(shù)MMPI_Typpe_CCommmit()提交交給MPPI系統(tǒng)統(tǒng);此后后,就可可以象基基本數(shù)據(jù)據(jù)類型一一樣,在在消息傳傳遞函數(shù)數(shù)中重復復使用;并由函函數(shù)MPPI_TTypee_frree()釋放放;具體自定定義數(shù)據(jù)據(jù)類型函函數(shù),請請參考手
38、手冊;2進程程拓撲結(jié)結(jié)構(gòu)定義:根根據(jù)應用用程序的的特征,在進程程間建立立的一種種虛擬拓拓撲連接接方式,以方便便并行程程序設計計和提高高并行計計算性能能;例:二維維規(guī)則區(qū)區(qū)域,33*3 區(qū)域分分解,99個進程程,建立立Carrtessionn坐標,進程(i,j)的的相鄰進進程為 (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各進程可可以類似似于串行行程序獨獨立地讀讀/寫不不同的文文件;MPICCH 11.2以以上版本本支持所所
39、有進程程并行讀讀寫同一一個文件件;七、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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 集體產(chǎn)權(quán)房租租賃合同
- 市委機關(guān)維修合同范例
- 超市租房合同范例
- 親子獎勵合同范例寫
- 集體租田地合同范例
- 工資支付合同范例
- 分紅合作共贏合同范例
- 武漢食品運輸合同范例
- 廠房水泵銷售合同范例
- 磷石膏購銷合同范例
- 物業(yè)公司安全生產(chǎn)檢查表
- 室內(nèi)配套設備家具、家電及窗簾等項目供貨服務方案技術(shù)投標方案
- 公司規(guī)章制度清單
- 《高效能人士的七個習慣》PPT演講模板
- 獨領(lǐng)風騷的古代技術(shù)創(chuàng)造
- 實用俄語會話知到章節(jié)答案智慧樹2023年山東交通學院
- 廣西南寧市2022-2023學年四年級數(shù)學第一學期期末學業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 米諾環(huán)素治療痤瘡進展課件
- 管理英語4寫作
- 國家電網(wǎng)招聘(計算機類)專業(yè)知識筆試歷年考試真題匯總(附答案)
- 義務教育物理課程標準(2022年版)測試卷(含答案)
評論
0/150
提交評論