Hi,
I am accelerating the region below, where all the variables are pointers passed into a subprogram. They are not qualified as being restricted although I know they are for this loop so I use the independent clause:
When I compile with pgcc 10.6-0 64-bit target on x86-64 Linux -tp nehalem-64, I get:
91, Generating copyin(txz[ioXz+(ioXx*n1)-1:nz+(n1*nx)+2])
Generating copyin(txx[ioXz+((ioXx-1)*n1):nz+(n1*(nx+1))])
Generating copyin(rox[ioXz+(ioXx*n1):nz+(n1*nx)])
Generating copy(vx[ioXz+(ioXx*n1):nz+(n1*nx)])
Generating compute capability 2.0 binary
97, Loop is parallelizable
Accelerator kernel generated
97, #pragma acc for parallel, vector(256)
CC 2.0 : 10 registers; 4 shared, 128 constant, 0 local memory bytes; 100 occupancy
99, Loop is parallelizable
104, Accelerator restriction: unknown right hand side reference
What does the final message mean, please, and how do I solve the problem?
Cheers,
Alistair.
#pragma acc region \
copy( vx [ioXx*n1+ioXz :nx*n1+nz]) \
copyin(rox[ioXx*n1+ioXz :nx*n1+nz]) \
copyin(txx[(ioXx-1)*n1+ioXz:(nx+1)*n1+nz]) \
copyin(txz[ioXx*n1+ioXz-1 :nx*n1+nz+2])
#pragma acc for independent
for (ix=ioXx; ix<nx+1; ix++) {
#pragma acc for independent
for (iz=ioXz; iz<nz+1; iz++) {
vx[ix*n1+iz] += rox[ix*n1+iz]*(
c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] +
txz[ix*n1+iz+1] - txz[ix*n1+iz]) +
c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] +
txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) );
}
}