[Openmp-commits] [PATCH] D65001: [OpenMP][libomptarget] Add support for unified memory for regular maps
Gheorghe-Teodor Bercea via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Mon Jul 29 11:52:09 PDT 2019
gtbercea marked an inline comment as done.
gtbercea added inline comments.
Comment at: libomptarget/test/api/api.c:98
+ // CHECK: Inside target data: A is not present
+ // CHECK: Inside target data: B is present
> gtbercea wrote:
> > Hahnfeld wrote:
> > > gtbercea wrote:
> > > > Hahnfeld wrote:
> > > > > because this sounds really odd: `A` can be accessed on the device, but is not "present"?
> > > > This is just a presence test using the OpenMP API. If A is not associated to a device instance then it won't be considered present. Again, if the user wants to handle all of this manually the option is there and unified memory can't make this not an option for the user.
> > > > If A is not associated to a device instance then it won't be considered present.
> > >
> > > Can you link me to a paragraph in the spec that mandates this implication? I only know of the following from the `Effect` of `omp_target_is_present`:
> > >
> > > > This routine returns non-zero if the specified pointer would be found present on device device_num by a map clause; otherwise, it returns zero.
> > >
> > > I think there's nothing that prevents a non-zero return value because in fact all pointers would be found present by a `map` clause under unified shared memory.
> > You would be right to think so if this was not in combination with omp_target_alloc. The fact that it is it means that the pointer was not officially mapped (explicitely or implicitly).
> So what would be a full motivating example where libomptarget can't return true for any pointer passed to `omp_target_is_present`? Is it in this test?
Wait, this is not about a motivating example, it's about correctness. The function should return false if A is not "present" on the device. So I think the question is what is the definition of present in this case? As stated before I think in this case A is not actually mapped, perhaps the pointer to A may be implicitly mapped but the actual data belonging to A has not been associated with the pointer.
CHANGES SINCE LAST ACTION
More information about the Openmp-commits