I am having a weird problem.
I consistently use the “kernels” around fortran array syntax, but it seems that when I do so with some array operations, I get strange compiler comments and it is not parallelized.
!$acc kernels default(present) pres=he_p*rho*temp/he_rho !$acc end kernels
yields this output:
setp_acc: 0, Accelerator kernel generated Generating Tesla code 45208, Accelerator scalar kernel generated Generating implicit present(pres$f(:,:,:),pres$f,temp(:,:,:),rho(:,:,:),pres(:,:,:)) 45209, Loop carried dependence due to exposed use of pres$f(:,:,:) prevents parallelization Parallelization requires privatization of pres$f as well as last value Loop is parallelizable Loop carried reuse of pres prevents parallelization Inner sequential loop scheduled on accelerator Accelerator scalar kernel generated Accelerator kernel generated Generating Tesla code 45209, !$acc loop seq
In this code segment, temp, rho, and pres are all allocatable, form the same module, and on the device.
The scalars are stored in a different module.
Any ideas on why this is happening? What does it mean “pres$f?”.