




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
并行程序設(shè)計整理第1頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計2/25相關(guān)網(wǎng)址MPI:,
/mpiPthreads:PVM:/pvm/
OpemMP:網(wǎng)上搜索:第2頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計3/25什么是MPI?MassagePassingInterface:是消息傳遞函數(shù)庫的標準規(guī)范,由MPI論壇開發(fā),支持Fortran和C一種新的庫描述,不是一種語言。共有上百個函數(shù)調(diào)用接口,在Fortran和C語言中可以直接對這些函數(shù)進行調(diào)用MPI是一種標準或規(guī)范的代表,而不是特指某一個對它的具體實現(xiàn)MPI是一種消息傳遞編程模型,并成為這種編程模型的代表和事實上的標準第3頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計4/25為什么要用MPI?高可移植性MPI已在IBMPC機上、MSWindows上、所有主要的Unix工作站上和所有主流的并行機上得到實現(xiàn)。使用MPI作消息傳遞的C或Fortran并行程序可不加改變地運行在IBMPC、MSWindows、Unix工作站、以及各種并行機上。第4頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計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();}第5頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計6/25MPI程序的編譯與運行使用節(jié)點進行操作(范圍c0101-c0116):rshc0101進入程序所在目錄:cdzhaijg編譯,生成可執(zhí)行代碼文件ccc:mpicc-occcmyHelloworld.cpp
指定節(jié)點數(shù)及進程數(shù),并執(zhí)行:qsub-lnodes=2:ppn=2mytest%小寫o%小寫l節(jié)點數(shù)進程數(shù)第6頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計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`路徑,及編譯時起的名字可執(zhí)行文件ccc第7頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計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!第8頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計9/25最基本的MPIMPI調(diào)用借口的總數(shù)雖然龐大,但常用的MPI調(diào)用的個數(shù)確實有限。下面是6個最基本的MPI函數(shù)。MPI_Init(…);MPI_Comm_size(…);MPI_Comm_rank(…);MPI_Send(…);MPI_Recv(…);MPI_Finalize();MPI_Init(…);…并行代碼;…MPI_Fainalize();只能有串行代碼;第9頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計10/25點到點通信(MPI_Send)intMPI_Send(void*buf,intcount,MPI_Datatypedatatype,intdest,inttag,MPI_Commcomm);
INbuf 發(fā)送緩沖區(qū)的起始地址
INcount 要發(fā)送信息的元素個數(shù)
INdatatype發(fā)送信息的數(shù)據(jù)類型
INdest 目標進程的rank值
INtag 消息標簽
INcomm 通信子第10頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計11/25點到點通信(MPI_Recv)intMPI_Recv(void*buf,intcount,MPI_Datatypedatatype,intsource,inttag,MPI_Commcomm,MPI_Status*status);
OUTbuf 接收緩沖區(qū)的起始地址
INcount 要接收信息的元素個數(shù)
INdatatype 接收信息的數(shù)據(jù)類型
INsource 源進程的rank值
INtag 消息標簽
INcomm 通信子
OUTstatus status對象,包含實際接收到的消息的有關(guān)信息第11頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計12/25數(shù)據(jù):<起始地址、數(shù)據(jù)個數(shù)、數(shù)據(jù)類型>*類型,大小必須匹配*信封:<源/目的、標識、通信域>第12頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計13/25例程:發(fā)送字符串#include<stdio.h>#include"mpi.h"main(intargc,char*argv[]){ intnumprocs;/*進程數(shù),該變量為各處理器中的同名變量,存儲是分布的 */ intmyid; /*我的進程ID,存儲也是分布的 */ MPI_Statusstatus; /*消息接收狀態(tài)變量,存儲也是分布的 */
charmessage[100]; /*消息buffer,存儲也是分布的 */
/*初始化MPI*/
MPI_Init(&argc,&argv);/*該函數(shù)被各進程各調(diào)用一次,得到自己的進程rank值*/
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
/*該函數(shù)被各進程各調(diào)用一次,得到進程數(shù)*/
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);第13頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計14/25if(myid!=0){
/*建立消息*/sprintf(message,"Greetingsfromprocess%d!",myid);
/*發(fā)送長度取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,標志并行代碼段的結(jié)束*/
MPI_Finalize();}/*Endmain*/第14頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計15/25程序執(zhí)行過程
假設(shè)進程數(shù)為3(進程0)(進程1)(進程2)(rank=0)(rank=1)(rank=2)..Recv();..Recv();.....Send();......Send()...第15頁,課件共25頁,創(chuàng)作于2023年2月MPI并行程序設(shè)計七月2316/25MPI基本數(shù)據(jù)類型第16頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計17/25集合通信特點通信空間中的所有進程都參與通信操作每一個進程都需要調(diào)用該操作函數(shù)一到多多到一同步第17頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計18/25類型函數(shù)功能數(shù)據(jù)移動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é)果在所有進程MPI_Reduce_scatter結(jié)果scatter到各個進程MPI_Scan前綴操作同步MPI_Barrier同步操作MPI集合通信函數(shù)All:表示結(jié)果到所有進程.V:Variety,被操作的數(shù)據(jù)對象和操作更為靈活.%第18頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計19/25數(shù)據(jù)移動
Broadcast
Scatter
Gather
Allgather
Alltoall第19頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計20/25數(shù)據(jù)聚集ReduceAllreduceReduce-scatterScanMPI預(yù)定義全局數(shù)據(jù)運算符:MPI_MAX/MPI_MIN;MPI_SUM求和MPI_PROD求積MPI_LAND邏輯與MPI_LOR邏輯或MPI_MAXLOC/MPI_MINLOC最大/小值求下相應(yīng)位置…
…第20頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計21/25intp,myrank;floatbuf;MPI_Commcomm;MPI_Init(&argc,&argv);/*得進程編號*/MPI_Comm_rank(comm,&my_rank);/*得進程總數(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根進程既是發(fā)送緩沖區(qū)也是接收緩沖區(qū)第21頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計22/25MPI_Gather--數(shù)據(jù)收集intp,myrank;floatdata[10];/*分布變量*/float*buf;MPI_Commcomm;MPI_Init(&argc,&argv);/*得進程編號*/MPI_Comm_rank(comm,&my_rank);/*得進程總數(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根進程接收其他進程來的消息(包括根進程),按每在進程在通信組中的編號依次聯(lián)接在一下,存放在根進程的接收緩沖區(qū)中.buf第22頁,課件共25頁,創(chuàng)作于2023年2月七月23MPI并行程序設(shè)計23/25MPI_Scatter--數(shù)據(jù)分散intp,myrank;floatdata[10];float*buf;MPI_Commcomm;MPI_Init(&argc,&argv);/*得進程編號*/MPI_Comm_rank(comm,&my_rank);/*得進程總數(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();.Proc
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中數(shù)學省級課題申報書
- 寧波課題立項申報書
- 生物小課題立項申報書
- 藝術(shù)規(guī)劃課題申報書范本
- 風濕課題申報書
- 賣車位定金合同范本
- 行為習慣養(yǎng)成課題申報書
- 合同范本文化傳播
- 課題成果申報書范文
- 精準教學 課題申報書
- 女生-青春期教育(課堂)課件
- 第十四屆全國交通運輸行業(yè)職業(yè)技能競賽(公路收費及監(jiān)控員)賽項題庫-上(單選題匯總-共3部分-1)
- NBT 10664-2021 核電廠工程巖土試驗規(guī)程
- 中醫(yī)藥膳學(中篇-藥膳原料)共66張課件
- 醫(yī)院產(chǎn)前篩查中心設(shè)置評審驗收工作匯報課件
- 公司生產(chǎn)進度表
- 2019年遠程開具電子處方管理制度及操作規(guī)程版
- 房室結(jié)雙徑路傳導(dǎo)的基本電生理特征與常見心電圖表現(xiàn)分析課件
- 《傳統(tǒng)功法-八段錦》教學大綱
- 溶血性貧血護理
- 逆向思維-PPT課件(PPT 43頁)
評論
0/150
提交評論