Skip to content

Commit ebc5c20

Browse files
cleanup only for internal events
Signed-off-by: Zhang, Winston <[email protected]>
1 parent 7f488b8 commit ebc5c20

File tree

5 files changed

+39
-31
lines changed

5 files changed

+39
-31
lines changed

unified-runtime/source/adapters/level_zero/context.cpp

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ ur_result_t ur_context_handle_t_::getFreeSlotInExistingOrNewPool(
406406
ze_event_pool_handle_t &Pool, size_t &Index, bool HostVisible,
407407
bool ProfilingEnabled, ur_device_handle_t Device,
408408
bool CounterBasedEventEnabled, bool UsingImmCmdList,
409-
bool InterruptBasedEventEnabled, ur_queue_handle_t Queue) {
409+
bool InterruptBasedEventEnabled, ur_queue_handle_t Queue, bool IsInternal) {
410410

411411
ze_device_handle_t ZeDevice = nullptr;
412412
if (Device) {
@@ -464,17 +464,19 @@ ur_result_t ur_context_handle_t_::getFreeSlotInExistingOrNewPool(
464464
ze_result_t Result = ZE_CALL_NOCHECK(
465465
zeEventPoolCreate,
466466
(ZeContext, &ZeEventPoolDesc, ZeDevices.size(), &ZeDevices[0], &Pool));
467-
if (ze2urResult(Result) == UR_RESULT_ERROR_OUT_OF_RESOURCES && Queue &&
468-
!Queue->isInOrderQueue()) {
469-
if (Queue->UsingImmCmdLists) {
470-
UR_CALL(CleanupEventsInImmCmdLists(Queue, true /*QueueLocked*/,
471-
false /*QueueSynced*/,
472-
nullptr /*CompletedEvent*/));
473-
} else {
474-
UR_CALL(resetCommandLists(Queue));
467+
if (IsInternal && ze2urResult(Result) == UR_RESULT_ERROR_OUT_OF_RESOURCES &&
468+
Queue) {
469+
if (!Queue->isInOrderQueue()) {
470+
if (Queue->UsingImmCmdLists) {
471+
UR_CALL(CleanupEventsInImmCmdLists(Queue, true /*QueueLocked*/,
472+
false /*QueueSynced*/,
473+
nullptr /*CompletedEvent*/));
474+
} else {
475+
UR_CALL(resetCommandLists(Queue));
476+
}
477+
ZE2UR_CALL(zeEventPoolCreate, (ZeContext, &ZeEventPoolDesc,
478+
ZeDevices.size(), &ZeDevices[0], &Pool));
475479
}
476-
ZE2UR_CALL(zeEventPoolCreate, (ZeContext, &ZeEventPoolDesc,
477-
ZeDevices.size(), &ZeDevices[0], &Pool));
478480
} else if (ze2urResult(Result) != UR_RESULT_SUCCESS) {
479481
return ze2urResult(Result);
480482
}
@@ -564,17 +566,19 @@ ur_result_t ur_context_handle_t_::getFreeSlotInExistingOrNewPool(
564566
ze_result_t Result = ZE_CALL_NOCHECK(
565567
zeEventPoolCreate,
566568
(ZeContext, &ZeEventPoolDesc, ZeDevices.size(), &ZeDevices[0], &Pool));
567-
if (ze2urResult(Result) == UR_RESULT_ERROR_OUT_OF_RESOURCES && Queue &&
568-
!Queue->isInOrderQueue()) {
569-
if (Queue->UsingImmCmdLists) {
570-
UR_CALL(CleanupEventsInImmCmdLists(Queue, true /*QueueLocked*/,
571-
false /*QueueSynced*/,
572-
nullptr /*CompletedEvent*/));
573-
} else {
574-
UR_CALL(resetCommandLists(Queue));
569+
if (IsInternal && ze2urResult(Result) == UR_RESULT_ERROR_OUT_OF_RESOURCES &&
570+
Queue) {
571+
if (!Queue->isInOrderQueue()) {
572+
if (Queue->UsingImmCmdLists) {
573+
UR_CALL(CleanupEventsInImmCmdLists(Queue, true /*QueueLocked*/,
574+
false /*QueueSynced*/,
575+
nullptr /*CompletedEvent*/));
576+
} else {
577+
UR_CALL(resetCommandLists(Queue));
578+
}
579+
ZE2UR_CALL(zeEventPoolCreate, (ZeContext, &ZeEventPoolDesc,
580+
ZeDevices.size(), &ZeDevices[0], &Pool));
575581
}
576-
ZE2UR_CALL(zeEventPoolCreate, (ZeContext, &ZeEventPoolDesc,
577-
ZeDevices.size(), &ZeDevices[0], &Pool));
578582
} else if (ze2urResult(Result) != UR_RESULT_SUCCESS) {
579583
return ze2urResult(Result);
580584
}

unified-runtime/source/adapters/level_zero/context.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@ struct ur_context_handle_t_ : ur_object {
206206
ze_event_pool_handle_t &, size_t &, bool HostVisible,
207207
bool ProfilingEnabled, ur_device_handle_t Device,
208208
bool CounterBasedEventEnabled, bool UsingImmCmdList,
209-
bool InterruptBasedEventEnabled, ur_queue_handle_t Queue);
209+
bool InterruptBasedEventEnabled, ur_queue_handle_t Queue,
210+
bool IsInternal);
210211

211212
// Get ur_event_handle_t from cache.
212213
ur_event_handle_t getEventFromContextCache(bool HostVisible,

unified-runtime/source/adapters/level_zero/event.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1349,16 +1349,18 @@ ur_result_t CleanupCompletedEvent(ur_event_handle_t Event, bool QueueLocked,
13491349
// The "HostVisible" argument specifies if event needs to be allocated from
13501350
// a host-visible pool.
13511351
//
1352-
ur_result_t EventCreate(ur_context_handle_t Context, ur_queue_handle_t Queue,
1353-
bool IsMultiDevice, bool HostVisible,
1354-
ur_event_handle_t *RetEvent,
1355-
bool CounterBasedEventEnabled,
1356-
bool ForceDisableProfiling,
1357-
bool InterruptBasedEventEnabled) {
1352+
ur_result_t
1353+
EventCreate(ur_context_handle_t Context, ur_queue_handle_t Queue,
1354+
bool IsMultiDevice, bool HostVisible, ur_event_handle_t *RetEvent,
1355+
bool CounterBasedEventEnabled, bool ForceDisableProfiling,
1356+
bool InterruptBasedEventEnabled, std::optional<bool> IsInternal) {
13581357
bool ProfilingEnabled =
13591358
ForceDisableProfiling ? false : (!Queue || Queue->isProfilingEnabled());
13601359
bool UsingImmediateCommandlists = !Queue || Queue->UsingImmCmdLists;
13611360

1361+
// Handle optional IsInternal parameter - default to false if not provided
1362+
bool isInternalValue = IsInternal.value_or(false);
1363+
13621364
ur_device_handle_t Device = nullptr;
13631365

13641366
if (!IsMultiDevice && Queue) {
@@ -1380,7 +1382,7 @@ ur_result_t EventCreate(ur_context_handle_t Context, ur_queue_handle_t Queue,
13801382
if (auto Res = Context->getFreeSlotInExistingOrNewPool(
13811383
ZeEventPool, Index, HostVisible, ProfilingEnabled, Device,
13821384
CounterBasedEventEnabled, UsingImmediateCommandlists,
1383-
InterruptBasedEventEnabled, Queue))
1385+
InterruptBasedEventEnabled, Queue, isInternalValue))
13841386
return Res;
13851387

13861388
ZeStruct<ze_event_desc_t> ZeEventDesc;

unified-runtime/source/adapters/level_zero/event.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ ur_result_t EventCreate(ur_context_handle_t Context, ur_queue_handle_t Queue,
3737
ur_event_handle_t *RetEvent,
3838
bool CounterBasedEventEnabled,
3939
bool ForceDisableProfiling,
40-
bool InterruptBasedEventEnabled);
40+
bool InterruptBasedEventEnabled,
41+
std::optional<bool> IsInternal = std::nullopt);
4142
} // extern "C"
4243

4344
// This is an experimental option that allows to disable caching of events in

unified-runtime/source/adapters/level_zero/queue.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1904,7 +1904,7 @@ ur_result_t createEventAndAssociateQueue(ur_queue_handle_t Queue,
19041904
UR_CALL(EventCreate(
19051905
Queue->Context, Queue, IsMultiDevice, HostVisible.value(), Event,
19061906
Queue->CounterBasedEventsEnabled, false /*ForceDisableProfiling*/,
1907-
Queue->InterruptBasedEventsEnabled));
1907+
Queue->InterruptBasedEventsEnabled, IsInternal));
19081908

19091909
(*Event)->UrQueue = Queue;
19101910
(*Event)->CommandType = CommandType;

0 commit comments

Comments
 (0)