[PATCH] D53141: [OpenMP][libomptarget] Add runtime function for pushing coalesced global records

Alexey Bataev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 24 06:25:20 PDT 2018


ABataev added inline comments.


================
Comment at: libomptarget/deviceRTLs/nvptx/src/data_sharing.cu:389
   unsigned WID = getWarpId();
+  // void * volatile FramePointer = 0;
   void *&FrameP = DataSharingState.FramePtr[WID];
----------------
This must be removed


================
Comment at: libomptarget/deviceRTLs/nvptx/src/data_sharing.cu:438
+        // point to the start of the new frame held in StackP.
+        //atomicExch((unsigned long long *)&FrameP, (unsigned long long)StackP);
+        FrameP = StackP;
----------------
Also, must be removed


================
Comment at: libomptarget/deviceRTLs/nvptx/src/data_sharing.cu:444
+    }
+  } while (!FrameP);
 
----------------
It is a very bad idea to have something like this without atomic instructions.
Also, for writing, you need to use atomic instructions (+, possibly, `volatile` data type). Otherwise, it leads to undefined behavior and problems during optimization.


Repository:
  rOMP OpenMP

https://reviews.llvm.org/D53141





More information about the cfe-commits mailing list