Skip to content

Commit 2612673

Browse files
committed
[SYCL] only register streamServiceEvents for OOO queue
in-order queue already trackes them through LastEvent
1 parent c93ca60 commit 2612673

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

sycl/source/detail/queue_impl.cpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,10 @@ event queue_impl::submit_impl(const detail::type_erased_cgfo_ty &CGF,
406406
submit_impl(CGF, Self, SecondaryQueue, /*CallerNeedsEvent*/ true, Loc,
407407
IsTopCodeLoc, {});
408408
EventImpl->attachEventToCompleteWeak(detail::getSyclObjImpl(FlushEvent));
409-
registerStreamServiceEvent(detail::getSyclObjImpl(FlushEvent));
409+
if (!isInOrder()) {
410+
// For in-order queue, the dependencies will be tracked by LastEvent
411+
registerStreamServiceEvent(detail::getSyclObjImpl(FlushEvent));
412+
}
410413
}
411414

412415
return Event;
@@ -670,13 +673,15 @@ void queue_impl::wait(const detail::code_location &CodeLoc) {
670673
const AdapterPtr &Adapter = getAdapter();
671674
Adapter->call<UrApiKind::urQueueFinish>(getHandleRef());
672675

673-
std::vector<EventImplPtr> StreamsServiceEvents;
674-
{
675-
std::lock_guard<std::mutex> Lock(MStreamsServiceEventsMutex);
676-
StreamsServiceEvents.swap(MStreamsServiceEvents);
676+
if (!isInOrder() || !MNoEventMode.load(std::memory_order_relaxed)) {
677+
std::vector<EventImplPtr> StreamsServiceEvents;
678+
{
679+
std::lock_guard<std::mutex> Lock(MStreamsServiceEventsMutex);
680+
StreamsServiceEvents.swap(MStreamsServiceEvents);
681+
}
682+
for (const EventImplPtr &Event : StreamsServiceEvents)
683+
Event->wait(Event);
677684
}
678-
for (const EventImplPtr &Event : StreamsServiceEvents)
679-
Event->wait(Event);
680685

681686
#ifdef XPTI_ENABLE_INSTRUMENTATION
682687
if (xptiEnabled) {

0 commit comments

Comments
 (0)