. . . . 北京科技大学计算机与通信工程学院实 验 报 告实验名称 :学生姓名 :专业:班级:学号:指导教师 :实验成绩 :________________________________ 实验地点 :实验时间 :2015 年 05 月. . . . 一、实验目的与实验要求1、实验目的1 对比矩阵乘法的串行和并行算法,查看运行时间,得出相应的结论;2 观察并行算法不同进程数运行结果,分析得出结论;2、实验要求1 编写矩阵乘法的串行程序,多次运行得到结果汇总;2 编写基于 MPI,分别实现矩阵乘法的并行化。对实现的并行程序进行正确性测试和性能测试,并对测试结果进行分析。二、实验设备(环境)及要求《VS2013》C++语言MPICH2 三、实验内容与步骤实验 1,矩阵乘法的串行实验(1)实验内容编写串行程序,运行汇总结果。(2)主要步骤按照正常的矩阵乘法计算方法,在《VS2013》上编写矩阵乘法的串行程序,编译后多次运行,得到结果汇总。. . . . 实验 2 矩阵乘法的并行化实验3 个总进程. . . . 5 个总进程7 个总进程. . . . 9 个进程16 个进程四:实验结果与分析(一)矩阵乘法并行化. . . . 矩阵并行化算法分析:并行策略: 1 间隔行带划分法算法描述: 将 C=A*B中的 A 矩阵按行划分, 从进程分得其中的几行后同时进行计算,最后通信将从进程的结果合并的主进程的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第三行进程 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); . . . . 测试环境简介:《VS2013》Win7旗舰版正确性测试结果:并行结果:串行结果:通过比较发现两者相同,因此可以确定运算结果正确。性能测试结果:. . . . 串行125ms 107ms 108ms 98ms...