




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一实验目的1) 用openMP实现最基本的数值算遮“矩眸乘法”2) tfi for编译制导语旬3) 对并U程序进行简单的11能二实验环境1) 硬件环境:32核CPU、32G存计算机;2) 软件环境:Linux、Win2003、GCC、MPICH. VS2008;4) Windows登录方式:通过远程桌而连接97,用户名和fl始密码都是自己的学 号。三实验容1.用0 penMP编写两个n阶的方阵a和b的HI乘椁序,结果存笊在方阵c中,其中乘法用for 编理胃导培旬实现并fjitS作,并嗚节for编译制导中schedule的参数,使得执行时冋最矯, 写岀代码。方眸a和b的
2、初始值如下: 123川11丄J2,3.4,+11丄1a =3.4.5, 丿 + 2b =1丄1并川+ 1. + 2.2打一11丄1输A:方阵的阶n、并行域的线椁数输出:c中所有元素之和、程序的执行时冋提示:a,b,c的元素定义为int里,c中所有元素之各定义为long long型。Windows it Bt:用中的clock_tclock( void )函数得到当甫程序执行的时间Linux if 时:include timeval start,end;gettimeofday(&start,NULL);gettimeofday(&end,NULL);coutexecutiontime:,(en
3、d.tv_sec-start.tv_sec)+(double)(end.tv_usec-start.tv-usec)/1000000,seconds,endl;在windows下便用Microsofe Visual Studio编程,澹代码如下:#include# include#include#define NN 2000intaNNNNL bNNNN;longlong cNN(NN;void solve(int n, int numjhread)int i, j, t, k, time;clockj startTime, endTime;longlong sum;omp_seLnumJhr
4、eads(num_thread);for(i=0;in;i+)对砸恥栢拒仰biH训始化t=i+1;forQ=0;jn;j+)aij=t+;startTime=clock();sum=0;#pragma omp parallel shared(a,b,c) private(ifj,k) # pragma omp for schedule(dynamic)for(i=0;in;i+)for(j=0;jn;j+)cij=O;for(k=0;kn;k+)ciUl+=aiHk*bkj;for(i=0;in;i+)for(j=0;jn;j+) sum+=cij);endTime=clock();time=
5、endTime-startTime;printfCsum=%lld time=%dmsn,sum,time);int main()int n, num.thread;while(scanfC%d%d&n.&numJhread)!=EOF)solve(n.num_thread);Ireturn 0;2分析矩阵皿乘f?序的执行时间、加速比和效率:方辞阶固定为1000,节点数分别取1、2、4、8、16和32时,为騷少误差,毎顼实验逍行5次,取平均值作为实验结果。笞:串行执亍时程序的ftfiBRUl: T = 15.062s加速比=Sff执行时同/并行执fiHfB)效率=加速比/节点数表1不同节点数下
6、程序的ftfiBB(秒)实验命、12481632第1次16.6408.1724.0782.1251.0930.594第2次16.4228.1564.1722.1411.0780.578第3次16.4068.2664.0782.1251.0940.563第4次16.7818.1724.0792.1091.0940.563第5次16.4228.1714.0782.1251.0930.578平均值16.5342&18744.09702.12501.09040.5752不同节点数下程序的加速比图2不间节自数下f?序的加速比不同节点数下程序的效率节点个数图3不同节目数下桿序的效率 可修编执liWH的分桥
7、:闻着节点数的增加,枳序的执行时同减少,大御可ius果中得出,两着节点书的Jam 一倍,执行时间减少一半加速比的分林:励着节点数的增加,f?序的加速比IHO,大视可1从结果中得岀,R6着节点书的增期一 倍,加速的应的增加接近一倍效率的分桥:Hi着节点数的增加,程序的效率逐所械少3.分桥矩辟松乘桦Jf的冋題规模与效率的关系:固定节点数力4,辻方碎阶U 200到1600之间变化,每隔10 0取一彳、值。(为了两少时间,每顶实验可只执行1次)S:表2松同节点釵卞不同冋題规模桿停的执行时间与效率方阵阶数并行执行W同串行执行时间效率2000.0150.0470.7833333000.0160.1091.
8、7031254000.0630.2971.1785715000.1560.6571.0528856000.4061.641.0098527000.9073.5780.9862188001.6096.360.9881919002.57810.1090.98031410003.81214.8910.97658711005.3921.0320.9755112007.34428.7340.97814513009.68837.9370.978969140012.42248.640.978908150015.65660.9380.973077160019.23474.8290.972614不同问题规模下程
9、序的效率3.1不同冋题規模下程序的效率问題规模与效率的关系分林:陌着冋題规模的增加,桿序的效率趋于稳定,但是略徹有点下降。嵌套街坏中,如果外层備坏迭代次数较少时,如果将来CPU核数增)11到一定f?度 的线棺数將可能小于CPU核数。另外如果层備坏存在负我平偷的情况下,很难调度外层備 坏便之达到负我平j。下面作为例子来讲述咖何垮嵌套術坏并行化,以满足上述扩驛It和负我平働 需求。一个串行的矩阵乘袪的因数代西如下:/I矩阵串行乘法函数param int*a常向要相乘的第个矩阵的朋param int row_a -矩阵a的行数param int col_a -矩眸a的列数param int 向要想成
10、的第个矩阵的指ftparam int row_b -矩眸b的行数param int col_b 矩阵b的列数param int *c 计算结果的矩阵的常针param intc_size -矩眸c的空间大小(总元素个数)return void -无*/void Martrix_Multiply(int *a, int row_a,int col_a,int* b,int row_b,int col_b,int*c,intc_size)lf(col_a!=row_b|c_sizerow_a*col_b)return;int i,j,k;/#pragma omp for private(i,j,k)
11、for(i = 0;irow_a;i+)int row_i=i*coLa;int row_c=i*col_b;for(j=0;jcol_b;j+) crow_c+j=0;for(k=0;krow_b;k+)crow.c+j+=arowj+k*bk*coLb+j;如果在外层俯坏前面UlliOpenMP的for语句时 M 变成了-个并行的矩阵乘法函数, 但是这样简单地將貝并行化显然无法满足前面所述的扩展性需求。其实可1采用一个简单地方进将最外层備坏和第2层循坏合并成一个Iliff.,T便是采 用合并循环后的并行实现。void Parallel_Matrix_Multiply(int *a,int
12、row_a,int col_a,int *bjnt row_b,int col_b,int *c,int c_size)lf(col_a!=row_b)return;int i,j,k;int index;int border=row_a*col_b;可修编i=0;j=0;/#pragma omp parallel private(i,j,k) num_threads(dtn(border,1) tor(index = O;indexborder;index+)i=index/col_b;j=index%col_b;int rowj=i*col_a;int row_c=i*col_b;crow_c+j=0;for(k=0;krow_b;k+)crow_c+j+=arowj+k*bk*col_b+j;从上面代码可以看出,合并后的(8坏便捷border=row_a*col_b;即等于原来的两个循环 迪界之枳,然后再街坏中it算出原
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届武汉市新洲区三年级数学第一学期期末综合测试模拟试题含解析
- 儿童手绘服装设计基础
- 2025年备考市政工程考试的注意事项与试题及答案
- 古代乐器美术课件
- 眼镜专业知识培训课件
- 2025年工程项目管理案例分析与解答试题及答案
- 项目管理的信息交流试题及答案
- 水利水电工程非技术风险试题及答案
- 小学生反诈宣传教育
- 综合性水利水电工程试题与答案介绍
- 2025年江西宜春市丰城发展投资控股集团有限公司招聘笔试参考题库附带答案详解
- 《中央空调系统培训资料》课件
- 2025年新兴际华集团有限公司招聘笔试参考题库含答案解析
- 中国干眼临床诊疗专家共识(2024年)解读
- 2025年华润电力招聘笔试参考题库含答案解析
- 2025年云南省广播电视局直属事业单位招聘62人管理单位笔试遴选500模拟题附带答案详解
- 【MOOC】美在民间-南京农业大学 中国大学慕课MOOC答案
- 食品配送服务质量管理制度
- 2024年青海省西宁市公开招聘警务辅助人员(辅警)笔试必刷经典测试卷(1)含答案
- 2mm土工膜长丝土工布检测报告合格证
- 透析器产业规划专项研究报告
评论
0/150
提交评论