多核程序设计(曲冠南)2 并行计算基础.pptVIP

多核程序设计(曲冠南)2 并行计算基础.ppt

  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文档。上传文档
查看更多
注:原来PPT中有一个图, SIMD,但是每个P上带有LM,所有的P和LM通过interconnection network与shared memory连接,我感觉不准确: SIMD机器我觉得带局部存储器LM不太恰当,至少不典型。 通过互联网络连接的应该分开成多个存储体比较恰当。 而且通过互联网络不宜于同时读写同一存储体。 * * 常用并行划分--2 块棋盘划分 循环棋盘划分 * 常用并行数值算法——行列划分算法 数据结构:Ci,j和Ai ,Bj存放在Pi中(j=0,1,2,…p-1) Ci,j的计算是按对角线进行的 p个处理机,一维结构,每次每个处理机计算出一个Ci,j 计算C需要p次来完成。 T T 行列划分算法 mp1=(myid+1) mod p; mm1=(myid-1) mod p; for i=0 to p-1 do l=(i+myid) mod p Cl=AB if (i !=p-1) then {send(B,mml) recv(B,mpl)} end{for} 算法中,Cl=Cmyid,l ,A=Amyid ,B在处理机中每次循环向前移动一个处理机,每次交换数据为k×n矩阵,交换次数为p-1次。 数据交换量为: 2×k×(n-n), 计算量为: m×k×n/p, 行列划分法 假设6个处理机 * 常用并行数值算法——行行划分算法 T T T T 数据结构:Ci,j和Ai ,Bj存放在Pi中(j=0,1,2,…p-1) Ai 进一步划分成 Ai,0, Ai,1, …,Ai,p-1 p个处理机,每次每个处理机计算出Ci的部分积,采用乘累加 计算C需要p次来完成。 例子:假设A为2*2的矩阵,B为2*2的矩阵,2个处理机,分别用P1 和 P2表示。 T=0 P1上: [a11 a12] [b11 b12] ? [a11*b11 a11*b12] P2 上: [a21 a22] [b21 b22] ? [a22*b21 a22*b22] ? T=1 P1上: [a11 a12] [b21 b22] ? [a11*b11+a12*b21 a11*b12+a12*b22] P2 上: [a21 a22] [b11 b12] ? [a22*b21+a21*b11 a22*b22+a21*b12] * 常用并行数值算法----Cannon算法(块划分) 数据结构: A 、B 和 C 划分成 m×m 的方块阵 Ai,j、Bi,j 和 Ci,j , 其中 Ai,j、Bi,j 和 Ci,j均为 n×n 的方阵。 Ai,j、Bi,j 和 C i,j 存放在 Pi,j 设处理器数 P= m×m,二维结构 每次每个处理机计算出Ci的部分积,采用乘累加 计算 C 需要 p 次来完成。 广播 滚 动 * 2.9 并行编译器 并行编译过程 * 流分析 为使程序能够并行地执行,首先要进行相关性分析(设Sj总接在Si后执行),四种相关的形式(也就是所谓的依赖关系): 流相关-Si到Sj存在执行通路,且Si至少有一个输出作为Sj的输入。 反相关-Sj紧接着Si,且Sj至少有一个输出作为Si的输入。 输出相关-两条语句往相同的变量里写 控制相关-语句Sj的执行与否依赖于Si 影响程序向量化和并行化的主要关系是数据依赖关系 对于上述的三类依赖关系,相应计算之间的并行性处理可遵循如下准则: 数据不直接或间接存在依赖关系的计算可并行执行亦可串行执行。但是当串行执行时,它们的次序可以任意交换,这种顺序称之为可并行顺序。 存在流依赖或输出依赖的计算不可并行执行,只能在write_read次序下串行执行,即在前的计算先写,在后的计算后读,这种顺序称为W_R串行顺序。 存在反依赖的计算(例如S(i)T(j)),只要保持先读和后写,则允许它们并行执行,这种顺序称为W_R可并行顺序。 依赖距离、依赖方向和依赖层次 设语句S和T是嵌套循环L中的语句,如果语句T依赖于S,则存在实例S(i)δT(j)。令d=j-i,σ=sig(d), l=lev(d),称d是这个依赖关系的依赖距离向量。其中,σ是依赖方向向量,l是依赖层次,也称语句T在第l层上以距离向量d、方向向量σ依赖于语句S。 依赖距离向量指明了对同一存储单元的两次访问之间相隔的循环迭代数。依赖方向向量指明了存在依赖关系的两个迭代

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档