Hi,
I am trying to do this:
!$acc parallel default(present) present(ps) async(1)
!$acc loop
do k=2,npm1
!$acc loop
do j=2,ntm1
!$acc loop
do i=2,nrm-1
!$acc cache(ps%r(i,j,k),ps%t(i,j,k),ps%p(i,j,k))
ii=ntm2*(nrm-2)*(k-2)+(nrm-2)*(j-2)+(i-1)
q(ii)=a_r( i,j,k,1)*ps%r(i ,j ,k-1)
& +a_r( i,j,k,2)*ps%r(i ,j-1,k )
& +a_r( i,j,k,3)*ps%r(i-1,j ,k )
& +a_r( i,j,k,4)*ps%r(i ,j ,k )
& +a_r( i,j,k,5)*ps%r(i+1,j ,k )
& +a_r( i,j,k,6)*ps%r(i ,j+1,k )
& +a_r( i,j,k,7)*ps%r(i ,j ,k+1)
& +a_r( i,j,k,8)*ps%t(i ,j-1,k )
& +a_r( i,j,k,9)*ps%t(i+1,j-1,k )
& +a_r(i,j,k,10)*ps%t(i ,j ,k )
& +a_r(i,j,k,11)*ps%t(i+1,j ,k )
& +a_r(i,j,k,12)*ps%p(i ,j ,k-1)
& +a_r(i,j,k,13)*ps%p(i+1,j ,k-1)
& +a_r(i,j,k,14)*ps%p(i ,j ,k )
& +a_r(i,j,k,15)*ps%p(i+1,j ,k )
enddo
enddo
enddo
!$acc end parallel
and am getting this error:
PGF90-S-0155-Compiler failed to translate accelerator region (see -Minfo messages): Could not find allocated-variable index for symbol (mas_sed_expmac.f: 23885)
but then I also see this:
23885, Generating present(ps)
Accelerator kernel generated
Generating Tesla code
23887, !$acc loop gang ! blockidx%x
23889, !$acc loop seq
23891, !$acc loop vector(128) ! threadidx%x
Cached references to size [(x)] block of t,r,p
23889, Loop is parallelizable
23891, Loop is parallelizable
It seems the cache doesn’t like my derived type arrays…