欢迎来到天天文库
浏览记录
ID:52686654
大小:131.38 KB
页数:11页
时间:2020-03-29
《基于openMP的并行计算实验.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、并行计算实验报告课程:并行计算姓名:郑波学号:2013211644班级:计算机科学与技术13-2班日期:2015年12月7日实验一:OpenMP基本使用一、实验目的1、熟悉OpenMP编程。2、比较串行算法与并行算法在执行时间上的差别;3、考察线程数目使用不同对并行算法执行时间的影响;4、考察运算规模N对串、并行算法执行时间上的影响。二、实验内容1、使用OpenMP进行两个矩阵A和B的加法,并分析串行、并行时间的差别以及问题规模对程序运行时间的影响三、实验步骤1、整个程序的设计流程①全局变量设置三个宏定义过的size×size的二维数组啊a,b,c。②初始化a数组为全1,
2、b数组为全2③通过omp_set_num_threads()库函数设置线程数④调用openMP库函数omp_get_wtime()获取当前时间start#pragmaompparallelfor开始做并行区部分…结束后再次调用omp_get_wtime()获取时间end,end-start即为并行消耗时间⑤再次调用时间函数更新strat串行做一边矩阵相加更新end,end-start即为串行耗时代码如下:#include#include#definesize10000usingnamespacestd;inta[size][size],b
3、[size][size],c[size][size];intmain(){for(inti=0;i!=size;++i)//initialthematrixfor(intj=0;j!=size;++j){a[i][j]=1;b[i][j]=2;}doublestart=omp_get_wtime();omp_set_num_threads(4);#pragmaompparallelforfor(inti=0;i4、cout<<"并行运行时间:"<5、*10000串行消耗(ms)0.034.36296.91并行消耗(ms)7.069.54182.27(2)可以发现,当矩阵规模较小时,串行算法仍然要比并行算法运行的快,当规模到达一定程度的时候,并行运行的速度较串行有了提升。并行算法对各个CPU的调度也占用一定的时间,当问题规模很小的时候,这个调度时间占了很大的比重,而在规模较大的时候,这个调度时间就显得微乎其微了3、线程数目对并行程序的影响(这里假设问题规模为:N*M=10000*10000)(1)在使用OpenMP进行并行执行矩阵加法时,我们可以自由设置进行并行计算的并行线程数目。(2)在并行区域中,通过函数intom6、p_set_num_threads(int)设置并行区域中要创建的线程数,分别设置为2、4、8、16,得到如下表格的时间消耗24816并行消耗(ms)262.73205.12248.97295.38(3)观察发现,在问题规模不变的前提下,随着线程数目的增加,问题解决的时间也在相应的减少。但是,问题消耗的时间并不会随着线程数目的增加而不断的减少,原因可能是因为,随着线程数目的增减,线程的额外准备时间开销也将扩大。四、心得体会通过本次实验,了解了openMP库函数,掌握了openMP最基本的多线程程序编写。通过分析比较串并行运行时间,体会了不同规模下串并行的使用效果。实验二:7、使用OpenMP实现圆周率计算的并行算法一、实验目的1、考察问题规模N对圆周率计算精确度的影响;2、考察线程数目对圆周率计算执行时间的影响;3、比较串、并行算法在执行时间上的差别。二、实验内容1、使用OpenMP和近似计算公式计算圆周率π的大小,并分析串行、并行时间的差别以及问题规模对程序运行时间的影响三、实验步骤1、整个程序的设计流程①全局变量设置宏size,用来描述计算范围②利用如下公式准备计算圆周率π的近似值③通过omp_set_num_threads()库函数设置线程数④调用openMP库函数omp_get_wtime
4、cout<<"并行运行时间:"<5、*10000串行消耗(ms)0.034.36296.91并行消耗(ms)7.069.54182.27(2)可以发现,当矩阵规模较小时,串行算法仍然要比并行算法运行的快,当规模到达一定程度的时候,并行运行的速度较串行有了提升。并行算法对各个CPU的调度也占用一定的时间,当问题规模很小的时候,这个调度时间占了很大的比重,而在规模较大的时候,这个调度时间就显得微乎其微了3、线程数目对并行程序的影响(这里假设问题规模为:N*M=10000*10000)(1)在使用OpenMP进行并行执行矩阵加法时,我们可以自由设置进行并行计算的并行线程数目。(2)在并行区域中,通过函数intom6、p_set_num_threads(int)设置并行区域中要创建的线程数,分别设置为2、4、8、16,得到如下表格的时间消耗24816并行消耗(ms)262.73205.12248.97295.38(3)观察发现,在问题规模不变的前提下,随着线程数目的增加,问题解决的时间也在相应的减少。但是,问题消耗的时间并不会随着线程数目的增加而不断的减少,原因可能是因为,随着线程数目的增减,线程的额外准备时间开销也将扩大。四、心得体会通过本次实验,了解了openMP库函数,掌握了openMP最基本的多线程程序编写。通过分析比较串并行运行时间,体会了不同规模下串并行的使用效果。实验二:7、使用OpenMP实现圆周率计算的并行算法一、实验目的1、考察问题规模N对圆周率计算精确度的影响;2、考察线程数目对圆周率计算执行时间的影响;3、比较串、并行算法在执行时间上的差别。二、实验内容1、使用OpenMP和近似计算公式计算圆周率π的大小,并分析串行、并行时间的差别以及问题规模对程序运行时间的影响三、实验步骤1、整个程序的设计流程①全局变量设置宏size,用来描述计算范围②利用如下公式准备计算圆周率π的近似值③通过omp_set_num_threads()库函数设置线程数④调用openMP库函数omp_get_wtime
5、*10000串行消耗(ms)0.034.36296.91并行消耗(ms)7.069.54182.27(2)可以发现,当矩阵规模较小时,串行算法仍然要比并行算法运行的快,当规模到达一定程度的时候,并行运行的速度较串行有了提升。并行算法对各个CPU的调度也占用一定的时间,当问题规模很小的时候,这个调度时间占了很大的比重,而在规模较大的时候,这个调度时间就显得微乎其微了3、线程数目对并行程序的影响(这里假设问题规模为:N*M=10000*10000)(1)在使用OpenMP进行并行执行矩阵加法时,我们可以自由设置进行并行计算的并行线程数目。(2)在并行区域中,通过函数intom
6、p_set_num_threads(int)设置并行区域中要创建的线程数,分别设置为2、4、8、16,得到如下表格的时间消耗24816并行消耗(ms)262.73205.12248.97295.38(3)观察发现,在问题规模不变的前提下,随着线程数目的增加,问题解决的时间也在相应的减少。但是,问题消耗的时间并不会随着线程数目的增加而不断的减少,原因可能是因为,随着线程数目的增减,线程的额外准备时间开销也将扩大。四、心得体会通过本次实验,了解了openMP库函数,掌握了openMP最基本的多线程程序编写。通过分析比较串并行运行时间,体会了不同规模下串并行的使用效果。实验二:
7、使用OpenMP实现圆周率计算的并行算法一、实验目的1、考察问题规模N对圆周率计算精确度的影响;2、考察线程数目对圆周率计算执行时间的影响;3、比较串、并行算法在执行时间上的差别。二、实验内容1、使用OpenMP和近似计算公式计算圆周率π的大小,并分析串行、并行时间的差别以及问题规模对程序运行时间的影响三、实验步骤1、整个程序的设计流程①全局变量设置宏size,用来描述计算范围②利用如下公式准备计算圆周率π的近似值③通过omp_set_num_threads()库函数设置线程数④调用openMP库函数omp_get_wtime
此文档下载收益归作者所有