Fortran Coder

查看: 7189|回复: 1
打印 上一主题 下一主题

[并行] open acc处理矩阵的并行问题

[复制链接]

63

帖子

9

主题

0

精华

专家

超凡脱俗

F 币
474 元
贡献
237 点
楼主
发表于 2019-3-15 12:03:56 | 显示全部楼层
本帖最后由 Jackdaw 于 2019-3-15 16:04 编辑

写法有问题吧,可以参考下面两种

[Fortran] 纯文本查看 复制代码
!$acc parallel copyin(mat) private(idx1, idx2, idx3)
    !$acc loop 
    do d = 1, num
        do c = 1, num 
            do b =1, c -1 
                do a = 1, b -1 
                    idx1 = (d-1)*num**3 + (c-1)*num**2 + (b-1)*num + a 
                    idx2 = (d-1)*num**3 + (a-1)*num**2 + (c-1)*num + b 
                    idx3 = (d-1)*num**3 + (b-1)*num**2 + (a-1)*num + c
                    tmp  = tmp + mat( idx1 ) + mat( idx2 ) + mat( idx3 ) 
                end do 
            end do 
        end do 
    end do    
    !$acc end loop
    !$acc end parallel   



[Fortran] 纯文本查看 复制代码
!$acc kernels copyin(mat) private(idx1, idx2, idx3) 
    do d = 1, num
        do c = 1, num 
            do b =1, c -1 
                do a = 1, b -1 
                    idx1 = (d-1)*num**3 + (c-1)*num**2 + (b-1)*num + a 
                    idx2 = (d-1)*num**3 + (a-1)*num**2 + (c-1)*num + b 
                    idx3 = (d-1)*num**3 + (b-1)*num**2 + (a-1)*num + c
                    tmp  = tmp + mat( idx1 ) + mat( idx2 ) + mat( idx3 ) 
                end do 
            end do 
        end do 
    end do  
    !$acc end kernels   

天下英雄出我辈,一入江湖岁月催。

鸿图霸业谈笑间,不胜人生一场醉。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-10 09:26

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表