[Openmp-commits] [PATCH] D44260: [OpenMP][libomptarget] Add global memory data sharing support for master-worker sharing.

Gheorghe-Teodor Bercea via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Mon Mar 12 07:57:49 PDT 2018


gtbercea added inline comments.


================
Comment at: libomptarget/deviceRTLs/nvptx/src/omptarget-nvptx.h:99-100
+  void **args;
+  // starts off as MAX_SHARED_ARGS but can increase in size.
+  uint32_t nArgs;
+};
----------------
grokos wrote:
> gtbercea wrote:
> > grokos wrote:
> > > `Init()` is never called throughout the code, so `nArgs` is never initialized to `MAX_SHARED_ARGS`. Add a constructor to this class which will call `Init()`.
> > Added the call in the stack initialization function.
> No, that's not a good idea. Initialization of the class members should be handled automatically via a constructor. If someone ever wants to reuse this class without having a constructor then they will need to keep in mind that `Init()` must be called explicitly - not a good style.
Since this class is going to be instantiated as a __device__ __shared__ object, dynamic initialization is not supported. In general, it is not supported for __device__, __constant__ and __shared__ variables. The suggested solution is to have an empty or no constructor at all and explicitly handle initialization like it is being done in the Init() method.


Repository:
  rOMP OpenMP

https://reviews.llvm.org/D44260





More information about the Openmp-commits mailing list