diff --git a/unified-runtime/include/ur_api.h b/unified-runtime/include/ur_api.h index 38b6a73144e73..142b4c52ccb40 100644 --- a/unified-runtime/include/ur_api.h +++ b/unified-runtime/include/ur_api.h @@ -12502,7 +12502,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueTimestampRecordingExp( /// + `NULL == hContext` /// - ::UR_RESULT_ERROR_INVALID_CONTEXT /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER -/// + `NULL == pIPCMemHandleData` +/// + `NULL == ppIPCMemHandleData` /// + `NULL == pIPCMemHandleDataSizeRet` /// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES @@ -12512,7 +12512,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urIPCGetMemHandleExp( /// [in] pointer to device USM memory void *pMem, /// [out][optional] a pointer to the IPC memory handle data - void *pIPCMemHandleData, + void **ppIPCMemHandleData, /// [out][optional] size of the resulting IPC memory handle data size_t *pIPCMemHandleDataSizeRet); @@ -15715,7 +15715,7 @@ typedef struct ur_command_buffer_get_native_handle_exp_params_t { typedef struct ur_ipc_get_mem_handle_exp_params_t { ur_context_handle_t *phContext; void **ppMem; - void **ppIPCMemHandleData; + void ***pppIPCMemHandleData; size_t **ppIPCMemHandleDataSizeRet; } ur_ipc_get_mem_handle_exp_params_t; diff --git a/unified-runtime/include/ur_ddi.h b/unified-runtime/include/ur_ddi.h index 0cb139a2e93da..4702f04ead5ed 100644 --- a/unified-runtime/include/ur_ddi.h +++ b/unified-runtime/include/ur_ddi.h @@ -1796,7 +1796,7 @@ typedef ur_result_t(UR_APICALL *ur_pfnGetCommandBufferExpProcAddrTable_t)( /////////////////////////////////////////////////////////////////////////////// /// @brief Function-pointer for urIPCGetMemHandleExp typedef ur_result_t(UR_APICALL *ur_pfnIPCGetMemHandleExp_t)(ur_context_handle_t, - void *, void *, + void *, void **, size_t *); /////////////////////////////////////////////////////////////////////////////// diff --git a/unified-runtime/include/ur_print.hpp b/unified-runtime/include/ur_print.hpp index 23bb5bf89c654..878d5313f5b81 100644 --- a/unified-runtime/include/ur_print.hpp +++ b/unified-runtime/include/ur_print.hpp @@ -20544,9 +20544,9 @@ inline std::ostream &operator<<( os << *(params->ppMem); os << ", "; - os << ".pIPCMemHandleData = "; + os << ".ppIPCMemHandleData = "; - ur::details::printPtr(os, *(params->ppIPCMemHandleData)); + ur::details::printPtr(os, *(params->pppIPCMemHandleData)); os << ", "; os << ".pIPCMemHandleDataSizeRet = "; diff --git a/unified-runtime/scripts/core/exp-inter-process-communication.yml b/unified-runtime/scripts/core/exp-inter-process-communication.yml index 117e66d815ba9..f48a77b3aca62 100644 --- a/unified-runtime/scripts/core/exp-inter-process-communication.yml +++ b/unified-runtime/scripts/core/exp-inter-process-communication.yml @@ -36,8 +36,8 @@ params: - type: void * name: pMem desc: "[in] pointer to device USM memory" - - type: void* - name: pIPCMemHandleData + - type: void** + name: ppIPCMemHandleData desc: "[out][optional] a pointer to the IPC memory handle data" - type: size_t* name: pIPCMemHandleDataSizeRet @@ -47,7 +47,7 @@ returns: - $X_RESULT_ERROR_INVALID_NULL_HANDLE: - "`NULL == hContext`" - $X_RESULT_ERROR_INVALID_NULL_POINTER: - - "`NULL == pIPCMemHandleData`" + - "`NULL == ppIPCMemHandleData`" - "`NULL == pIPCMemHandleDataSizeRet`" - $X_RESULT_ERROR_OUT_OF_HOST_MEMORY - $X_RESULT_ERROR_OUT_OF_RESOURCES diff --git a/unified-runtime/source/adapters/cuda/memory.cpp b/unified-runtime/source/adapters/cuda/memory.cpp index 4477173cb83cc..6eb0c8e12ad3a 100644 --- a/unified-runtime/source/adapters/cuda/memory.cpp +++ b/unified-runtime/source/adapters/cuda/memory.cpp @@ -592,7 +592,7 @@ CUsurfObject SurfaceMem::getSurface(const ur_device_handle_t Device) { } UR_APIEXPORT ur_result_t UR_APICALL -urIPCGetMemHandleExp(ur_context_handle_t, void *pMem, void *pIPCMemHandleData, +urIPCGetMemHandleExp(ur_context_handle_t, void *pMem, void **ppIPCMemHandleData, size_t *pIPCMemHandleDataSizeRet) { umf_memory_pool_handle_t umfPool; auto urRet = umf::umf2urResult(umfPoolByPtr(pMem, &umfPool)); @@ -600,7 +600,7 @@ urIPCGetMemHandleExp(ur_context_handle_t, void *pMem, void *pIPCMemHandleData, return urRet; // Fast path for returning the size of the handle only. - if (!pIPCMemHandleData) + if (!ppIPCMemHandleData) return umf::umf2urResult( umfPoolGetIPCHandleSize(umfPool, pIPCMemHandleDataSizeRet)); @@ -608,12 +608,9 @@ urIPCGetMemHandleExp(ur_context_handle_t, void *pMem, void *pIPCMemHandleData, size_t *umfHandleSize = pIPCMemHandleDataSizeRet != nullptr ? pIPCMemHandleDataSizeRet : &fallbackUMFHandleSize; - umf_ipc_handle_t umfHandle; - urRet = umf::umf2urResult(umfGetIPCHandle(pMem, &umfHandle, umfHandleSize)); - if (urRet) - return urRet; - std::memcpy(pIPCMemHandleData, umfHandle, *umfHandleSize); - return UR_RESULT_SUCCESS; + return umf::umf2urResult(umfGetIPCHandle( + pMem, reinterpret_cast(ppIPCMemHandleData), + umfHandleSize)); } UR_APIEXPORT ur_result_t UR_APICALL diff --git a/unified-runtime/source/adapters/hip/memory.cpp b/unified-runtime/source/adapters/hip/memory.cpp index 4c646ed64a1e4..bec39baa474e1 100644 --- a/unified-runtime/source/adapters/hip/memory.cpp +++ b/unified-runtime/source/adapters/hip/memory.cpp @@ -642,7 +642,7 @@ hipSurfaceObject_t SurfaceMem::getSurface(const ur_device_handle_t Device) { } UR_APIEXPORT ur_result_t UR_APICALL urIPCGetMemHandleExp(ur_context_handle_t, - void *, void *, + void *, void **, size_t *) { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/adapters/level_zero/memory.cpp b/unified-runtime/source/adapters/level_zero/memory.cpp index 127629734bfaf..1a31be1e57595 100644 --- a/unified-runtime/source/adapters/level_zero/memory.cpp +++ b/unified-runtime/source/adapters/level_zero/memory.cpp @@ -1953,7 +1953,7 @@ ur_result_t urEnqueueWriteHostPipe( } ur_result_t urIPCGetMemHandleExp(ur_context_handle_t, void *pMem, - void *pIPCMemHandleData, + void **ppIPCMemHandleData, size_t *pIPCMemHandleDataSizeRet) { umf_memory_pool_handle_t umfPool; auto urRet = umf::umf2urResult(umfPoolByPtr(pMem, &umfPool)); @@ -1961,7 +1961,7 @@ ur_result_t urIPCGetMemHandleExp(ur_context_handle_t, void *pMem, return urRet; // Fast path for returning the size of the handle only. - if (!pIPCMemHandleData) + if (!ppIPCMemHandleData) return umf::umf2urResult( umfPoolGetIPCHandleSize(umfPool, pIPCMemHandleDataSizeRet)); @@ -1969,12 +1969,9 @@ ur_result_t urIPCGetMemHandleExp(ur_context_handle_t, void *pMem, size_t *umfHandleSize = pIPCMemHandleDataSizeRet != nullptr ? pIPCMemHandleDataSizeRet : &fallbackUMFHandleSize; - umf_ipc_handle_t umfHandle; - urRet = umf::umf2urResult(umfGetIPCHandle(pMem, &umfHandle, umfHandleSize)); - if (urRet) - return urRet; - std::memcpy(pIPCMemHandleData, umfHandle, *umfHandleSize); - return UR_RESULT_SUCCESS; + return umf::umf2urResult(umfGetIPCHandle( + pMem, reinterpret_cast(ppIPCMemHandleData), + umfHandleSize)); } ur_result_t urIPCPutMemHandleExp(ur_context_handle_t, void *pIPCMemHandleData) { diff --git a/unified-runtime/source/adapters/level_zero/ur_interface_loader.hpp b/unified-runtime/source/adapters/level_zero/ur_interface_loader.hpp index 160e0ea77f188..ca54e5489469c 100644 --- a/unified-runtime/source/adapters/level_zero/ur_interface_loader.hpp +++ b/unified-runtime/source/adapters/level_zero/ur_interface_loader.hpp @@ -775,7 +775,7 @@ ur_result_t urEnqueueTimestampRecordingExp( ur_queue_handle_t hQueue, bool blocking, uint32_t numEventsInWaitList, const ur_event_handle_t *phEventWaitList, ur_event_handle_t *phEvent); ur_result_t urIPCGetMemHandleExp(ur_context_handle_t hContext, void *pMem, - void *pIPCMemHandleData, + void **ppIPCMemHandleData, size_t *pIPCMemHandleDataSizeRet); ur_result_t urIPCPutMemHandleExp(ur_context_handle_t hContext, void *pIPCMemHandleData); diff --git a/unified-runtime/source/adapters/level_zero/v2/memory.cpp b/unified-runtime/source/adapters/level_zero/v2/memory.cpp index 941d73be8de3e..6473ebf69fdae 100644 --- a/unified-runtime/source/adapters/level_zero/v2/memory.cpp +++ b/unified-runtime/source/adapters/level_zero/v2/memory.cpp @@ -782,7 +782,7 @@ ur_result_t urMemImageGetInfo(ur_mem_handle_t /*hMemory*/, } ur_result_t urIPCGetMemHandleExp(ur_context_handle_t, void *pMem, - void *pIPCMemHandleData, + void **ppIPCMemHandleData, size_t *pIPCMemHandleDataSizeRet) { umf_memory_pool_handle_t umfPool; auto urRet = umf::umf2urResult(umfPoolByPtr(pMem, &umfPool)); @@ -790,7 +790,7 @@ ur_result_t urIPCGetMemHandleExp(ur_context_handle_t, void *pMem, return urRet; // Fast path for returning the size of the handle only. - if (!pIPCMemHandleData) + if (!ppIPCMemHandleData) return umf::umf2urResult( umfPoolGetIPCHandleSize(umfPool, pIPCMemHandleDataSizeRet)); @@ -798,12 +798,9 @@ ur_result_t urIPCGetMemHandleExp(ur_context_handle_t, void *pMem, size_t *umfHandleSize = pIPCMemHandleDataSizeRet != nullptr ? pIPCMemHandleDataSizeRet : &fallbackUMFHandleSize; - umf_ipc_handle_t umfHandle; - urRet = umf::umf2urResult(umfGetIPCHandle(pMem, &umfHandle, umfHandleSize)); - if (urRet) - return urRet; - std::memcpy(pIPCMemHandleData, umfHandle, *umfHandleSize); - return UR_RESULT_SUCCESS; + return umf::umf2urResult(umfGetIPCHandle( + pMem, reinterpret_cast(ppIPCMemHandleData), + umfHandleSize)); } ur_result_t urIPCPutMemHandleExp(ur_context_handle_t, void *pIPCMemHandleData) { diff --git a/unified-runtime/source/adapters/mock/ur_mockddi.cpp b/unified-runtime/source/adapters/mock/ur_mockddi.cpp index cbb5cbc26e1f6..6e0f7d96d3843 100644 --- a/unified-runtime/source/adapters/mock/ur_mockddi.cpp +++ b/unified-runtime/source/adapters/mock/ur_mockddi.cpp @@ -11405,13 +11405,13 @@ __urdlllocal ur_result_t UR_APICALL urIPCGetMemHandleExp( /// [in] pointer to device USM memory void *pMem, /// [out][optional] a pointer to the IPC memory handle data - void *pIPCMemHandleData, + void **ppIPCMemHandleData, /// [out][optional] size of the resulting IPC memory handle data size_t *pIPCMemHandleDataSizeRet) try { ur_result_t result = UR_RESULT_SUCCESS; ur_ipc_get_mem_handle_exp_params_t params = { - &hContext, &pMem, &pIPCMemHandleData, &pIPCMemHandleDataSizeRet}; + &hContext, &pMem, &ppIPCMemHandleData, &pIPCMemHandleDataSizeRet}; auto beforeCallback = reinterpret_cast( mock::getCallbacks().get_before_callback("urIPCGetMemHandleExp")); diff --git a/unified-runtime/source/adapters/native_cpu/memory.cpp b/unified-runtime/source/adapters/native_cpu/memory.cpp index 15eef80246e66..d38ca812d7676 100644 --- a/unified-runtime/source/adapters/native_cpu/memory.cpp +++ b/unified-runtime/source/adapters/native_cpu/memory.cpp @@ -140,7 +140,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urMemImageGetInfo( } UR_APIEXPORT ur_result_t UR_APICALL urIPCGetMemHandleExp(ur_context_handle_t, - void *, void *, + void *, void **, size_t *) { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/adapters/offload/memory.cpp b/unified-runtime/source/adapters/offload/memory.cpp index 2ec4c8e471547..f2c8d49004a11 100644 --- a/unified-runtime/source/adapters/offload/memory.cpp +++ b/unified-runtime/source/adapters/offload/memory.cpp @@ -209,7 +209,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urMemImageGetInfo(ur_mem_handle_t, } UR_APIEXPORT ur_result_t UR_APICALL urIPCGetMemHandleExp(ur_context_handle_t, - void *, void *, + void *, void **, size_t *) { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/adapters/opencl/memory.cpp b/unified-runtime/source/adapters/opencl/memory.cpp index cda15dfa4db81..394af5f441a85 100644 --- a/unified-runtime/source/adapters/opencl/memory.cpp +++ b/unified-runtime/source/adapters/opencl/memory.cpp @@ -581,7 +581,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urMemRelease(ur_mem_handle_t hMem) { } UR_APIEXPORT ur_result_t UR_APICALL urIPCGetMemHandleExp(ur_context_handle_t, - void *, void *, + void *, void **, size_t *) { return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; } diff --git a/unified-runtime/source/loader/layers/tracing/ur_trcddi.cpp b/unified-runtime/source/loader/layers/tracing/ur_trcddi.cpp index 917b853246975..6e0ce13570684 100644 --- a/unified-runtime/source/loader/layers/tracing/ur_trcddi.cpp +++ b/unified-runtime/source/loader/layers/tracing/ur_trcddi.cpp @@ -9659,7 +9659,7 @@ __urdlllocal ur_result_t UR_APICALL urIPCGetMemHandleExp( /// [in] pointer to device USM memory void *pMem, /// [out][optional] a pointer to the IPC memory handle data - void *pIPCMemHandleData, + void **ppIPCMemHandleData, /// [out][optional] size of the resulting IPC memory handle data size_t *pIPCMemHandleDataSizeRet) { auto pfnGetMemHandleExp = getContext()->urDdiTable.IPCExp.pfnGetMemHandleExp; @@ -9668,14 +9668,14 @@ __urdlllocal ur_result_t UR_APICALL urIPCGetMemHandleExp( return UR_RESULT_ERROR_UNSUPPORTED_FEATURE; ur_ipc_get_mem_handle_exp_params_t params = { - &hContext, &pMem, &pIPCMemHandleData, &pIPCMemHandleDataSizeRet}; + &hContext, &pMem, &ppIPCMemHandleData, &pIPCMemHandleDataSizeRet}; uint64_t instance = getContext()->notify_begin( UR_FUNCTION_IPC_GET_MEM_HANDLE_EXP, "urIPCGetMemHandleExp", ¶ms); auto &logger = getContext()->logger; UR_LOG_L(logger, INFO, " ---> urIPCGetMemHandleExp\n"); - ur_result_t result = pfnGetMemHandleExp(hContext, pMem, pIPCMemHandleData, + ur_result_t result = pfnGetMemHandleExp(hContext, pMem, ppIPCMemHandleData, pIPCMemHandleDataSizeRet); getContext()->notify_end(UR_FUNCTION_IPC_GET_MEM_HANDLE_EXP, diff --git a/unified-runtime/source/loader/layers/validation/ur_valddi.cpp b/unified-runtime/source/loader/layers/validation/ur_valddi.cpp index cda6c4849301d..d8ceff0228227 100644 --- a/unified-runtime/source/loader/layers/validation/ur_valddi.cpp +++ b/unified-runtime/source/loader/layers/validation/ur_valddi.cpp @@ -10414,7 +10414,7 @@ __urdlllocal ur_result_t UR_APICALL urIPCGetMemHandleExp( /// [in] pointer to device USM memory void *pMem, /// [out][optional] a pointer to the IPC memory handle data - void *pIPCMemHandleData, + void **ppIPCMemHandleData, /// [out][optional] size of the resulting IPC memory handle data size_t *pIPCMemHandleDataSizeRet) { auto pfnGetMemHandleExp = getContext()->urDdiTable.IPCExp.pfnGetMemHandleExp; @@ -10424,7 +10424,7 @@ __urdlllocal ur_result_t UR_APICALL urIPCGetMemHandleExp( } if (getContext()->enableParameterValidation) { - if (NULL == pIPCMemHandleData) + if (NULL == ppIPCMemHandleData) return UR_RESULT_ERROR_INVALID_NULL_POINTER; if (NULL == pIPCMemHandleDataSizeRet) @@ -10439,7 +10439,7 @@ __urdlllocal ur_result_t UR_APICALL urIPCGetMemHandleExp( URLOG_CTX_INVALID_REFERENCE(hContext); } - ur_result_t result = pfnGetMemHandleExp(hContext, pMem, pIPCMemHandleData, + ur_result_t result = pfnGetMemHandleExp(hContext, pMem, ppIPCMemHandleData, pIPCMemHandleDataSizeRet); return result; diff --git a/unified-runtime/source/loader/ur_ldrddi.cpp b/unified-runtime/source/loader/ur_ldrddi.cpp index e5fb500a0fcfb..b1a109a84bab5 100644 --- a/unified-runtime/source/loader/ur_ldrddi.cpp +++ b/unified-runtime/source/loader/ur_ldrddi.cpp @@ -5499,7 +5499,7 @@ __urdlllocal ur_result_t UR_APICALL urIPCGetMemHandleExp( /// [in] pointer to device USM memory void *pMem, /// [out][optional] a pointer to the IPC memory handle data - void *pIPCMemHandleData, + void **ppIPCMemHandleData, /// [out][optional] size of the resulting IPC memory handle data size_t *pIPCMemHandleDataSizeRet) { @@ -5510,7 +5510,7 @@ __urdlllocal ur_result_t UR_APICALL urIPCGetMemHandleExp( return UR_RESULT_ERROR_UNINITIALIZED; // forward to device-platform - return pfnGetMemHandleExp(hContext, pMem, pIPCMemHandleData, + return pfnGetMemHandleExp(hContext, pMem, ppIPCMemHandleData, pIPCMemHandleDataSizeRet); } diff --git a/unified-runtime/source/loader/ur_libapi.cpp b/unified-runtime/source/loader/ur_libapi.cpp index 210fcb3009805..2b649113c111d 100644 --- a/unified-runtime/source/loader/ur_libapi.cpp +++ b/unified-runtime/source/loader/ur_libapi.cpp @@ -10097,7 +10097,7 @@ ur_result_t UR_APICALL urEnqueueTimestampRecordingExp( /// + `NULL == hContext` /// - ::UR_RESULT_ERROR_INVALID_CONTEXT /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER -/// + `NULL == pIPCMemHandleData` +/// + `NULL == ppIPCMemHandleData` /// + `NULL == pIPCMemHandleDataSizeRet` /// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES @@ -10107,7 +10107,7 @@ ur_result_t UR_APICALL urIPCGetMemHandleExp( /// [in] pointer to device USM memory void *pMem, /// [out][optional] a pointer to the IPC memory handle data - void *pIPCMemHandleData, + void **ppIPCMemHandleData, /// [out][optional] size of the resulting IPC memory handle data size_t *pIPCMemHandleDataSizeRet) try { auto pfnGetMemHandleExp = @@ -10115,7 +10115,7 @@ ur_result_t UR_APICALL urIPCGetMemHandleExp( if (nullptr == pfnGetMemHandleExp) return UR_RESULT_ERROR_UNINITIALIZED; - return pfnGetMemHandleExp(hContext, pMem, pIPCMemHandleData, + return pfnGetMemHandleExp(hContext, pMem, ppIPCMemHandleData, pIPCMemHandleDataSizeRet); } catch (...) { return exceptionToResult(std::current_exception()); diff --git a/unified-runtime/source/ur_api.cpp b/unified-runtime/source/ur_api.cpp index fafc7e205b5cb..2c3b06c939da9 100644 --- a/unified-runtime/source/ur_api.cpp +++ b/unified-runtime/source/ur_api.cpp @@ -8793,7 +8793,7 @@ ur_result_t UR_APICALL urEnqueueTimestampRecordingExp( /// + `NULL == hContext` /// - ::UR_RESULT_ERROR_INVALID_CONTEXT /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER -/// + `NULL == pIPCMemHandleData` +/// + `NULL == ppIPCMemHandleData` /// + `NULL == pIPCMemHandleDataSizeRet` /// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES @@ -8803,7 +8803,7 @@ ur_result_t UR_APICALL urIPCGetMemHandleExp( /// [in] pointer to device USM memory void *pMem, /// [out][optional] a pointer to the IPC memory handle data - void *pIPCMemHandleData, + void **ppIPCMemHandleData, /// [out][optional] size of the resulting IPC memory handle data size_t *pIPCMemHandleDataSizeRet) { ur_result_t result = UR_RESULT_SUCCESS;