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

下载本文档

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

文档简介

成绩: 并行计算导论课程报告专业: 软件工程 班级: 软件二班 学号: 140120010057 姓名: 蒋琳珂 2017 年 6 月 1 日1、并行计算的实际意义并行计算或称平行计算是相对于串行计算来说的。它是一种一次可执行多个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。所谓并行计算可分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。在应用需求方面,人类对计算机性能的需求总是永无止境的,在诸如预测模型的构造和模拟、工程设计和自动化、能源勘探、医学、军事以及基础理论研究等领域中都对计算提出了极高的具有挑战性的要求。例如,在作数值气象预报时,要提高全球气象预报的准确性,据估计在经度、纬度和大气层方向上至少要取 200*100*2040万各网格点。并行计算机产生和发展的目的就是为了满足日益增长的大规模科学和工程计算、事务处理和商业计算的需求。问题求解最大规模是并行计算机的最重要的指标之一,也是一个国家高新技术发展的重要标志。2、拟优化的应用介绍应用 jacobi 迭代近似求解二维泊松方程。二维泊松方程:),(),(),(uyxgyxf其中 ),0(*),(HW,),(),(),( 22 yxuyxuyxu,yxf和 ,yg为已知函数,分别定义在 的内部和边界上。对于任意正整数 xM和 yN,将网格剖分成 yxNM*个相同的方格。在网格节点上,用二阶中心差分来近似二阶偏导数。 21,1,2,1,1),(2),(2yjijijiyx xjijijiyx huujhiuyji 将差分近似代入泊松方程,便得到了五点差分离散格式,泊松方程的求 xx jiyxjijixjijiyjiyx NMi fhuhuhuh 1,1 )()()(2 ,21,1,2,1,12,2之后用经典的 jacobi 算法来求解此方程组。从任意一初始近似解yxji NjMu ,3,21.3,21,0 ,出发,迭代计算: yxx jijixjijiyjiyxkji NjMi huuhfhu ,3,21.3,21 )( )(2 1,1,1,12,2, ,迭代序号 k=1,2,3直至近似解满足误差要求。若 4),(yxf,且在边界 上 2),(yxg那么泊松方程的解析解为2,uyx,若 0,y,且)sin()2si(),( yxf,那么泊松方程的一个解析解是nux。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 的并行程序实现#include#include#include#include#if defined(_WIN32)|defined(_WIN64)#include#define gettime(a) _ftime(a)#define usec(t1,t2) (t2).time-(t1).time)*1000+ (t2).millitm-(t1).millitm)*100)typedef struct _timeb timestruct;#else#include#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()float 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);maxIter = 100;errtol = 0.00f;hx = Heightx / Mx;hy = Widthy / Ny;/初始化 u0/u1 的左右边界for (ix = 0; ix ue

温馨提示

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

评论

0/150

提交评论