- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]矩阵运算
矩阵运算
矩阵运算是数值计算中最重要的一类运算,特别是在线性代数和数值分析中,它是一种最基本的运算。讨论的矩阵运算包括矩阵转置、矩阵向量相乘、矩阵乘法、矩阵分解以及方阵求逆等。在讨论并行矩阵算法时分三步进行:①算法描述及其串行算法;②算法的并行化及其实现算法框架以及简单的算法分析;③算法实现的MPI源程序,以利于读者实践操作。
矩阵转置
矩阵转置及其串行算法
对于一个n阶方阵A=[aij],将其每一下三角元素aij (ij)沿主对角线与其对称元素aji互换就构成了转置矩阵AT。假设一对数据的交换时间为一个单位时间,则下述矩阵转置(Matrix Transposing)算法18.1的运行时间为(n2-n)/2=O(n2)。
算法18.1 单处理器上矩阵转置算法
输入:矩阵An×n
输出:矩阵An×n的转置ATn×n
Begin
for i=2 to n do
for j=1 to i-1 do
交换a[i,j]和a[j,i]
endfor
endfor
End
图 18.1 子块转置
矩阵转置并行算法
此处主要讨论网孔上的块棋盘划分(Block-Checker Board Partitioning,又称为块状划分)的矩阵转置算法,它对循环棋盘划分(Cyclic-Checker Board Partitioning)也同样适用。另外,超立方上块棋盘划分的矩阵转置算法可参见文献[1]。
实现矩阵的转置时,若处理器个数为p,且它们的编号依次是0,1, …,p-1,则将n阶矩阵A分成p个大小为m×m的子块,。p个子块组成一个的子块阵列。记其中第i行第j列的子块为Aij,它含有A的第(i-1)m+1至第im行中的第(j-1)m+1至第jm列的所有元素。对每一处理器按行主方式赋以二维下标,记编号为i的处理器的二维下标为(v,u),其中,,将A的子块存入下标为(v,u)表示的对应处理器中。
这样,转置过程分两步进行:第一步,子块转置,具体过程如图 18.1所示;第二步,处理器内部局部转置。
为了避免对应子块交换数据时处理器发生死锁,可令下三角子块先向与之对应的上三角子块发送数据,然后从上三角子块接收数据;上三角子块先将数据存放在缓冲区buffer中,然后从与之对应的下三角子块接收数据;最后再将缓冲区中的数据发送给下三角子块。具体并行算法框架描述如下:
算法18.2 网孔上的矩阵转置算法
输入:矩阵An×n
输出:矩阵An×n的转置ATn×n
Begin
对所有处理器my_rank(my_rank=0,…,p-1)同时执行如下的算法:
(1)计算子块的行号 v=my_rank/ sqrt(p), 计算子块的列号u=my_rank mod sqrt(p)
(2)if (uv) then /*对存放下三角块的处理器*/
(2.1)将所存的子块发送到其对角块所在的处理器中
(2.2)接收其对角块所在的处理器中发来的子块
else /*对存放上三角块的处理器*/
(2.3)将所存的子块在缓冲区buffer中做备份
(2.4)接收其对角块所在的处理器中发来的子块
(2.5)将buffer中所存的子块发送到其对角块所在的处理器中
end if
(3)for i=1 to m do /*处理器内部局部转置*/
for j=1 to i do
交换a[i,j]和a[j,i]
end for
end for
End
若记ts为发送启动时间, tw为单位数据传输时间,th为处理器间的延迟时间,则第一步由于每个子块有n2/p个元素,又由于通信过程中为了避免死锁,错开下三角子块与上三角子块的发送顺序,因此子块的交换时间为;第二步,假定一对数据的交换时间为一个单位时间,则局部转置时间为。因此所需的并行计算时间。
MPI源程序请参见所附光盘。
矩阵-向量乘法
矩阵-向量乘法及其串行算法
矩阵-向量乘法(Matrix-Vector Multiplication)是将一个n×n阶方阵A=[aij]乘以n×1的向量B=[b1,b2, …,bn]T得到一个具有n个元素的列向量C=[c1,c2, …,cn]T。假设一次乘法和加法运算时间为一个单位时间,则下述矩阵向量乘法算法18.3的时间复杂度为O(n2)。
算法18.3 单处理器上矩阵-向量乘算法
输入:An×n,Bn×1
输出:Cn×1
Begin
for i=0 to n-1 do
c[i]= 0
for j=0 to n-1 do
c[i]=c[i] + a[i,j]*b[j]
end for
end for
End
矩阵-向量乘法的并行算法
矩阵-向量乘法同样可以有带状划分(Striped Partitioning)和棋盘划分(Checker Board Part
您可能关注的文档
最近下载
- (新教科版)科学四年级上册全册教案及教学设计.pdf VIP
- 部编版八年级语文上册《短文二篇》PPT优秀课件.pptx VIP
- ZF_Intarder3_缓速器培训课件安喜光.pptx VIP
- 加氢搅拌器形式、原理及其发展趋势.pdf VIP
- 第一单元第2课《缤纷的世界美术流派》课件+教案-2025-2026学年人美版(2024)初中美术八年级上册.pptx VIP
- 初三冲刺班会动员课件PPT.pptx VIP
- 《一着惊海天》教学设计.docx VIP
- 电子信息工程专业未来就业岗位及发展前景分析报告.docx VIP
- 数字媒体艺术创意设计课件.pptx VIP
- 医院信息科笔试题库及答案.docx VIP
文档评论(0)