![并行程序設(shè)計(jì)整理_第1頁(yè)](http://file4.renrendoc.com/view/3c910e2c604dd9c9afdfb617cb76b084/3c910e2c604dd9c9afdfb617cb76b0841.gif)
![并行程序設(shè)計(jì)整理_第2頁(yè)](http://file4.renrendoc.com/view/3c910e2c604dd9c9afdfb617cb76b084/3c910e2c604dd9c9afdfb617cb76b0842.gif)
![并行程序設(shè)計(jì)整理_第3頁(yè)](http://file4.renrendoc.com/view/3c910e2c604dd9c9afdfb617cb76b084/3c910e2c604dd9c9afdfb617cb76b0843.gif)
![并行程序設(shè)計(jì)整理_第4頁(yè)](http://file4.renrendoc.com/view/3c910e2c604dd9c9afdfb617cb76b084/3c910e2c604dd9c9afdfb617cb76b0844.gif)
![并行程序設(shè)計(jì)整理_第5頁(yè)](http://file4.renrendoc.com/view/3c910e2c604dd9c9afdfb617cb76b084/3c910e2c604dd9c9afdfb617cb76b0845.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
并行程序設(shè)計(jì)整理第一頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)2/25相關(guān)網(wǎng)址MPI:,
/mpiPthreads:PVM:/pvm/
OpemMP:網(wǎng)上搜索:第二頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)3/25什么是MPI?MassagePassingInterface:是消息傳遞函數(shù)庫(kù)的標(biāo)準(zhǔn)規(guī)范,由MPI論壇開發(fā),支持Fortran和C一種新的庫(kù)描述,不是一種語(yǔ)言。共有上百個(gè)函數(shù)調(diào)用接口,在Fortran和C語(yǔ)言中可以直接對(duì)這些函數(shù)進(jìn)行調(diào)用MPI是一種標(biāo)準(zhǔn)或規(guī)范的代表,而不是特指某一個(gè)對(duì)它的具體實(shí)現(xiàn)MPI是一種消息傳遞編程模型,并成為這種編程模型的代表和事實(shí)上的標(biāo)準(zhǔn)第三頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)4/25為什么要用MPI?高可移植性MPI已在IBMPC機(jī)上、MSWindows上、所有主要的Unix工作站上和所有主流的并行機(jī)上得到實(shí)現(xiàn)。使用MPI作消息傳遞的C或Fortran并行程序可不加改變地運(yùn)行在IBMPC、MSWindows、Unix工作站、以及各種并行機(jī)上。第四頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)5/25HelloWorld(.cpp)#include<iostream>#include"mpi.h"main(intargc,char*argv[]){
intmyid,
numprocs;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);cout<<"Helloworld!";
cout<<"Iam"<<myid<<"of"<<numprocs<<"!"<<endl;
MPI_Finalize();}第五頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)6/25MPI程序的編譯與運(yùn)行使用節(jié)點(diǎn)進(jìn)行操作(范圍c0101-c0116):rshc0101進(jìn)入程序所在目錄:cdzhaijg編譯,生成可執(zhí)行代碼文件ccc:mpicc-occcmyHelloworld.cpp
指定節(jié)點(diǎn)數(shù)及進(jìn)程數(shù),并執(zhí)行:qsub-lnodes=2:ppn=2mytest%小寫o%小寫l節(jié)點(diǎn)數(shù)進(jìn)程數(shù)第六頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)7/25mytest文件echothisscriptpidis$$
echoWorkingdirectoryis$LJRS_O_WORKDIR
echo$LJRS_0_WORKDIR=$LJRS_O_WORKDIR
cd$LJRS_O_WORKDIR
echoRuningonhost`hostname`
echoTimeis`date`
echoDirectoryis`pwd`
echoThisjobsrunsonthefollowingprocessors:
echo\$LJRS_NODEFILE=$LJRS_NODEFILE
echo`cat$LJRS_NODEFILE`
NPROCS=`wc-l<$LJRS_NODEFILE`
echoThisjobhasallocated$NPROCSnodes
mpirun-m$LJRS_NODEFILE-np$NPROCS/export/home/emfeng/zhaijg/ferm/ccc
echo`date`路徑,及編譯時(shí)起的名字可執(zhí)行文件ccc第七頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)8/25Hello是如何被執(zhí)行的::::#include<stdio.h>#include"mpi.h"main(intargc,char*argv[]){
intmyid,
numprocs;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);cout<<“Helloworld!”;cout<<“Iam”<<myid<<“of”<<numprocs<<“!”);
MPI_Finalize();}HelloWorld!Iam3of4!HelloWorld!Iam2of4!HelloWorld!Iam4of4!HelloWorld!Iam1of4!第八頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)9/25最基本的MPIMPI調(diào)用借口的總數(shù)雖然龐大,但常用的MPI調(diào)用的個(gè)數(shù)確實(shí)有限。下面是6個(gè)最基本的MPI函數(shù)。MPI_Init(…);MPI_Comm_size(…);MPI_Comm_rank(…);MPI_Send(…);MPI_Recv(…);MPI_Finalize();MPI_Init(…);…并行代碼;…MPI_Fainalize();只能有串行代碼;第九頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)10/25點(diǎn)到點(diǎn)通信(MPI_Send)intMPI_Send(void*buf,intcount,MPI_Datatypedatatype,intdest,inttag,MPI_Commcomm);
INbuf 發(fā)送緩沖區(qū)的起始地址
INcount 要發(fā)送信息的元素個(gè)數(shù)
INdatatype發(fā)送信息的數(shù)據(jù)類型
INdest 目標(biāo)進(jìn)程的rank值
INtag 消息標(biāo)簽
INcomm 通信子第十頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)11/25點(diǎn)到點(diǎn)通信(MPI_Recv)intMPI_Recv(void*buf,intcount,MPI_Datatypedatatype,intsource,inttag,MPI_Commcomm,MPI_Status*status);
OUTbuf 接收緩沖區(qū)的起始地址
INcount 要接收信息的元素個(gè)數(shù)
INdatatype 接收信息的數(shù)據(jù)類型
INsource 源進(jìn)程的rank值
INtag 消息標(biāo)簽
INcomm 通信子
OUTstatus status對(duì)象,包含實(shí)際接收到的消息的有關(guān)信息第十一頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)12/25數(shù)據(jù):<起始地址、數(shù)據(jù)個(gè)數(shù)、數(shù)據(jù)類型>*類型,大小必須匹配*信封:<源/目的、標(biāo)識(shí)、通信域>第十二頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)13/25例程:發(fā)送字符串#include<stdio.h>#include"mpi.h"main(intargc,char*argv[]){ intnumprocs;/*進(jìn)程數(shù),該變量為各處理器中的同名變量,存儲(chǔ)是分布的 */ intmyid; /*我的進(jìn)程ID,存儲(chǔ)也是分布的 */ MPI_Statusstatus; /*消息接收狀態(tài)變量,存儲(chǔ)也是分布的 */
charmessage[100]; /*消息buffer,存儲(chǔ)也是分布的 */
/*初始化MPI*/
MPI_Init(&argc,&argv);/*該函數(shù)被各進(jìn)程各調(diào)用一次,得到自己的進(jìn)程rank值*/
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
/*該函數(shù)被各進(jìn)程各調(diào)用一次,得到進(jìn)程數(shù)*/
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);第十三頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)14/25if(myid!=0){
/*建立消息*/sprintf(message,"Greetingsfromprocess%d!",myid);
/*發(fā)送長(zhǎng)度取strlen(message)+1,使\0也一同發(fā)送出去*/
MPI_Send(message,strlen(message)+1,MPI_CHAR,0,99,MPI_COMM_WORLD);}else{/*myid==0*/for(source=1;source<numprocs;source++){MPI_Recv(message,100,MPI_CHAR,source,99,MPI_COMM_WORLD,&status);printf(“%s\n",message);}}
/*關(guān)閉MPI,標(biāo)志并行代碼段的結(jié)束*/
MPI_Finalize();}/*Endmain*/第十四頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)15/25程序執(zhí)行過(guò)程
假設(shè)進(jìn)程數(shù)為3(進(jìn)程0)(進(jìn)程1)(進(jìn)程2)(rank=0)(rank=1)(rank=2)..Recv();..Recv();.....Send();......Send()...第十五頁(yè),共二十五頁(yè),編輯于2023年,星期六MPI并行程序設(shè)計(jì)五月2316/25MPI基本數(shù)據(jù)類型第十六頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)17/25集合通信特點(diǎn)通信空間中的所有進(jìn)程都參與通信操作每一個(gè)進(jìn)程都需要調(diào)用該操作函數(shù)一到多多到一同步第十七頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)18/25類型函數(shù)功能數(shù)據(jù)移動(dòng)MPI_Bcast一到多,數(shù)據(jù)廣播MPI_Gather多到一,數(shù)據(jù)匯合MPI_GathervMPI_Gather的一般形式MPI_AllgatherMPI_Gather的一般形式MPI_AllgathervMPI_Allgather的一般形式MPI_Scatter一到多,數(shù)據(jù)分散MPI_ScattervMPI_Scatter的一般形式MPI_Alltoall多到多,置換數(shù)據(jù)(全互換)MPI_AlltoallvMPI_Alltoall的一般形式數(shù)據(jù)聚集MPI_Reduce多到一,數(shù)據(jù)歸約MPI_Allreduce上者的一般形式,結(jié)果在所有進(jìn)程MPI_Reduce_scatter結(jié)果scatter到各個(gè)進(jìn)程MPI_Scan前綴操作同步MPI_Barrier同步操作MPI集合通信函數(shù)All:表示結(jié)果到所有進(jìn)程.V:Variety,被操作的數(shù)據(jù)對(duì)象和操作更為靈活.%第十八頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)19/25數(shù)據(jù)移動(dòng)
Broadcast
Scatter
Gather
Allgather
Alltoall第十九頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)20/25數(shù)據(jù)聚集ReduceAllreduceReduce-scatterScanMPI預(yù)定義全局?jǐn)?shù)據(jù)運(yùn)算符:MPI_MAX/MPI_MIN;MPI_SUM求和MPI_PROD求積MPI_LAND邏輯與MPI_LOR邏輯或MPI_MAXLOC/MPI_MINLOC最大/小值求下相應(yīng)位置…
…第二十頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)21/25intp,myrank;floatbuf;MPI_Commcomm;MPI_Init(&argc,&argv);/*得進(jìn)程編號(hào)*/MPI_Comm_rank(comm,&my_rank);/*得進(jìn)程總數(shù)*/MPI_Comm_size(comm,&p);if(myrank==0) buf=1.0;MPI_Bcast(&buf,1,MPI_FLOAT,0,comm);MPI_Bcast--數(shù)據(jù)廣播databuf..MPI_Bcast();.data..MPI_Bcast();.data..MPI_Bcast();.Process0myrank=0Process1myrank=1Processp-1myrank=p-1根進(jìn)程既是發(fā)送緩沖區(qū)也是接收緩沖區(qū)第二十一頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)22/25MPI_Gather--數(shù)據(jù)收集intp,myrank;floatdata[10];/*分布變量*/float*buf;MPI_Commcomm;MPI_Init(&argc,&argv);/*得進(jìn)程編號(hào)*/MPI_Comm_rank(comm,&my_rank);/*得進(jìn)程總數(shù)*/MPI_Comm_size(comm,&p);if(myrank==0) buf=(float*)malloc(p*10*sizeof(float);/*開辟接收緩沖區(qū)*/MPI_Gather(data,10,MPI_FLOAT, buf,10,MPI_FlOAT,0,comm);data.MPI_Gather();.data.MPI_Gather();.data.MPI_Gather();.Process0myrank=0Process1myrank=1Processp-1myrank=p-1根進(jìn)程接收其他進(jìn)程來(lái)的消息(包括根進(jìn)程),按每在進(jìn)程在通信組中的編號(hào)依次聯(lián)接在一下,存放在根進(jìn)程的接收緩沖區(qū)中.buf第二十二頁(yè),共二十五頁(yè),編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)23/25MPI_Scatter--數(shù)據(jù)分散intp,myrank;floatdata[10];float*buf;MPI_Commcomm;MPI_Init(&argc,&argv);/*得進(jìn)程編號(hào)*/MPI_Comm_rank(comm,&my_rank);/*得進(jìn)程總數(shù)*/MPI_Comm_size(comm,&p);if(myrank==0) buf=(float*)malloc(p*10*sizeof(float);/*開辟發(fā)送緩沖區(qū)*/MPI_Scatter(buf,10,MPI_FLOAT, data,10,MPI_FlOAT,0,comm);data.MPI_Scatter();.data.MPI_Scatter();.data.MPI_Scatter();.Process
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022-2023學(xué)年貴州省六盤水市鐘山區(qū)四年級(jí)(上)期末數(shù)學(xué)試卷
- Unit-4-My-home-Part-A-教案設(shè)計(jì)-小學(xué)英語(yǔ)四年級(jí)上冊(cè)-人教PEP版
- 2025年產(chǎn)品營(yíng)銷協(xié)議(2篇)
- 2025年個(gè)人果園承包合同(4篇)
- 2025年產(chǎn)品供應(yīng)與銷售代合同(三篇)
- 2025年買房書面合同協(xié)議范文(2篇)
- 2025年個(gè)人租房的合同常用版(4篇)
- 2025年產(chǎn)品委托銷售合同經(jīng)典版(三篇)
- 2025年個(gè)人工程合作協(xié)議范文(2篇)
- 農(nóng)業(yè)項(xiàng)目股權(quán)投資居間合同
- 2025年初中語(yǔ)文:春晚觀后感三篇
- Unit 7 第3課時(shí) Section A (Grammar Focus -4c)(導(dǎo)學(xué)案)-【上好課】2022-2023學(xué)年八年級(jí)英語(yǔ)下冊(cè)同步備課系列(人教新目標(biāo)Go For It!)
- 2025年上半年長(zhǎng)沙市公安局招考警務(wù)輔助人員(500名)易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 《教育強(qiáng)國(guó)建設(shè)規(guī)劃綱要(2024-2035年)》解讀講座
- 2025河北邯鄲世紀(jì)建設(shè)投資集團(tuán)招聘專業(yè)技術(shù)人才30人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 慈溪高一期末數(shù)學(xué)試卷
- 《基于新課程標(biāo)準(zhǔn)的初中數(shù)學(xué)課堂教學(xué)評(píng)價(jià)研究》
- 省級(jí)產(chǎn)業(yè)園區(qū)基礎(chǔ)設(shè)施項(xiàng)目可行性研究報(bào)告
- 2025年中國(guó)東方航空招聘筆試參考題庫(kù)含答案解析
- 預(yù)算績(jī)效評(píng)價(jià)管理機(jī)構(gòu)入圍投標(biāo)文件(技術(shù)方案)
- 重大事故隱患判定標(biāo)準(zhǔn)與相關(guān)事故案例培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論