版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
并行程序設(shè)計(jì)整理第一頁,共二十五頁,編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)2/25相關(guān)網(wǎng)址MPI:,
/mpiPthreads:PVM:/pvm/
OpemMP:網(wǎng)上搜索:第二頁,共二十五頁,編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)3/25什么是MPI?MassagePassingInterface:是消息傳遞函數(shù)庫的標(biāo)準(zhǔn)規(guī)范,由MPI論壇開發(fā),支持Fortran和C一種新的庫描述,不是一種語言。共有上百個(gè)函數(shù)調(diào)用接口,在Fortran和C語言中可以直接對(duì)這些函數(shù)進(jìn)行調(diào)用MPI是一種標(biāo)準(zhǔn)或規(guī)范的代表,而不是特指某一個(gè)對(duì)它的具體實(shí)現(xiàn)MPI是一種消息傳遞編程模型,并成為這種編程模型的代表和事實(shí)上的標(biāo)準(zhǔn)第三頁,共二十五頁,編輯于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ī)上。第四頁,共二十五頁,編輯于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();}第五頁,共二十五頁,編輯于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ù)第六頁,共二十五頁,編輯于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第七頁,共二十五頁,編輯于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!第八頁,共二十五頁,編輯于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();只能有串行代碼;第九頁,共二十五頁,編輯于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 通信子第十頁,共二十五頁,編輯于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)信息第十一頁,共二十五頁,編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)12/25數(shù)據(jù):<起始地址、數(shù)據(jù)個(gè)數(shù)、數(shù)據(jù)類型>*類型,大小必須匹配*信封:<源/目的、標(biāo)識(shí)、通信域>第十二頁,共二十五頁,編輯于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);第十三頁,共二十五頁,編輯于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*/第十四頁,共二十五頁,編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)15/25程序執(zhí)行過程
假設(shè)進(jìn)程數(shù)為3(進(jìn)程0)(進(jìn)程1)(進(jìn)程2)(rank=0)(rank=1)(rank=2)..Recv();..Recv();.....Send();......Send()...第十五頁,共二十五頁,編輯于2023年,星期六MPI并行程序設(shè)計(jì)五月2316/25MPI基本數(shù)據(jù)類型第十六頁,共二十五頁,編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)17/25集合通信特點(diǎn)通信空間中的所有進(jìn)程都參與通信操作每一個(gè)進(jìn)程都需要調(diào)用該操作函數(shù)一到多多到一同步第十七頁,共二十五頁,編輯于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ì)象和操作更為靈活.%第十八頁,共二十五頁,編輯于2023年,星期六五月23MPI并行程序設(shè)計(jì)19/25數(shù)據(jù)移動(dòng)
Broadcast
Scatter
Gather
Allgather
Alltoall第十九頁,共二十五頁,編輯于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)位置…
…第二十頁,共二十五頁,編輯于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ū)第二十一頁,共二十五頁,編輯于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)程來的消息(包括根進(jìn)程),按每在進(jìn)程在通信組中的編號(hào)依次聯(lián)接在一下,存放在根進(jìn)程的接收緩沖區(qū)中.buf第二十二頁,共二十五頁,編輯于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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《基因突變和基因重組》教學(xué)設(shè)計(jì)1
- 課題申報(bào)參考:競(jìng)合供應(yīng)鏈企業(yè)社會(huì)責(zé)任審計(jì)、運(yùn)營(yíng)與融資策略研究
- 課題申報(bào)參考:檢察公益訴訟立法研究
- 2025年上半年水產(chǎn)漁業(yè)生產(chǎn)情況總結(jié)及下半年工作安排(三篇)
- 二零二五版房地產(chǎn)土地使用權(quán)交易爭(zhēng)議解決協(xié)議3篇
- 影視劇臨時(shí)演員聘用協(xié)議2025版2篇
- 2025年度個(gè)人與派遣公司教育培訓(xùn)派遣合同范本4篇
- 二零二五年鍋爐維修安全風(fēng)險(xiǎn)評(píng)估與處理協(xié)議3篇
- 二零二五版新材料產(chǎn)業(yè)臨時(shí)用工聘用管理協(xié)議3篇
- 2025年香港公司股權(quán)轉(zhuǎn)讓手續(xù)糾紛解決合同3篇
- 慈溪高一期末數(shù)學(xué)試卷
- 天津市武清區(qū)2024-2025學(xué)年八年級(jí)(上)期末物理試卷(含解析)
- 《徐霞客傳正版》課件
- 江西硅博化工有限公司年產(chǎn)5000噸硅樹脂項(xiàng)目環(huán)境影響評(píng)價(jià)
- 高端民用航空復(fù)材智能制造交付中心項(xiàng)目環(huán)評(píng)資料環(huán)境影響
- 量子醫(yī)學(xué)成像學(xué)行業(yè)研究報(bào)告
- DB22T 3268-2021 糧食收儲(chǔ)企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化評(píng)定規(guī)范
- 辦事居間協(xié)議合同范例
- 正念減壓療法詳解課件
- 學(xué)校校本課程《英文電影鑒賞》文本
- 華為HCSA-Presales-IT售前認(rèn)證備考試題及答案
評(píng)論
0/150
提交評(píng)論