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

下載本文檔

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

文檔簡(jiǎn)介

1、成績(jī):并行計(jì)算導(dǎo)論課程報(bào)告專(zhuān)業(yè):軟件工程班級(jí):軟件二班學(xué)號(hào):7:琳珂2017年6月1日1、并行計(jì)算的實(shí)際意義并行計(jì)算或稱(chēng)平行計(jì)算是相對(duì)于串行計(jì)算來(lái)說(shuō)的。 它是一種一次可執(zhí)行多個(gè)指令的算法, 目的是提高計(jì)算速度, 及通過(guò)擴(kuò)大問(wèn)題求解規(guī)模,解決大型而復(fù)雜的計(jì)算問(wèn)題。 所謂并行計(jì)算可分為時(shí)間上的并行和空間上的并行。 時(shí)間上的并行就是指流水線(xiàn)技術(shù),而空間上的并行則是指用多個(gè)處理器并發(fā)的執(zhí)行計(jì)算。在應(yīng)用需求方面,人類(lèi)對(duì)計(jì)算機(jī)性能的需求總是永無(wú)止境的,在諸如預(yù)測(cè)模型的構(gòu)造和模擬、工程設(shè)計(jì)和自動(dòng)化、能源勘探、醫(yī)學(xué)、軍事以及基礎(chǔ)理論研究等領(lǐng)域中都對(duì)計(jì)算提出了極高的具有挑戰(zhàn)性的要求。例如,在作數(shù)值氣象預(yù)報(bào)時(shí),

2、要提高全球氣象預(yù)報(bào)的準(zhǔn)確性,據(jù)估計(jì)在經(jīng)度、緯度和大氣層方向上至少要取 200*100*20 40 萬(wàn)各網(wǎng)格點(diǎn)。并行計(jì)算機(jī)產(chǎn)生和發(fā)展的目的就是為了滿(mǎn)足日益增長(zhǎng)的大規(guī)模科學(xué)和工程計(jì)算、 事務(wù)處理和商業(yè)計(jì)算的需求。 問(wèn)題求解最大規(guī)模是并行計(jì)算機(jī)的最重要的指標(biāo)之一, 也是一個(gè)國(guó)家高新技術(shù)發(fā)展的重要標(biāo)志。2、擬優(yōu)化的應(yīng)用介紹應(yīng)用 jacobi迭代近似求解二維泊松方程。二維泊松方程:u( x, y)f (x, y), ( x, y)u( x, y)g( x, y), ( x, y)其中22(0,W)* (0, H ) ,u( x, y)x2u( x, y)y2 u( x, y)f (x, y) 和 g(x

3、, y) 為已知函數(shù),分別定義在的部和邊界上。對(duì)于任意正整數(shù)M x 和 N y ,將網(wǎng)格剖分成 M x * N y 個(gè)相同的方格。在網(wǎng)格節(jié)點(diǎn)上,用二階中心差分來(lái)近似二階偏導(dǎo)數(shù)。2ui 1, j2ui , jui 1, ju(ihx , jh y )hx2x22ui , j 12ui , jui , j 1y2 u(ihx , jhy )hy2將差分近似代入泊松方程, 便得到了五點(diǎn)差分離散格式,泊松方2(h2h2 )uh2(ui 1, jui 1, j) h2(ui , j 1ui , j 1) h2h2fi , jxyi , jyxx y程的求 1 iM x1,1jNx之后用經(jīng)典的jacobi

4、 算法來(lái)求解此方程組。 從任意一初始近似解ui0, j , i1,2,3, M x . j1,2,3, N y出發(fā),迭代計(jì)算:h2h2 fi , jh2(ui 1, jui 1, j) h2(uu)ukxyyxi , j 1i , j 1i , j2(h2h2 )xyi 1,2,3, M x . j1,2,3, N y迭代序號(hào) k=1,2,3 直至近似解滿(mǎn)足誤差要求。若 f ( x, y)4 ,且在邊界上 g(x, y) x2 y2 那么泊松方程的解 析解為u( x, y)x2y2若g( x, y) 0,且,f (x, y)42 sin(2 x) sin( 2y) ,那么泊松方程的一個(gè)解析解是

5、u(x, y)sin(2 x) sin(2 y) 。3、串行算法設(shè)計(jì)(或介紹)最耗時(shí)的是主循環(huán),是一個(gè)三重循環(huán)嵌套,時(shí)間復(fù)雜度為3N。4、并行算法設(shè)計(jì)對(duì)主循環(huán)進(jìn)行OpenMP 并行優(yōu)化,采用#pragma omp parallel for reduction(+:uerr) default(none) shared(c1,c2,fij,hy2,hx2,Nyp1)shared(u1,u0)private(ix,jy,tmp)時(shí)間復(fù)雜度無(wú)太大變化。 但是多個(gè)線(xiàn)程運(yùn)算也的確加速了其運(yùn)算速度。5、采用的并行計(jì)算機(jī)結(jié)構(gòu)介紹采用個(gè)人筆記本進(jìn)行最終測(cè)試,其配置如下:6、基于 OpenMP 的并行程序?qū)崿F(xiàn)#i

6、nclude<stdio.h>#include<stdlib.h>#include<math.h>#include<omp.h>#if defined(_WIN32)|defined(_WIN64)#include<sys/timeb.h>#define gettime(a) _ftime(a)#define usec(t1,t2) (t2).time-(t1).time)*1000+ (t2).millitm-(t1).millitm)*100)typedef struct _timeb timestruct;#else#inclu

7、de<sys/time.h>#define gettime(a) gettimeofday(a,NULL)#define usec(t1,t2) (t2).tv_sec-(t1).tv_sec*1000000+ (t2).tv_usec-(t1).tv_usec)typedef struct timeval timestruct;#endif / defined(_WIN32)|defined(_WIN64)#define Mx 8191#define Ny 1023float uval(float x, float y)return (x*x + y*y);int main()f

8、loat Widthy = 2.0, Heightx = 1.0;float *u0, *u1;float hx, hy, hx2, hy2, fij, c1, c2;float uerr, errtol, tmp, *tprt;int ix, jy, maxIter, iter;int Nyp1 = Ny + 1;timestruct t1, t2;long long telapsed;u0 = (float*)malloc(sizeof(float)*(Mx + 1)*(Ny + 1);u1 = (float*)malloc(sizeof(float)*(Mx + 1)*(Ny + 1);

9、maxIter = 100;errtol = 0.00f;hx = Heightx / Mx;hy = Widthy / Ny;/初始化 u0/u1 的左右邊界for (ix = 0; ix <= Mx; ix+)u0ix*Nyp1 + 0 = u1ix*Nyp1 + 0 = uval(ix*hx, 0.0f); u0ix*Nyp1 + Ny = u1ix*Nyp1 + Ny = uval(ix*hx, Ny*hy);/初始化 u0/u1 的上下邊界for (jy = 0; jy <= Ny; jy+)u0jy = u1jy = uval(0.0f, jy*hy);u0Mx*Nyp

10、1 + jy = u1Mx*Nyp1 + jy = uval(Mx*hx, jy*hy);/初始化 u0 的部點(diǎn)for (ix = 1; ix < Mx; ix+)for (jy = 1; jy < Ny; jy+)u0ix*Nyp1 + jy = 0.0f;fij = -4.0f;c1 = hx*hx*hy*hy;c2 = 1.0f / (2.0*(hx*hx + hy*hy);hx2 = hx*hx;hy2 = hy*hy;gettime(&t1);/主要迭代for (iter = 1; iter <= maxIter; iter+)uerr = 0.0f;#pr

11、agma omp parallel for reduction(+:uerr) default(none) shared (c1,c2,fij,hy2,hx2,Nyp1) shared(u1,u0) private (ix,jy,tmp)for (ix = 1; ix < Mx; ix+)for (jy = 1; jy < Ny; jy+)u1ix*Nyp1 + jy = (c1*fij + hy2*(u0(ix - 1)*Nyp1 + jy + u0(ix + 1)*Nyp1 + jy) +hx2*(u0ix*Nyp1 + jy - 1 + u0ix*Nyp1 + jy + 1)

12、*c2; tmp = fabs(u0ix*Nyp1 + jy - u1ix*Nyp1 + jy); uerr = tmp > uerr ? tmp : uerr;printf("iter = %d uerr =%en", iter, uerr);if (uerr<errtol)break;tprt = u0;u0 = u1;u1 = tprt;gettime(&t2);telapsed = usec(t1, t2);printf(" 歷時(shí) = %13ld 微秒 n", telapsed);free(u0);free(u1);retur

13、n 0;7、并行優(yōu)化結(jié)果分析編譯平臺(tái): VS2017并行編程平臺(tái): OpenMP測(cè)試數(shù)據(jù)集合: 100 次 jacobi 迭代求二維泊松方程的近似解。集群測(cè)試:串行算法結(jié)果:iter 為迭代次數(shù), uerr 為誤差。時(shí)間單位為微秒。并行算法結(jié)果:加速比: 15241150/2552944=5.97本機(jī)測(cè)試:串行算法:并行算法:加速比: 13000617/6000371=2.17結(jié)論:每次測(cè)試中,誤差單調(diào)減少,且趨于平穩(wěn)。代碼中設(shè)定誤差閾值為 0,保證每次迭代相同次數(shù)。在集群和本機(jī)上,串行算法精確度一樣,本機(jī)速度較快。采用 cpu 并行,集群的并行程度更高,所以速度有明顯優(yōu)勢(shì)。本機(jī)速度相對(duì)較慢。主要原因是本機(jī)核數(shù)不如集群多。但由于 reduction(+:uerr)字句,歸約了誤差,所以并行程度越高,誤差越大,導(dǎo)致集群誤差較大,而本機(jī)相對(duì)誤差較小。8、并行計(jì)算導(dǎo)論學(xué)習(xí)體會(huì)并行計(jì)算導(dǎo)論這門(mén)課,概述介紹了并行計(jì)算的容、特點(diǎn)和發(fā)展方向,并介紹了并行計(jì)算機(jī)的體系結(jié)構(gòu)和一些著名的超級(jí)

溫馨提示

  • 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)論