Skip to content

Commit a4b8002

Browse files
committed
[SYCL] Optimize getUrEvents
- avoid increasing reference counter of a shared_ptr by retrieving a handle directly - reserve memory for the whole vector of handles beforehand, avoiding possible reallocations
1 parent 82994de commit a4b8002

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

sycl/source/detail/queue_impl.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,11 @@ class NestedCallsTracker {
5151
static std::vector<ur_event_handle_t>
5252
getUrEvents(const std::vector<sycl::event> &DepEvents) {
5353
std::vector<ur_event_handle_t> RetUrEvents;
54+
RetUrEvents.reserve(DepEvents.size());
5455
for (const sycl::event &Event : DepEvents) {
55-
event_impl &EventImpl = *detail::getSyclObjImpl(Event);
56-
auto Handle = EventImpl.getHandle();
56+
// Get raw pointer without atomic reference counting overhead
57+
const event_impl *EventImplPtr = detail::getSyclObjImpl(Event).get();
58+
auto Handle = EventImplPtr->getHandle();
5759
if (Handle != nullptr)
5860
RetUrEvents.push_back(Handle);
5961
}

0 commit comments

Comments
 (0)