首页 OpenMP并行试验报告

OpenMP并行试验报告

举报
开通vip

OpenMP并行试验报告.并行实验报告一、积分计算圆周率1.1积分计算圆周率的向量优化1.1.1串行版本的设计任务:理解积分求圆周率的方法,将其用C代码实现。注意:理论上,dx越小,求得的圆周率越准确;在计算机中由于表示的数据是有精度范围的,如果dx太小,积分次数过多,误差积累导致结果不准确。以下为串行代码:#include#include#defineN10000000doubleget_pi(intdt){doublepi=0.0;doubledelta=1.0/dt;inti;for(i=0;iWord文档.#include#inc...

OpenMP并行试验报告
.并行实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 一、积分计算圆周率1.1积分计算圆周率的向量优化1.1.1串行版本的设计任务:理解积分求圆周率的方法,将其用C代码实现。注意:理论上,dx越小,求得的圆周率越准确;在计算机中由于表示的数据是有精度范围的,如果dx太小,积分次数过多,误差积累导致结果不准确。以下为串行代码:#include#include#defineN10000000doubleget_pi(intdt){doublepi=0.0;doubledelta=1.0/dt;inti;for(i=0;iWord文档.#include#include#defineN10000000doubleget_pi(intdt){doublepi=0.0;doubledelta=1.0/dt;inti;for(i=0;i#include#include#defineN10000000floatget_pi_sse(size_tdt){floatpi=0.0;floatdelta=1.0/dt;__m128xmm0,xmm1,xmm2,xmm3,xmm4;xmm0=_mm_set1_ps(1.0);xmm1=_mm_set1_ps(delta);Word文档.xmm2=_mm_set_ps(delta*3,delta*2,delta,0.0);xmm4=_mm_setzero_ps();for(longinti=0;i<=dt-4;i+=4){xmm3=_mm_set1_ps((float)i*delta);xmm3=_mm_add_ps(xmm3,xmm2);xmm3=_mm_mul_ps(xmm3,xmm3);xmm3=_mm_add_ps(xmm0,xmm3);xmm3=_mm_div_ps(xmm1,xmm3);xmm4=_mm_add_ps(xmm4,xmm3);}floattmp[4]__attribute__((aligned(16)));_mm_store_ps(tmp,xmm4);pi+=tmp[0]+tmp[1]+tmp[2]+tmp[3];returnpi*4.0;}intmain(){intdx;floatpai;doublestart,finish;dx=N;start=clock();pai=get_pi_sse(dx);finish=clock();printf("%.8f\n",pai);printf("%.8lfS\n",(double)((finish-start)/CLOCKS_PER_SEC));return0;}时间运行如下:第一次:time=0.00406100S第二次:time=0.00426400SWord文档.第三次:time=0.00437600S三次平均为:0.00423S1.1.3AVX向量优化版本设计任务:此部分需要给出单精度和双精度两个优化版本注意:(1)测试均在划分度为10的7次方下完成。(2)在编译时需要加-mavx编译选项,才能启用AVX指令集,否则默认SSE指令集(3)理论上,向量版本对比SSE版本和串行版本有明显加速,单精度版本速度明显优于双精度,速度接近双精度的两倍。以下是AVX双精度的代码:#include#include#include#defineN10000000/*doubleget_pi(intdt){doublepi=0.0;doubledelta=1.0/dt;inti;for(i=0;iAVX-double≈SSE-float>SSE-double>serialWord文档.1.2积分计算圆周率的OpenMP优化1.2.1OpenMP并行化任务:在串行代码的基础上进行OpenMP并行优化注意:测试在划分度为10的9次方下完成。参考代码:#include#include#defineN1000000000doubleget_pi(intdt){doublepi=0.0;doubledelta=1.0/dt;inti;#pragmaompparallelforreduction(+:pi)for(i=0;i#include#defineN1000000000doubleget_pi(intdt){doublepi=0.0;doubledelta=1.0/dt;inti;#pragmaompparallelforsimdreduction(+:pi)for(i=0;i#include#include#defineN1000000000doubleget_pi(intdt){doublepi=0.0;doubledelta=1.0/dt;doubletmp[4]__attribute__((aligned(32)));Word文档.__m256dymm0,ymm1,ymm2,ymm3,ymm4;ymm0=_mm256_set1_pd(1.0);ymm1=_mm256_set1_pd(delta);ymm2=_mm256_set_pd(delta*3,delta*2,delta,0.0);ymm4=_mm256_setzero_pd();inti;#pragmaompparallelshared(ymm0,ymm1,ymm2)private(i,ymm3,tmp){#pragmaompforreduction(+:pi)for(longinti=0;i<=dt-4;i+=4){ymm3=_mm256_set1_pd((double)i*delta);ymm3=_mm256_add_pd(ymm3,ymm2);ymm3=_mm256_mul_pd(ymm3,ymm3);ymm3=_mm256_add_pd(ymm0,ymm3);ymm3=_mm256_div_pd(ymm1,ymm3);//ymm4=_mm256_add_pd(ymm4,ymm3);_mm256_store_pd(tmp,ymm3);pi+=tmp[0]+tmp[1]+tmp[2]+tmp[3];}}//doubletmp[4]__attribute__((aligned(32)));//_mm256_store_pd(tmp,ymm4);//pi+=tmp[0]+tmp[1]+tmp[2]+tmp[3];returnpi*4.0;}intmain(){intdx;doublepai;dx=N;doublestart=omp_get_wtime();pai=get_pi(dx);doublefinish=omp_get_wtime();printf("%.8lf\n",pai);printf("%lf\n",finish-start);return0;}通过对向量化代码的分析,各个向量间的运算是没有任何依赖关系的,可以直接分线程并行运算,但需要注意最后要把各个线程的运算Word文档.结果累加。而线程的定义openmp的函数reduction是没有办法直接使用(+:)进行累加,需要手动完成。引入数组tmp用于将ymm3向量分割存放,并累加到pi变量,使用openmp函数reduction(+:pi)对pi变量进行累加(详见代码)解决的问题:并行块中如何私有化一个数组:直接将数组名称写入private()函数中。曾经尝试将数组各项都放入private()函数中,错误如下:多次尝试后,正确做法如下:以tmp[4]数组举例:私有化描述如下:private(tmp);运行结果如下图:手动化结果明显优于自动化结果。手动化的修改更符合编写的程序本身。二、矩阵-矩阵相乘的openmp优化2.1编写一个“矩阵-向量”或“矩阵-矩阵”相乘的OpenMP并行程序,或其他矩阵运算相关程序。矩阵的验证均在1024*1024规模下完成矩阵-矩阵相乘的openmp代码和串行代码如下:Word文档.#include#include#include#defineN1024#definen4inta[N][N];intb[N][N];intc[N][N];intd[N][N];intmain(){inti,j,k;for(i=0;i
本文档为【OpenMP并行试验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_072127
暂无简介~
格式:pdf
大小:741KB
软件:PDF阅读器
页数:15
分类:
上传时间:2020-05-18
浏览量:0