[Openmp-commits] [PATCH] D104418: [OpenMP][Offloading] Fixed data race in libomptarget caused by async data movement
Ye Luo via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Tue Jan 4 20:12:02 PST 2022
ye-luo added inline comments.
================
Comment at: openmp/libomptarget/src/device.cpp:279
+
+ void *Event = Entry->getEvent();
+ bool NeedNewEvent = Event == nullptr;
----------------
One more question. Should the event only protect IsNew or both IsNew and HasFlagAlways? I feel in the case of HasFlagAlways not IsNew, it is user's responsible to handle the ordering of multiple transfers.
================
Comment at: openmp/libomptarget/src/device.cpp:311
+ if (Event) {
+ int Ret = waitEvent(Event, AsyncInfo);
+ Entry->unlock();
----------------
ye-luo wrote:
> ye-luo wrote:
> > After the first transfer, every look up calls waitEvent which is still costly.
> > It is better to return the even back to the pool and avoid waitEvent cost.
> I misunderstood waitEvent. It just enqueues the event to the stream. Need to find a better place to reduce the necessary waitEvent.
I think waitEvent can be bypassed if the present modifier is true.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D104418/new/
https://reviews.llvm.org/D104418
More information about the Openmp-commits
mailing list