深 圳 大 学
实 验 报 告
课程名称:并行计算
实验名称:Cannon算法的MPI实现及性能分析
姓 名:
学 号:
班 级:
实验日期:
一. 实验目的
1) 用MPI语言实现Cannon矩阵乘法;
2) 对并行程序进行简单的性能分析。
二. 实验环境
1) 硬件环境:32核CPU、32G内存计算机;
2) 软件环境:Microsoft Visual Studio 2008;
3) 登录方式:通过远程桌面(mstsc)连接hpc.szu.edu.cn:801,用户名和初始密码都是自己的学号。
三. 实验内容
1. 用MPI语言编写Cannon矩阵乘法,实现两个n阶方阵a和b的相乘程序,结果存放在n阶方阵方阵c中。在下面写出程序代码。
方阵a和b的初始值如下:
a=,b=
输入:
方阵的阶n
输出:
程序的执行时间t
提示:
计算执行时间用MPI_Wtime()函数,同时发送接收消息用MPI_Sendrecv()函数。
2. 分析Cannon矩阵乘法的执行时间和加速比(串行执行时间/并行执行时间):方阵阶固定为1000,节点数分别取1、4、9和16时,为减少误差,每项实验进行5次,取平均值作为实验结果。
答:
表1 不同节点数下程序的执行时间(秒)和加速比
第二篇:MPI并行程序设计实例教程
编辑推荐
◆书中内容侧重于以MPI库为基础开发并行应用程序,对MP规范定义的各项功能和特征在阐述其特点基础上均配以实例加以说明和印证。
◆书中所附实例尽量采用独立的功能划分,其中的代码片段可直接用于并行应用程序开发 ◆在讲述基本原理的同时,注重对各项消息传递和管理操作的功能及局限性、适用性进行分析从而使熟读此书的读者能够编写出适合应用特点,易维护、高效率的并行程序。
◆与本书配套的电子教案可在清华大学出版社网站下载。
本书简介
本书旨在通过示例全面介绍MP1并行程序开发库的使用方法、程序设计技巧等方面的内容,力争完整讨论MP1规范所定义的各种特征。主要也括MPI环境下开发并行程序常用的方法、模式、技巧等内容。在内容组织上力求全面综合地反映MPl-1和MPI-2规范。对MPI所定义的各种功能、特征分别
给出可验证和测试其工作细节的示例程序
目录
第1章 MPI并行环境及编程模型
1.1 MPICH2环境及安装和测试
1.1.1 编译及安装
1.1.2 配置及验汪
1.1.3 应用程序的编译、链接
1.1.4 运行及调试
1.1.5 MPD中的安全问题
1.2 MPI环境编程模型
1.2.1 并行系统介绍
1.2.2 并行编程模式
1.2.3 MPI程序工作模式
1.3 MPI消息传递通信的基本概念
1.3.1 消息
1.3.2 缓冲区
1.3.3 通信子
1.3.4 进样号和进程纰
1.3.5 通价胁议
1.3.6 隐形对象
第2章 点到点通信
2.1 阻糍通信
2.1.1 标准通信模式
2.1.2 缓冲通信模式
2.1.3 就绪通信模式
2.1.4 同步通信模式
2.1.5 小结
2.2 非阻塞通信
2.2.1 通信结束测试
2.2.2 非重复的非阻塞通信
2.2.3 可醺复的非阻塞通信
2.2.4 Probe和Cancel
2.3 组合发送接收
2.3.1 MPl_Send,MPI_RecvoMPl_Sendreev
2.3.2 MPI_Bsend←→MPl_Sendrecv
2.3.3 MPI_Rsend←→MPI_Sendrecv
2.3.4 MPl_Ssend←→MPl_Sendrecv
2.3.5 MPl_lsend←→MP1一Sendrecv
2.3.6 MPl_Ibsend←→MPI_Sendrecv
2.3.7 MPI_Irsend←→MPI_Sendrecv
2.3.8 MPl_Issend,MPI_Irecv←→MPI_Sendrecv 2.3.9 MPI Send_init←→MPl_Sendrecv
2.3.10 MPI一Bsendj init←→MPl_Sendrecv
2.3.11 MPI_Rsend_init←→MPI_Sendrecv
2.3.12 MPl_Ssend_init,MPl_Recv_init←→MPl_Sendrecv 2.4 点到点通信总结
2.4.1 关于预防死锁
2.4.2 关于阻塞与非阻塞、同步与异步 2.4.3 关于操作的执行顺序及“公平性”
第3章 组与通信子
3.1 简介
3.2 组管理API
3.2.1 组的构建及取消
3.2.2 访问组的相关信息和属性
3.3 组问通信
3.3.1 创建与取消
3.3.2 访问通信子信息
3.4 组间通信
3.4.1 访问函数
3.4.2 构造和取消函数
3.5 属性
3.5.1 创建及释放属性操作
3.5.2 访问属性操作
3.5.3 设置及删除属性操作
3.5.4 命名通信子对象
3.6 错误处理
3.7 组及通信子的小结
第4章 集合通信
4.1 1←→N
4.1.1 MPI_Bcast
4.1.2 MPI_Scatter/MPI_Scatterv
4.2 N←→1
4.2.1 MPl_Gather/MPI_Gatherv
4.2.2 MPI_Reduce
4.3 N←→N
4.3.1 MPI_Allgather/MPI_Allgatherv. 4.3.2 MPI_Allreduce
4.3.3 MPl_Reduce scatter
4.3.4 MPI_Alltoall/MPI Alltoallv/MPI_Alltoallw 4.3.5 MPI_Scan/MPI_Exscan
4.4 同步操作--MPI_Barrier
第5章 数据类型
5.1 类型图
5.2 与数据类型相关的API函数
5.2.1 创建
5.2.2 访问
5.2.3 注册与取消
5.3 数据类型在通信函数缓冲区的构成 5.4 数据类型的属性
5.4.1 属性创建与释放
5.4.2 属性操作
5.4.3 复制数据类型
5.4.4 类型属性举例
5.4.5 数据类型命名
5.5 数据类型的析构
5.5.1 获取创建数据类型MPI函数所使用参数数量信息 5.5.2 获取创建数据类型MPI函数所使用实际参数信息 5.5.3 示例
5.6 打包/解包
第6章 进程拓扑
第7章 动态进程管理
第8章 单向通信/远端内存访问
第9章 并行I/O
第10章 MPI与外部环境的信息交互
第11章 MPE
参考文献
下载后 点击此处查看更多内容