From 1a4c29fc5cd44faaceb0f105f397fc43698357b1 Mon Sep 17 00:00:00 2001 From: "Larsen, Steffen" Date: Mon, 17 Mar 2025 09:34:40 -0700 Subject: [PATCH] [UR][L0] Release parent of sub-buffer when sub-buffer dies This commit fixes an issue where the sub-buffer object in the L0 V1 adapter would not release its retained parent, causing leaks. Signed-off-by: Larsen, Steffen --- unified-runtime/source/adapters/level_zero/memory.cpp | 5 +++++ unified-runtime/source/adapters/level_zero/memory.hpp | 2 ++ 2 files changed, 7 insertions(+) diff --git a/unified-runtime/source/adapters/level_zero/memory.cpp b/unified-runtime/source/adapters/level_zero/memory.cpp index 925dd053ccaaa..a422f6b4bf6e3 100644 --- a/unified-runtime/source/adapters/level_zero/memory.cpp +++ b/unified-runtime/source/adapters/level_zero/memory.cpp @@ -2336,6 +2336,11 @@ _ur_buffer::_ur_buffer(ur_context_handle_t Context, size_t Size, LastDeviceWithValidAllocation = Device; } +_ur_buffer::~_ur_buffer() { + if (isSubBuffer()) + ur::level_zero::urMemRelease(SubBuffer->Parent); +} + ur_result_t ur_mem_handle_t_::getZeHandle(char *&ZeHandle, access_mode_t mode, ur_device_handle_t Device, const ur_event_handle_t *phWaitEvents, diff --git a/unified-runtime/source/adapters/level_zero/memory.hpp b/unified-runtime/source/adapters/level_zero/memory.hpp index cc1639d90ce80..18b848f071400 100644 --- a/unified-runtime/source/adapters/level_zero/memory.hpp +++ b/unified-runtime/source/adapters/level_zero/memory.hpp @@ -127,6 +127,8 @@ struct _ur_buffer final : ur_mem_handle_t_ { _ur_buffer(ur_context_handle_t Context, size_t Size, ur_device_handle_t Device, char *ZeMemHandle, bool OwnZeMemHandle); + ~_ur_buffer(); + // Returns a pointer to the USM allocation representing this PI buffer // on the specified Device. If Device is nullptr then the returned // USM allocation is on the device where this buffer was used the latest.