Hi all
I have the following piece of code
!$acc data copyout(U) copy(CG_,B)
!$acc kernels
!$acc loop independent
do J3 = J3min,J3max
if (J3.gt.NG3/2) then
I3 = J3 - NG3
else
I3 = J3
endif
!$acc loop independent
do J2 = J2min,J2max
if (J2.gt.NG2/2) then
I2 = J2 - NG2
else
I2 = J2
endif
!$acc loop independent private(G)
do J1 = 0,N1-1
if (J1.gt.N1/2) then
I1 = J1 - N1
else
I1 = J1
endif
G(:)= B(:,1) * I1 + B(:,2) * I2 + B(:,3) * I3
G2 = G(1)**2 + G(2)**2 + G(3)**2
J2L = J2 - J2min
J3L = J3 - J3min
J = 1 + J1 + N1 * J2L + N1 * N2 * J3L
if (G2.LT.G2MAX .AND. G2.GT.TINY) then
VG = 8.0_dp * PI / G2
DU = VG * ( CG_(1,J)**2 + CG_(2,J)**2 )
U = U + DU
CG_(:,J) = VG * CG_(:,J)
else
CG_(:,J) = 0.0_dp
endif
enddo
enddo
enddo
!$acc end kernels
!$acc end data
compiler output is
arom@cuda:~/myproj/Obj$ pgfortran -c -g -Mcuda -acc -ta=nvidia:4.0,time -Minfo=accel ./poison.F
PGF90-W-0155-Compiler failed to translate accelerator region (see -Minfo messages): Could not find allocated-variable index for symbol (./poison.F: 41)
poison:
40, Generating copyout(.sqrt)
Generating copy(b(:,:))
Generating copy(cg_(:,:))
43, Loop is parallelizable
Accelerator kernel generated
43, !$acc loop gang, vector(256) ! blockidx%x threadidx%x
71, Sum reduction generated for u
50, Loop is parallelizable
57, Loop is parallelizable
63, Loop is parallelizable
0 inform, 1 warnings, 0 severes, 0 fatal for poison
Two questions are
- what does “.sqrt” name means?
40, Generating copyout(.sqrt)
Line 40 is the line with “!$acc data”
2. what does the warning about
PGF90-W-0155-Compiler failed to translate accelerator region (see -Minfo messages): Could not find allocated-variable index for symbol
I do understand that I don’t need to place copyout clause for “U”, but anyway…