版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。錯(cuò)誤!未定義書簽。openMP實(shí)驗(yàn)報(bào)告目錄openMP實(shí)驗(yàn)報(bào)告OpenM前介實(shí)驗(yàn)一實(shí)驗(yàn)二實(shí)驗(yàn)三實(shí)驗(yàn)四實(shí)驗(yàn)五實(shí)驗(yàn)六實(shí)驗(yàn)七實(shí)驗(yàn)八實(shí)驗(yàn)總結(jié)在學(xué)習(xí)了 MPI之后,我們又繼續(xù)學(xué)習(xí)了有關(guān) openMP勺并行運(yùn)算,通過老師的細(xì) 致講解,我們對(duì)openMPt了一個(gè)初步的了解:OpenM前介OpenM%一種用于共享內(nèi)存并行系統(tǒng)白多線程程序設(shè)計(jì)的庫(kù)(CompilerDirective),特別適合于多核CPU1的并行程序開發(fā)設(shè)計(jì)。它支持的
2、語(yǔ)言包括:C 語(yǔ)言、C+十Fortran ;不過,用以上這些語(yǔ)言進(jìn)行程序開發(fā)時(shí),并非需要特別關(guān) 注的地方,因?yàn)楝F(xiàn)如今的大多數(shù)編譯器已經(jīng)支持了 OpenMP例如:Sun Compiler,GNU Compiler Intel Compiler 、Visual Studio 等等。程序員在編 程時(shí),只需要在特定的源代碼片段的前面加入OpenMP用的#pargma omp預(yù)編譯指令,就可以“通知”編譯器將該段程序自動(dòng)進(jìn)行并行化處理,并且在必要的時(shí)候加入線程同步及通信機(jī)制。當(dāng)編譯器選擇忽略 #pargma omp預(yù)處理指令時(shí), 或者編譯器不支持OpenMP寸,程序又退化為一般的通用串行程序,此時(shí),代碼
3、依然可以正常運(yùn)作,只是不能利用多線程和多核CP詠加速程序的執(zhí)行而已。OpenM肢得程序員可以把更多的精力投入到并行算法本身,而非其具體實(shí) 現(xiàn)細(xì)節(jié)。對(duì)基于數(shù)據(jù)分集的多線程程序設(shè)計(jì),它是一個(gè)很好的選擇。同時(shí),使用 OpenMPfe提供了更強(qiáng)的靈活性,可以較容易的適應(yīng)不同的并行系統(tǒng)配置。線程 粒度和負(fù)載平衡等是傳統(tǒng)多線程程序設(shè)計(jì)中的難題,然而,在OpenMW, OpenMP庫(kù)從程序員手中接管了部分這兩方面的工作,從而使得程序員可以更加專注于具體的算法本身,而非如何編程使得代碼在CPU負(fù)載平衡和線程粒度方面做出平衡。但是,作為高層抽象,OpenMP不適合需要復(fù)雜的線程間同步和互斥的場(chǎng) 合。OpenMP
4、的另一個(gè)缺點(diǎn)是不能在非共享內(nèi)存系統(tǒng)(如計(jì)算機(jī)集群)上使用。在 這樣的系統(tǒng)上,MPI使用較多。實(shí)驗(yàn)步驟:通過編寫了一些程序,驗(yàn)證了關(guān)于openMP勺一些簡(jiǎn)單的性質(zhì)。實(shí)驗(yàn)一代碼:#include #include #include int main(int argc, char *argv) (int id, numb;omp_set_num_threads(3);#pragma omp parallel private(id, numb) (id = omp_get_thread_num();numb = omp_get_num_threads();printf(I am thread %d o
5、ut of %d n, id, numb);system(pause);return 0;實(shí)驗(yàn)結(jié)果:可以看到,因?yàn)槿齻€(gè)進(jìn)程同步執(zhí)行,所以輸出順序是亂序的,就是表示運(yùn)行優(yōu)先級(jí)相同。當(dāng)把進(jìn)程數(shù)改成10的時(shí)候,得到下面的結(jié)果:匚眉t Dif cuaenl13HJCkd !t in3Famthread1outof15Tanthro ad2outofIQTanthread0vutof工g1反皿thread3QUVof1gTanthread4outof10TavnthMtad70Huc*FinTthreadgoutof工gT反皿thread5outofinT也皿thread?outofIOTthreadA
6、nutn Fm請(qǐng)發(fā)任蔻錠繼續(xù),. SIudti 口 2OO0PiroJc:匚t莫、I_*p.與上面的到的結(jié)論(并行并行運(yùn)算)相同實(shí)驗(yàn)二代碼:#include #include #include int main(int argc, char *argv) (int id;omp_set_num_threads(2);#pragma omp parallel(printf(what will you seen);#pragma omp forfor( int i = 1; i = 5; +i )(printf( i = %d of %dn, i,omp_get_thread_num(); pri
7、ntf(How many answersn);system(pause);return 0;實(shí)驗(yàn)運(yùn)行結(jié)果:可以看到,在設(shè)置進(jìn)程為2的情況之下,運(yùn)算(計(jì)算規(guī)模)被等可能的分配給各 個(gè)進(jìn)程。代碼:#include #include #include int main()(#pragmaompparallelsections代碼:#include #include #include int main()(#pragma omp parallel(for ( int i = 0; i 100; +i)(std:cout i + std:endl;#pragma omp barrierfor ( int
8、 j = 0; j 10; +j)(std:cout j - std:endl;)system( pause);return 0;)運(yùn)行結(jié)果:-d結(jié)果分析:在語(yǔ)句#pragma omp barrier 的作用下,只有當(dāng)上面所有的進(jìn)程計(jì)算工作全部 完成之后,才會(huì)繼續(xù)barrier之后的工作。實(shí)驗(yàn)五代碼:#include #include #include #include using namespace std;int main()(int sum = 0;cout Before: sum endl;#pragma omp parallel forfor(int i = 0; i 100; i+
9、)(#pragma omp critical (a)(sum += i;sum += i * 2;)cout After: sum endl;system(pause);return 0;)運(yùn)行結(jié)果:0、c:uzid Salt in-gsKd ob .H71 D * suboiii,t.EAVa. nxiJL tudi 2008.Pr j *ct ets _Map .-in工Before : (3After: 14810結(jié)果分析:CRITICAL指令指定一塊同一時(shí)間只能被一條線程執(zhí)行的代碼區(qū)域各個(gè)線程還是并行執(zhí)行for里面的語(yǔ)句,但當(dāng)你們執(zhí)行到critical 里面時(shí), 要注意有沒有其他線程正
10、在里面執(zhí)行, 如果有的話,要等其他線程執(zhí)行完再進(jìn)去 執(zhí)行。實(shí)驗(yàn)六代碼:#include #include #include #include using namespacestd;#define NUM_THREADS 2static long num_steps = 100000;int main()(int i, id;double x, pi, sum =;double step = / ( double) num_steps;omp_set_num_threads(NUM_THREADS);#pragma omp parallel private (x, i, id) reductio
11、n(+:sum)(id = omp_get_thread_num();for (i = id + 1; i = num_steps; i = i + NUM_THREADS) (x = (i - * step;sum += / + x * x);)pi = sum * step;printf( pi = %.12fn, pi);system( pause);return 0;)運(yùn)行結(jié)果:.|n| 父c-r c: rmovs:;7=tc*3zt:ipi = 3.141J)26535VB謂按任意鍵繼埃結(jié)果分析:很簡(jiǎn)單,通過并行運(yùn)算,發(fā)揮計(jì)算機(jī)多核的優(yōu)勢(shì),自然能夠較單核計(jì)算更快的得出計(jì)算結(jié)果,但是要
12、注意計(jì)算機(jī)的核數(shù)是有限制的,不能無限擴(kuò)大并行計(jì)算線程。實(shí)驗(yàn)七代碼:#include #include #include #include using namespacestd;int i = 0, suml, sum2, sum3, sum;int main()(#pragma omp parallel sections num_threads(3)(#pragma omp sectionfor (i = 0; i 100; i+) suml += i;#pragma omp sectionfor (i = 100; i 200; i+) sum2 += i;#pragma omp secti
13、onfor (i = 200; i 300; i+) sum3 += i;sum = sum1 + sum2 + sum3;printf( sum = %dn , sum);system( pause );return 0;運(yùn)行結(jié)果:.|n| 父c-r c: rmovs:;7=tc*3zt:isunn = TltlbH謂按任意鍵繼埃結(jié)果分析:這里需要將累計(jì)求和值得部分和分配給幾個(gè)變量的原因是:當(dāng)多個(gè)線程并行執(zhí)行時(shí),有可能多個(gè)線程同時(shí)對(duì)某變量進(jìn)行了讀寫操作,從而導(dǎo)致不可預(yù)知的結(jié)果,因?yàn)槎嗑€程計(jì)算如果只設(shè)置一個(gè) sum,每次增加的值可能是不同進(jìn)程的,從而導(dǎo)致運(yùn)算結(jié)果混亂,但是如果把不同進(jìn)程的計(jì)算結(jié)
14、果分別保存,這樣就不會(huì)出現(xiàn)結(jié)算結(jié)果錯(cuò)誤的問題。實(shí)驗(yàn)八將openMP與之前學(xué)習(xí)過的MPI實(shí)驗(yàn)進(jìn)行綜合,通過計(jì)算 PI的運(yùn)算時(shí)間的比較 得出結(jié)論代碼:#include #include #include staticlong num_steps = 100000;#define NUM_THREADS 4void main( int argc, char* argv)(int i_start, i_end, i, myid, numprocs;double pi, mypi, x, step, sum =;double start, end;MPI_Init(&argc, &argv);MPI_C
15、omm_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, MPI_COMM_WORLD); i_start = myid * (num_steps / numprocs);i_end = i_start + (num_steps / numprocs); step = / ( double ) num_steps;omp_set_num_threads(NUM_THR
16、EADS);#pragma omp parallel private (x, i) reduction(+:sum) for ( i = i_start; i 亡t5QEenftPT, .一Hamb噬1 q pr*,Ex自皿上 | i wd J 廠 Fg 】n 必 Eparatft indo*Lus4 JuB | Save 工疝Shtj* Cnmn tnirC: Fropram FilesMFICKEiziXmpi ec, exert _a 4 TLoprnpt flC; iBocun-ents wi 5研Pi = 3.14193Run time is : O.O1337?779實(shí)驗(yàn)結(jié)果分析:
17、MPI與openMP勺主要區(qū)別在于:OpenMPfe程級(jí)(并行粒度);共享存儲(chǔ);隱 式(數(shù)據(jù)分配方式),可擴(kuò)展性差,MPI:進(jìn)程級(jí);分布式存儲(chǔ);顯式;可擴(kuò)展性 好。在這里,我們將MPI作為一個(gè)消息傳遞機(jī)制,在計(jì)算機(jī)集群之間傳遞不同進(jìn) 程計(jì)算的結(jié)果的值,在集群中的單臺(tái)計(jì)算機(jī)上使用openMF行多線程編程,即通過MPI的分布式有點(diǎn)綜合openMP的共享內(nèi)存計(jì)算方式來共同結(jié)合,從而提高 運(yùn)算效率。由實(shí)驗(yàn)結(jié)果我們可以得知,如果僅僅是使用MPI或者僅僅使用opnMP的情況下,都只能部分程度上達(dá)到并行計(jì)算的效果,而兩者進(jìn)行綜合的話,就可以盡最大可能的發(fā)揮計(jì)算機(jī)集群的運(yùn)算威力。實(shí)驗(yàn)總結(jié)這次實(shí)驗(yàn),是我們?cè)谥皩W(xué)習(xí)過的 MPI的基礎(chǔ)之上,通過對(duì)openMP勺學(xué)習(xí), 進(jìn)一步了解了關(guān)于計(jì)算機(jī)多核多進(jìn)程計(jì)算的概念。實(shí)驗(yàn)過程中,遇到各種各樣的問題,老師耐心的予以一一解答。關(guān)于 MPI與openMP具體來說,在Op
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度苗木種植與水資源保護(hù)合同7篇
- 二零二五版農(nóng)機(jī)駕駛培訓(xùn)服務(wù)合同模板4篇
- 2025年度外墻仿石裝飾工程承攬合同4篇
- 2025年度農(nóng)業(yè)科技成果轉(zhuǎn)化交易合同3篇
- 2025年度田地流轉(zhuǎn)與農(nóng)業(yè)科技服務(wù)一體化合同
- 2025版美團(tuán)團(tuán)購(gòu)合作合同范本更新版3篇
- 二零二五年度勞動(dòng)合同追訴期限認(rèn)定標(biāo)準(zhǔn)與爭(zhēng)議調(diào)解方案3篇
- 2025年度個(gè)人獨(dú)資企業(yè)整體出售及債務(wù)承接合同
- 二零二五年度總經(jīng)理崗位聘請(qǐng)及考核細(xì)則合同3篇
- 2025年度木結(jié)構(gòu)建筑綠色建材認(rèn)證合同
- 《向心力》 教學(xué)課件
- 結(jié)構(gòu)力學(xué)數(shù)值方法:邊界元法(BEM):邊界元法的基本原理與步驟
- 2024年山東省泰安市高考語(yǔ)文一模試卷
- 工程建設(shè)行業(yè)標(biāo)準(zhǔn)內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
- 北師大版物理九年級(jí)全一冊(cè)課件
- 2024年第三師圖木舒克市市場(chǎng)監(jiān)督管理局招錄2人《行政職業(yè)能力測(cè)驗(yàn)》高頻考點(diǎn)、難點(diǎn)(含詳細(xì)答案)
- RFJ 006-2021 RFP型人防過濾吸收器制造與驗(yàn)收規(guī)范(暫行)
- 盆腔炎教學(xué)查房課件
- 新概念英語(yǔ)課件NCE3-lesson15(共34張)
- GB/T 3683-2023橡膠軟管及軟管組合件油基或水基流體適用的鋼絲編織增強(qiáng)液壓型規(guī)范
- 電視劇《瑯琊榜》特色分析
評(píng)論
0/150
提交評(píng)論