Skip to content

Commit c08ea6f

Browse files
committed
retain context in queue/command buffer
1 parent 2bcdd68 commit c08ea6f

File tree

4 files changed

+13
-14
lines changed

4 files changed

+13
-14
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,9 @@ ur_exp_command_buffer_handle_t_::ur_exp_command_buffer_handle_t_(
7474
isInOrder(desc ? desc->isInOrder : false),
7575
commandListManager(
7676
context, device,
77-
std::forward<v2::raii::command_list_unique_handle>(commandList))
78-
{}
77+
std::forward<v2::raii::command_list_unique_handle>(commandList)) {
78+
ur::level_zero::urContextRetain(context);
79+
}
7980

8081
ur_exp_command_buffer_sync_point_t
8182
ur_exp_command_buffer_handle_t_::getSyncPoint(ur_event_handle_t event) {
@@ -168,6 +169,7 @@ ur_exp_command_buffer_handle_t_::~ur_exp_command_buffer_handle_t_() {
168169
for (auto &event : syncPoints) {
169170
event->release();
170171
}
172+
ur::level_zero::urContextRelease(context);
171173
}
172174

173175
ur_result_t ur_exp_command_buffer_handle_t_::applyUpdateCommands(

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,7 @@ ur_command_list_manager::ur_command_list_manager(
2121
ur_context_handle_t context, ur_device_handle_t device,
2222
v2::raii::command_list_unique_handle &&commandList)
2323
: hContext(context), hDevice(device),
24-
zeCommandList(std::move(commandList)) {
25-
UR_CALL_THROWS(ur::level_zero::urContextRetain(context));
26-
UR_CALL_THROWS(ur::level_zero::urDeviceRetain(device));
27-
}
28-
29-
ur_command_list_manager::~ur_command_list_manager() {
30-
ur::level_zero::urContextRelease(hContext);
31-
ur::level_zero::urDeviceRelease(hDevice);
32-
}
24+
zeCommandList(std::move(commandList)) {}
3325

3426
ur_result_t ur_command_list_manager::appendGenericFillUnlocked(
3527
ur_mem_buffer_t *dst, size_t offset, size_t patternSize,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ struct ur_command_list_manager {
4747
operator=(const ur_command_list_manager &src) = delete;
4848
ur_command_list_manager &operator=(ur_command_list_manager &&src) = default;
4949

50-
~ur_command_list_manager();
50+
~ur_command_list_manager() = default;
5151

5252
ze_command_list_handle_t getZeCommandList();
5353

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
}

0 commit comments

Comments
 (0)