全文预览

基于openMP的并行计算实验

上传者:随心@流浪 |  格式:doc  |  页数:12 |  大小:133KB

文档介绍
.03600.047 (2)可以发现,并行总是比串行慢。主要原因是:平衡树算法对处理器个数有很高的要求,在处理器个数达到问题规模的一半的时候才有最好的效果,本机只有4个线程,线程的调度反而使得整个时间消耗比串行多。?3、线程数目对并行程序的影响(这里假设问题规模为:N*M=10000*10000) (1)在使用OpenMP进行并行执行矩阵加法时,我们可以自由设置进行并行计算的并行线程数目。(2)在并行区域中,通过函数intomp_set_num_threads(int)设置并行区域中要创建的线程数,分别设置为2、4、8、16,得到如下表格的时间消耗24816并行消耗(ms)0.0060.0040.040.06 (3)观察发现,在问题规模不变的前提下,随着线程数目的增加,问题解决的时间也在相应的减少。但是,问题消耗的时间并不会随着线程数目的增加而不断的减少,原因可能是因为,随着线程数目的增减,线程的额外准备时间开销也将扩大。四、心得体会?通过本次实验,学会了平衡树的算法设计思想,见识到了高性能计算在庞大任务规模面前的解决问题的能力。在实验的过程中使用平衡树没有得到理想的结果,也说明了高性能计算在处理器方面的限制。实验四:使用OpenMP计算矩阵相乘一、实验目的?1、掌握矩阵的乘法的串、并行算法?2、比较串行算法与并行算法在执行时间上的差别;?3、考察线程数目使用不同对并行算法执行时间的影响;二、实验内容?1、给定两个矩阵A[N,M1]和B[M1,M]的乘积,即求C[N,M]=A[N,M1]*B[M1,M]。三、实验步骤?1、整个程序的设计流程计算矩阵的乘法,简单的使用三重循环完成,并行对最外层循环并行计算全局变量设置3个数组:a[M+1][N+1],b[N+1][M+1],c[M+1][M+1] ②初始化三个数组③通过omp_set_num_threads()库函数设置线程数

收藏

分享

举报
下载此文档