[工学]基础并行算法与开源软件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]基础并行算法与开源软件

基础并行算法及其开源软件 计算力学研究所 算法是解题方法的精确描述,是一组有穷的规则,它们规定了解决某一特定类型问题的一系列运算。并行算法(Parallel Algorithm)是一些可同时执行的诸进程的集合,这些进程相互作用和协调动作从而达到给定问题的求解。并行算法可以分成数值计算和非数值计算的并行算法。并行数值算法就是求解诸如矩阵运算、多项式求值、求解线性方程组等数值计算问题的并行算法。 在科学与工程计算的许多问题中,数值计算问题,特别是矩阵相乘、求解线性方程组和矩阵特征值问题是最基本的内核。随着MPP(Massively Parallel Processing)并行计算机、机群以及消息传递并行环境(MPI 等)的不断发展和完善,为了充分发挥分布式并行计算机的功效,掌握针对分布式并行计算机的并行数值计算方法变得越来越重要。这里着重考虑矩阵向量运算和求解线性方程组的多种并行算法。 第一节 并行矩阵-向量乘法 预备--几个记号 内积 Saxpy Gaxpy 串行矩阵-向量乘法 假定 计算 称之为Gaxpy 常规方式是每次修正一个分量 Gaxpy:行型算法 例: Gaxpy:列型算法 例: Ax表示成为A的列向量的线性组合。 矩阵的划分 带状划分:将矩阵整行或整列地分成若干个组,每组指派给一个处理器。这些行列可以是连续的,也可以是等距相间的,前者称为块带状划分,后者称为循环带状划分。 n×n的矩阵(0,1,…,n-1),p个处理器(0,1,…,p-1) 块带状划分: 每个处理器均匀连续地分配有n/p行(列),其中第i个处理器上包含: P0 P1 P2 P3 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 以4个处理器,16列矩阵为例 假设n能被p整除 循环带状划分: 每个处理器均匀相间地分配有n/p行(列),其中第i个处理器上包含: P0 P1 P2 P3 0 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15 以4个处理器,16列矩阵为例 棋盘划分:将方阵划分成若干个子方阵,每个子方阵指派给一个处理器,此时每个处理器均不包含整行或整列。棋盘划分也可分为块棋盘划分和循环棋盘划分。 n×n的矩阵(0,1,…,n-1),p个处理器(组成 的二维处理器阵列),每个处理器均匀地分配有 个矩阵元素。 块棋盘划分: 以16个处理器,8×8矩阵为例 P00 P10 P20 P30 P01 P02 P03 P11 P21 P31 P12 P13 P22 P32 P23 P33 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 P00 P10 P20 P30 P01 P02 P03 P11 P21 P31 P12 P13 P22 P32 P23 P33 0 4 1 5 2 6 3 7 0 4 1 5 2 6 3 7 循环棋盘划分: 行块带状划分的矩阵向量乘法 划分成p块,假设n能被p整除,第k块:(0≤k ≤ p-1) 假设Ak,xk,yk存储再进程k上,分别存在局部存储器 在给定进程k上,每步计算中需要用到的子矩阵A的行标号始终不变,说明在每步计算时用到的A的块实际上都一直处于本进程上。而x的块位于不同的处理机上,需要进行数据通信。本处采用每计算一次将x的块在同列进程中循环上移一个位置的方式来实现这种数据通信。算法具体描述如下: 0 1 2 p-1 … 数据流动 算法: 以p=3,n=3为例,y=Ax × = x0 x1 x2 y0 y1 y2 A00 A01 A02 A10 A20 A11 A12 A21 A22 第1步 第2步 第3步 P0 P1 P2 第二节 并行矩阵-矩阵乘法 串行矩阵-矩阵乘法 矩阵乘法:ijk形式,标量描述 矩阵乘法中三个求和循环可任意排序,从而一共3!=6种形式,如jki形式(标量描述) 这6种可能性(ijk,jik,ikj,jki,kij,kji)的任何一个都对应一内层运算,而且具有自己数据流动形式。例如ijk形式,内层运算是点积,数据用到的是A的行和B的列。 矩阵乘法:点积形式(ijk) 记 则上述算法可表示为 进一步可表示为 其中 或表示为 ijk形式的内部两层循环实质上是基于行的Gaxpy运算 矩阵乘法:Saxpy形式(jki) 假定A和C的列分划为 比较两边第j列,可知 一系列Saxpy运算 k循环实质上是一Gaxpy运算 得到如下算法 矩阵乘法:外积形式 考虑kji形式 记 则内部的两层循环是一个外积修正 可得到以下算法 可见其中的AB是p个外积之和。 并行矩阵-矩阵乘法 假设 行列划分算法

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档