MPI綜合實(shí)驗(yàn)報(bào)告_第1頁(yè)
MPI綜合實(shí)驗(yàn)報(bào)告_第2頁(yè)
MPI綜合實(shí)驗(yàn)報(bào)告_第3頁(yè)
MPI綜合實(shí)驗(yàn)報(bào)告_第4頁(yè)
MPI綜合實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、MPI綜合實(shí)驗(yàn)報(bào)告目前三次MPI實(shí)驗(yàn)已經(jīng)完畢,結(jié)合之前所寫(xiě)的實(shí)驗(yàn)報(bào)告,對(duì)總體的實(shí)驗(yàn)容做一個(gè)總結(jié)。參考資料:MPI簡(jiǎn)介多線程是一種便捷的模型,其中每個(gè)線程都可以訪問(wèn)其它線程的存儲(chǔ)空間。因此,這種模型只能在共享存儲(chǔ)系統(tǒng)之間移植。一般來(lái)講,并行機(jī)不一定在各處理器之間共享存儲(chǔ),當(dāng)面向非共享存儲(chǔ)系統(tǒng)開(kāi)發(fā)并行程序時(shí),程序的各局部之間通過(guò)來(lái)回傳遞消息的方式通信。要使得消息傳遞方式可移植,就需要采用標(biāo)準(zhǔn)的消息傳遞庫(kù)。這就促成的消息傳遞接口(MessagePassingInterface,MPI)的面世,MPI是一種被廣泛采用的消息傳遞標(biāo)準(zhǔn)1。與OpenMP并行程序不同,MPI是一種基于消息傳遞的并行編程技術(shù)。

2、消息傳遞接口是一種編程接口標(biāo)準(zhǔn),而不是一種具體的編程語(yǔ)言。簡(jiǎn)而言之,MPI標(biāo)準(zhǔn)定義了一組具有可移植性的編程接口。各個(gè)廠商或組織遵循這些標(biāo)準(zhǔn)實(shí)現(xiàn)自己的MPI軟件包,典型的實(shí)現(xiàn)包括開(kāi)放源代碼的MPICH、LAMMPI以及不開(kāi)放源代碼的IntelMPI。由于MPI提供了統(tǒng)一的編程接口,程序員只需要設(shè)計(jì)好并行算法,使用相應(yīng)的MPI庫(kù)就可以實(shí)現(xiàn)基于消息傳遞的并行計(jì)算。MPI支持多種操作系統(tǒng),包括大多數(shù)的類UNIX和Windows系統(tǒng)。三次實(shí)驗(yàn)總結(jié)第一次實(shí)驗(yàn):實(shí)驗(yàn)要求:配置好MPI運(yùn)行的根本環(huán)境,測(cè)試MPI的根本通信程序。程序:#include"stdafx.h"#include<

3、;mpi.h>voidmain(void)MPIStatusstatus;charstring="xxxxx"intmyid;MPI_Init(NULL,NULL);MPI_m_rank(MPI_M_WORLD,&myid);if(myid=2)MPI_Send("HELLO",5,MPI_CHAR,7,1234,MPI_M_WORLD);if(myid=7)MPI_Recv(string,5,MPI_CHAR,2,MPI_ANY_TAG,MPI_M_WORLD,&status);printf("Got%sfromP%d,

4、tag%dn",string,status,status.MPISOURCE,status.MPITAG);MPI_Finalize();運(yùn)行環(huán)境配置過(guò)程:這個(gè)是在根據(jù)網(wǎng)上的環(huán)境配置教程做的1、安裝軟件MPICH2,本次操作安裝在C:ProgramFilesMPICH2文件夾中。2、翻開(kāi)安裝好的MPICH2目錄,翻開(kāi)bin文件夾中的wmpiregister.exe文件,進(jìn)展注冊(cè)。填入本機(jī)的用戶名和密碼。3、建立一個(gè)控制臺(tái)應(yīng)用程序空文檔,MYMPI,輸入程序4、添加庫(kù)和包含文件翻開(kāi)Tool->Options對(duì)話框選擇工程和解決方案下的VC+目錄一欄,如以下圖所示:分別添加包含文件

5、C:ProgramFilesMPICH2include和庫(kù)文件C:ProgramFilesMPICH2lib5、取消預(yù)編譯頭翻開(kāi)Project->Property,設(shè)置框如以下圖所示展開(kāi)C/C+項(xiàng),選擇與編譯頭,在創(chuàng)立/使用預(yù)編譯頭中選擇:不使用預(yù)編譯頭6、翻開(kāi)Project->Property,設(shè)置框如以下圖所示將配置屬性中的常規(guī)項(xiàng)中的字符集設(shè)置成未設(shè)置展開(kāi)連接器中輸入項(xiàng),在附件依賴項(xiàng)中添加mpi.lib7、自定義多線程運(yùn)行翻開(kāi)MPICH2安裝目錄顯得mpiexec.exe裝入運(yùn)行產(chǎn)生的.exe文件并選擇線程數(shù),運(yùn)行結(jié)果如以下圖所示第二次實(shí)驗(yàn)實(shí)驗(yàn)要求:MPI實(shí)驗(yàn)第二局部1. 了解

6、計(jì)算粒度、問(wèn)題規(guī)模計(jì)算負(fù)載、并行程度概念;2. 測(cè)試基于MPI的Pi并行計(jì)算程序;3. 完成實(shí)驗(yàn)報(bào)告MPI程序代碼、運(yùn)行結(jié)果截屏、實(shí)驗(yàn)分析總結(jié)在這次的實(shí)驗(yàn)過(guò)程中,我們的程序是通過(guò)數(shù)值方法計(jì)算的值來(lái)觀察運(yùn)行時(shí)間。程序:#include"stdafx.h"#include<stdio.h>#include"mpi.h"staticlongnum_steps=100000;voidmain(intargc,char*argv)inti_start,i_end,i,myid,numprocs;doublepi,mypi,x,step,sum=0.0;

7、doublestart,end;MPI_Init(&argc,&argv);MPI_m_size(MPI_M_WORLD,&numprocs);MPI_m_rank(MPI_M_WORLD,&myid);if(myid=0)start=MPI_Wtime();MPI_Bcast(&num_steps,1,MPI_INT,0,MPI_M_WORLD);i_start=myid*(num_steps/numprocs);i_end=i_start+(num_steps/numprocs);step=1.0/(double)num_steps;for(i=i_

8、start;i<i_end;i+)x=(i+0.5)*step;sum=sum+4.0/(1.0+x*x);mypi=step*sum;MPI_Reduce(&mypi,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_M_WORLD);if(myid=0)printf("Pi=%fn",pi);end=MPI_Wtime();printf("Runtimeis:%.10fn",end-start);fflush(stdout);MPI_Finalize();實(shí)驗(yàn)原理:利用公式PI的近似值計(jì)算圓周率7,定積分的計(jì)算可以轉(zhuǎn)

9、化為求一個(gè)曲邊梯形的面積問(wèn)題。將積分區(qū)間等分成n個(gè)小的子區(qū)間,可將每個(gè)小的子區(qū)問(wèn)上的曲邊梯形近似地看成矩形,這些矩形面積的和就近似地等于原來(lái)曲邊梯形的面積。這樣最終將求圓周率的問(wèn)題轉(zhuǎn)化成了一個(gè)面積迭加的計(jì)算。當(dāng)進(jìn)程數(shù)為2時(shí),運(yùn)算時(shí)間很小,要比進(jìn)程數(shù)為1時(shí)時(shí)間要短,說(shuō)明該情況下,多進(jìn)程的運(yùn)行效率要比單進(jìn)程高。air1'riK>rijEII-Af、a.呵.daJ7吁相><<<j,?''工/函.1:"二+'然后,我使用了幾臺(tái)計(jì)算機(jī)在同一局域網(wǎng)之下構(gòu)成了集群計(jì)算機(jī)系統(tǒng),采用非共享存方式利用多進(jìn)程完成任務(wù)。在兩臺(tái)機(jī)器構(gòu)成的集群計(jì)算機(jī)

10、系統(tǒng)之下,我分別測(cè)了多組進(jìn)程之下并行計(jì)算的時(shí)間比較,運(yùn)算結(jié)果如下所示:,|Z-PJOM,|Z-PJOM-iff-«tw«4做表格比較之:進(jìn)程數(shù)1481216運(yùn)行時(shí)間0.00044419050.00120518110.00111410810.00133368910.0012272509結(jié)果分析:因?yàn)橛?jì)算規(guī)模較小,集群計(jì)算機(jī)系統(tǒng)并行多進(jìn)程計(jì)算并不能很明顯的表現(xiàn)出計(jì)算優(yōu)勢(shì)。反而,經(jīng)過(guò)驗(yàn)證,在較大規(guī)模計(jì)算量之下,集群計(jì)算機(jī)系統(tǒng)的計(jì)算速度優(yōu)越性得到明顯展現(xiàn)。第三次實(shí)驗(yàn)實(shí)驗(yàn)要求:1 .理解同步(synchronous)計(jì)算和同步路障(barrier)2 .測(cè)試基于MPI_Barrier

11、()的并行程序3 .完成實(shí)驗(yàn)報(bào)告MPI程序代碼、運(yùn)行結(jié)果截屏、實(shí)驗(yàn)分析總結(jié)程序:#include"stdafx.h"#include<stdio.h>#include"mpi.h"intmain(intargc,char*argv)inttaskid,ntasks;intierr;MPI_Init(&argc,&argv);MPI_m_rank(MPI_M_WORLD,&taskid);MPI_m_size(MPI_M_WORLD,&ntasks);if(taskid=0)printf("nnnnnn

12、");ierr=MPI_Barrier(MPI_M_WORLD);if(taskid=0)printf("Hel");fflush(stdout);if(taskid=1)printf("lo");fflush(stdout);if(taskid=2)printf("Wor");fflush(stdout);if(taskid=3)printf("ld!");fflush(stdout);ierr=MPI_Barrier(MPI_M_WORLD);if(taskid=0)printf("(Uno

13、rdered)n");fflush(stdout);if(taskid=0)printf("Hel");fflush(stdout);ierr=MPI_Barrier(MPI_M_WORLD);if(taskid=1)printf("lo");fflush(stdout);ierr=MPI_Barrier(MPI_M_WORLD);if(taskid=2)printf("Wor");fflush(stdout);ierr=MPI_Barrier(MPI_M_WORLD);if(taskid=3)printf("ld

14、!");fflush(stdout);ierr=MPI_Barrier(MPI_M_WORLD);if(taskid=0)printf("(Ordered)nnnnn");MPI_Finalize();return0;實(shí)驗(yàn)原理:同步計(jì)算和同步路障Barriers:Blocksuntilallprocessesinthemunicatorhavereachedthisroutine.Apointatwhichallprocessesmustwaituntilallotherprocesseshavereachedthatpoint.Synchronous&Barrier:Inafullysynchronousapplication,alltheprocessessynchronizedataregularpoints.實(shí)驗(yàn)結(jié)果截屏:結(jié)果分析:如果大于等于4個(gè)進(jìn)程的話,輸出的語(yǔ)句就是順序的,正常的,但是如果進(jìn)程數(shù)目小于4,由于同步路障的存在,只有當(dāng)所有進(jìn)程到來(lái)之時(shí)才會(huì)被同步,這樣由于進(jìn)程數(shù)小于要求進(jìn)程數(shù),所以同步會(huì)出現(xiàn)問(wèn)題,所以輸出的語(yǔ)句會(huì)出現(xiàn)亂碼。MPI實(shí)驗(yàn)總結(jié)通過(guò)這次實(shí)驗(yàn),我們對(duì)MPI有了一個(gè)初步了解。MPI是一種基于消息傳遞

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論