没有合适的资源?快使用搜索试试~ 我知道了~
首页Cannon乘法的MPI实现
Cannon乘法的MPI实现
![](https://csdnimg.cn/release/wenkucmsfe/public/img/star.98a08eaa.png)
cannon算法是矩阵的并行乘法,属于数值并行算法MPI编程实现一篇,其中关于数值并行算法MPI编程由于要处理的数据量巨大,程序循环次数多,对于串行而言,处理时间将非常长,将其并行化非常必要。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/7675239/bg1.jpg)
《并行算法实践》要求学生在 KD60 实验平台上设计并行算法并实现。实验
平台由一块处理板、一块监控板和一块背板等组成。
处理板逻辑结构如图 所示。处理板承载 个处理单元,每个处理单元包
括一个龙芯 号四核 、 内存、 千兆以太网卡芯片、
、串口收发芯片以及电源变换电路等。四个龙芯 号处理器通过
总线实现互连。监控电路检测 个处理单元的状态,并实现对其控制。
图 处理板逻辑结构
实验平台的系统软件以开源软件为主(见图 ),具有兼容性强、易维护 、
易升级、易使用等特点。处理单元操作系统为 ! 无盘系统,
采用稳定高效的 "#"$ 内核。
图 软件系统结构
要求选修《并行算法实践》同学在下面表 1 中选一个题目,(1)阐述基本原
理(包括对算法改进和优化方法);(2)根据 KD60 实验平台设计实验方法和步
骤(包括主要调试过程要求拷屏)。(3) 数据及结果分析:根据不同的实验内容,
记录具体的实验数据或程序运行结果(要求拷屏)。实验数据量较大时,最好制
成表格形式。附上程序功能、模块说明、完整源代码,源代码中尽量多带注释;
![](https://csdnimg.cn/release/download_crawler_static/7675239/bg2.jpg)
%&分析和总结:对程序与算法性能改进结论,总结和体会。
表 1 《并行算法实践》题目
序号 题目名称 基本方法和内容要求
1
分解的 '( 实现 编写 分解的 '( 程序
2
)( 算法的 '( 实现 编写 )( 算法的 '( 程序
3
高 斯 消 元 法 解 线 性 方 程 组 的
'( 实现
编 写 高 斯 消 元 法 解 线 性 方 程 组 的
'( 程序
4
高 斯 消 元 法 解 线 性 方 程 组 的
MPI 实现
编写高斯消元法解线性方程组的 MPI 程
序
5
高斯*塞德尔迭代解线性方程组
的 MPI 实现
编写高斯*塞德尔迭代解线性方程组的
MPI 程序
6
+ 乘法的 MPI 实现 编写 + 乘法的 MPI 程序
7
LU 分解的 MPI 实现 编写 LU 分解的 MPI 程序
8
随机串匹配算法的 MPI 实现 编写随机串匹配算法的 MPI 程序
9
单源最短路径 Dijkstra 算法的
MPI 实现
编写单源最短路径 Dijkstra 算法的 MPI
程序
10
快速排序算法的 MPI 实现 编写快速排序算法的 MPI 程序
11
)( 串匹配的 MPI 实现 编写 )( 串匹配算法的 MPI 程序
图 2 软件系统结构
Cannon 乘法的 MPI 实现及性能分析
![](https://csdnimg.cn/release/download_crawler_static/7675239/bg3.jpg)
摘要:cannon 算法是矩阵的并行乘法,属于数值并行算法 MPI 编程实现一篇,其中关于
数值并行算法 MPI 编程由于要处理的数据量巨大,程序循环次数多,对于串行而言,处理
时间将非常长,将其并行化非常必要。本文将矩阵数据进行棋盘划分成多个子矩阵,再分
别指派给多个处理器,使个处理器并行运算。
关键字:cannon 乘法 并行计算 数据划分
一、+ 乘法的 MPI 实现基本原理
+ 乘法属于数值并行算法 MPI 编程实现一篇,其中关于数值并行算法 MPI 编程由于
要处理的数据量巨大,程序循环次数多,对于串行而言,处理时间将非常长,使其并行化
的一般方法有:1)数据相关分析 2)数据划分和处理器指派 3)循环重构
对原有程序并行化,首先要分析计算程序中所有语句间的依赖关系,这称之为相关分析。
本项目 + 乘法的 ,' 实现,是矩阵运算,阶往往都很高,而且行列之间数据依赖关
系也不强,所以就对矩阵进行划分,然后指派给不同的处理器进行处理。最常用的矩阵划
分有带状划分和块状划分。
. 带状划分方法
带状划分又叫行列划分,就是将矩阵整行或整列地分成若干组,各组指派给一个处理
器。也可以将若干行或列指派给一个处理器,而且这些行和列可以是连续的,也可以
是等间距的,前者称为块带状的,后者称为循环带状的。
" 块状划分方法
块状划分又叫棋盘划分,就是将矩阵划分成若干个子矩阵,每个子矩阵指派给一个处
理器,此时任意处理器均不含整行或整列。和带状划分类似,棋盘划分也可分为块棋
盘划分和循环棋盘划分。棋盘划分比带状划分可开发更高的并行度,+ 乘法的
,' 实现也正是基于棋盘划分的并行实现。
循环重构是指在数据分解之后,相应地将串行程序循环部分进行重构,以实现这种划分所
确定的并行计算,主要方法有 )循环交换 )拉伸法 )分裂法 )轮转法 -)并列法
在三种程序并行化的方法中,数据相关分析和循环重构目的都是挖掘语句间的并行性,而
数据划分和处理器指派则重在策略,宏观上挖掘并行性。
Cannon 算法是一种存储有效的算法,设矩阵 和 相乘。为了使两矩阵下标满
足相乘的要求,和带状的并行分块乘法不同,不是仅仅让 B 矩阵的各列块循环移动,而是
有目的地让 A 的各行块以及 B 的各列块皆施行循环移位,从而实现对 C 的子块的计算。将
矩 阵 A 和 B 分 成 p 个 方 块 A
ij
和 B
ij
, , 每 块 大 小 为
, 并 将 它 们 分 配 给 个 处 理 器
。开始时处理器 P
ij
存放块 A
ij
和 B
ij
,并负责计算块 C
ij
,然后算
法开始执行:
⑴ 将块 A
ij
向左循环移动 i 步;将块 B
ij
向上循环移动 j 步;
⑵P
ij
执行乘加运算后将块 A
ij
向左循环移动 1 步,块 B
ij
向上循环移动 1 步;
⑶ 重复第⑵步,总共执行 次乘加运算和 次块 A
ij
和 B
ij
的循环单步移位。
二、+ 乘法的 MPI 实现内容和步骤
实验涉及内容主要有:
)数据划分和指派处理器
![](https://csdnimg.cn/release/download_crawler_static/7675239/bg4.jpg)
最常用的矩阵数据划分有带状划分和块状划分。棋盘划分比带状划分可开发更高的并行度,
+ 乘法的 ,' 实现也正是基于棋盘划分的并行实现。设有 个处理器,将矩阵 A 和
B 分成 p 个方块 A
ij
和 B
ij
, ,每块大小为
,并将它们分配给 个处理器
。
) 子矩阵的循环移动
处理器 P
ij
存放块 A
ij
和 B
ij
,并负责计算块 C
ij
,在使 . 矩阵的左右循环移动和 矩阵的上下
循环移动时,为了避免在通信过程中发生死锁,奇数号及偶数号处理器的收发顺序被错开,
使偶数号处理器先发送后接收;而奇数号处理器先将子矩阵块存于缓冲区 /0 中,然后
接收编号在其后面的处理器所发送的子矩阵块,最后再将缓冲区中子矩阵块发送给编号在
其前面的处理器。基本算法如下:
1
%&2%j3&45最左端的子块5
%"&将所存的 . 的子块发送到同行最右端子块所在的处理器中
%"&接收其右邻处理器中发来的 . 的子块
62
%&2%%j 3704%p&*&6%j,+63&&45最右端子块处理器且块列号
为偶数5
%"&将所存的 . 的子块发送到其左邻处理器中
%"&接收其同行最左端子块所在的处理器发来的 . 的子块
62
%&2%%j 3704%p&*&6%j,+68&&45最右端子块处理器且块列号
为奇数5
%"&将所存的 . 的子块在缓冲区 /0 中做备份
%"&接收其同行最左端子块所在的处理器发来的 . 的子块
%"&将在缓冲区 /0 中所存的 . 的子块发送到其左邻处理器中
62
%&2%%j 8704%p&*&6%j,+63&6%j 8&&45其余的偶数号处
理器5
%"&将所存的 . 的子块发送到其左邻处理器中
%"&接收其右邻处理器中发来的 . 的子块
62
%-&2%%j 8704%p&*&6%j,+63&6%j 8&&45其余的奇数号处
理器5
%-"&将所存的 . 的子块在缓冲区 /0 中做备份
%-"&接收其右邻处理器中发来的 . 的子块
%-"&将在缓冲区 /0 中所存的 . 的子块发送到其左邻处理器中
62
96
实验步骤
) 登陆 )*#
剩余16页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/467919be289f429ba21163f4490c0d12_nihate.jpg!1)
nihate
- 粉丝: 1226
- 资源: 25
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 保险服务门店新年工作计划PPT.pptx
- 车辆安全工作计划PPT.pptx
- ipqc工作总结PPT.pptx
- 车间员工上半年工作总结PPT.pptx
- 保险公司员工的工作总结PPT.pptx
- 报价工作总结PPT.pptx
- 冲压车间实习工作总结PPT.pptx
- ktv周工作总结PPT.pptx
- 保育院总务工作计划PPT.pptx
- xx年度现代教育技术工作总结PPT.pptx
- 出纳的年终总结PPT.pptx
- 贝贝班班级工作计划PPT.pptx
- 变电值班员技术个人工作总结PPT.pptx
- 大学生读书活动策划书PPT.pptx
- 财务出纳月工作总结PPT.pptx
- 大学生“三支一扶”服务期满工作总结(2)PPT.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)