Skip to content

Commit 9830842

Browse files
authored
[UR][L0v2] Restrict events reset during command buffer enqueue (#18990)
1 parent 3f8172e commit 9830842

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

unified-runtime/source/adapters/level_zero/v2/command_buffer.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ ur_exp_command_buffer_handle_t_::getSyncPoint(ur_event_handle_t event) {
8484
throw UR_RESULT_ERROR_OUT_OF_RESOURCES;
8585
}
8686
syncPoints.push_back(event);
87+
usedSyncPoints.push_back(false);
8788
return static_cast<ur_exp_command_buffer_sync_point_t>(syncPoints.size() - 1);
8889
}
8990

@@ -99,6 +100,7 @@ ur_event_handle_t *ur_exp_command_buffer_handle_t_::getWaitListFromSyncPoints(
99100
UR_LOG(ERR, "Invalid sync point");
100101
throw UR_RESULT_ERROR_INVALID_VALUE;
101102
}
103+
usedSyncPoints[pSyncPointWaitList[i]] = true;
102104
syncPointWaitList[i] = syncPoints[pSyncPointWaitList[i]];
103105
}
104106
return syncPointWaitList.data();
@@ -132,9 +134,13 @@ ur_result_t ur_exp_command_buffer_handle_t_::finalizeCommandBuffer() {
132134
if (!isInOrder) {
133135
ZE2UR_CALL(zeCommandListAppendBarrier,
134136
(commandListLocked->getZeCommandList(), nullptr, 0, nullptr));
135-
for (auto &event : syncPoints) {
136-
ZE2UR_CALL(zeCommandListAppendEventReset,
137-
(commandListLocked->getZeCommandList(), event->getZeEvent()));
137+
for (size_t i = 0; i < usedSyncPoints.size(); ++i) {
138+
if (!usedSyncPoints[i]) {
139+
continue;
140+
}
141+
ZE2UR_CALL(
142+
zeCommandListAppendEventReset,
143+
(commandListLocked->getZeCommandList(), syncPoints[i]->getZeEvent()));
138144
}
139145
ZE2UR_CALL(zeCommandListAppendBarrier,
140146
(commandListLocked->getZeCommandList(), nullptr, 0, nullptr));

unified-runtime/source/adapters/level_zero/v2/command_buffer.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ struct ur_exp_command_buffer_handle_t_ : public ur_object {
6666
// Stores all sync points that are created by the command buffer.
6767
std::vector<ur_event_handle_t> syncPoints;
6868

69+
// Stores all sync points that should be reset after execution.
70+
std::vector<bool> usedSyncPoints;
71+
6972
// Temporary storage for sync points that are passed to function that require
7073
// array of events. This is used to avoid allocating a new memory every time.
7174
std::vector<ur_event_handle_t> syncPointWaitList;

0 commit comments

Comments
 (0)