On Mon, Nov 02, 2015 at 06:33:39PM +0000, Julian Brown wrote: > As the author of the original patch, I have to say using the mapping > structures seems like a far better approach, but I've hit some trouble > with the details of adapting OpenACC to use that method. > > Firstly, on trunk at least, use_device_ptr variables are restricted to > pointer or array types: that restriction doesn't exist in OpenACC, nor > actually could I find it in the OpenMP 4.1 document (my guess is the
^^ 4.5 ;) > standards are supposed to match in this regard). I think that a program > such as this should work: > > void target_fn (int *targ_data); > > int > main (int argc, char *argv[]) > { > char out; > int myvar; > #pragma omp target enter data map(to: myvar) > > #pragma omp target data use_device_ptr(myvar) map(from:out) > { > target_fn (&myvar); > out = 5; > } > > return 0; > } You are right, I've been misreading the standard (the only testcases that have been provided with the change were using arrays and so it was non-obvious that it relies on array to pointer decay). I'll work on changing the implementation accordingly tomorrow. Jakub