【发布时间】:2020-07-18 05:54:41
【问题描述】:
我是 OpenACC 的初学者。我想通过使用带有 GCC 编译器的 fortran 语言的 OpenACC 来加速我的程序。我的代码是:
Program Test
use openacc
Implicit None
integer(8)::I1,I2,I3,I4,I5,I6,I,ii,jj,J
!$acc kernels
!$acc loop
do I=1,1200000000
do II=1,300
do jj=1,200
do I1=1,200
do I2=1,500
if(I2==20.and.I1==200.and.JJ==200.and.II==200)then
print*,"Hello"
endif
Data1(I)=I-I+I-I+I
enddo
enddo
enddo
enddo
enddo
!$acc end kernels
end
我的代码速度没有改变。 我如何知道我的代码在 CPU 或 GPU 上运行?或者我如何更改我的代码以加速我的程序?
【问题讨论】:
-
如果那是你的真实代码,那么速度没有改变的原因可能是打印
Hello无数次本质上是一个串行操作(而且也相对较慢)。无论您的 CPU / GPU 处理最里面的语句有多快,您的输出子系统都会以同样的速度前进。
标签: gcc parallel-processing gpu openacc