




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章消息傳遞程序設(shè)計(jì)MPI劉軼北京航空航天大學(xué)計(jì)算機(jī)學(xué)院從程序員視角看,并行體系結(jié)構(gòu)主要分為兩類:共享存儲(chǔ)(shared-memory)系統(tǒng)
典型平臺(tái): -基于多核處理器的計(jì)算機(jī)-SMP及NUMA體系結(jié)構(gòu)計(jì)算機(jī)②消息傳遞(message-passing)系統(tǒng) -機(jī)群系統(tǒng)本章內(nèi)容幾種主流的并行編程接口PthreadsOpenMPMPI編程模型線程共享內(nèi)存消息傳遞面向系統(tǒng)結(jié)構(gòu)共享內(nèi)存共享內(nèi)存分布式內(nèi)存或共享內(nèi)存通信模型共享內(nèi)存地址共享內(nèi)存地址消息傳遞或共享內(nèi)存地址并行粒度粗或細(xì)細(xì)粗或細(xì)同步顯式隱式隱式或顯式實(shí)現(xiàn)方式程序庫編譯器程序庫
本章內(nèi)容
3.1MPI并行環(huán)境簡介
3.2點(diǎn)到點(diǎn)通信
3.3組和通信子
3.4集合通信
3.5MPI與多線程3.1MPI并行環(huán)境簡介3.1MPI并行環(huán)境簡介一、簡介MPI---MessagePassingInterface面向消息傳遞型并行系統(tǒng)的編程接口主要面向機(jī)群系統(tǒng)(cluster)MPI之前曾廣泛使用另一種編程接口PVMMPI于1994年發(fā)布,目前為v2版經(jīng)過多年技術(shù)發(fā)展,已顯露出諸多不足之處,但在沒有更理想編程模型和語言的情況下,MPI仍是應(yīng)用最為廣泛的消息傳遞型編程接口標(biāo)準(zhǔn)不同廠商和研究機(jī)構(gòu)推出了多個(gè)版本,主要有:MPICH√LAMMPIIBMMPLMPI支持C/C++、Fortran語言編程3.1MPI并行環(huán)境簡介MPI的并行模式:SPMD(SingleProgramMultipleData)所有節(jié)點(diǎn)運(yùn)行相同的程序不同的節(jié)點(diǎn)處理不同的數(shù)據(jù)每個(gè)節(jié)點(diǎn)運(yùn)行一個(gè)或多個(gè)MPI進(jìn)程,進(jìn)程間通過發(fā)送/接收消息進(jìn)行通信和同步注意:多個(gè)并行進(jìn)程間無法共享變量,只能通過消息進(jìn)行交互3.1MPI并行環(huán)境簡介二、MPI基本環(huán)境MPI進(jìn)程的創(chuàng)建、啟動(dòng)和管理通過進(jìn)程管理器(PM--ProcessManager)完成進(jìn)程管理器就是MPI環(huán)境與操作系統(tǒng)的接口常用的進(jìn)程管理器MPDMPD是MPI環(huán)境的守護(hù)進(jìn)程(daemon),MPI其他工具通過與MPD通信實(shí)現(xiàn)其功能MPD由python實(shí)現(xiàn)的一組工具構(gòu)成意味著系統(tǒng)中需安裝python解釋器由mpdboot完成MPD在多個(gè)主機(jī)上的啟動(dòng),以形成MPI運(yùn)行環(huán)境啟動(dòng)之前需配置各節(jié)點(diǎn)間的無密碼登錄3.1MPI并行環(huán)境簡介二、MPI基本環(huán)境MPD命令命令說明mpd啟動(dòng)MPD守護(hù)進(jìn)程mpdtrace打印MPI運(yùn)行時(shí)環(huán)境內(nèi)所有MPD守護(hù)進(jìn)程的信息mpdboot啟動(dòng)一組MPD進(jìn)程mpdringtest測試消息在環(huán)境環(huán)行一周的時(shí)間mpdallexit停止運(yùn)行時(shí)環(huán)境的所有進(jìn)程mpdcleanup運(yùn)行時(shí)環(huán)境崩潰情況下,可用該命令清除本地的Unixsocketmpdlistjobs列出作業(yè)的進(jìn)程信息mpdkilljob停止某個(gè)作業(yè)的所有進(jìn)程mpdsigjob對某個(gè)作業(yè)的所有進(jìn)程發(fā)信號(hào)mpiexec啟動(dòng)一個(gè)作業(yè)(早期MPI版本使用mpirun命令)3.1MPI并行環(huán)境簡介二、MPI基本環(huán)境MPI環(huán)境的安裝過程示例下載MPI源代碼包并解壓縮配置mpi編譯并安裝(確認(rèn))安裝python用vi修改.bash_profile文件3.1MPI并行環(huán)境簡介二、MPI基本環(huán)境MPI環(huán)境的安裝過程示例將MPI路徑添加到環(huán)境變量PATH修改用戶配置文件.bash_profile修改后的.bash_profile文件內(nèi)容路徑信息已添加3.1MPI并行環(huán)境簡介二、MPI基本環(huán)境MPI環(huán)境的安裝過程示例配置節(jié)點(diǎn)間SSH無口令登錄(注:SSH–SecureSHell)創(chuàng)建公鑰/私鑰對文件 創(chuàng)建后的文件將公鑰文件拷貝到其他節(jié)點(diǎn)的.ssh目錄中的authorized_keys文件host1host2的SSH無口令登錄3.1MPI并行環(huán)境簡介二、MPI基本環(huán)境MPI環(huán)境的安裝過程示例節(jié)點(diǎn)名添加到mpd_hosts文件,構(gòu)成ring啟動(dòng)并測試MPI環(huán)境/etc/hosts文件中存儲(chǔ)主機(jī)名稱與IP地址的映射表~/mpd.hosts文件中存儲(chǔ)MPI節(jié)點(diǎn)列表為保證節(jié)點(diǎn)間通信正常和性能,需關(guān)閉Linux防火墻3.1MPI并行環(huán)境簡介二、MPI基本環(huán)境MPI程序編譯MPI提供編譯腳本:mpiCC/mpicc/mpif77/mpif90
mpiCC---C++程序編譯及鏈接mpicc---C程序編譯及鏈接mpif77和mpif90---Fortran77和Fortran90程序編譯及鏈接關(guān)于編譯輸出可執(zhí)行文件的位置要求各節(jié)點(diǎn)都可以訪問該文件(注意各節(jié)點(diǎn)都將執(zhí)行該程序)方法一:編譯后手工將文件拷貝到各節(jié)點(diǎn) 例:$scpcpihost2:/home/test方法二:配置NFS共享目錄,各節(jié)點(diǎn)啟動(dòng)時(shí)將共享目錄mount到本機(jī)文件系統(tǒng)中,編譯輸出的可執(zhí)行文件直接存入該目錄3.1MPI并行環(huán)境簡介二、MPI基本環(huán)境MPI程序的運(yùn)行使用mpiexec啟動(dòng)MPI應(yīng)用程序MPI過去使用mpirun基本命令示例:mpiexec-n<num><executable><num>表示進(jìn)程個(gè)數(shù)(注意:是進(jìn)程不是線程)<executable>為可執(zhí)行程序名,可以是MPI程序,也可以不是MPI程序的調(diào)試MPI提供了與gdb和totalview的集成接口mpiexec–gdb實(shí)現(xiàn)與gdb的集成
進(jìn)程按順序指派在各節(jié)點(diǎn)上運(yùn)行進(jìn)程個(gè)數(shù)與節(jié)點(diǎn)個(gè)數(shù)沒有必然聯(lián)系問題:怎樣能寫出獨(dú)立于進(jìn)程個(gè)數(shù)和節(jié)點(diǎn)個(gè)數(shù)的程序?3.責(zé)1盾M拿PI牛并行狗環(huán)境檔簡介三、MP型I的幾春個(gè)基紫本概步念緩沖驚區(qū):MP強(qiáng)I定義摟了3種緩峰沖區(qū)應(yīng)用山緩沖狡區(qū):左保存脅將要撒發(fā)送質(zhì)或接塑收的肯數(shù)據(jù)簡的地凳址空兔間系統(tǒng)機(jī)緩沖森區(qū):MP考I環(huán)境渣為通都信所煉準(zhǔn)備奮的存裁儲(chǔ)空帝間用戶匯向系另統(tǒng)注悟冊的沃緩沖戰(zhàn)區(qū):勻用戶引使用屋某些AP月I時(shí),康在程識(shí)序中補(bǔ)顯式飄申請猴的存迫儲(chǔ)空猛間,缸然后雹注冊巴到MP底I環(huán)境晨中供某通信筑所用節(jié)點(diǎn)斗間傳餡送消次息時(shí)煤,可金能需姐要消體息在璃緩沖隱區(qū)之分間拷榆貝為減概少消姿息傳決輸延暑遲更高儲(chǔ)速的況互連窄網(wǎng)絡(luò)更簡板單的愁協(xié)議蠢棧避免耐消息群多次還拷貝非阻歪塞式飄發(fā)送…3.往1腥M持PI哲并行鈔環(huán)境番簡介三、MP鳴I的幾銳個(gè)基逝本概微念通信獅子(c域om校mu灣ni袍ca齡to砌r)是MP耍I環(huán)境備管理解進(jìn)程附及通領(lǐng)信的蟻基本摘設(shè)施定義撫一個(gè)繁可以冬相互未間通域信的姜進(jìn)程魔集合鼻,進(jìn)舊程間治的消神息傳校遞需負(fù)放在現(xiàn)通信茫子中態(tài)進(jìn)行MP腐I支持處通信亭子內(nèi)(I舒nt微ra谷-c望om兄mu陽ni盼ca妥to匪r)通信己和通恨信子傲間(I貪nt援er爛-c遞om婦mu商ni餓ca從to冬r)通信不同夸空間宵中的謊消息父互不識(shí)干擾MP憶I啟動(dòng)繭后,敲自動(dòng)敢創(chuàng)建2個(gè)組邀內(nèi)通驚信子MP閘I_劃CO桃MM士_W刃OR科LD:啟殖動(dòng)時(shí)筋的所利有進(jìn)撕程MP恭I_惕CO毛MM傅_S黎EL扒F:僅朗包含便進(jìn)程歷自身進(jìn)程稍號(hào)與將進(jìn)程碎組進(jìn)程叔號(hào)(r魄an端k)需放產(chǎn)在某惱個(gè)通致信子素范圍變內(nèi)才樹有效在一盯個(gè)通偶信子鬧中,藝進(jìn)程樣號(hào)從0開始瘦編號(hào)舉,為碑一連搞續(xù)整被數(shù)序成列通信便中必員須使品用進(jìn)足程號(hào)仁標(biāo)識(shí)鼻消息樓的源懷和目懂的定義幕一個(gè)繭通信目子時(shí)姨,也錄就指帖定了晝一組垮共享牢該空肥間的乘進(jìn)程愛組(g楊ro貓up總)訪問饅文件猜需要呈使用別句柄訪問壇網(wǎng)絡(luò)疫需要巴使用漲套接只字MP母I中傳稅送消排息需采要用果通信耍子3.匹1聞M油PI墻并行紫環(huán)境激簡介四、MP萍I基本晃調(diào)用MP變I初始然化與富結(jié)束MPI_Init():初始化MPIMPI_Finalize():結(jié)束MPIintMPI_Init(int*argc,//命令行參量數(shù)
char**argv//命令行參量);intMPI_Finalize();MPI_Comm_size():獲得指定通信子中的任務(wù)數(shù)MPI_Comm_rank():獲得某個(gè)進(jìn)程在通信子中的序號(hào)intMPI_Comm_size(MPI_COMMcomm,//指定的通信子
int*size//任務(wù)數(shù));intMPI_Comm_rank(MPI_COMMcomm,//指定的通信子
int*rank//序號(hào));通信它子基思本操砌作3.蛇2點(diǎn)到駐點(diǎn)通紗信3.聚2樂點(diǎn)到薪點(diǎn)通表信一、添簡介消息優(yōu)由發(fā)送秩進(jìn)程、接收集進(jìn)程、ta霧g唯一民地標(biāo)乓識(shí)ta緩g是一幟個(gè)用勁戶自犯定義巨的非弱負(fù)整貿(mào)數(shù),伸用于義區(qū)分暫同一猾對進(jìn)紡程間惡的不葬同消蒙息消息柱的傳烤遞涉竊及數(shù)華據(jù)的屬拷貝否和同盆步,改為滿溜足不企同需參求,MP檢I提供睛多種報(bào)點(diǎn)到鏡點(diǎn)通帽信的胃變體消息確的發(fā)膀送分稅為阻塞和非阻蘆塞兩種薄方式消息癢發(fā)送啦函數(shù)逗:MP千I_皇??進(jìn)Se叼nd胸()B:緩戴存模會(huì)式R:就成緒模賤式S:同紗步?;ナ絀:立數(shù)即發(fā)塊送,纖即非疏阻塞霜方式駝,I可與B,膀R,絡(luò)S組合3.釀2聰點(diǎn)到遮點(diǎn)通宗信一、飼簡介消息皇發(fā)送惕函數(shù)弱:MP紀(jì)I_巖??鴉Se北nd幼()B:緩魄存模劫式R:就痕緒模歡式S:同基步模趁式I:立捏即發(fā)鴨送,丘即非攝阻塞區(qū)方式奔,I可與B,墳R,慮S組合消息退發(fā)送蜻和接紀(jì)收函蘇數(shù)影稻響到稱各節(jié)伶點(diǎn)進(jìn)剝程間刺同步鳳關(guān)系斯及程萬序性便能,較應(yīng)謹(jǐn)懂慎選乳擇使送用分類發(fā)送接收阻
塞
通
信MPI_SendMPI_RecvMPI_IrecvMPI_Recv_initMPI_BsendMPI_RsendMPI_Ssend非阻塞通信非重復(fù)MPI_IsendMPI_RecvMPI_IrecvMPI_Recv_initMPI_IbsendMPI_IrsendMPI_ISSend重復(fù)MPI_Send_initMPI_RecvMPI_IrecvMPI_Recv_initMPI_Bsend_initMPI_Rsend_initMPI_Ssend_init二、洋標(biāo)準(zhǔn)做發(fā)送室和接紗收標(biāo)準(zhǔn)具發(fā)送雞和接妹收是槽阻塞苗式(b狀lo街ck效in宋g)的直到動(dòng)傳輸馳在本河地完繳成(l滋oc必al謹(jǐn)ly澡c傍om杯pl耳et惕e)后,虛發(fā)送/接收料函數(shù)抄才返應(yīng)回本地鑰完成暖與全咐局完健成本地平完成(l辰oc萍al親ly跳c弊o(hù)m露pl產(chǎn)et媽e):在垂本地吹進(jìn)程換中執(zhí)妨行的箏傳輸溝工作膠已經(jīng)熊完成全局撤完成(g朝lo吸ba霧ll拾y凳co捎mp討le圈te既):整兵個(gè)傳償輸已相經(jīng)完曲成MPI_Send():阻塞式發(fā)送消息MPI_Recv():阻塞式接收消息intMPI_Send(void*buffer,//發(fā)送數(shù)據(jù)指針
intcount,//發(fā)送數(shù)據(jù)元素?cái)?shù)
MPI_Datatypetype,//發(fā)送數(shù)據(jù)類型
intdest,//目的進(jìn)程IDinttag,//識(shí)別該消息的標(biāo)記
MPI_COMMcomm//MPI通信子);intMPI_Recv(void*buffer,//接收數(shù)據(jù)指針
intcount,//欲接收數(shù)據(jù)元素?cái)?shù)
MPI_Datatypetype,//接收數(shù)據(jù)類型
intsource,//發(fā)送進(jìn)程IDinttag,//識(shí)別該消息的標(biāo)記
MPI_COMMcomm,//MPI通信子
MPI_Status*status//接收操作狀態(tài)指針);
例:MPI_Send(buffer,10,MPI_INT,1,123,MPI_COMM_WORLD)消息緩沖區(qū)指針消息中數(shù)據(jù)個(gè)數(shù)消息數(shù)據(jù)類型目的進(jìn)程號(hào)tag通信子3.必2稻點(diǎn)到窮點(diǎn)通傳信二、積標(biāo)準(zhǔn)斜發(fā)送鉤和接妹收#include"mpi.h"#include<stdio.h>#include<math.h>#defineBUF_SIZE10intmyid,numProcs,sbuf[BUF_SIZE],rbuf[BUF_SIZE];MPI_Statusstatus;intmain(intargc,char**argv){inti;
MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Comm_size(MPI_COMM_WORLD,&numProcs);for(i=0;i<BUF_SIZE;i++)sbuf[i]=myid+i;if(myid==0)ProcRecv();elseProcSend();
MPI_Finalize();return0;}/*main()*/intProcSend(){/*向0號(hào)進(jìn)程發(fā)送消息*/printf("process:%dof%dsending...\n",myid,numProcs);
MPI_Send(sbuf,BUF_SIZE,MPI_INT,0,1,MPI_COMM_WORLD);}/*ProcSend()*/intProcRecv(){intsource;/*從0號(hào)進(jìn)程以外的每個(gè)進(jìn)程接收消息*/printf("process:%dof%dreceiving..n",myid,numProcs);for(source=1;source<numProcs;source++)MPI_Recv(rbuf,BUF_SIZE,MPI_INT,source,1,MPI_COMM_WORLD,&status);}/*ProcRecv()*/注意隆程序顛在多俗個(gè)節(jié)香點(diǎn)上歌執(zhí)行駕時(shí),惹各節(jié)斧點(diǎn)上植進(jìn)程唉的my介id值不乞相同啟動(dòng)4個(gè)進(jìn)艇程時(shí)3.兆2瞇點(diǎn)到厲點(diǎn)通孤信發(fā)送護(hù)消息奏需指習(xí)明接雷收進(jìn)堅(jiān)程號(hào)接收薯方可慈從任建意源們接收蠻消息搞,也穗可指貍定源納進(jìn)程使用脅參數(shù)MP馬I_番AN蜓Y_奮SO軍UR么CE、MP聞I_娘AN菊Y_交TA謹(jǐn)GMP返I通信售函數(shù)擠使用MP亞I_澇St丸at讓us返回重通信起結(jié)果typedefstructMPI_Status(intcount,//發(fā)送/接收的字節(jié)數(shù)
intcancelled,intMPI_SOURCE,//通信對端的進(jìn)程號(hào)
intMPI_TAG,//消息tagintMPI_ERROR);標(biāo)準(zhǔn)我模式累下的火緩沖瓶區(qū)使毯用由MP朝I環(huán)境厘決定滅是否擱對要帶發(fā)送拼的消語息進(jìn)蕉行緩覺沖如果鄰緩沖于了待榆發(fā)送返的數(shù)培據(jù),悟則與窩緩沖志通信濫模式消一樣貸,即嗚使接奶收端泊尚未返啟動(dòng)益接收喚操作禾,發(fā)百送函卡數(shù)也拉可立劫即返灘回出于爪性能冊和資僅源優(yōu)解化考撤慮,MP給I會(huì)提泊供一咐定數(shù)甚量的溜緩沖焦區(qū),褲超過親緩沖撕區(qū)容噴量時(shí)逢,發(fā)墓送方傘需要匠阻塞挪直到斤接收命操作帶收取細(xì)數(shù)據(jù)盆后才寨可返稀回阻塞吵式通汁信中邀,發(fā)犯送端蟻完成寫與否倆不僅屯取決楊于本首地進(jìn)褲程的舒狀態(tài)陣,還浪與遠(yuǎn)丹端接尼收進(jìn)于程的隨狀態(tài)呼有關(guān)3.需2勸點(diǎn)到掀點(diǎn)通樂信二、峽標(biāo)準(zhǔn)教發(fā)送益和接港收阻塞窯式通蔥信時(shí)變發(fā)送/接收蘆進(jìn)程寧的幾怪種狀失態(tài)雙方康啟動(dòng)能發(fā)送盟和接繪收操到作pr貼oc經(jīng)0會(huì)立軌即啟申動(dòng)數(shù)漂據(jù)傳生輸操藝作發(fā)送紡動(dòng)作清早于枝接收鞏動(dòng)作斷啟動(dòng)如消源息長解度>緩沖滿區(qū),pr組oc繁0需等體待直壇到pr層oc頓1啟動(dòng)湯接收朱;如消旺息長帽度≤緩珍沖區(qū)尾,消粒息存悔入緩蚊沖區(qū)攻,發(fā)烈送函疑數(shù)立葡即返般回,咱但實(shí)墓際的錢消息較傳輸響需等移到接察收啟泡動(dòng)后脖才開帖始。發(fā)送塘動(dòng)作秀遲于嘆接收登動(dòng)作稍啟動(dòng)pr跟oc緊0會(huì)立繁即啟擾動(dòng)數(shù)碌據(jù)傳便輸操益作3.類2艘點(diǎn)到紫點(diǎn)通吼信三、高緩沖槐通信崇模式(B爪uf欄fe蘇re帽d)用于淚解開膽阻塞稱式通記信時(shí)壩發(fā)送頂與接點(diǎn)收之但間的鳥耦合攏關(guān)系緩沖底通信速模式劃下即使詠接收烘進(jìn)程呆沒有縮慧啟動(dòng)訊接收宴操作乞,發(fā)乒送方如在將宗消息港轉(zhuǎn)移獻(xiàn)至緩脊沖區(qū)炒后,饒發(fā)送節(jié)函數(shù)吸也可膠返回開銷摩:消辰息需譜在緩券沖區(qū)婚間拷燥貝如果熟消息嫁大小費(fèi)超過素緩沖合區(qū)容酷量,溪發(fā)送魚函數(shù)責(zé)會(huì)返詞回錯(cuò)航誤與標(biāo)生準(zhǔn)??菔降牧繀^(qū)別于在于其:標(biāo)準(zhǔn)臭模式脊由MP運(yùn)I環(huán)境寄決定掠是否抗使用吼緩沖兵,緩伍沖區(qū)惑是MP散I環(huán)境移提供念的,俯緩沖維不足勁時(shí)發(fā)白送函楊數(shù)將脂阻塞緩沖斷通信魚模式寧由應(yīng)聰用程糖序提消供緩辰?jīng)_區(qū)蝕,確典保發(fā)擋送函炕數(shù)不朗阻塞3.鄉(xiāng)豐2珠點(diǎn)到輔點(diǎn)通臣信三、壟緩沖非通信辮模式緩沖獵通信艷模式殖使用報(bào)的幾迷個(gè)函愧數(shù)發(fā)送推函數(shù)字:MP在I_椅Bs斷en范d(符),參粉數(shù)與MP殲I_圣Se宋nd分()相同發(fā)送羊前使尼用MP弟I_水Pa翻ck神_s爹iz仇e(誼)獲取遮消息意需要匯的緩僻沖區(qū)肚大小騰,并裹分配決緩沖惕區(qū)發(fā)送舅前使脊用MP問I_左Bu船ff浩er械_a蓄tt遭ac升h(圖)裝配堡緩沖盯區(qū)發(fā)送驗(yàn)后使披用MP夏I_桶Bu票ff聯(lián)er材_d分et視ac游h(雖)卸載根緩沖醫(yī)區(qū)MPI_Pack_size():獲取消息所需緩沖區(qū)大小MPI_Buffer_attach():裝配通信緩沖區(qū)MPI_Buffer_detach():卸載通信緩沖區(qū)intMPI_Pack_size(intcount,//數(shù)據(jù)個(gè)數(shù)
MPI_Datatypetype,//數(shù)據(jù)類型
MPI_COMMcomm,//MPI通信子
int*size//緩沖區(qū)大小(字節(jié)數(shù)));intMPI_Buffer_attach(void*buffer,//緩沖區(qū)地址
intcount,//緩沖區(qū)大小);intMPI_Buffer_detach(void*buffer,//緩沖區(qū)地址
intcount,//緩沖區(qū)大小);3.謝2陸點(diǎn)到音點(diǎn)通厭信四、綱就緒甘通信富模式(R賢ea放dy優(yōu))僅當(dāng)攏對方奪的接姓收操醋作啟暖動(dòng)并直準(zhǔn)備誤就緒極時(shí),狂才可嶼發(fā)送銹數(shù)據(jù)程序蠅員必泳須保歡證發(fā)卻送方字發(fā)送況時(shí),葉接收贊方已咽啟動(dòng)鑄接收舟操作如果噸違反膚了這列種定矮時(shí)假量設(shè)(發(fā)送莫時(shí)接易收方茶未啟檔動(dòng)接區(qū)收操吸作),將咱會(huì)導(dǎo)總致錯(cuò)葬誤發(fā)送娃方使搖用MP烈I_何Rs訪en使d(成)發(fā)送憶消息優(yōu)缺走點(diǎn)討酒論就緒震通信心模式浙可省銜去消跑息的亡緩沖久以及婆發(fā)送/接收突雙方公的握熄手操群作,拒提高豬通信繼效率由于固對定鐵時(shí)的課額外自假設(shè)盆,就丘緒模幣式容贈(zèng)易出抄錯(cuò)3.辭2首點(diǎn)到仔點(diǎn)通舞信五、坦同步墾通信柴模式(S眠yc舟hr椒on天iz身e)發(fā)送柜端可雨在任扭意時(shí)貝刻啟班動(dòng)發(fā)烈送動(dòng)益作,催但發(fā)送趁端需霞等待怕接收犬端開餡始接饒收數(shù)糠據(jù)之書后才搭返回即發(fā)行送/接收申雙方燙達(dá)到猴一個(gè)佳確定洗的同易步點(diǎn)僑后,棒通信舊才結(jié)碑束通信凳協(xié)議投:發(fā)送委端首即先向烤接收強(qiáng)端發(fā)仇送一播個(gè)消腔息發(fā)抹送請焦求接收柜端的MP梳I環(huán)境替將該芒請求住保存毅下來待接潛收進(jìn)愁程的充接收矩動(dòng)作返啟動(dòng)您后,透接收兩端向鵝發(fā)送葉端返揀回一勁個(gè)消攝息發(fā)金送許失可發(fā)送法端收益到許館可后速發(fā)送仁消息3.冶2忽點(diǎn)到儲(chǔ)點(diǎn)通恢信六、構(gòu)各種腰通信嚼模式宗小結(jié)關(guān)于誤接收司操作各種畢通信紋模式胳的發(fā)送送函馳數(shù)各緊不相緣瑞同,茄但接腹收函愧數(shù)均鹿為MP澆I_每Re虧cv爛()MP嫂I_臨Re累cv世()是一秘個(gè)阻韻塞操粗作,即布:僅購當(dāng)接少收端廊進(jìn)程卸緩沖燭區(qū)中汗收到廳了期鋸待的計(jì)數(shù)據(jù)全才返份回如果侮接收瓣操作溝早于段發(fā)送湖操作時(shí)啟動(dòng)報(bào),則隸接收炒操作第將等膊待直某到接廊到數(shù)霞據(jù)后糟返回
例:MPI_Recv(buffer,10,MPI_INT,0,123,MPI_COMM_WORLD,&status)消息緩沖區(qū)指針消息中數(shù)據(jù)個(gè)數(shù)消息數(shù)據(jù)類型源進(jìn)程號(hào)tag通信子狀態(tài)信息3.絨2挖點(diǎn)到稿點(diǎn)通鞏信六、減各種肢通信掙模式沉小結(jié)發(fā)送/接收切操作趣將配筒對--獸--存在死鎖可能統(tǒng)性下例晌中,沃消息ta比g1發(fā)送養(yǎng)后將陣緩存委在進(jìn)吸程1,直歪到進(jìn)允程1執(zhí)行殘第2個(gè)接毒收操豪作;爪而第2個(gè)發(fā)理送操衡作將們與進(jìn)謝程1的第1個(gè)接鍬收操街作形陪成同歉步關(guān)于菠緩沖死使用緩沖寬模式毫下,奔由用沃戶程想序指胸定緩趁沖區(qū)購,如判緩沖萄區(qū)滿瓦,則塌會(huì)導(dǎo)莫致錯(cuò)鵝誤標(biāo)準(zhǔn)游模式忽下,侍由MP骨I環(huán)境爺提供禍緩沖灘區(qū),鹿緩沖榮區(qū)不勿足時(shí)嘉,發(fā)括送進(jìn)曉程將嬸等待弊直到剖接收準(zhǔn)操作概啟動(dòng)(相當(dāng)熄于同抵步模叉式)MPI_Comm_rank(MPI_COMM_WORLD,&rank);if(rank==0){MPI_Bsend(buf1,count,MPI_REAL,1,tag1,MPI_COMM_WORLD);該操作將立即返回
MPI_Ssend(buf2,count,MPI_REAL,1,tag2,MPI_COMM_WORLD);}else{MPI_Recv(buf1,count,MPI_REAL,0,tag2,MPI_COMM_WORLD,&status);MPI_Recv(buf2,count,MPI_REAL,0,tag1,MPI_COMM_WORLD,&status);}七、妙非阻邀塞式煎通信MP銜I中消莊息傳索遞時(shí)抬延較羞大,誤對程聾序性磚能影鉆響很當(dāng)大將通信缸和計(jì)肯算重蛛疊可以鬧在很閘大程裳度上信隱藏姿通信即時(shí)延方法輸一:宣多線偽程線程減通信滅等待群期間蔥,處晨理器熄可切各換至丹其他膏線程方法浩二:圍非阻買塞式低通信進(jìn)程集通信聚期間料不阻降塞,擇而是韻進(jìn)行惱其他葡計(jì)算3.琴2筐點(diǎn)到壞點(diǎn)通早信七、霜非阻矩塞式敞通信MP訴I_情Is絞en史d(其)和MP陵I_勇Ir飽ec籌v(覆)是標(biāo)紐奉準(zhǔn)發(fā)維送/接收壁的非勞阻塞細(xì)式版輔本I:Im碑me孩di俊at壯el閣y函數(shù)轎將在敏本地肚操作練完成濃前返菠回非阻淡塞通朋信也熟可使短用4種模響式標(biāo)準(zhǔn)剛、緩嘉沖、低就緒鉛和同辦步非阻才塞式迎通信堆的使違用方紹法進(jìn)程吃調(diào)用悶非阻隙塞式補(bǔ)發(fā)送/接收匙函數(shù)裝,函悟數(shù)將立即通返回進(jìn)程境可進(jìn)喂行計(jì)祖算或疑其他旺操作價(jià),并產(chǎn)調(diào)用MP惠I_尸Wa宴it隨()、MP趨I_崖Te破st染()等結(jié)趁束測委試函掛數(shù)檢府查發(fā)酬送/接收炕操作策是否布完成注意獵:對政于非像阻塞踏式標(biāo)賓準(zhǔn)發(fā)稍送MP析I_犧Is臺(tái)en醋d(譯),在袍發(fā)送辱操作太完成算前,若不應(yīng)播修改叔緩沖根區(qū)中流數(shù)據(jù)3.抵2鐮點(diǎn)到延點(diǎn)通鄭信七、偏非阻叨塞式累通信通信橋測試辰函數(shù)MPI_Wait():等待發(fā)送/接收結(jié)束MPI_Test():測試非阻塞操作是否結(jié)束intMPI_Wait(MPI_Request*request,//請求句柄
MPI_Status*status,//狀態(tài));intMPI_Test(MPI_Request*request,//請求句柄
int*flag,//操作結(jié)束便返回為真
MPI_Status*status,//狀態(tài));MPI_Requestreq;MPI_Comm_rank(MPI_COMM_WORLD,&rank);if(rank==0)MPI_Isend(sendbuf,count,MPI_INT,1,0,MPI_COMM_WORLD,&req);/*非阻塞式發(fā)送*/elseMPI_Irecv(recvbuf,count,MPI_INT,0,0,MPI_COMM_WORLD,&req);/*非阻塞式接收*/……/*計(jì)算操作*/MPI_Wait(&req,&status);/*等待發(fā)送/接收結(jié)束*/3.溉2績點(diǎn)到草點(diǎn)通傍信七、應(yīng)非阻五塞式喬通信多重誰結(jié)束拘測試函數(shù)名稱功能MPI_Waitany()等待一組操作中的一個(gè)完成MPI_Testany()測試一組操作中的一個(gè)是否完成MPI_Waitall()等待一組操作全部完成MPI_Testall()測試一組操作是否全部完成MPI_Waitsome()等待一組操作中的某些完成MPI_Testsome()測試一組操作中的某些是否完成阻塞劈燕式發(fā)花送可怕與非辮阻塞娘式接清收匹灶配,嘉非阻祝塞式炕發(fā)送允也可黑與阻秒塞式兔接收披匹配3.丘2資點(diǎn)到墓點(diǎn)通鞏信七、況非阻別塞式汗通信可重涂復(fù)的非天阻塞買式通旬信實(shí)際難應(yīng)用罪中,及常常帶需要隔循環(huán)損發(fā)送/接收錫消息可重妖復(fù)的漂非阻醫(yī)塞式粉通信澆提供鞠了一枯種高鏟效的耍實(shí)現(xiàn)克方法公,它畜將通初信參恒數(shù)與MP秤I內(nèi)部悲對象亭綁定通信蔽步驟禮如下熔:通信喘初始爹化,諸如調(diào)謀用MP警I_督Is厲en狼d_知in駱it袍()啟動(dòng)艙通信甜,MP鋤I_她St愉ar侮t(這)完成歸通信樣,MP郊I_危Wa糠it啄()釋放灘查詢犁對象威,MP棗I_觀Re攻qu港es筐t_稀fr靈ee把()第②、玩③步扇可重迅復(fù)進(jìn)肅行通信獎(jiǎng)操作究僅在限調(diào)用MP蘭I_暢St徑ar牧t(費(fèi))后才輩啟動(dòng)3.昆2講點(diǎn)到甩點(diǎn)通潑信八、績組合總發(fā)送城接收調(diào)用MP徐I_貍Se蕩nd括re拜cv恨()可將汗發(fā)送譯和接脫收操表作組婆合MP卡I_嚼Se捐nd跡re斗cv謝()與MP累I_勇Se擠nd飄()、MP蹈I_餅Re魔cv嚴(yán)()匹配撤示例律代碼MPI_Requestreq;MPI_Comm_rank(MPI_COMM_WORLD,&rank);if(rank==0){MPI_Sendrecv(sbuf,BUFSIZE,MPI_INT,1,tag,rbuf,BUFSIZE,MPI_INT,1,tag,MPI_COMM_WORLD,&status);}if(rank==1){MPI_Recv(rbuf,BUFSIZE,MPI_INT,0,tag,MPI_COMM_WORLD,&status);MPI_Send(sbuf,BUFSIZE,MPI_INT,0,tag,MPI_COMM_WORLD);}3.付2枕點(diǎn)到隱點(diǎn)通招信九、豪點(diǎn)到忍點(diǎn)通桶信小典結(jié)點(diǎn)到撒點(diǎn)通召信支絞持阻高塞、映非阻還塞及剩多種勤通信辦模式各種焦模式懸的主嗚要區(qū)爭別體巴現(xiàn)在蒜緩沖察使用耐上:標(biāo)準(zhǔn)勒發(fā)送笛利用MP覆I環(huán)境陰的默壇認(rèn)緩駐沖區(qū)緩沖愛發(fā)送胞將MP礎(chǔ)I環(huán)境鼠的緩價(jià)沖區(qū)武放到疏用戶琴空間粉管理就緒網(wǎng)模式銷相當(dāng)搬于不稱要緩敢沖區(qū)盞,但怎發(fā)送宋方不霉能提芝前等鉤待同步御模式肆也相貢當(dāng)于鹿不要果緩沖柏區(qū),求但允千許等目待3.鍋3集合袖通信3.3集合況通信一慌、簡字介集合餡通信賤的主徒要功闊能是真對一組內(nèi)進(jìn)程進(jìn)行控通信捐、同吵步、殼計(jì)算沃等操漠作集合卸通信懼的主切要功反能函宴數(shù)集合通信函數(shù)功能MPI_Bcast()數(shù)據(jù)廣播MPI_Scatter()數(shù)據(jù)分發(fā)MPI_Gather()數(shù)據(jù)收集MPI_Reduce()規(guī)約MPI_Scan()掃描MPI_Barrier()進(jìn)程間同步二、駝規(guī)約(r沒ed惱uc蠢e)將組始內(nèi)數(shù)根據(jù)進(jìn)察行某冰種規(guī)座約后雀,結(jié)唱果保拼存在尸根進(jìn)李程(r蘆oo顆t)MPI_Reduce():規(guī)約操作intMPI_Reduce(void*sendbuffer,//欲發(fā)送數(shù)據(jù)的地址
void*recvbuffer,//欲接收數(shù)據(jù)的地址
intcount,//欲接收數(shù)據(jù)個(gè)數(shù)
MPI_Datatypedatatype,//數(shù)據(jù)類型
MPI_OPop,//MPI操作符
introot,//將保存結(jié)果的進(jìn)程
MPI_Commcomm//通信子);intsendbuf[1];intrecvbuf[1];sendbuf[0]=rank+1;/*進(jìn)程2作為根進(jìn)程,執(zhí)行“加”規(guī)約操作*/MPI_Reduce(sendbuf,recvbuf,1,MPI_INT,MPI_SUM,2,MPI_COMM_WORLD);MP究I還提閥供全資規(guī)約雷操作MP最I(lǐng)_置Al疲lr注ed敬uc出e(搶)組內(nèi)之所有索進(jìn)程火都作齡為根炒執(zhí)行必一次動(dòng)規(guī)約桑操作(所有羽接收步緩沖裕區(qū)有殘相同長拷貝)等價(jià)槐于執(zhí)攔行一遇次MP蛾I_湖Re打du倍ce員()后,膜再執(zhí)躁行MP梨I_往Bc斧as鈔t(石)3.3集合例通信MP珠I支持拿自定伶義規(guī)駝約操夏作自定百義規(guī)啞約操蟲作函大數(shù),面并調(diào)菜用MP器I_槍Op省_c辜re住at延e(號(hào))操作符說明MPI_MAX最大MPI_MIN最小MPI_SUM求和MPI_PROD求積MPI_LAND邏輯與(logicalAND)MPI_BAND位與(bit-wiseAND)MPI_LOR邏輯或(logicalOR)MPI_BOR位或(bit-wiseOR)MPI_LXOR邏輯異或(logicalXOR)MPI_BXOR位異或(bit-wiseXOR)MPI_MAXLOC最大值及位置MPI_MINLOC最小值及位置MP婚I預(yù)定測義的馳規(guī)約沙操作完符統(tǒng)計(jì)3的個(gè)唱數(shù)#include"mpi.h"#include<stdio.h>intmain(intargc,char**argv){intmyid,valuenumProcs;MPI_Statusstatus;MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Comm_size(MPI_COMM_WORLD,&numProcs);length_per_process=length/numProcs;myArray=(int*)malloc(length_per_process*sizeof(int));if(myid==0)/*0號(hào)進(jìn)程負(fù)責(zé)讀入并分發(fā)數(shù)據(jù)*/{if((fp=fopen(*argv,“r”))==NULL){printf(“fopenfailed\n”);exit(0);}for(i=1;i<=numProcs-1;i++){/*從文件中讀入應(yīng)由進(jìn)程i處理的數(shù)據(jù)*/…/*將數(shù)據(jù)發(fā)給進(jìn)程i*/
MPI_Send(myArray,length_per_process,MPI_INT,i,tag,MPI_COMM_WORLD);}}/*if*/else{
MPI_Recv(myArray,length_per_process,MPI_INT,0,tag,MPI_COMM_WORLD);}/*各進(jìn)程統(tǒng)計(jì)3的個(gè)數(shù)*/for(i=0;i<length_per_process;i++){if(myArray[i]==3)myCount++;}/*for*//*使用“加”規(guī)約操作對各進(jìn)程的數(shù)據(jù)進(jìn)行匯總*/
MPI_Reduce(&myCount,&globalCount,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD);if(myid==0)printf(“Numberof3’s:%d\n”,globalCount);MPI_Finalize();return0;}/*main()*/3.3集合鉤通信三、溫掃描(s怨ca渠n)相當(dāng)液于逐浸級(jí)規(guī)郊約進(jìn)程i對進(jìn)犁程0,政1躁,?!?齊i執(zhí)行且規(guī)約MPI_Scan():掃描操作intMPI_Scan(void*sendbuffer,//欲發(fā)送數(shù)據(jù)的地址
void*recvbuffer,//欲接收數(shù)據(jù)的地址
intcount,//欲接收數(shù)據(jù)個(gè)數(shù)
MPI_Datatypedatatype,//數(shù)據(jù)類型
MPI_OPop,//MPI操作符
MPI_Commcomm//通信子);intsendbuf[1];intrecvbuf[1];sendbuf[0]=rank+1;/*執(zhí)行“加”掃描操作*/MPI_Scan(sendbuf,recvbuf,1,MPI_INT,MPI_SUM,MPI_COMM_WORLD);3.3集合怠通信四、祥數(shù)據(jù)吊廣播MP疑I_撤Bc演as球t(棋)以組托內(nèi)指愉定進(jìn)積程為浮根,萌將數(shù)括據(jù)廣恭播到皮組內(nèi)趴其他假進(jìn)程MPI_Bcast():將從根進(jìn)程數(shù)據(jù)廣播到組內(nèi)其他進(jìn)程intMPI_Bcast(void*buffer,//欲發(fā)送數(shù)據(jù)的地址
intcount,//欲接收數(shù)據(jù)個(gè)數(shù)
MPI_Datatypedatatype,//數(shù)據(jù)類型
introot,//根進(jìn)程(廣播源)MPI_Commcomm//通信子);if(rank==2){/*進(jìn)程2讀取用戶輸入,廣播給其他進(jìn)程*/scanf(“%d”,&value);}MPI_Bcast(&value,1,MPI_INT,2,MPI_COMM_WORLD);/*各進(jìn)程使用value作為參數(shù),進(jìn)行計(jì)算*/……CP稅I程序:計(jì)算解圓周渴率PI#include"mpi.h"#include<stdio.h>#include<math.h>doublef(doublea){return(4.0/(1.0+a*a));}intmain(intargc,char*argv[]){intn,myid,numprocs,i;doublePI25DT=3.141592653589793238462643;doublemypi,pi,h,sum,x;doublestartwtime=0.0,endwtime;intnamelen;charprocessor_name[MPI_MAX_PROCESSOR_NAME];MPI_Init(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Get_processor_name(processor_name,&namelen);fprintf(stdout,"Process%dof%dison%s\n", myid,numprocs,processor_name);fflush(stdout);n=10000;/*default#ofrectangles,可改為人工輸入*/if(myid==0)startwtime=MPI_Wtime();/*從進(jìn)程0向其他進(jìn)程分發(fā)數(shù)據(jù)*/
MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD);h=1.0/(double)n;sum=0.0;for(i=myid+1;i<=n;i+=numprocs){x=h*((double)i-0.5);sum+=f(x);}mypi=h*sum;/*各進(jìn)程計(jì)算結(jié)果加規(guī)約到進(jìn)程0的變量pi
*/
MPI_Reduce(&mypi,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);if(myid==0){endwtime=MPI_Wtime();printf("pi≈%.16f,Error:%.16f\n",pi,fabs(pi-PI25DT));printf("wallclocktime=%f\n",endwtime-startwtime); fflush(stdout);}MPI_Finalize();return0;}注:MP勉I_朵Wt弦im皮e(逮)用于獲取裂當(dāng)前MP扎I墻鐘垮時(shí)間(w器al漁l谷cl例oc遠(yuǎn)k盆ti畢me趁),常災(zāi)用于你統(tǒng)計(jì)積程序席執(zhí)行親時(shí)間五、謊數(shù)據(jù)秀分發(fā)MP朽I_枕Sc捷at峽te涂r(庸)從根粉進(jìn)程有分發(fā)傲數(shù)據(jù)驕到組槐內(nèi)所券有進(jìn)險(xiǎn)程MPI_Scatter():從根進(jìn)程分發(fā)數(shù)據(jù)到通信子中所有進(jìn)程,包括根進(jìn)程自身intMPI_Scatter(void*sendbuffer,//欲發(fā)送數(shù)據(jù)的地址
intsendcount,//欲發(fā)送數(shù)據(jù)個(gè)數(shù)
MPI_Datatypesendtype,//欲發(fā)送數(shù)據(jù)類型
void*destbuffer,//欲接收數(shù)據(jù)的地址
intdestcount,//欲接收數(shù)據(jù)個(gè)數(shù)
MPI_Datatypedesttype,//欲接收數(shù)據(jù)類型
introot,//根進(jìn)程編號(hào)
MPI_Commcomm//通信子);intsendbuf[4];if(rank==2){for(i=0;i<4;i++)/*進(jìn)程2負(fù)責(zé)數(shù)據(jù)初始化(或數(shù)據(jù)讀取)*/scanf(“%d”,&sendbuf[i]);}/*進(jìn)程2作為根進(jìn)程將數(shù)據(jù)分發(fā)給各個(gè)進(jìn)程*/MPI_Scatter(sendbuf,1,MPI_INT,&value,1,MPI_INT,2,MPI_COMM_WORLD);/*各進(jìn)程使用value作為參數(shù),進(jìn)行計(jì)算*/……在“福統(tǒng)計(jì)3的個(gè)減數(shù)”丈例子蓮中,身可以歉用MP鑄I_啞Sc繞at僑te膨r(俯)分發(fā)羨數(shù)據(jù)六、血數(shù)據(jù)產(chǎn)收集MP乎I_Ga總th叮er()是MP醒I_其Sc叼at精te眉r(愚)的逆恨操作根進(jìn)盡程從壟組內(nèi)吳所有哄進(jìn)程昆收集定數(shù)據(jù)想,依泉次放拾入自早己的代接收阻緩沖廚區(qū)MPI_Gather():從通信子中所有進(jìn)程收集數(shù)據(jù),放置到根進(jìn)程中intMPI_Gather(void*sendbuffer,//欲發(fā)送數(shù)據(jù)的地址
intsendcount,//欲發(fā)送數(shù)據(jù)個(gè)數(shù)
MPI_Datatypesendtype,//欲發(fā)送數(shù)據(jù)類型
void*recvbuffer,//欲接收數(shù)據(jù)的地址
intrecvcount,//欲接收數(shù)據(jù)個(gè)數(shù)
MPI_Datatyperecvtype,//欲接收數(shù)據(jù)類型
introot,//根進(jìn)程編號(hào)
MPI_Commcomm//通信子);intrecvbuf[4];/*各進(jìn)程將計(jì)算結(jié)果放入result*/result=…/*進(jìn)程2作為根進(jìn)程從各進(jìn)程收集result放入recvbuf*/MPI_Gather(&result,1,MPI_INT,recvbuf,1,MPI_INT,2,MPI_COMM_WORLD);3.3集合適通信七、域進(jìn)程買間同呼步MP蛛I_賤Ba且rr索ie惱r(坑)將阻忘塞進(jìn)辰程,星直到家組內(nèi)仙進(jìn)程輪都到悠達(dá)該屋點(diǎn)MPI_Barrier():組內(nèi)進(jìn)程同步intMPI_Barrier(MPI_Commcomm//通信子);3.商4組和烤通信志子3.4組和池通信茂子一、厭簡介如果跟要在MP別I基礎(chǔ)呼上開兵發(fā)通今用算已法庫浸,為天避免雷與應(yīng)洪用程初序的評進(jìn)程關(guān)相互蓋影響艱,通清常需賀要在徑算法差庫內(nèi)良使用逃組和脈通信兆子的歪管理渡機(jī)制組(g晚ro化up拜):一石組有戶序的堂進(jìn)程季集合街,組樓內(nèi)每禾個(gè)進(jìn)臣程以唯進(jìn)程差號(hào)(r勤an倦k)標(biāo)識(shí)通信環(huán)子(c囑om鴨mu羊ni梨ca沖to貞r流):定統(tǒng)義了真封裝MP盛I通信爽的基努本模戶型組內(nèi)扁通信封子(i堡nt刃ra栽-c辟om號(hào)mu柜ni戴ca冤to疼r)同屬睛一個(gè)緞組的兆進(jìn)程見之間應(yīng)通信肅的實(shí)拋體組間哀通信替子(i珍nt團(tuán)er奴-c傍om嘗mu疤ni足ca外to仗r)分屬椒不同幣組的闊進(jìn)程坊之間穩(wěn)通信傭的實(shí)扭體3.4組和吩通信研子二、廚組管圣理函數(shù)名稱功能組的構(gòu)建與取消MPI_Comm_group()返回與通信子comm相關(guān)的組MPI_Group_free()釋放組對象MPI_Group_union()合并兩個(gè)組,形成一個(gè)新組MPI_Group_intersection()求兩個(gè)組的交集MPI_Group_difference()求存在于一個(gè)組而不存在于另一個(gè)組的進(jìn)程,形成新組MPI_Group_incl()將進(jìn)程組中前n個(gè)進(jìn)程組成一個(gè)新組MPI_Group_excl()將進(jìn)程組中前n個(gè)進(jìn)程刪除后組成一個(gè)新組訪問組的相關(guān)信息MPI_Group_size()返回指定進(jìn)程組中的進(jìn)程個(gè)數(shù)MPI_Group_rank()返回調(diào)用進(jìn)程在進(jìn)程組中的編號(hào)MPI_Group_translate_ranks()返回一個(gè)進(jìn)程組中的n個(gè)進(jìn)程在另一個(gè)組中的編號(hào)MPI_Group_compare()比較兩個(gè)進(jìn)程組中的進(jìn)程及編號(hào)并返回結(jié)果3.4組和濾通信躲子三、荷通信趁子管炮理MPI_Comm_create():利用進(jìn)程組創(chuàng)建新的通信子intMPI_Comm_create(MP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024桂林學(xué)院輔導(dǎo)員招聘筆試真題
- 法律盡職調(diào)查(技術(shù)方向)考試試卷及答案
- 高端旅游體驗(yàn)師筆試試題及答案
- 2025年乙丙醇胺項(xiàng)目建議書
- 2025年湖南省生態(tài)環(huán)境廳下屬事業(yè)單位招聘考試筆試試題【答案】
- 項(xiàng)目合作管理制度
- 活動(dòng)總結(jié)范文大學(xué)活動(dòng)結(jié)束后的總結(jié)怎么寫
- 項(xiàng)目大管理圖表
- 2025年無功功率自動(dòng)補(bǔ)償裝置項(xiàng)目建議書
- 2025城市規(guī)劃工作計(jì)劃
- 2025年廣東高考政治試卷真題答案詳解講評(課件)
- 卡口及道路交通智能監(jiān)控系統(tǒng)方案設(shè)計(jì)
- 2025年家庭照護(hù)師職業(yè)資格考試試題及答案
- 呼吸機(jī)相關(guān)性肺炎的預(yù)防和護(hù)理
- 2025年綏化市中考化學(xué)試題卷(含答案解析)
- 門診口腔院感基礎(chǔ)知識(shí)培訓(xùn)
- 論詠嘆調(diào)《媽媽不在》的形象刻畫與唱段處理
- 危重病人觀察和護(hù)理要點(diǎn)
- 砌體工程培訓(xùn)課件
- GB/T 45719-2025半導(dǎo)體器件金屬氧化物半導(dǎo)體(MOS)晶體管的熱載流子試驗(yàn)
- 2025-2030中國醫(yī)藥商業(yè)行業(yè)盈利態(tài)勢與投資潛力分析報(bào)告
評論
0/150
提交評論