在Linux或Windows環(huán)境下配置OpenMP開(kāi)發(fā)運(yùn)行環(huán)境,并利用蒙特卡羅算法計(jì)算半徑為 1 單元的球體體積_第1頁(yè)
在Linux或Windows環(huán)境下配置OpenMP開(kāi)發(fā)運(yùn)行環(huán)境,并利用蒙特卡羅算法計(jì)算半徑為 1 單元的球體體積_第2頁(yè)
在Linux或Windows環(huán)境下配置OpenMP開(kāi)發(fā)運(yùn)行環(huán)境,并利用蒙特卡羅算法計(jì)算半徑為 1 單元的球體體積_第3頁(yè)
在Linux或Windows環(huán)境下配置OpenMP開(kāi)發(fā)運(yùn)行環(huán)境,并利用蒙特卡羅算法計(jì)算半徑為 1 單元的球體體積_第4頁(yè)
在Linux或Windows環(huán)境下配置OpenMP開(kāi)發(fā)運(yùn)行環(huán)境,并利用蒙特卡羅算法計(jì)算半徑為 1 單元的球體體積_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)科學(xué)與技術(shù)系課程名稱(chēng).并行計(jì)算及編程實(shí)驗(yàn)項(xiàng)目:專(zhuān)業(yè)班級(jí):姓名:學(xué)號(hào):實(shí)驗(yàn)時(shí)間:批閱時(shí)間:指導(dǎo)教師:成績(jī):7蘭州交通大學(xué)《并行計(jì)算及編程》課程實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱(chēng):課內(nèi)綜合實(shí)驗(yàn)1一、實(shí)驗(yàn)?zāi)康脑贚inux或Windows環(huán)境下配置OpenMP開(kāi)發(fā)運(yùn)行環(huán)境,并利用蒙特卡羅算法計(jì)算半徑為1單元的球體體積。、實(shí)驗(yàn)內(nèi)容.驗(yàn)證所配置OpenMP并行環(huán)境的正確性;.分別用串行程序和并行程序?qū)崿F(xiàn)以上問(wèn)題的求解;.比較并行和串行程序的執(zhí)行時(shí)間,并行計(jì)算加速比;.提交電子版詳細(xì)實(shí)驗(yàn)報(bào)告。三、實(shí)驗(yàn)環(huán)境Windows10,下載VisualStudio2019四、實(shí)驗(yàn)過(guò)程(包括程序設(shè)計(jì)說(shuō)明,實(shí)驗(yàn)步驟,經(jīng)調(diào)試后正確的源程序,程序運(yùn)行結(jié)果)①實(shí)驗(yàn)步驟:下載VisualStudio2019圖1用helloworld程序驗(yàn)證在SolutionExplorer(解決方案資源管理器)中對(duì)項(xiàng)目名右鍵,選擇屬性,更改/型目品性軍雙高級(jí)說(shuō)試VC+4EMJ/型目品性軍雙高級(jí)說(shuō)試VC+4EMJC/C++胃現(xiàn)說(shuō)出預(yù)處理器匕瑪生成h由白預(yù)專(zhuān)浮頭造出文件瀏覽拮總高苑斷有選回畬令行>血室L清單工艮r(nóng)瀏揖晅息P生成李件F自定義生筋鬻b甘迎ArfV正愛(ài)(Q二jgStXDebug)M?用囪古擴(kuò)展符合眼式杵W匚Mjt現(xiàn)為內(nèi)直類(lèi)型過(guò)制For也如足■!!中的豈那住榔會(huì)引用的代碼和款昌強(qiáng)到類(lèi)型轉(zhuǎn)換期則后圍國(guó)Mii找汜后M否餐!(/ptirmi*汨??]是(/Zc;wchar_t)是(/Zc:forScjope)是(/Zciiinline)[口附附P支持是(/openmipjJ+語(yǔ)音屣啟用匚+十摸嘏關(guān)窗與裝用語(yǔ)高獷展取消獨(dú)白用盾音丁員.g"平臺(tái)伊):iSSt](Wln32)配餐后理堯鞋定取消圖2進(jìn)行配置用MkrosoFtViswolStudio加1*,fOLId:fiotnthiGad=O^lldlarld!freonthread=3JclldTflrld;freonthread=l-Je:laWorld!frcaithread=2Hello而rid:fromthread=11HelloWorld!frccuthread=5■11。World!fronithread=8加LidWorld!frocathread=7^L.oWarId!fictnthread=10JelloWorld!franthread=4^ellafforld!franthr&ad=9■Je:laTarld:frccnthread=6":\LserZ^tt3t\aQLirce\rBpM\Prciject1\DdMig\Praject1exeLilt"34Z助已退即.代理為Q.要花調(diào)試傳上時(shí)自承美用控制臺(tái)?清啟用“工2->*舐項(xiàng)”->“調(diào)試”->“調(diào)試件止時(shí)H動(dòng)美團(tuán)掙刷價(jià)捺任意德美閉此窗U,.圖3配置成功后輸出答案②環(huán)境配置好后,利用蒙特卡羅算法計(jì)算半徑為1單元的球體體積。/用串行程序?qū)崿F(xiàn):經(jīng)過(guò)調(diào)試后的正確程序:#include<iostream>#include<stdlib.h>#include<time.h>usingnamespacestd;intmain(){longintmax=10000000;longinti,count=0;doublex,y,z,bulk,start_time,end_time;starttime=clock();

time_tt;srand((unsigned)time(&t));/用數(shù)產(chǎn)生一個(gè)以當(dāng)前時(shí)間開(kāi)始的隨機(jī)種子for(i=0;i<max;i++){x=rand();〃生成0~RAND_MAX之間的一個(gè)隨機(jī)數(shù),其中RAND_MAX是stdlib.h中定義的一個(gè)整數(shù),它與系統(tǒng)有關(guān)。/*RAND_MAX是VC中stdlib.h中宏定義的一個(gè)字符常量:#defineRAND_MAX0x7FFF其值最小為32767,最大為2147483647通常在產(chǎn)生隨機(jī)小數(shù)時(shí)可以使用RAND_MAX。*/x=x/32767;y=rand();y=y/32767;z=rand();z=z/32767;if((x*x+y*y+z*z)<=1)count++;}bulk=8*(double(count)/max);end_time=clock();cout<<"球體的體積為"<<bulk<<endl;cout<<"運(yùn)算時(shí)間為"<<(end_time-start_time)<<endl;return0;}工■了,dU小Jt」/1口胃2盟丸也小中;工力沖轄段.;后曜,*R^I'.HU^VCil'iEnJlItL比定區(qū)的I中宇的第Rix:謝第:ruddJEx:謝第:rudd球俄的體積為運(yùn)算時(shí)間為209C:\C3€H3Um班\3outc€\reg3TPrcject2\Debug\PH0ject£€Ke(進(jìn)程16796)己退出.代出為0.要在調(diào)成停止時(shí)自動(dòng).矢田控制臺(tái).請(qǐng)啟用“工」0‘選項(xiàng)"7皿調(diào)誠(chéng)”->“調(diào)就停止時(shí)自動(dòng)美用控制臺(tái)",接任意鎮(zhèn)美間此囪11一..圖4串行方法的結(jié)果結(jié)果:球體的體積為4.18782;運(yùn)算時(shí)間為2209ms/用并行程序?qū)崿F(xiàn)程序設(shè)計(jì)說(shuō)明:需要建立:#pragmaompparallel語(yǔ)句告訴編譯器下面的語(yǔ)句塊是一個(gè)并行塊,需要并行執(zhí)行(同樣語(yǔ)句會(huì)執(zhí)行多次)。用循環(huán)分割:利用for語(yǔ)句和歸并語(yǔ)句對(duì)程序進(jìn)行并行化。#include<stdlib.h>#include<time.h>#include<stdio.h>intmain(){longlongmax=10000000;longlongi,count=0;doublex,y,z,bulk,start_time,end_time;start_time=clock();time_tt;srand((unsigned)time(&t));//函數(shù)產(chǎn)生一個(gè)以當(dāng)前時(shí)間開(kāi)始的隨機(jī)種子#pragmaompparallelforprivate(x,y,z)reduction(+:count)for(i=0;i<max;i++){x=rand();x=x/32767;y=rand();y=y/32767;z=rand();z=z/32767;if((x*x+y*y+z*z)<=1)count++;}bulk=8*((double)(count)/max);end_time=clock();printf("球體的體積為%0.8f\n",bulk);printf("運(yùn)算時(shí)間為%0母s\n",(end_time-start_time)/1000);return0;}

球體的體枳為4一1的12。皿運(yùn)球體的體枳為4一1的12。皿運(yùn)葬時(shí)制為a1a9Moms要在調(diào)試停11:時(shí)自動(dòng)美用掙制行,清木用“「JT-》“選啞R-》“調(diào)試”->“調(diào)成停止時(shí)自動(dòng)關(guān)閉控制臺(tái)“.接任點(diǎn)揖美用此窗11"皿用加#rf”juiiii外;“/萱平牛.一個(gè)Li訐*的herrfAl'ALlfrlFdE■Luluit'-iiie.h--IMh)?-?DIUMIm.==bHHWHLac|Im.drc-suit-Q;£■yZ|LfjLL±ruI.L^taiKiiid_LL*.fiiri.TUK-■ElMiO:iuk1(HM/32JUT:itndQ.y,3:所.X-EriWt-b,3SW:if(f3+r■ECUTtf皿”-3*>:(k<^L?>levui:>怪iJm■(LKkO;酊J1T「自律算障記.的1r圖5并行方法的結(jié)果球體的體積為4.18812000運(yùn)算時(shí)間為2.16900000s=2169ms③并行計(jì)算加速比加速比的含義對(duì)科學(xué)研究者和工程實(shí)用者可能有所不同。研究者們使用絕對(duì)加速比的定義:對(duì)于給定的問(wèn)題,加速比等于最佳串行算法所用的時(shí)間除以同一問(wèn)題的并行算法所用的時(shí)間。而工程中使用相對(duì)加速比的定義對(duì)于給定的問(wèn)題,加速比等于同一個(gè)算法在單處理器上運(yùn)行的時(shí)間除以在多處理器上的運(yùn)行時(shí)間。S=2209ms/2169ms=1.0184416五、出現(xiàn)的問(wèn)題及解決方法VS與VC的區(qū)別:VS(virtualstudio)是微軟開(kāi)發(fā)的一個(gè)集成工具,可以開(kāi)發(fā)C++、C#、HTML、VB等。VC(virtualc++)是專(zhuān)門(mén)開(kāi)發(fā)C++的工具。當(dāng)你進(jìn)去VS的時(shí)候,會(huì)提示你選擇開(kāi)發(fā)環(huán)境,如果你選擇C++,選擇的就是VC編程平臺(tái)。我之前使用的是vc6.0版本較老,這兩個(gè)可以同時(shí)使用,只需所在目錄不同就好。OpenMP編程實(shí)例(蒙特卡羅算法)用了clock()函數(shù)。clock()函數(shù)在頭文件#inc

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論