




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、MPI綜合實(shí)驗(yàn)報(bào)告 目前三次MPI實(shí)驗(yàn)已經(jīng)結(jié)束,結(jié)合之前所寫的實(shí)驗(yàn)報(bào)告,對總體的實(shí)驗(yàn)內(nèi)容做一個(gè)總結(jié)。參考資料:MPI簡介多線程是一種便捷的模型,其中每個(gè)線程都可以訪問其它線程的存儲(chǔ)空間。因此,這種模型只能在共享存儲(chǔ)系統(tǒng)之間移植。一般來講,并行機(jī)不一定在各處理器之間共享存儲(chǔ),當(dāng)面向非共享存儲(chǔ)系統(tǒng)開發(fā)并行程序時(shí),程序的各部分之間通過來回傳遞消息的方式通信。要使得消息傳遞方式可移植,就需要采用標(biāo)準(zhǔn)的消息傳遞庫。這就促成的消息傳遞接口(Message Passing Interface, MPI)的面世,MPI是一種被廣泛采用的消息傳遞標(biāo)準(zhǔn)1。與OpenMP并行程序不同,MPI是一種基于消息傳遞的并行
2、編程技術(shù)。消息傳遞接口是一種編程接口標(biāo)準(zhǔn),而不是一種具體的編程語言。簡而言之,MPI標(biāo)準(zhǔn)定義了一組具有可移植性的編程接口。各個(gè)廠商或組織遵循這些標(biāo)準(zhǔn)實(shí)現(xiàn)自己的MPI軟件包,典型的實(shí)現(xiàn)包括開放源代碼的MPICH、LAM MPI以及不開放源代碼的Intel MPI。由于MPI提供了統(tǒng)一的編程接口,程序員只需要設(shè)計(jì)好并行算法,使用相應(yīng)的MPI庫就可以實(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)境,測試MPI的基本通信程序。程序:#include "stdafx.h"#in
3、clude <mpi.h>void main( void ) MPI_Status status; char string="xxxxx" int myid; MPI_Init(NULL,NULL); MPI_Comm_rank(MPI_COMM_WORLD,&myid); if(myid=2) MPI_Send("HELLO",5,MPI_CHAR,7,1234,MPI_COMM_WORLD); if(myid=7) MPI_Recv(string,5,MPI_CHAR,2,MPI_ANY_TAG,MPI_COMM_WORLD,&a
4、mp;status); printf("Got %s from P%d,tag %dn",string,status,status.MPI_SOURCE,status.MPI_TAG); MPI_Finalize();運(yùn)行環(huán)境配置過程:(這個(gè)是在根據(jù)網(wǎng)上的環(huán)境配置教程做的)1、 安裝軟件MPICH2,本次操作安裝在C:Program FilesMPICH2文件夾中。2、 打開安裝好的MPICH2目錄,打開bin文件夾中的wmpiregister.exe文件,進(jìn)行注冊。填入本機(jī)的用戶名和密碼。3、 建立一個(gè)控制臺(tái)應(yīng)用程序空文檔,MY MPI,輸入程序4、添加庫和包含文件打開T
5、ool->Options對話框選擇項(xiàng)目和解決方案下的VC+目錄一欄,如下圖所示:分別添加包含文件C:Program FilesMPICH2include和庫文件C:Program FilesMPICH2lib5、 取消預(yù)編譯頭打開Project->Property,設(shè)置框如下圖所示展開C/C+項(xiàng),選擇與編譯頭,在創(chuàng)建/使用預(yù)編譯頭中選擇 :不使用預(yù)編譯頭6、打開Project->Property,設(shè)置框如下圖所示將配置屬性中的常規(guī)項(xiàng)中的字符集設(shè)置成未設(shè)置展開連接器中輸入項(xiàng),在附件依賴項(xiàng)中添加mpi.lib7、 自定義多線程運(yùn)行打開MPICH2安裝目錄顯得mpiexec.exe
6、裝入運(yùn)行產(chǎn)生的.exe文件并選擇線程數(shù),運(yùn)行結(jié)果如下圖所示第二次實(shí)驗(yàn)實(shí)驗(yàn)要求:MPI實(shí)驗(yàn)第二部分1. 了解計(jì)算粒度、問題規(guī)模(計(jì)算負(fù)載)、并行程度概念;2. 測試基于MPI的Pi并行計(jì)算程序;3. 完成實(shí)驗(yàn)報(bào)告(MPI程序代碼、運(yùn)行結(jié)果截屏、實(shí)驗(yàn)分析總結(jié))在這次的實(shí)驗(yàn)過程中,我們的程序是通過數(shù)值方法計(jì)算 的值來觀察運(yùn)行時(shí)間。程序:#include "stdafx.h"#include <stdio.h>#include "mpi.h"static long num_steps = 100000; void main(int argc, cha
7、r* argv) int i_start, i_end, i, myid, numprocs; double pi, mypi, x, step, sum = 0.0; double start, end; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); if(myid = 0) start = MPI_Wtime(); MPI_Bcast(&num_steps, 1, MPI_INT, 0, M
8、PI_COMM_WORLD); i_start = myid * (num_steps / numprocs); i_end = i_start + (num_steps / numprocs); step = 1.0 / (double) num_steps; for( i = i_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,
9、MPI_COMM_WORLD);if(myid = 0) printf("Pi = %fn", pi);end = MPI_Wtime();printf("Run time is : %.10fn", end - start);fflush(stdout);MPI_Finalize();實(shí)驗(yàn)原理:利用公式PI的近似值計(jì)算圓周率7,定積分的計(jì)算可以轉(zhuǎn)化為求一個(gè)曲邊梯形的面積問題。將積分區(qū)間等分成n個(gè)小的子區(qū)間,可將每個(gè)小的子區(qū)間上的曲邊梯形近似地看成矩形,這些矩形面積的和就近似地等于原來曲邊梯形的面積。這樣最終將求圓周率的問題轉(zhuǎn)化成了一個(gè)面積迭加的計(jì)算。
10、當(dāng)進(jìn)程數(shù)為2時(shí),運(yùn)算時(shí)間很小,要比進(jìn)程數(shù)為1時(shí)時(shí)間要短,說明該情況下,多進(jìn)程的運(yùn)行效率要比單進(jìn)程高。然后,我使用了幾臺(tái)計(jì)算機(jī)在同一局域網(wǎng)之下構(gòu)成了集群計(jì)算機(jī)系統(tǒng),采用非共享內(nèi)存方式利用多進(jìn)程完成任務(wù)。在兩臺(tái)機(jī)器構(gòu)成的集群計(jì)算機(jī)系統(tǒng)之下,我分別測了多組進(jìn)程之下并行計(jì)算的時(shí)間比較,運(yùn)算結(jié)果如下所示:做表格比較之:進(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)勢。反而,經(jīng)過驗(yàn)證,在較大規(guī)模計(jì)算量之下,集群計(jì)算機(jī)系統(tǒng)的計(jì)
11、算速度優(yōu)越性得到明顯展現(xiàn)。第三次實(shí)驗(yàn)實(shí)驗(yàn)要求:1. 理解同步(synchronous)計(jì)算和同步路障(barrier)2. 測試基于MPI_Barrier()的并行程序3. 完成實(shí)驗(yàn)報(bào)告(MPI程序代碼、運(yùn)行結(jié)果截屏、實(shí)驗(yàn)分析總結(jié))程序:#include "stdafx.h"#include <stdio.h>#include "mpi.h"int main(int argc, char* argv) int taskid, ntasks; int ierr;MPI_Init(&argc, &argv);MPI_Comm_ra
12、nk(MPI_COMM_WORLD, &taskid);MPI_Comm_size(MPI_COMM_WORLD, &ntasks);if(taskid = 0) printf("nnnnnn"); ierr = MPI_Barrier(MPI_COMM_WORLD);if(taskid = 0) printf("Hel"); fflush(stdout);if(taskid = 1) printf("lo "); fflush(stdout);if(taskid = 2) printf("Wor"
13、); fflush(stdout);if(taskid = 3) printf("ld!"); fflush(stdout);ierr = MPI_Barrier(MPI_COMM_WORLD);if(taskid = 0) printf(" (Unordered)n"); fflush(stdout);if(taskid = 0) printf("Hel"); fflush(stdout);ierr = MPI_Barrier(MPI_COMM_WORLD);if(taskid = 1) printf("lo "
14、); fflush(stdout);ierr = MPI_Barrier(MPI_COMM_WORLD);if(taskid = 2) printf("Wor"); fflush(stdout);ierr = MPI_Barrier(MPI_COMM_WORLD);if(taskid = 3) printf("ld!"); fflush(stdout);ierr = MPI_Barrier(MPI_COMM_WORLD);if(taskid = 0) printf(" (Ordered)nnnnn"); MPI_Finalize();
15、return 0;實(shí)驗(yàn)原理:同步計(jì)算和同步路障Barriers:Blocks until all processes in the communicator have reached this routine.A point at which all processes must wait until all other processes have reached that point.Synchronous & Barrier:In a fully synchronous application, all the processes synchronized at a regular points.實(shí)驗(yàn)結(jié)果截屏:結(jié)果分析:如果大于等于4個(gè)進(jìn)程的話,輸出的語句就是順序的,正常的,但是如果進(jìn)程數(shù)目小于4,由于同步路障的存在,只有當(dāng)所有進(jìn)程到來之時(shí)才會(huì)被同步,這樣由于進(jìn)程數(shù)小于要求進(jìn)程數(shù),所以同步會(huì)出現(xiàn)問題,所以輸出的語句會(huì)出現(xiàn)亂碼。MPI實(shí)驗(yàn)總結(jié)通過這次實(shí)驗(yàn),我們對MPI有了一個(gè)初步了解。MP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衡陽師范學(xué)院《馬克思主義哲學(xué)(下)》2023-2024學(xué)年第二學(xué)期期末試卷
- 電子科技大學(xué)中山學(xué)院《車輛建模與仿真》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘肅省蘭州市第六十三中學(xué)2025屆高三3月期初測試化學(xué)試題含解析
- 武漢科技大學(xué)《數(shù)字化教學(xué)資源設(shè)計(jì)與開發(fā)(C)》2023-2024學(xué)年第二學(xué)期期末試卷
- 許昌職業(yè)技術(shù)學(xué)院《植物保健與和諧植?!?023-2024學(xué)年第二學(xué)期期末試卷
- 湖南吉利汽車職業(yè)技術(shù)學(xué)院《日本文學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 工程造價(jià)領(lǐng)域發(fā)展趨勢
- 工程教育基礎(chǔ)
- 廠房強(qiáng)化護(hù)欄施工方案
- 屋面設(shè)備基礎(chǔ)施工方案
- Q∕GDW 12070-2020 配電網(wǎng)工程標(biāo)準(zhǔn)化設(shè)計(jì)圖元規(guī)范
- ISO9001ISO14001ISO45001內(nèi)審檢查表
- 【告知牌】某公司全套重大危險(xiǎn)源告知牌(7頁)
- 現(xiàn)代密碼學(xué)公鑰密碼體制課件
- 【課件】第十四單元第二十七節(jié)肖邦課件-2021-2022學(xué)年高中音樂人音版(2019)必修音樂鑒賞
- 贏時(shí)勝財(cái)務(wù)估值系統(tǒng)日常操作指引
- NB_T 10333-2019《水電工程場內(nèi)交通道路設(shè)計(jì)規(guī)范》_(高清最新)
- 年產(chǎn)15萬噸RDF固廢燃燒棒項(xiàng)目可行性研究報(bào)告模板
- 電動(dòng)車銷售合同
- 專利申請文件 審查意見的答復(fù)
- 美的集團(tuán)優(yōu)秀員工評(píng)選管理辦法
評(píng)論
0/150
提交評(píng)論