矩阵乘法的并行化实验报告.doc

矩阵乘法的并行化实验报告.doc

ID:56247951

大小:771.50 KB

页数:20页

时间:2020-03-24

矩阵乘法的并行化实验报告.doc_第1页
矩阵乘法的并行化实验报告.doc_第2页
矩阵乘法的并行化实验报告.doc_第3页
矩阵乘法的并行化实验报告.doc_第4页
矩阵乘法的并行化实验报告.doc_第5页
资源描述:

《矩阵乘法的并行化实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、.北京科技大学计算机与通信工程学院实验报告实验名称:学生姓名:专业:班级:学号:指导教师:实验成绩:________________________________实验地点:实验时间:2015年05月Word文档.一、实验目的与实验要求1、实验目的1对比矩阵乘法的串行和并行算法,查看运行时间,得出相应的结论;2观察并行算法不同进程数运行结果,分析得出结论;2、实验要求1编写矩阵乘法的串行程序,多次运行得到结果汇总;2编写基于MPI,分别实现矩阵乘法的并行化。对实现的并行程序进行正确性测试和性能测试,并对测试结果进行分析。二、实验设备(环境)及要求《V

2、S2013》C++语言MPICH2三、实验内容与步骤实验1,矩阵乘法的串行实验(1)实验内容编写串行程序,运行汇总结果。(2)主要步骤按照正常的矩阵乘法计算方法,在《VS2013》上编写矩阵乘法的串行程序,编译后多次运行,得到结果汇总。Word文档.实验2矩阵乘法的并行化实验3个总进程Word文档.5个总进程7个总进程Word文档.9个进程16个进程四:实验结果与分析(一)矩阵乘法并行化Word文档.矩阵并行化算法分析:并行策略:1间隔行带划分法算法描述:将C=A*B中的A矩阵按行划分,从进程分得其中的几行后同时进行计算,最后通信将从进程的结果合并的

3、主进程的C矩阵中对于矩阵A*B如图:进程1:矩阵A第一行进程2:矩阵A第二行进程3:矩阵A第三行进程1:矩阵A第四行时间复杂度分析:f(n)=6+2+8+k*n+k*n+k*n+3+10+n+k*n+k*n+n+2(k为从进程分到的行数)因此O(n)=(n);空间复杂度分析:从进程的存储空间不共用,f(n)=n;因此O(n)=(n);2间隔行带划分法算法描述:将C=A*B中的A矩阵按行划分,从进程分得其中的几行后同时进行计算,最后通信将从进程的结果合并的主进程的C矩阵中对于矩阵A*B如图:进程1:矩阵A第一行进程2:矩阵A第二行进程3:矩阵A第三行进

4、程3:矩阵A第四行时间复杂度分析:f(n)=6+2+8+k*n+k*n+k*n+3+10+n+k*n+k*n+n+2(k为从进程分到的行数)因此O(n)=(n);空间复杂度分析:从进程的存储空间不共用,f(n)=n;因此T(n)=O(n);Word文档.测试环境简介:《VS2013》Win7旗舰版正确性测试结果:并行结果:串行结果:通过比较发现两者相同,因此可以确定运算结果正确。性能测试结果:Word文档.串行125ms107ms108ms98ms109ms110ms3进程0.009647ms0.009936ms0.010825ms0.009207m

5、s0.008811ms0.009831ms5进程0.007795ms0.007648ms0.008588ms0.008334ms0.007686ms0.007731ms7进程0.010729ms0.011336ms0.011606ms0.011403ms0.011621ms0.014563ms9进程0.016547ms0.014439ms0.016300ms0.015455ms0.015187ms0.011240ms16进程0.024964ms0.027917ms0.024721ms0.028152ms0.022296ms0.021321ms通过对比

6、分析得出,并行算法能够有效提高矩阵乘法的运算效率;(二)串行算法分析时间复杂度:f(n)=2+n^2+2*n+3*n+7+n+n+7;因此T(n)=O(n^2)空间复杂度:T(n)=O(1)五:结论(讨论)1、实验结论(1)根据前面实验结果,可以证明并行算法比串行算法更能有效地运算矩阵乘法,可以提高效率数十倍(2)如下图,根据结果可以得出并行程序并不是进程数越多,程序运行时间越短,程序运行还受计算机运算器数的限制Word文档.2、讨论1由于矩阵乘法的运算并不是很复杂,因此运算时间很短,达到了毫秒级,因此准确度有一定的影响;2因为时间紧迫,未能进一步分

7、析代码,同时只用了一种并行算法。六:代码附录串行算法:#include#include#include#include#defineN30#defineM30voidjuzhen_mul(intm,intn,int*p1[M],intm1,intn1,int*p2[M]){inti,j,x=0;intc[N][M]={0};2for(i=0;i

8、m}printf("%d",c[i][x]);printf("");2*302*mx++;if(x==n1)

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

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

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