




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)指導(dǎo)老師: 雷詠梅 姓名: 錢成浩 學(xué)號(hào): 12121469 計(jì)算機(jī)工程與科學(xué)學(xué)院實(shí)驗(yàn)二 多核環(huán)境下OpenMP并行編程實(shí)驗(yàn)2-1. OpenMP程序的編譯和運(yùn)行1. 實(shí)驗(yàn)?zāi)康?) 在Linux平臺(tái)上編譯和運(yùn)行OpenMP程序;2) 在Windows平臺(tái)上編譯和運(yùn)行OpenMP程序。3) 掌握OpenMP并行編程基礎(chǔ)。2. 實(shí)驗(yàn)環(huán)境1) 硬件環(huán)境:i5雙核四線程pc機(jī)2) 軟件環(huán)境:centos6+gcc,以及win8.1+Visual Studio20133. 運(yùn)行內(nèi)容代碼如下:#include <omp.h>#include <
2、stdio.h>int main()int nthreads,tid;omp_set_num_threads(8);#pragma omp parallel private(nthreads,tid)tid=omp_get_thread_num();printf("Hello World from OMP thread %dn",tid);if(tid=0)nthreads=omp_get_num_threads();printf("Number of threads is %dn",nthreads);4. 運(yùn)行結(jié)果linuxWindows實(shí)驗(yàn)2
3、-2 矩陣乘法的OpenMP實(shí)現(xiàn)及性能分析1. 實(shí)驗(yàn)?zāi)康?) 用OpenMP實(shí)現(xiàn)最基本的數(shù)值算法“矩陣乘法”2) 掌握for編譯制導(dǎo)語句3) 對(duì)并行程序進(jìn)行簡(jiǎn)單的性能調(diào)優(yōu)2. 實(shí)驗(yàn)要求1) 運(yùn)行并測(cè)試OpenMP編寫兩個(gè)n階的方陣a和b的相乘程序,結(jié)果存放在方陣c中,其中乘法用for編譯制導(dǎo)語句實(shí)現(xiàn)并行化操作,并調(diào)節(jié)for編譯制導(dǎo)中schedule的參數(shù),使得執(zhí)行時(shí)間最短。要求在window環(huán)境(不用虛擬機(jī)),在linux環(huán)境(用和不用虛擬機(jī)情況下)測(cè)試程序的性能,并寫出詳細(xì)的分析報(bào)告。3.實(shí)驗(yàn)內(nèi)容1. 用OpenMP編寫兩個(gè)n階的方陣a和b的相乘程序,結(jié)果存放在方陣c中,其中乘法用for編譯
4、制導(dǎo)語句實(shí)現(xiàn)并行化操作,并調(diào)節(jié)for編譯制導(dǎo)中schedule的參數(shù),使得執(zhí)行時(shí)間最短,寫出代碼。方陣a和b的初始值如下: 輸入:方陣的階n、并行域的線程數(shù)輸出:c中所有元素之和、程序的執(zhí)行時(shí)間提示:a,b,c的元素定義為int型,c中所有元素之和定義為long long型。Windows計(jì)時(shí):用<time.h>中的clock_t clock( void )函數(shù)得到當(dāng)前程序執(zhí)行的時(shí)間在windows下使用Microsofe Visual Studio編程,源代碼如下:#include<stdio.h>#include<omp.h>#include<ti
5、me.h>void comput(float* A, float* B, float* C)/兩個(gè)矩陣相乘傳統(tǒng)方法int x, y;for (y = 0; y<4; y+)for (x = 0; x<4; x+)C4 * y + x = A4 * y + 0 * B4 * 0 + x + A4 * y + 1 * B4 * 1 + x +A4 * y + 2 * B4 * 2 + x + A4 * y + 3 * B4 * 3 + x;int main()double duration;clock_t s, f;int x = 0;int y = 0;int n = 0;in
6、t k = 0;float A = 1, 2, 3, 4,5, 6, 7, 8,9, 10, 11, 12,13, 14, 15, 16 ;float B = 0.1f, 0.2f, 0.3f, 0.4f,0.5f, 0.6f, 0.7f, 0.8f,0.9f, 0.10f, 0.11f, 0.12f,0.13f, 0.14f, 0.15f, 0.16f ;float C16;s = clock();/#pragma omp parallel if(false)for (n = 0; n<1000000; n+)comput(A, B, C);f = clock();duration =
7、 (double)(f - s) / CLOCKS_PER_SEC;printf("s-1,000,000 :%fn", duration);for (y = 0; y<4; y+)for (x = 0; x<4; x+)printf("%f,", Cy * 4 + x);printf("n");printf("n=n");s = clock();/parallel 2#pragma omp parallel forfor (n = 0; n<2; n+)/CPU是核線程的for (k = 0;
8、k<500000; k+)/每個(gè)線程管個(gè)循環(huán)comput(A, B, C);f = clock();duration = (double)(f - s) / CLOCKS_PER_SEC;printf("p2- 1,000,000:%fn", duration);/parallel 3s = clock();#pragma omp parallel forfor (n = 0; n<4; n+)/CPU是核線程的for (k = 0; k<250000; k+)/每個(gè)線程管個(gè)循環(huán)comput(A, B, C);f = clock();duration =
9、(double)(f - s) / CLOCKS_PER_SEC;printf("p3- 1,000,000:%fn", duration);/parallel 1s = clock();#pragma omp parallel forfor (n = 0; n<1000000; n+)comput(A, B, C);f = clock();duration = (double)(f - s) / CLOCKS_PER_SEC;printf("p1- 1,000,000 :%fn", duration);for (y = 0; y<4; y+
10、)for (x = 0; x<4; x+)printf("%f,", Cy * 4 + x);printf("n");getchar();return 0;4. 運(yùn)行結(jié)果Linux(shell中運(yùn)行)Windows線程為2 線程為4線程為82)請(qǐng)自己找一個(gè)需要大量計(jì)算但是程序不是很長(zhǎng)的程序,實(shí)現(xiàn)OMP的多線程并行計(jì)算,要求寫出并行算法,并分析并行的效果(注:必須核對(duì)串行和并行的計(jì)算結(jié)果,保證正確性)運(yùn)行代碼:1 #include<stdio.h>2 #include<iostream>3 #include<iomani
11、p>4 #include<omp.h>5 #include<time.h>6 using std:cout;7 using std:setprecision;8 using std:endl;9 void derivative(double x,double y,double result)10 11 result = (x + y)*(x + y) - x*x)/y;12 1314 int main()15 16 double duration;17 clock_t s, f;18 int n = 0;19 int k = 0;20 double x = 2.0
12、, y = 0.01;21 double result;22 s = clock();23 #pragma omp parallel if(false)24 for (n = 0; n<1000000; n+)25 26 derivative(x, y, result);27 /*for (int i = 0; i < 10; +i)28 29 derivative(x, y, result);30 cout << setprecision(20) << result << endl;31 y /= 10;32 */33 34 f = clock
13、();35 duration = (double)(f - s) / CLOCKS_PER_SEC;36 cout << "s-1000000:" << duration << endl;37 for (int i = 0; i<10; +i)38 39 cout << setprecision(20) << result << endl;40 y /= 10;41 42 cout << "=" << endl;43 s = clock();44 #pr
14、agma omp parallel for45 for (n = 0; n<2; n+)46 47 for (k = 0; k<500000; k+)48 49 derivative(x, y, result);50 51 52 f = clock();53 duration = (double)(f - s) / CLOCKS_PER_SEC;54 cout << "p2-1000000:" << duration << endl;55 s = clock();56 #pragma omp parallel for57 fo
15、r (n = 0; n<4; n+)58 59 for (k = 0; k<250000; k+)60 61 derivative(x, y, result);62 63 64 f = clock();65 duration = (double)(f - s) / CLOCKS_PER_SEC;6667 cout << "p3-1000000:" << duration << endl;68 s = clock();69 #pragma omp parallel for70 for (n = 0; n<1000000; n+)71 72 derivative(x, y, result);73 74 f = clock();75 duration = (double)(f - s) / CLOCKS_PER_SEC;76 cout << "p1-1000000:&qu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 律所托管輔合同范本
- 書桌采購合同范本
- 制定合同范本意義
- 瓷磚鋪貼施工合同范本
- 南水北調(diào)供水合同范本
- 蘇州市勞動(dòng)合同范本
- 包月鮮花合同范本
- 樂隊(duì)駐唱合同范本
- 合作養(yǎng)魚協(xié)議合同范本
- 合伙安裝水電合同范本
- 海洋工程裝備技術(shù)專業(yè)人才培養(yǎng)方案(高職)
- 天然氣培訓(xùn)課件
- 浙江杭州余杭區(qū)余杭街道招考聘用編外人員16人(必考題)模擬卷及答案
- 腹腔穿刺術(shù)(僅供參考)課件
- 教學(xué)課件:《新能源材料技術(shù)》朱繼平
- 人教版部編七年級(jí)下冊(cè)語文必背古詩文言文
- 2022年七年級(jí)初一數(shù)學(xué)希望杯競(jìng)賽模擬真題含答案27屆
- 自動(dòng)駕駛數(shù)據(jù)安全白皮書
- 工期定額-民用建筑
- 2020新版?zhèn)€人征信報(bào)告模板
- 云南省實(shí)驗(yàn)教材信息技術(shù)三年級(jí)第一冊(cè)第13課PPT課件
評(píng)論
0/150
提交評(píng)論