I have a problem that I have worked around but thought I would share.
I am using manual deepcopy (the beta deepcopy feature was giving me too many problems…).
So I create data like this:
!$acc enter data create(a,a%r,a%t,a%p)
When I try to use the derived type in a parallel or kernels region, I am using the “default(present)” clause.
When I do this I get runtime errors (usually of the type of “such and such is partially on the device”).
In order to get around this, I always have to declare the type pointer present directly. So now I do things like:
!$acc parallel loop default(present) present(a)
(I still use the default(present) to cover all the other non-typed arrays in the loop).