From fc5e149f304cadb4009b334fb7e58e48bcdd2044 Mon Sep 17 00:00:00 2001 From: "Mateusz P. Nowak" Date: Wed, 4 Jun 2025 11:33:16 +0200 Subject: [PATCH 1/3] Logs enabled for raii wrappers (#18756) Handle wrappers in v2::raii ensure the proper destruction of handled objects. However, the destroy functions were not logged correctly, which misled the leak detector. Signed-off-by: Mateusz P. Nowak --- source/adapters/level_zero/v2/common.hpp | 34 +++++++++++------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/source/adapters/level_zero/v2/common.hpp b/source/adapters/level_zero/v2/common.hpp index fc3dcd93ca..c54f7159c9 100644 --- a/source/adapters/level_zero/v2/common.hpp +++ b/source/adapters/level_zero/v2/common.hpp @@ -19,7 +19,8 @@ namespace v2 { namespace raii { -template +template struct ze_handle_wrapper { ze_handle_wrapper(bool ownZeHandle = true) : handle(nullptr), ownZeHandle(ownZeHandle) {} @@ -64,7 +65,8 @@ struct ze_handle_wrapper { } if (ownZeHandle && checkL0LoaderTeardown()) { - auto zeResult = destroy(handle); + ze_result_t zeResult = + ZE_CALL_NOCHECK_NAME(destroy, (handle), destroyName); // Gracefully handle the case that L0 was already unloaded. if (zeResult && (zeResult != ZE_RESULT_ERROR_UNINITIALIZED && zeResult != ZE_RESULT_ERROR_UNKNOWN)) @@ -92,23 +94,17 @@ struct ze_handle_wrapper { bool ownZeHandle; }; -using ze_kernel_handle_t = - ze_handle_wrapper<::ze_kernel_handle_t, zeKernelDestroy>; - -using ze_event_handle_t = - ze_handle_wrapper<::ze_event_handle_t, zeEventDestroy>; - -using ze_event_pool_handle_t = - ze_handle_wrapper<::ze_event_pool_handle_t, zeEventPoolDestroy>; - -using ze_context_handle_t = - ze_handle_wrapper<::ze_context_handle_t, zeContextDestroy>; - -using ze_command_list_handle_t = - ze_handle_wrapper<::ze_command_list_handle_t, zeCommandListDestroy>; - -using ze_image_handle_t = - ze_handle_wrapper<::ze_image_handle_t, zeImageDestroy>; +#define HANDLE_WRAPPER_TYPE(ZeHandleT, DestroyFunc) \ + inline constexpr char ZeHandleT##_destroyName[] = #DestroyFunc; \ + using ZeHandleT = \ + ze_handle_wrapper<::ZeHandleT, DestroyFunc, ZeHandleT##_destroyName>; + +HANDLE_WRAPPER_TYPE(ze_kernel_handle_t, zeKernelDestroy) +HANDLE_WRAPPER_TYPE(ze_event_handle_t, zeEventDestroy) +HANDLE_WRAPPER_TYPE(ze_event_pool_handle_t, zeEventPoolDestroy) +HANDLE_WRAPPER_TYPE(ze_context_handle_t, zeContextDestroy) +HANDLE_WRAPPER_TYPE(ze_command_list_handle_t, zeCommandListDestroy) +HANDLE_WRAPPER_TYPE(ze_image_handle_t, zeImageDestroy) } // namespace raii } // namespace v2 From 52a6b84777403ade0b603b15346f9729d966ea9f Mon Sep 17 00:00:00 2001 From: Ross Brunton Date: Wed, 4 Jun 2025 11:17:15 +0100 Subject: [PATCH 2/3] Implement logger callbacks (#18755) --- source/adapters/offload/adapter.cpp | 17 +++++++++++++++++ source/adapters/offload/ur_interface_loader.cpp | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/source/adapters/offload/adapter.cpp b/source/adapters/offload/adapter.cpp index 41fc4f5b44..6eb9cd7239 100644 --- a/source/adapters/offload/adapter.cpp +++ b/source/adapters/offload/adapter.cpp @@ -117,3 +117,20 @@ UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetLastError(ur_adapter_handle_t, // "ADAPTER_SPECIFIC", which we never do return UR_RESULT_SUCCESS; } + +UR_APIEXPORT ur_result_t UR_APICALL urAdapterSetLoggerCallback( + ur_adapter_handle_t, ur_logger_callback_t pfnLoggerCallback, + void *pUserData, ur_logger_level_t level = UR_LOGGER_LEVEL_QUIET) { + + Adapter.Logger.setCallbackSink(pfnLoggerCallback, pUserData, level); + + return UR_RESULT_SUCCESS; +} + +UR_APIEXPORT ur_result_t UR_APICALL +urAdapterSetLoggerCallbackLevel(ur_adapter_handle_t, ur_logger_level_t level) { + + Adapter.Logger.setCallbackLevel(level); + + return UR_RESULT_SUCCESS; +} diff --git a/source/adapters/offload/ur_interface_loader.cpp b/source/adapters/offload/ur_interface_loader.cpp index c64dbfec06..87c7b67800 100644 --- a/source/adapters/offload/ur_interface_loader.cpp +++ b/source/adapters/offload/ur_interface_loader.cpp @@ -207,8 +207,8 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetAdapterProcAddrTable( pDdiTable->pfnRelease = urAdapterRelease; pDdiTable->pfnRetain = urAdapterRetain; pDdiTable->pfnGetLastError = urAdapterGetLastError; - pDdiTable->pfnSetLoggerCallback = nullptr; - pDdiTable->pfnSetLoggerCallbackLevel = nullptr; + pDdiTable->pfnSetLoggerCallback = urAdapterSetLoggerCallback; + pDdiTable->pfnSetLoggerCallbackLevel = urAdapterSetLoggerCallbackLevel; return UR_RESULT_SUCCESS; } From fe6a02dcafd6c630324e89a29d36468d55e43a6d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 5 Jun 2025 00:41:23 +0000 Subject: [PATCH 3/3] Update intel/llvm mirror base commit to 093fcb0d --- .github/intel-llvm-mirror-base-commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/intel-llvm-mirror-base-commit b/.github/intel-llvm-mirror-base-commit index c704e24c48..c5fb88b0da 100644 --- a/.github/intel-llvm-mirror-base-commit +++ b/.github/intel-llvm-mirror-base-commit @@ -1 +1 @@ -571454167c03e22a43cba257d7937b188a681de6 +093fcb0d5171566ff5218962b841256412a329a8