并行计算课程报告_第1页
并行计算课程报告_第2页
并行计算课程报告_第3页
并行计算课程报告_第4页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成绩:并行计算导论课程报告专业:软件工程班级:软件二班学号:7:琳珂2017年6月1日1、并行计算的实际意义并行计算或称平行计算是相对于串行计算来说的。 它是一种一次可执行多个指令的算法, 目的是提高计算速度, 及通过扩大问题求解规模,解决大型而复杂的计算问题。 所谓并行计算可分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。在应用需求方面,人类对计算机性能的需求总是永无止境的,在诸如预测模型的构造和模拟、工程设计和自动化、能源勘探、医学、军事以及基础理论研究等领域中都对计算提出了极高的具有挑战性的要求。例如,在作数值气象预报时,

2、要提高全球气象预报的准确性,据估计在经度、纬度和大气层方向上至少要取 200*100*20 40 万各网格点。并行计算机产生和发展的目的就是为了满足日益增长的大规模科学和工程计算、 事务处理和商业计算的需求。 问题求解最大规模是并行计算机的最重要的指标之一, 也是一个国家高新技术发展的重要标志。2、拟优化的应用介绍应用 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) 为已知函数,分别定义在的部和边界上。对于任意正整数M x 和 N y ,将网格剖分成 M x * N y 个相同的方格。在网格节点上,用二阶中心差分来近似二阶偏导数。2ui 1, j2ui , jui 1, ju(ihx , jh y )hx2x22ui , j 12ui , jui , j 1y2 u(ihx , jhy )hy2将差分近似代入泊松方程, 便得到了五点差分离散格式,泊松方2(h2h2 )uh2(ui 1, jui 1, j) h2(ui , j 1ui , j 1) h2h2fi , jxyi , jyxx y程的求 1 iM x1,1jNx之后用经典的jacobi

4、 算法来求解此方程组。 从任意一初始近似解ui0, j , i1,2,3, M x . j1,2,3, N y出发,迭代计算: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迭代序号 k=1,2,3 直至近似解满足误差要求。若 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) ,那么泊松方程的一个解析解是

5、u(x, y)sin(2 x) sin(2 y) 。3、串行算法设计(或介绍)最耗时的是主循环,是一个三重循环嵌套,时间复杂度为3N。4、并行算法设计对主循环进行OpenMP 并行优化,采用#pragma omp parallel for reduction(+:uerr) default(none) shared(c1,c2,fij,hy2,hx2,Nyp1)shared(u1,u0)private(ix,jy,tmp)时间复杂度无太大变化。 但是多个线程运算也的确加速了其运算速度。5、采用的并行计算机结构介绍采用个人笔记本进行最终测试,其配置如下:6、基于 OpenMP 的并行程序实现#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 的部点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(" 历时 = %13ld 微秒 n", telapsed);free(u0);free(u1);retur

13、n 0;7、并行优化结果分析编译平台: VS2017并行编程平台: OpenMP测试数据集合: 100 次 jacobi 迭代求二维泊松方程的近似解。集群测试:串行算法结果:iter 为迭代次数, uerr 为误差。时间单位为微秒。并行算法结果:加速比: 15241150/2552944=5.97本机测试:串行算法:并行算法:加速比: 13000617/6000371=2.17结论:每次测试中,误差单调减少,且趋于平稳。代码中设定误差阈值为 0,保证每次迭代相同次数。在集群和本机上,串行算法精确度一样,本机速度较快。采用 cpu 并行,集群的并行程度更高,所以速度有明显优势。本机速度相对较慢。主要原因是本机核数不如集群多。但由于 reduction(+:uerr)字句,归约了误差,所以并行程度越高,误差越大,导致集群误差较大,而本机相对误差较小。8、并行计算导论学习体会并行计算导论这门课,概述介绍了并行计算的容、特点和发展方向,并介绍了并行计算机的体系结构和一些著名的超级

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论