[PATCH] D16749: [OpenMP] Map clause codegeneration.

Samuel Antao via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 18 13:03:42 PDT 2016


sfantao added a comment.

Hi Alexey,

I am sorry but I don't think I am following. So in your example:

  #pragma omp target map(to: this->A)
  []()->void {++A}();

the map clause is going to make sure the runtime library allocates the section of `this` that contains A and that is what is used in the device. There are no new instances of A created inside the kernel. If you do:

  #pragma omp target
  []()->void {++A}();

what the lambda is going to get would be the same (except that runtime had eventually to copy more data to the device), so the map clause has no effect in how captures are dealt with inside. All the map clause does is to inform the runtime about sizes and addresses and change the captures to byCopy when necessary, it does not create new instances of data inside the kernel. Maybe what you are proposing is meant for (first)private?

Thanks,
Samuel


http://reviews.llvm.org/D16749





More information about the cfe-commits mailing list