@@ -453,6 +453,8 @@ typedef enum ur_function_t {
453453 UR_FUNCTION_USM_POOL_TRIM_TO_EXP = 261,
454454 /// Enumerator for ::urUSMPoolGetInfoExp
455455 UR_FUNCTION_USM_POOL_GET_INFO_EXP = 262,
456+ /// Enumerator for ::urUSMContextMemcpyExp
457+ UR_FUNCTION_USM_CONTEXT_MEMCPY_EXP = 264,
456458 /// @cond
457459 UR_FUNCTION_FORCE_UINT32 = 0x7fffffff
458460 /// @endcond
@@ -2320,6 +2322,8 @@ typedef enum ur_device_info_t {
23202322 /// [::ur_bool_t] returns true if the device supports enqueueing of
23212323 /// allocations and frees.
23222324 UR_DEVICE_INFO_ASYNC_USM_ALLOCATIONS_EXP = 0x2050,
2325+ /// [::ur_bool_t] returns true if the device supports ::urUSMContextMemcpy
2326+ UR_DEVICE_INFO_USM_CONTEXT_MEMCPY_SUPPORT_EXP = 0x7000,
23232327 /// @cond
23242328 UR_DEVICE_INFO_FORCE_UINT32 = 0x7fffffff
23252329 /// @endcond
@@ -2345,7 +2349,7 @@ typedef enum ur_device_info_t {
23452349/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
23462350/// + `NULL == hDevice`
23472351/// - ::UR_RESULT_ERROR_INVALID_ENUMERATION
2348- /// + `::UR_DEVICE_INFO_ASYNC_USM_ALLOCATIONS_EXP < propName`
2352+ /// + `::UR_DEVICE_INFO_USM_CONTEXT_MEMCPY_SUPPORT_EXP < propName`
23492353/// - ::UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION
23502354/// + If `propName` is not supported by the adapter.
23512355/// - ::UR_RESULT_ERROR_INVALID_SIZE
@@ -12153,6 +12157,39 @@ UR_APIEXPORT ur_result_t UR_APICALL urProgramLinkExp(
1215312157 /// [out][alloc] pointer to handle of program object created.
1215412158 ur_program_handle_t *phProgram);
1215512159
12160+ #if !defined(__GNUC__)
12161+ #pragma endregion
12162+ #endif
12163+ // Intel 'oneAPI' Unified Runtime Experimental APIs for USM Context Memcpy
12164+ #if !defined(__GNUC__)
12165+ #pragma region usm_context_memcpy_(experimental)
12166+ #endif
12167+ ///////////////////////////////////////////////////////////////////////////////
12168+ /// @brief Enable access to peer device memory
12169+ ///
12170+ /// @returns
12171+ /// - ::UR_RESULT_SUCCESS
12172+ /// - ::UR_RESULT_ERROR_UNINITIALIZED
12173+ /// - ::UR_RESULT_ERROR_DEVICE_LOST
12174+ /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
12175+ /// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
12176+ /// + `NULL == hContext`
12177+ /// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
12178+ /// + `NULL == pDst`
12179+ /// + `NULL == pSrc`
12180+ /// - ::UR_RESULT_SUCCESS
12181+ /// - ::UR_RESULT_ERROR_ADAPTER_SPECIFIC
12182+ UR_APIEXPORT ur_result_t UR_APICALL urUSMContextMemcpyExp(
12183+ /// [in] Context associated with the device(s) that own the allocations
12184+ /// `pSrc` and `pDst`.
12185+ ur_context_handle_t hContext,
12186+ /// [in] Destination pointer to copy to.
12187+ void *pDst,
12188+ /// [in] Source pointer to copy from.
12189+ const void *pSrc,
12190+ /// [in] Size in bytes to be copied.
12191+ size_t size);
12192+
1215612193#if !defined(__GNUC__)
1215712194#pragma endregion
1215812195#endif
@@ -14282,6 +14319,17 @@ typedef struct ur_usm_pitched_alloc_exp_params_t {
1428214319 size_t **ppResultPitch;
1428314320} ur_usm_pitched_alloc_exp_params_t;
1428414321
14322+ ///////////////////////////////////////////////////////////////////////////////
14323+ /// @brief Function parameters for urUSMContextMemcpyExp
14324+ /// @details Each entry is a pointer to the parameter passed to the function;
14325+ /// allowing the callback the ability to modify the parameter's value
14326+ typedef struct ur_usm_context_memcpy_exp_params_t {
14327+ ur_context_handle_t *phContext;
14328+ void **ppDst;
14329+ const void **ppSrc;
14330+ size_t *psize;
14331+ } ur_usm_context_memcpy_exp_params_t;
14332+
1428514333///////////////////////////////////////////////////////////////////////////////
1428614334/// @brief Function parameters for urUSMImportExp
1428714335/// @details Each entry is a pointer to the parameter passed to the function;
0 commit comments