[Openmp-commits] [PATCH] D44486: [OpenMP][libomptarget] Enable usage of shared memory slots

Gheorghe-Teodor Bercea via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Wed Mar 14 11:39:16 PDT 2018

gtbercea created this revision.
gtbercea added reviewers: ABataev, carlo.bertolli, grokos, caomhin.
Herald added subscribers: openmp-commits, guansong.

Allow the runtime to use the existing shared memory statically allocated slots.

When a variable is globalized, the underlying memory can be either shared or global memory (both have block-wide visibility). In this case, we allow that the storage to use a limited amount of shared memory that has been statically allocated already. Only if shared memory doesn't prove to be enough do we then invoke malloc() to create a new global memory slot.

  rOMP OpenMP



Index: libomptarget/deviceRTLs/nvptx/src/data_sharing.cu
--- libomptarget/deviceRTLs/nvptx/src/data_sharing.cu
+++ libomptarget/deviceRTLs/nvptx/src/data_sharing.cu
@@ -341,16 +341,7 @@
   DataSharingState.SlotPtr[WID] = RootS;
   DataSharingState.TailPtr[WID] = RootS;
-  // Initialize the stack pointer to be equal to the end of
-  // the shared memory slot. This way we ensure that the global
-  // version of the stack will be used.
-  // TODO: remove this:
-  DataSharingState.StackPtr[WID] = RootS->DataEnd;
-  // TODO: When the use of shared memory is enabled we will have to
-  // initialize this with the start of the Data region like so:
-  // DataSharingState.StackPtr[WID] = (void *)&RootS->Data[0];
+  DataSharingState.StackPtr[WID] = (void *)&RootS->Data[0];
   // We initialize the list of references to arguments here.
@@ -367,11 +358,6 @@
 // Called by: master, TODO: call by workers
 EXTERN void* __kmpc_data_sharing_push_stack(size_t DataSize,
     int16_t UseSharedMemory) {
-  // TODO: Add shared memory support. For now, use global memory only for
-  // storing the data sharing slots so ignore the pre-allocated
-  // shared memory slot.
-  // Use global memory for storing the stack.
   if (IsMasterThread()) {
     unsigned WID = getWarpId();

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D44486.138425.patch
Type: text/x-patch
Size: 1386 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20180314/5f3cf169/attachment.bin>

More information about the Openmp-commits mailing list