diff --git a/unified-runtime/include/ur_api.h b/unified-runtime/include/ur_api.h index a65393fe0e155..dcf05b2b066c7 100644 --- a/unified-runtime/include/ur_api.h +++ b/unified-runtime/include/ur_api.h @@ -9233,6 +9233,9 @@ typedef struct ur_usm_pool_buffer_desc_t { /// + `NULL == ppMem` /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMDeviceAllocExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, @@ -9271,6 +9274,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMDeviceAllocExp( /// + `NULL == ppMem` /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMSharedAllocExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, @@ -9310,6 +9316,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMSharedAllocExp( /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMHostAllocExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, @@ -9346,6 +9355,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMHostAllocExp( /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMFreeExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, diff --git a/unified-runtime/scripts/core/exp-async-alloc.yml b/unified-runtime/scripts/core/exp-async-alloc.yml index 08887d060e53a..47f759dcdd79c 100644 --- a/unified-runtime/scripts/core/exp-async-alloc.yml +++ b/unified-runtime/scripts/core/exp-async-alloc.yml @@ -173,7 +173,10 @@ returns: - $X_RESULT_ERROR_OUT_OF_RESOURCES - $X_RESULT_ERROR_INVALID_NULL_HANDLE - $X_RESULT_ERROR_INVALID_NULL_POINTER - - $X_RESULT_ERROR_INVALID_EVENT_WAIT_LIST + - $X_RESULT_ERROR_INVALID_EVENT_WAIT_LIST: + - "`phEventWaitList == NULL && numEventsInWaitList > 0`" + - "`phEventWaitList != NULL && numEventsInWaitList == 0`" + - "If event objects in phEventWaitList are not valid events." --- #-------------------------------------------------------------------------- type: function @@ -211,7 +214,10 @@ returns: - $X_RESULT_ERROR_OUT_OF_RESOURCES - $X_RESULT_ERROR_INVALID_NULL_HANDLE - $X_RESULT_ERROR_INVALID_NULL_POINTER - - $X_RESULT_ERROR_INVALID_EVENT_WAIT_LIST + - $X_RESULT_ERROR_INVALID_EVENT_WAIT_LIST: + - "`phEventWaitList == NULL && numEventsInWaitList > 0`" + - "`phEventWaitList != NULL && numEventsInWaitList == 0`" + - "If event objects in phEventWaitList are not valid events." --- #-------------------------------------------------------------------------- type: function @@ -250,7 +256,10 @@ returns: - $X_RESULT_ERROR_OUT_OF_HOST_MEMORY - $X_RESULT_ERROR_INVALID_NULL_HANDLE - $X_RESULT_ERROR_INVALID_NULL_POINTER - - $X_RESULT_ERROR_INVALID_EVENT_WAIT_LIST + - $X_RESULT_ERROR_INVALID_EVENT_WAIT_LIST: + - "`phEventWaitList == NULL && numEventsInWaitList > 0`" + - "`phEventWaitList != NULL && numEventsInWaitList == 0`" + - "If event objects in phEventWaitList are not valid events." --- #-------------------------------------------------------------------------- type: function @@ -283,7 +292,10 @@ returns: - $X_RESULT_ERROR_OUT_OF_HOST_MEMORY - $X_RESULT_ERROR_INVALID_NULL_HANDLE - $X_RESULT_ERROR_INVALID_NULL_POINTER - - $X_RESULT_ERROR_INVALID_EVENT_WAIT_LIST + - $X_RESULT_ERROR_INVALID_EVENT_WAIT_LIST: + - "`phEventWaitList == NULL && numEventsInWaitList > 0`" + - "`phEventWaitList != NULL && numEventsInWaitList == 0`" + - "If event objects in phEventWaitList are not valid events." --- #-------------------------------------------------------------------------- type: function diff --git a/unified-runtime/source/loader/layers/validation/ur_valddi.cpp b/unified-runtime/source/loader/layers/validation/ur_valddi.cpp index 87023c800e234..bb4f35e269613 100644 --- a/unified-runtime/source/loader/layers/validation/ur_valddi.cpp +++ b/unified-runtime/source/loader/layers/validation/ur_valddi.cpp @@ -6804,6 +6804,12 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueUSMDeviceAllocExp( UR_EXP_ASYNC_USM_ALLOC_FLAGS_MASK & pProperties->flags) return UR_RESULT_ERROR_INVALID_ENUMERATION; + if (phEventWaitList == NULL && numEventsInWaitList > 0) + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + + if (phEventWaitList != NULL && numEventsInWaitList == 0) + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + if (phEventWaitList != NULL && numEventsInWaitList > 0) { for (uint32_t i = 0; i < numEventsInWaitList; ++i) { if (phEventWaitList[i] == NULL) { @@ -6875,6 +6881,12 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueUSMSharedAllocExp( UR_EXP_ASYNC_USM_ALLOC_FLAGS_MASK & pProperties->flags) return UR_RESULT_ERROR_INVALID_ENUMERATION; + if (phEventWaitList == NULL && numEventsInWaitList > 0) + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + + if (phEventWaitList != NULL && numEventsInWaitList == 0) + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + if (phEventWaitList != NULL && numEventsInWaitList > 0) { for (uint32_t i = 0; i < numEventsInWaitList; ++i) { if (phEventWaitList[i] == NULL) { @@ -6946,6 +6958,12 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueUSMHostAllocExp( UR_EXP_ASYNC_USM_ALLOC_FLAGS_MASK & pProperties->flags) return UR_RESULT_ERROR_INVALID_ENUMERATION; + if (phEventWaitList == NULL && numEventsInWaitList > 0) + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + + if (phEventWaitList != NULL && numEventsInWaitList == 0) + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + if (phEventWaitList != NULL && numEventsInWaitList > 0) { for (uint32_t i = 0; i < numEventsInWaitList; ++i) { if (phEventWaitList[i] == NULL) { @@ -7008,6 +7026,12 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueUSMFreeExp( if (NULL == hQueue) return UR_RESULT_ERROR_INVALID_NULL_HANDLE; + if (phEventWaitList == NULL && numEventsInWaitList > 0) + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + + if (phEventWaitList != NULL && numEventsInWaitList == 0) + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + if (phEventWaitList != NULL && numEventsInWaitList > 0) { for (uint32_t i = 0; i < numEventsInWaitList; ++i) { if (phEventWaitList[i] == NULL) { diff --git a/unified-runtime/source/loader/ur_libapi.cpp b/unified-runtime/source/loader/ur_libapi.cpp index bd02b6fa90222..41d52b781fdf5 100644 --- a/unified-runtime/source/loader/ur_libapi.cpp +++ b/unified-runtime/source/loader/ur_libapi.cpp @@ -6790,6 +6790,9 @@ ur_result_t UR_APICALL urEnqueueWriteHostPipe( /// + `NULL == ppMem` /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. ur_result_t UR_APICALL urEnqueueUSMDeviceAllocExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, @@ -6839,6 +6842,9 @@ ur_result_t UR_APICALL urEnqueueUSMDeviceAllocExp( /// + `NULL == ppMem` /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. ur_result_t UR_APICALL urEnqueueUSMSharedAllocExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, @@ -6889,6 +6895,9 @@ ur_result_t UR_APICALL urEnqueueUSMSharedAllocExp( /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. ur_result_t UR_APICALL urEnqueueUSMHostAllocExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, @@ -6936,6 +6945,9 @@ ur_result_t UR_APICALL urEnqueueUSMHostAllocExp( /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. ur_result_t UR_APICALL urEnqueueUSMFreeExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, diff --git a/unified-runtime/source/ur_api.cpp b/unified-runtime/source/ur_api.cpp index 602aad1104605..5c648d51a91c7 100644 --- a/unified-runtime/source/ur_api.cpp +++ b/unified-runtime/source/ur_api.cpp @@ -5967,6 +5967,9 @@ ur_result_t UR_APICALL urEnqueueWriteHostPipe( /// + `NULL == ppMem` /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. ur_result_t UR_APICALL urEnqueueUSMDeviceAllocExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, @@ -6008,6 +6011,9 @@ ur_result_t UR_APICALL urEnqueueUSMDeviceAllocExp( /// + `NULL == ppMem` /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. ur_result_t UR_APICALL urEnqueueUSMSharedAllocExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, @@ -6050,6 +6056,9 @@ ur_result_t UR_APICALL urEnqueueUSMSharedAllocExp( /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. ur_result_t UR_APICALL urEnqueueUSMHostAllocExp( /// [in] handle of the queue object ur_queue_handle_t hQueue, @@ -6089,6 +6098,9 @@ ur_result_t UR_APICALL urEnqueueUSMHostAllocExp( /// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES /// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY /// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST +/// + `phEventWaitList == NULL && numEventsInWaitList > 0` +/// + `phEventWaitList != NULL && numEventsInWaitList == 0` +/// + If event objects in phEventWaitList are not valid events. ur_result_t UR_APICALL urEnqueueUSMFreeExp( /// [in] handle of the queue object ur_queue_handle_t hQueue,