并行编译简介.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文档。上传文档
查看更多
并行编译简介.ppt

国家高性能计算中心(合肥) * * 可并行化循环的充要条件 循环L=(L1,L2,. . ., Lm)中内层循环Lk可并行化当且仅当循环L中不存在层次为k的依赖关系,即不存在方向向量为(0,…,0,1k,*,…,*)(含k-1个前导零)的依赖关系(即由K层携带的依赖关系)。 考察以下循环: for I = 1 to N do for J = 1 to M do X(I, J) = X( I, J-1) + X(I, J+1) endfor endfor L1: for I = 0 to 4 do L2: for J = 0 to 4 do S: X(I+1, J+2) = Y( I, J) + 1 T: Y(I+2, J+1) = X(I, J) + 1 endfor endfor 存在方向为(0,1)的依赖关系 存在方向为(1,1)的依赖关系: S ? T 和 T ? S 国家高性能计算中心(合肥) * * for I = 1 to N do for J = 1 to M do X(I, J) = X( I, J-1) + X(I, J+1) endfor endfor L1: for I = 0 to 4 do L2: for J = 0 to 4 do S: X(I+1, J+2) = Y( I, J) + 1 T: Y(I+2, J+1) = X(I, J) + 1 endfor endfor doall I = 1 to N for J = 1 to M do X(I, J) = X( I, J-1) + X(I, J+1) endfor enddoall L1: for I = 0 to 4 do L2: doall J = 0 to 4 S: X(I+1, J+2) = Y( I, J) + 1 T: Y(I+2, J+1) = X(I, J) + 1 enddoall endfor 并行化 外层循环I 并行化内层循环J 国家高性能计算中心(合肥) * * 循环变换 循环变换的主要目的在于发掘程序中更多的并行性 循环变换-是改变循环中语句实例的执行次序但不改变语句实例集合的程序变换技术。对于循环L中的语句实例S(i)和T(j),如果存在T(j)依赖于S(i),且在变换后的循环L’中仍然有T(j)的执行迟于S(i),那么称该循环变换合法,循环L和L’等价。 循环变换技术很多,如 循环交换、语句重排、循环分布与置换等等等等。 国家高性能计算中心(合肥) * * 循环分布 循环分布(loop distribution) 是一种语句级变换,将一个循环分解为多个小循环,每个小循环和原来的循环有相同的迭代空间,只是包含的语句少些。该变换主要用于: - 分解出可向量化或可并行化的循环 - 将原循环分解为较小循环以改善cache局部性 - 创建紧嵌套循环 - 分解原循环为若干使用较少变量的循环以提高寄存器的使用效率 该变换根据语句依赖图进行其上的强连通子图分类,得到所谓凝聚图,并按其中的偏序关系执行分解后的循环 国家高性能计算中心(合肥) * * 循环分布 考虑如下循环: L1:for I = 4 to 100 do S1 : A(I) = B(I-2) + 1 S2: C(I) = B(I-1) +F(I) S3: B(I) = A(I-1) + 2 S4: D(I) = D(I+1) + B(I-1) endfor 依赖关系如下: S1 ?f S3 S3 ?f S1 S3 ?f S2 S3 ?f S4 S4 ?a S4 国家高性能计算中心(合肥) * * ? ? ? ? S1 S2 S3 S4 ? ? ? {S1,S3} {S2} {S4} 语句依赖图 凝聚图 国家高性能计算中心(合肥) * * 这样把原循环分解成两大部分: L1: for I = 4 to 100 do S1 : A(I) = B(I-2) + 1 S3: B(I) = A(I-1) + 2 endfor L2:for I = 4 to 100 do S2: C(I) = B(I-1) +F(I) endfor L3:for I = 4 to 100 do S4: D(I) = D(I+

文档评论(0)

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

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

1亿VIP精品文档

相关文档