




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MPI并行程序設(shè)計(jì)教師:彭四偉教師:彭四偉MPICH2的下載和安裝n官方下載地址:官方下載地址:n/research/projects/mpich2/downloads/index.php?s=downloadsn安裝條件安裝條件n.Net Frame 1.1/2.0nVisual C+ 2005 SP1 Redistributable Package (x86)n管理員權(quán)限管理員權(quán)限MPICH2服務(wù)(守護(hù)進(jìn)程)nMPICH2的守護(hù)進(jìn)程的守護(hù)進(jìn)程smpdn服務(wù)的安裝服務(wù)的安裝nSmpd -installn服務(wù)的卸載服務(wù)的卸載nSmpd -removen
2、服務(wù)的開(kāi)啟服務(wù)的開(kāi)啟nSmpd -startn服務(wù)的停止服務(wù)的停止nSmpd -stopMPICH2的配置n設(shè)設(shè)置置工工作作賬賬號(hào)號(hào)MPICH2的配置n設(shè)設(shè)置置環(huán)環(huán)境境參參數(shù)數(shù)MPICH2編程環(huán)境設(shè)置n在編譯器選項(xiàng)下設(shè)置在編譯器選項(xiàng)下設(shè)置include路徑路徑n加入加入includen在編譯器選項(xiàng)下設(shè)置在編譯器選項(xiàng)下設(shè)置lib路徑路徑n加入加入libn在編譯器選項(xiàng)下加入鏈接庫(kù)在編譯器選項(xiàng)下加入鏈接庫(kù)nmpi.libMPICH2程序的布置和運(yùn)行n程序的布署程序的布署n程序要求分布在各結(jié)點(diǎn)的相同路徑中。程序要求分布在各結(jié)點(diǎn)的相同路徑中。n通過(guò)通過(guò)mpiexec運(yùn)行運(yùn)行nmpiexec n 4 he
3、llonmpiexec hosts 4 pc1 pc2 pc3 pc4 hellonmpiexec hosts 2 pc1 2 pc2 3 hellonmpiexec localonly 4 helloMPI并行程序設(shè)計(jì)nMPI程序的一般模式程序的一般模式#include int main(int argc, char *argv) int size, rank; MPI_Init(&argc, &argv); /* initialize MPI */ MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COM
4、M_WORLD, &rank); if (rank = 0) master(); else slave(); MPI_Finalize(); /* cleanup MPI */ return 0;#include int main(int argc, char *argv) int size, rank; MPI_Init(&argc, &argv); /* initialize MPI */ MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); switc
5、h (rank) case 0: . case 1: . . default: . MPI_Finalize(); /* cleanup MPI */ return 0;#include “mpi.h”int foo(int i) . int main( int argc, char *argv )int i, tmp, sum=0, group_size, my_rank, N; MPI_Status status;MPI_Init( &argc, &argv );MPI_Comm_size( MPI_COMM_WORLD, &group_size );MPI_Com
6、m_rank( MPI_COMM_WORLD, &my_rank );if (my_rank=0)printf( “N=“ ); scanf( “%d”, &N );for (i=1; igroup_size; i+)S1:MPI_Send( &N, 1, MPI_INT, i, i, MPI_COMM_WORLD; );for (i=my_rank; iN; i+=group_size)sum += foo(i);for (i=1; igroup_size; i+)S2:MPI_Recv( &tmp, 1, MPI_INT, i, i, MPI_COMM_WO
7、RLD, &status );sum += tmp;printf (“nThe result=%dn”, sum );elseS3:MPI_Recv( &N, 1, MPI_INT, 0, my_rank, MPI_COMM_WORLD, &status );for (i=my_rank; iN; i+=group_size)sum += foo(i);S4:MPI_Send( &sum, 1, MPI_INT, 0, i, MPI_COMM_WORLD );MPI_Finalize();return 0;10)(niifoo#include #include
8、#define N 1000000main()double sum=0, local, mypi, pi, dx;long i, taskid, numtask;A:dx = 1.0/N;MPI_Init( &argc, &argv );MPI_Comm_rank( MPI_COMM_WORLD, &taskid );MPI_COMM_size( MPI_COMM_WORLD, &numtask );B:for (i=taskid; iN; i+=numtask)P:local = (i+0.5)*dx;Q:sum += 4.0/(1.0+local*local
9、);mypi = sum*dx;C:MPI_Reduce( &mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD );D:if (taskid=0) printf( “pi is %lfn”, pi );MPI_Finalize();4)(1110102xarctgdxx#include #include using namespace std;int main(int argc, char *argv)int size, rank, x=-1;MPI_Status status;MPI_Init(&argc, &a
10、mp;argv);MPI_Comm_size(MPI_COMM_WORLD, &size);MPI_Comm_rank(MPI_COMM_WORLD, &rank);while (x!=0)if (rank=0)cout x;cout Read x from rank rank endl;elseMPI_Recv(&x, 1, MPI_INT, rank-1, 0, MPI_COMM_WORLD, &status);cout Recevied x from rank rank-1 endl;if (ranksize-1)MPI_Send(&x, 1, M
11、PI_INT, rank+1, 0, MPI_COMM_WORLD);cout Send x to rank rank+1 endl;MPI_Barrier(MPI_COMM_WORLD);MPI_Finalize();return 0;MPI的通信模式分類分類發(fā)送發(fā)送接收接收阻塞通信MPI_SendMPI_RecvMPI_IrecvMPI_BsendMPI_RsendMPI_Ssend非阻塞通信MPI_IsendMPI_IbsendMPI_IrsendMPI_IssendB:Buffer R:Ready S:SynchonousI:Immediately#include #include u
12、sing namespace std;int main(int argc, char *argv) int rank; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); char msg17, msg317; double msg22; int s1, s2, s3; MPI_Status status; MPI_Pack_size(7, MPI_CHAR, MPI_COMM_WORLD, &s1); MPI_Pack_size(2, MPI_DOUBLE, MPI_COMM_WORLD,
13、 &s2); MPI_Pack_size(17, MPI_CHAR, MPI_COMM_WORLD, &s3); int bufsize = 3*MPI_BSEND_OVERHEAD + s1 + s2 + s3; char *buf = new charbufsize; MPI_Buffer_attach(buf, bufsize); if (rank = 0) MPI_Bsend(msg1, 7, MPI_CHAR, 1, 0, MPI_COMM_WORLD); MPI_Bsend(msg2, 2, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD); MP
14、I_Bsend(msg3, 17, MPI_CHAR, 1, 0, MPI_COMM_WORLD); else if (rank = 1) MPI_Recv(msg1, 7, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); MPI_Recv(msg2, 2, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &status); MPI_Recv(msg3, 17, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); MPI_Buffer_detach(&buf, &bu
15、fsize); delete buf; MPI_Finalize(); return 0;緩沖模式if (rank = 0) MPI_Recv(buffer, n, MPI_INT, 1, 1, MPI_COMM_WORLD, &status); MPI_Barrier(MPI_COMM_WORLD);else if (rank = 1) MPI_Barrier(MPI_COMM_WORLD); MPI_Rsend(buffer, n, MPI_INT, 0, 1, MPI_COMM_WORLD);就緒模式MPI中的通信安全問(wèn)題n例程:例程:rank傳遞傳遞01230123#inclu
16、de main(int argc, char *argv ) int rank, size, x; MPI_Status status; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); MPI_Send(&rank,1,MPI_INT, (rank+1)%size, 1,MPI_COMM_WORLD); MPI_Recv(&x, 1, MPI_INT, (rank+size-1)%si
17、ze, 1, MPI_COMM_WORLD, &status); MPI_Finalize(); return 0;MPI中的通信安全問(wèn)題MPI中的通信安全問(wèn)題MPI中的通信安全問(wèn)題MPI中的通信安全問(wèn)題n例程:避免死鎖的例程:避免死鎖的rank傳遞傳遞#include main(int argc, char *argv ) . if (rank%2=0) MPI_Send(&rank,1,MPI_INT, (rank+1)%size, 1,MPI_COMM_WORLD); MPI_Recv(&x, 1, MPI_INT, (rank+size-1)%size, 1,
18、MPI_COMM_WORLD, &status); else MPI_Recv(&x, 1, MPI_INT, (rank+size-1)%size, 1, MPI_COMM_WORLD, &status); MPI_Send(&rank,1,MPI_INT, (rank+1)%size, 1,MPI_COMM_WORLD); MPI_Finalize(); return 0;MPI中的通信安全問(wèn)題n捆綁接收發(fā)送:捆綁接收發(fā)送:MPI_Sendrecvnint MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Data
19、type sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status)MPI的數(shù)據(jù)類型nMPI的數(shù)據(jù)類型是用于保障消息傳遞過(guò)程中的數(shù)據(jù)類型是用于保障消息傳遞過(guò)程中的數(shù)據(jù)能夠被正確的解釋,而不是為了用的數(shù)據(jù)能夠被正確的解釋,而不是為了用于計(jì)算。于計(jì)算。n消息傳遞中的類型匹配消息傳遞中的類型匹配n有類型數(shù)據(jù)的通信,發(fā)送方和接收方均使用相同的數(shù)據(jù)類型有類型數(shù)據(jù)的通信,發(fā)送方和接收方均使用相同的
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海員工的勞動(dòng)合同范本5篇
- 中國(guó)電建合同范本
- 烹飪?cè)现R(shí)練習(xí)題庫(kù)(附答案)
- 個(gè)人廣告公司年終總結(jié)
- 修路購(gòu)銷合同范本
- 小學(xué)英語(yǔ)職稱考試試卷
- 作坊小廠轉(zhuǎn)讓合同范本
- 上半年工作總結(jié)和下半年工作計(jì)劃
- 醫(yī)生專家聘用合同范本
- 南京 汽車銷售合同范本
- 2025年常州工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案1套
- 2025年湖南理工職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)必考題
- 2025年湖南城建職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)完美版
- 會(huì)計(jì)信息化練習(xí)題庫(kù)+參考答案
- 網(wǎng)課智慧樹(shù)知道《老年醫(yī)學(xué)概論(浙江大學(xué))》章節(jié)測(cè)試答案
- MOOC 數(shù)據(jù)庫(kù)系統(tǒng)(中):建模與設(shè)計(jì)-哈爾濱工業(yè)大學(xué) 中國(guó)大學(xué)慕課答案
- 山東省任氏宗親分布村落
- 北師大版小學(xué)數(shù)學(xué)五年級(jí)下冊(cè)《有趣的折疊》說(shuō)課稿
- 陜西省建設(shè)工程長(zhǎng)安杯獎(jiǎng)省優(yōu)質(zhì)工程結(jié)構(gòu)備案和復(fù)查的要求
- 典型示功圖分析(全)
- 水生觀賞動(dòng)物鑒賞與維護(hù)課程
評(píng)論
0/150
提交評(píng)論