基于MPI并行方法实现矩阵乘法
目录
1.
实验目的
① 掌握集群的使用方法
② 掌握怎样以并行/分布式的方式来设计程序
③ 掌握怎样用并行的思想来分析一个特定问题
④ 掌握怎样对一个现有方案进行多方位优化
2. 实验环境
① Wiki:http://grid.hust.edu.cn/hpcc
② 本机实验环境:
Windows 版本 |
windows 7旗舰版 |
处理器 |
Intel(R) Core(TM) i7 CPU Q720 @1.6GHZ |
安装内存(RAM) |
4.00GB(2.99GB可用) |
系统类型 |
32位操作系统 |
③ 集群实验环境:
与服务器建立远程连接,主机地址:*******,用户名:***** 密码:******。
使用ssh命令行登录集群的两个节点(sudo ssh blade13/blade15)。
远程主机上已经搭建好了MPI和Hadoop的环境,可进行直接进行编程。
3. 实验内容
3.1. 实验题目
本实验要求使用并行的方法完成矩阵乘法的计算,之后分析串并行条件下,矩阵乘法运行时间的加速比,优化所设计的并行程序。
整个实验有以下三点具体要求:
① 编程生成所需矩阵,作为负载输入。矩阵维数的最小要求是1000.
② 用并行的方法设计程序,比如MR,OPENMP,MPI。
③ 串并行加速比要求越高越好
3.2. 实验过程
3.2.1. 集群使用
① 下载并安装xmanager企业版。
② 打开xftp,建立新的连接,主机地址:*************.在home/pppusr的文件夹下以学号为名建立文件夹,在自己的文件夹下进行上传和修改操作。
③ 打开xshell,点击新建,写入主机ip同上,再输入账号和密码。
④ $sudo ssh blade13
#cd /home/pppusr/学号,开始编程。
⑤ 编程完成,使用命令行:mpicc -o 程序名 ×××.c 来编译源代码,生成可执行程序。
⑥ 使用命令行:mpiexec -machine /home/pppusr/mpi.host -np 4 程序名 来运行程序。
3.2.2. 源码及解析
本实验中我使用的并行方法是MPI,主要编写了两个.c文件,分别是基准矩阵乘法程序(mpi_basic.c)和基于稠密/稀疏矩阵的乘法运算程序(mpi_sparse.c)。
① mpi_basic.c
在文件中,我们通过void Init(float *a)函数对矩阵A,B进行初始化,具体是使用