版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
并行程序設(shè)計(jì)整理第一頁(yè),共二十五頁(yè),2022年,8月28日二月23MPI并行程序設(shè)計(jì)2/25相關(guān)網(wǎng)址MPI:,
Pthreads:PVM:
OpemMP:網(wǎng)上搜索:第二頁(yè),共二十五頁(yè),2022年,8月28日二月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è),2022年,8月28日二月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è),2022年,8月28日二月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è),2022年,8月28日二月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è),2022年,8月28日二月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è),2022年,8月28日二月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è),2022年,8月28日二月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è),2022年,8月28日二月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è),2022年,8月28日二月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è),2022年,8月28日二月23MPI并行程序設(shè)計(jì)12/25數(shù)據(jù):<起始地址、數(shù)據(jù)個(gè)數(shù)、數(shù)據(jù)類型>*類型,大小必須匹配*信封:<源/目的、標(biāo)識(shí)、通信域>第十二頁(yè),共二十五頁(yè),2022年,8月28日二月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è),2022年,8月28日二月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è),2022年,8月28日二月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()...第十五頁(yè),共二十五頁(yè),2022年,8月28日MPI并行程序設(shè)計(jì)二月2316/25MPI基本數(shù)據(jù)類型第十六頁(yè),共二十五頁(yè),2022年,8月28日二月23MPI并行程序設(shè)計(jì)17/25集合通信特點(diǎn)通信空間中的所有進(jìn)程都參與通信操作每一個(gè)進(jìn)程都需要調(diào)用該操作函數(shù)一到多多到一同步第十七頁(yè),共二十五頁(yè),2022年,8月28日二月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è),2022年,8月28日二月23MPI并行程序設(shè)計(jì)19/25數(shù)據(jù)移動(dòng)
Broadcast
Scatter
Gather
Allgather
Alltoall第十九頁(yè),共二十五頁(yè),2022年,8月28日二月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è),2022年,8月28日二月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è),2022年,8月28日二月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第二十二頁(yè),共二十五頁(yè),2022年,8月28日二月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ú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境監(jiān)測(cè)機(jī)器人應(yīng)用網(wǎng)絡(luò)集成制造機(jī)器人咨詢服務(wù)協(xié)議
- 2025-2030中國(guó)野生原汁藍(lán)莓酒行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及競(jìng)爭(zhēng)格局與投資前景研究報(bào)告
- 2025-2030醫(yī)療健康產(chǎn)業(yè)政策分析及生命科學(xué)企業(yè)創(chuàng)新投資體系建議報(bào)告
- 2025-2030醫(yī)療健康之英國(guó)護(hù)理服務(wù)市場(chǎng)多維度透視及政策演變與護(hù)理質(zhì)量深度研究
- 2025-2030醫(yī)療保險(xiǎn)增值服務(wù)發(fā)展研究與投資機(jī)會(huì)挖掘方法
- 2025-2030醫(yī)療AI技術(shù)發(fā)展現(xiàn)狀及市場(chǎng)應(yīng)用前景預(yù)測(cè)報(bào)告
- 2025-2030匈牙利精密儀器行業(yè)市場(chǎng)分析供需發(fā)展趨勢(shì)投資評(píng)估規(guī)劃研究報(bào)告
- 2025-2030匈牙利建筑業(yè)市場(chǎng)分析投資評(píng)估供需調(diào)研發(fā)展前景規(guī)劃報(bào)告
- 2025-2030匈牙利交通運(yùn)輸行業(yè)市場(chǎng)現(xiàn)狀分析及行業(yè)投資潛力評(píng)估探討
- 2025-2030動(dòng)物保健品行業(yè)市場(chǎng)競(jìng)爭(zhēng)供需技術(shù)進(jìn)步投資評(píng)估規(guī)劃分析研究報(bào)告
- 2026浙江杭州市西湖區(qū)農(nóng)業(yè)農(nóng)村局面向社會(huì)招聘編外人員1名備考題庫(kù)含答案詳解
- 2026四川涼山州雷波縣糧油貿(mào)易總公司面向社會(huì)招聘6人備考題庫(kù)(含答案詳解)
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國(guó)稅務(wù)信息化行業(yè)市場(chǎng)全景評(píng)估及投資戰(zhàn)略咨詢報(bào)告
- 非糧化排查工作方案
- GB/T 9706.266-2025醫(yī)用電氣設(shè)備第2-66部分:助聽器及助聽器系統(tǒng)的基本安全和基本性能專用要求
- 2025年生態(tài)旅游度假區(qū)生態(tài)旅游度假村生態(tài)旅游商品開發(fā)項(xiàng)目可行性分析報(bào)告
- 地學(xué)歌訣集成
- 幼兒園大班社會(huì)課件:《我是中國(guó)娃》
- 村莊搬遷可行性報(bào)告
- 青島版五四制五年級(jí)上冊(cè)數(shù)學(xué)應(yīng)用題216道
- 儲(chǔ)物間管理制度
評(píng)論
0/150
提交評(píng)論