如何解决为什么 OpenACC 帮派级循环不起作用
此代码:
integer :: g_i,w_i
!$acc parallel num_gangs(3) num_workers(2) vector_length(1)
!$acc loop independent gang
do g_i = 1,3
!$acc loop independent worker
do w_i = 1,2
print *,g_i,w_i
end do
enddo
!$acc end parallel
打印:
1 1
1 2
1 1
1 2
1 1
1 2
我不明白为什么 g_i 上的帮派级循环不起作用。
pgfortran 编译器报告:
171,Generating Tesla code
173,!$acc loop gang(3) ! blockidx%x
175,!$acc loop worker(2) ! threadidx%y
175,Loop is parallelizable
解决方法
您使用的是什么编译器版本、命令行选项和架构?
我试过你的例子,但它似乎给出了预期的答案。我在面向 V100 的 Linux x86_64 上使用 NVHPC SDK 20.11。
% cat test.f90
program foo
integer :: g_i,w_i
!$acc parallel num_gangs(3) num_workers(2) vector_length(1)
!$acc loop independent gang
do g_i = 1,3
!$acc loop independent worker
do w_i = 1,2
print *,g_i,w_i
end do
enddo
!$acc end parallel
end program foo
% pgfortran test.f90 -acc -V20.11 -fast -Minfo=accel ; a.out
foo:
7,Generating Tesla code
9,!$acc loop gang(3) ! blockidx%x
11,!$acc loop worker(2) ! threadidx%y
11,Loop is parallelizable
1 1
1 2
2 1
2 2
3 1
3 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。