




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、一實驗目的1) 用openMP實現(xiàn)最基本的數(shù)值算遮“矩眸乘法”2) tfi for編譯制導語旬3) 對并U程序進行簡單的11能二實驗環(huán)境1) 硬件環(huán)境:32核CPU、32G存計算機;2) 軟件環(huán)境:Linux、Win2003、GCC、MPICH. VS2008;4) Windows登錄方式:通過遠程桌而連接97,用戶名和fl始密碼都是自己的學 號。三實驗容1.用0 penMP編寫兩個n階的方陣a和b的HI乘槨序,結果存笊在方陣c中,其中乘法用for 編理胃導培旬實現(xiàn)并fjitS作,并嗚節(jié)for編譯制導中schedule的參數(shù),使得執(zhí)行時冋最矯, 寫岀代碼。方眸a和b的
2、初始值如下: 123川11丄J2,3.4,+11丄1a =3.4.5, 丿 + 2b =1丄1并川+ 1. + 2.2打一11丄1輸A:方陣的階n、并行域的線槨數(shù)輸出:c中所有元素之和、程序的執(zhí)行時冋提示:a,b,c的元素定義為int里,c中所有元素之各定義為long long型。Windows it Bt:用中的clock_tclock( void )函數(shù)得到當甫程序執(zhí)行的時間Linux if 時:include timeval start,end;gettimeofday(&start,NULL);gettimeofday(&end,NULL);coutexecutiontime:,(en
3、d.tv_sec-start.tv_sec)+(double)(end.tv_usec-start.tv-usec)/1000000,seconds,endl;在windows下便用Microsofe Visual Studio編程,澹代碼如下:#include# include#include#define NN 2000intaNNNNL bNNNN;longlong cNN(NN;void solve(int n, int numjhread)int i, j, t, k, time;clockj startTime, endTime;longlong sum;omp_seLnumJhr
4、eads(num_thread);for(i=0;in;i+)對砸恥栢拒仰biH訓始化t=i+1;forQ=0;jn;j+)aij=t+;startTime=clock();sum=0;#pragma omp parallel shared(a,b,c) private(ifj,k) # pragma omp for schedule(dynamic)for(i=0;in;i+)for(j=0;jn;j+)cij=O;for(k=0;kn;k+)ciUl+=aiHk*bkj;for(i=0;in;i+)for(j=0;jn;j+) sum+=cij);endTime=clock();time=
5、endTime-startTime;printfCsum=%lld time=%dmsn,sum,time);int main()int n, num.thread;while(scanfC%d%d&n.&numJhread)!=EOF)solve(n.num_thread);Ireturn 0;2分析矩陣皿乘f?序的執(zhí)行時間、加速比和效率:方辭階固定為1000,節(jié)點數(shù)分別取1、2、4、8、16和32時,為騷少誤差,毎頊實驗逍行5次,取平均值作為實驗結果。笞:串行執(zhí)亍時程序的ftfiBRUl: T = 15.062s加速比=Sff執(zhí)行時同/并行執(zhí)fiHfB)效率=加速比/節(jié)點數(shù)表1不同節(jié)點數(shù)下
6、程序的ftfiBB(秒)實驗命、12481632第1次16.6408.1724.0782.1251.0930.594第2次16.4228.1564.1722.1411.0780.578第3次16.4068.2664.0782.1251.0940.563第4次16.7818.1724.0792.1091.0940.563第5次16.4228.1714.0782.1251.0930.578平均值16.5342&18744.09702.12501.09040.5752不同節(jié)點數(shù)下程序的加速比圖2不間節(jié)自數(shù)下f?序的加速比不同節(jié)點數(shù)下程序的效率節(jié)點個數(shù)圖3不同節(jié)目數(shù)下桿序的效率 可修編執(zhí)liWH的分橋
7、:聞著節(jié)點數(shù)的增加,枳序的執(zhí)行時同減少,大御可ius果中得出,兩著節(jié)點書的Jam 一倍,執(zhí)行時間減少一半加速比的分林:勵著節(jié)點數(shù)的增加,f?序的加速比IHO,大視可1從結果中得岀,R6著節(jié)點書的增期一 倍,加速的應的增加接近一倍效率的分橋:Hi著節(jié)點數(shù)的增加,程序的效率逐所械少3.分橋矩辟松乘樺Jf的冋題規(guī)模與效率的關系:固定節(jié)點數(shù)力4,辻方碎階U 200到1600之間變化,每隔10 0取一彳、值。(為了兩少時間,每頂實驗可只執(zhí)行1次)S:表2松同節(jié)點釵卞不同冋題規(guī)模桿停的執(zhí)行時間與效率方陣階數(shù)并行執(zhí)行W同串行執(zhí)行時間效率2000.0150.0470.7833333000.0160.1091.
8、7031254000.0630.2971.1785715000.1560.6571.0528856000.4061.641.0098527000.9073.5780.9862188001.6096.360.9881919002.57810.1090.98031410003.81214.8910.97658711005.3921.0320.9755112007.34428.7340.97814513009.68837.9370.978969140012.42248.640.978908150015.65660.9380.973077160019.23474.8290.972614不同問題規(guī)模下程
9、序的效率3.1不同冋題規(guī)模下程序的效率問題規(guī)模與效率的關系分林:陌著冋題規(guī)模的增加,桿序的效率趨于穩(wěn)定,但是略徹有點下降。嵌套街壞中,如果外層備壞迭代次數(shù)較少時,如果將來CPU核數(shù)增)11到一定f?度 的線棺數(shù)將可能小于CPU核數(shù)。另外如果層備壞存在負我平偷的情況下,很難調(diào)度外層備 壞便之達到負我平j。下面作為例子來講述咖何垮嵌套術壞并行化,以滿足上述擴驛It和負我平働 需求。一個串行的矩陣乘袪的因數(shù)代西如下:/I矩陣串行乘法函數(shù)param int*a常向要相乘的第個矩陣的朋param int row_a -矩陣a的行數(shù)param int col_a -矩眸a的列數(shù)param int 向要想成
10、的第個矩陣的指ftparam int row_b -矩眸b的行數(shù)param int col_b 矩陣b的列數(shù)param int *c 計算結果的矩陣的常針param intc_size -矩眸c的空間大小(總元素個數(shù))return void -無*/void Martrix_Multiply(int *a, int row_a,int col_a,int* b,int row_b,int col_b,int*c,intc_size)lf(col_a!=row_b|c_sizerow_a*col_b)return;int i,j,k;/#pragma omp for private(i,j,k)
11、for(i = 0;irow_a;i+)int row_i=i*coLa;int row_c=i*col_b;for(j=0;jcol_b;j+) crow_c+j=0;for(k=0;krow_b;k+)crow.c+j+=arowj+k*bk*coLb+j;如果在外層俯壞前面UlliOpenMP的for語句時 M 變成了-個并行的矩陣乘法函數(shù), 但是這樣簡單地將貝并行化顯然無法滿足前面所述的擴展性需求。其實可1采用一個簡單地方進將最外層備壞和第2層循壞合并成一個Iliff.,T便是采 用合并循環(huán)后的并行實現(xiàn)。void Parallel_Matrix_Multiply(int *a,int
12、row_a,int col_a,int *bjnt row_b,int col_b,int *c,int c_size)lf(col_a!=row_b)return;int i,j,k;int index;int border=row_a*col_b;可修編i=0;j=0;/#pragma omp parallel private(i,j,k) num_threads(dtn(border,1) tor(index = O;indexborder;index+)i=index/col_b;j=index%col_b;int rowj=i*col_a;int row_c=i*col_b;crow_c+j=0;for(k=0;krow_b;k+)crow_c+j+=arowj+k*bk*col_b+j;從上面代碼可以看出,合并后的(8壞便捷border=row_a*col_b;即等于原來的兩個循環(huán) 迪界之枳,然后再街壞中it算出原
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年4月抄表核算收費員-初級工模擬考試題(含答案解析)
- 蔬菜加工中的微生物控制考核試卷
- 學前教育頂崗實習工作說明
- 石材開采工藝與設備選型考核試卷
- 節(jié)能型縫制設備開發(fā)考核試卷
- 《H組網(wǎng)技術》課件
- 帆船幼兒美術課件
- 草原割草在規(guī)范行業(yè)發(fā)展中的作用考核試卷
- 航空貨運業(yè)務中的航空器裝載技術改進考核試卷
- 《看電影》活動設計
- 2025年云南省廣播電視局直屬事業(yè)單位招聘62人管理單位筆試遴選500模擬題附帶答案詳解
- 空氣動力學領域大模型研究思考與展望
- 【MOOC】美在民間-南京農(nóng)業(yè)大學 中國大學慕課MOOC答案
- 透析器產(chǎn)業(yè)規(guī)劃專項研究報告
- 鼻咽癌放射治療技術
- 航空發(fā)動機部件快速修復技術
- GB/T 44713-2024節(jié)地生態(tài)安葬服務指南
- 避孕方法課件教學課件
- 2024年大學生求職面試技巧培訓課件
- 2025年江蘇高中物理學業(yè)水平合格性考試試卷試題(含答案解析)
- 工程質(zhì)量檢測監(jiān)理制度
評論
0/150
提交評論