On Tue, Jun 23, 2015 at 02:40:43PM +0300, Ilya Verbin wrote: > On Sat, Jun 20, 2015 at 00:35:14 +0300, Ilya Verbin wrote: > > Given that a mapped variable in 4.1 can have different kinds across nested > > data > > regions, we need to store map-type not only for each var, but also for each > > structured mapping. Here is my WIP patch, is it sane? :) > > Attached testcase works OK on the device with non-shared memory. > > A bit updated version with a fix for GOMP_MAP_TO_PSET. > make check-target-libgomp passed.
Thinking about this more, for always modifier this isn't really sufficient. Consider: void foo (int *p) { #pragma omp target data (alloc:p[0:32]) { #pragma omp target data (always, from:p[7:9]) { ... } } } If all we record is the corresponding splay_tree and the flags (from/always_from), then this would try to copy from the device the whole array section, rather than just the small portion of it. So, supposedly in addition to the splay_tree for always from case we also need to remember e.g. [relative offset, length] within the splay tree object. Jakub