OpenMP并行实验报告.docx

OpenMP并行实验报告.docx

ID:60775398

大小:396.48 KB

页数:16页

时间:2020-12-17

OpenMP并行实验报告.docx_第1页
OpenMP并行实验报告.docx_第2页
OpenMP并行实验报告.docx_第3页
OpenMP并行实验报告.docx_第4页
OpenMP并行实验报告.docx_第5页
资源描述:

《OpenMP并行实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

2、++){doublex=(double)i/dt;pi+=delta/(1.0+x*x);}returnpi*4;}intmain(){intdx;doublepai;doublestart,finish;dx=N;start=clock();pai=get_pi(dx);finish=clock();printf("%.8lf",pai);printf("%.8lfS",(double)(finish-start)/CLOCKS_PER_SEC);return0;}时间运行如下:第一次:tim

3、e=0.S第二次:time=0.S第三次:time=0.S三次平均为:0.02508S1.1.2SSE向量优化版本设计任务:此部分需要给出单精度和双精度两个优化版本。注意:(1)测试均在划分度为10的7次方下完成。以下是SSE双精度的代码:#include#include#include#defineNdoubleget_pi(intdt){doublepi=0.0;doubledelta=1.0/dt;inti;for(i=0;i

4、+){doublex=(double)i/dt;pi+=delta/(1.0+x*x);}returnpi*4;}doubleget_pi_sse(size_tdt){doublepi=0.0;doubledelta=1.0/dt;__m128dxmm0,xmm1,xmm2,xmm3,xmm4;xmm0=_mm_set1_pd(1.0);xmm1=_mm_set1_pd(delta);xmm2=_mm_set_pd(delta,0.0);xmm4=_mm_setzero_pd();for(longint

5、i=0;i<=dt-2;i+=2){xmm3=_mm_set1_pd((double)i*delta);xmm3=_mm_add_pd(xmm3,xmm2);xmm3=_mm_mul_pd(xmm3,xmm3);xmm3=_mm_add_pd(xmm0,xmm3);xmm3=_mm_div_pd(xmm1,xmm3);xmm4=_mm_add_pd(xmm4,xmm3);}doubletmp[2]__attribute__((aligned(16)));_mm_store_pd(tmp,xmm4);pi

6、+=tmp[0]+tmp[1]/*+tmp[2]+tmp[3]*/;returnpi*4.0;}intmain(){intdx;doublepai;doublestart,finish;dx=N;start=clock();pai=get_pi_sse(dx);finish=clock();printf("%.8lf",pai);printf("%.8lfS",(double)((finish-start)/CLOCKS_PER_SEC));return0;}时间运行如下:第一次:time=0.

7、S第二次:time=0.S第三次:time=0.S三次平均为:0.00783S以下是SSE单精度的代码:#include#include#include#defineNfloatget_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);xmm2=_m

8、m_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,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。