Skip to content

Commit e296958

Browse files
committed
retain context in queue/command buffer
1 parent 711419c commit e296958

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ ur_exp_command_buffer_handle_t_::ur_exp_command_buffer_handle_t_(
113113
isInOrder(desc ? desc->isInOrder : false),
114114
commandListManager(
115115
context, device,
116-
std::forward<v2::raii::command_list_unique_handle>(commandList)) {}
116+
std::forward<v2::raii::command_list_unique_handle>(commandList)) {
117+
ur::level_zero::urContextRetain(context);
118+
}
117119

118120
ur_exp_command_buffer_sync_point_t
119121
ur_exp_command_buffer_handle_t_::getSyncPoint(ur_event_handle_t event) {
@@ -197,6 +199,7 @@ ur_exp_command_buffer_handle_t_::~ur_exp_command_buffer_handle_t_() {
197199
for (auto &event : syncPoints) {
198200
event->release();
199201
}
202+
ur::level_zero::urContextRelease(context);
200203
}
201204

202205
ur_result_t ur_exp_command_buffer_handle_t_::applyUpdateCommands(

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ ur_queue_immediate_in_order_t::ur_queue_immediate_in_order_t(
3636
hDevice->ZeDevice,
3737
{true, ordinal, true /* always enable copy offload */},
3838
ZE_COMMAND_QUEUE_MODE_ASYNCHRONOUS, priority, index)),
39-
flags(flags) {}
39+
flags(flags) {
40+
ur::level_zero::urContextRetain(hContext);
41+
}
4042

4143
ur_queue_immediate_in_order_t::ur_queue_immediate_in_order_t(
4244
ur_context_handle_t hContext, ur_device_handle_t hDevice,
@@ -46,7 +48,9 @@ ur_queue_immediate_in_order_t::ur_queue_immediate_in_order_t(
4648
eventPool(hContext->getEventPoolCache(PoolCacheType::Immediate)
4749
.borrow(hDevice->Id.value(), eventFlags)),
4850
commandListManager(hContext, hDevice, std::move(commandListHandle)),
49-
flags(flags) {}
51+
flags(flags) {
52+
ur::level_zero::urContextRetain(hContext);
53+
}
5054

5155
ur_result_t
5256
ur_queue_immediate_in_order_t::queueGetInfo(ur_queue_info_t propName,
@@ -122,6 +126,7 @@ ur_result_t ur_queue_immediate_in_order_t::queueFlush() {
122126
ur_queue_immediate_in_order_t::~ur_queue_immediate_in_order_t() {
123127
try {
124128
UR_CALL_THROWS(queueFinish());
129+
ur::level_zero::urContextRelease(hContext);
125130
} catch (...) {
126131
// Ignore errors during destruction
127132
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ ur_queue_immediate_out_of_order_t::ur_queue_immediate_out_of_order_t(
4141
for (size_t i = 0; i < numCommandLists; i++) {
4242
barrierEvents[i] = eventPool->allocate();
4343
}
44+
45+
ur::level_zero::urContextRetain(hContext);
4446
}
4547

4648
ur_result_t ur_queue_immediate_out_of_order_t::queueGetInfo(
@@ -132,6 +134,8 @@ ur_queue_immediate_out_of_order_t::~ur_queue_immediate_out_of_order_t() {
132134
for (size_t i = 0; i < numCommandLists; i++) {
133135
barrierEvents[i]->release();
134136
}
137+
138+
ur::level_zero::urContextRelease(hContext);
135139
} catch (...) {
136140
// Ignore errors during destruction
137141
}

0 commit comments

Comments
 (0)