高性能計(jì)算報(bào)告_第1頁
高性能計(jì)算報(bào)告_第2頁
高性能計(jì)算報(bào)告_第3頁
高性能計(jì)算報(bào)告_第4頁
高性能計(jì)算報(bào)告_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

裔雌餓奸弄就險(xiǎn)想告同學(xué)勝名:--名號(hào);————班號(hào);116122指導(dǎo)老師:郭明強(qiáng)中電池質(zhì)右喉(款法)信息工程學(xué)就第一題.編寫console程序.由下列圖看出,電腦是雙核CPU.多線程程序,采用windowsAPI函數(shù)創(chuàng)立線程代碼#includez/stdafx.h〃#include<iostream>#includez/windows.h〃usingnamespacestd;DWORDWINAPIfirst(PVOIDpParam)(for(inti=0;i<10;i++)(printf(〃l\n〃);)return0;)DWORDWINAPIsecond(PVOIDpParam)(for(inti=0;i<10;i++)(printf(〃2\n〃);return0;)intmain(intargc,char*argv[])HANDLEhHandle_Calc[2];hHandle_Calc[O]=CreateThread(NULL,0,first,NULL,0,NULL);hHandle_Calc[l]=CreateThread(NULL,0,second,NULL,0,NULL);WaitForMultipleObjects(2,hHandleCalc,true,INFINITE);)其次題多線程實(shí)現(xiàn)計(jì)算e和兀的乘積代碼#include,zstdafx.h〃#includez,windows.h〃Jtdefinenumsteps2000000#includc<iostream>usingnamespacestd;〃計(jì)算eDWORDWINAPIThreadCalc_E(PVOIDpParam)〃計(jì)算e子函數(shù){doublefactorial=1;inti=1;doublee=1;for(;i<numsteps;i++)(factorial*=i;e+=1.0/factorial;)*((doub1e*)pParam)二e;printf(,zedoneE=%2.5f\n,z,e);return0;)〃計(jì)算PIDWORDWINAPIThreadCalc_PI(PVOIDpParam)〃計(jì)算pi子函數(shù){inti=0;doublepi=0;for(;i<numsteps*10;i++)(pi+=1.0/(i*4.0+1.0);pi—1.0/(i*4.0+3.0);}pi=pi*4.0;*((double*)pParam)=pi;printf(z,pidonePI=%2.5f\n〃,pi);return0;intmain(intargc,char*argv口)〃進(jìn)程的主線程入口點(diǎn)(HANDLEhHandle_Calc[2];doubleresult_e,result_pi;hHandleCalc[0]=CreateThread(NULL,0,ThreadCalc_E,(void*)(&resulte),0,NULL);hHandle_Calc[l]=CreateThread(NULL,0,ThreadCalcPI,(void*)(&result_pi),0,NULL);〃附加線程的創(chuàng)立WaitForMultipleObjects(2,hHandleCalc,true,INFINITE);〃等待子線程計(jì)算結(jié)束printf(,ze*pi=%2.5f\n,z,result_e*result_pi);〃打印出e*pi結(jié)果return0;)第三題.Parallel語句#includez/stdafx.h〃ttinclude^windows.h〃#includez/omp.h〃#include<iostream>usingnamespacestd;voidmain()(Spragmaompparallelnum_threads(8)(printf("Hello,World!,Threadld=%d\nz,,ompget_threadnum());)).For語句#includezzstdafx.h〃#include,zwindows.h〃#include,zomp.h〃#include<iostream>usingnamespacestd;voidmain()(intj=0;Spragmaompparallel(^pragmaompforfor(j=0;j<4;j++){printfj=%d,threadid=%d\n,z,j,ompgetthreadnum());

3.Sections和section語句的用法#include,zstdafx.h〃#inc1udez,windows.h〃#includez/omp.h〃#includc<iostream>usingnamespacestd;voidmain(intargc,char*argv)ttpragmaompsectionprintf(,zsectionttpragmaompsectionprintf(,zsectionttpragmaompsectionprintf(,zsection^pragmaompsectionprintf(,zsectionSpragmaompsectionprintf(/zsectionthreadid=%dthreadid=%dthreadid=%dthreadid=%d\n〃,omp_get_thread_num());\n〃,omp_get_threadnum());\n〃,ompget_thread^num());4.Threadprivate語句的用法#include,zstdafx.h〃#include,zwindows.h〃#includezzomp.h〃#include<iostream>usingnamespacestd;inta,b,i,tid;floatx;^pragmaompthreadprivate(a,x)voidmain(){〃關(guān)閉動(dòng)態(tài)線程安排omp_setdynamic(0);printf(zzlstParallelRegion:\n",);^pragmaompparallelprivate(b,tid)(tid=ompgetthreadnum();a=tid;b=tid;x=1.l*tid+1.0;printf("Threading%d:a,b,x=%d%d%f\n,z,tid,a,b,x);}//endofparallelsection\-v*i*X**4***!*?^**4*\w,、.UlJ_fJL,£1個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)\[]j,printf(〃主線程中串行線程\n〃);printfC^ndParallelRegion:\n,z);Spragmaompparallelprivate(tid)(tid=ompgetthreadnum();printf(''Threading%d:a,b,x=%d%d%f\n,z,tid,a,b,x);}//endofparallelsection5.reduction語句的用法#include,zstdafx.h〃#includez/windows.h〃#include/zomp.h〃#include<iostream>usingnamespacestd;#include<omp.h>voidmain()(inti,n,chunk;floata[100],b[100],result;〃變量的初始化n=100;chunk=10;result=0.0;for(i=0;i<n;i++)(a[i]=i*2.0;b[i]=i*3.0;)^pragmaompparallelfordcfault(shared)private(i)schedule(static,chunk)reduction(+:result)for(i=0;i<n;i++)(result=result+(a[i]*b[i]);printf(z,F(xiàn)inalresult=%f\n〃,result);第四題OpenMP實(shí)例分析與比擬串行#include,zstdafx.h〃#includc<time.h>#definenumsteps20000000intmain(intargc,char*argv口)(doublestart,stop;doublee,pi,factorial,product;inti;〃啟動(dòng)定時(shí)器start=clock();〃首先運(yùn)用taylor綻開運(yùn)算eprintf(,zestarted\nz/);e=1;factorial=1;for(i=1;i<num_steps;i++)(factorial*=i;e+=1.0/factorial;)printf(〃edone\n〃);〃然后計(jì)算pi運(yùn)用taylor綻開printf(,zpistarted\nz/);pi=0;for(i=1;i<numsteps*10;i++)(pi+=L0/(i*4.0+1.0);pi-=L0/(i*4.0+3.0);)pi=pi*4.0;printf(,zpidone\n〃);product=e*pi;stop=clock();printf(Z/Reachedresult%fin%.3fsecond\n〃,product,(stop-start)/1000);return0;I并行ttinclude^stdafx.h〃#include<time.h>#definenumsteps20000000intmain(intargc,char*argv[])doublestart,stop;〃任務(wù)開頭doublee,pi,factorial,product;inti;〃啟動(dòng)定時(shí)器start=clock();〃啟動(dòng)兩個(gè)進(jìn)程分別計(jì)算epiSpragmaompparallelsectionsshared(e,pi)(Spragmaompsection(printfC'estarted\n/z);e=1;factorial=1;for(i=1;i<numsteps;i++)(factorial*=i;e+=1.0/factorial;)printf(z/edone\nz/);)^pragmaompsection(printf(z,pistarted\nz,);pi=0;for(i=1;i<num_steps*10;i++)(pi+=1.0/(i*

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論