首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环并行化

循环并行化
EN

Stack Overflow用户
提问于 2015-09-01 06:08:52
回答 1查看 184关注 0票数 0

几个小时以来,我一直在徒劳地试图解决以下问题:“进行必要的循环转换,使并行执行成为可能。”

代码语言:javascript
复制
do i=1,n
   do j=1,n
       A[i,j]=A[i-3,j-3]+A[i-4,j-4]
   end do
end do

不幸的是,我的循环转换知识是poor.Therefore我可能需要一个详细的解释,如果你提前possible.Thank你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2017-07-10 13:54:50

您的代码非常适合用于自动循环转换和局部性优化的所谓多面体框架。参考PLUTO编译器,它可以自动并行化你的代码。PLUTO将您的代码转换为:

代码语言:javascript
复制
for (t1=0;t1<=floord(N-1,16);t1++) {
    lbp=max(0,ceild(32*t1-N+1,32));
    ubp=min(floord(N-1,32),t1);
    #pragma omp parallel for private(lbv,ubv,t3,t4)
    for (t2=lbp;t2<=ubp;t2++) {
        for (t3=32*t1-32*t2;t3<=min(N-1,32*t1-32*t2+31);t3++) {
        lbv=32*t2;
        ubv=min(N-1,32*t2+31);
        #pragma ivdep
        #pragma vector always
        for (t4=lbv;t4<=ubv;t4++) {
           A[t3][t4]=A[t3-3][t4-3]+A[t3-4][t4-4];;
        }
    }
}

您可以看到,倾斜后的平铺有助于提取两个级别的并行性。更多细节请访问:http://pluto-compiler.sourceforge.net/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32320705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档