Skip to content

Commit 844a056

Browse files
authored
Remove urEnqueueUSMMemset entrypoints and add urEnqueueUSMFill (#319)
1 parent 4b4624f commit 844a056

23 files changed

+605
-950
lines changed

include/ur.py

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1925,11 +1925,11 @@ class ur_mem_dditable_t(Structure):
19251925
_urEnqueueMemUnmap_t = CFUNCTYPE( ur_result_t, ur_queue_handle_t, ur_mem_handle_t, c_void_p, c_ulong, POINTER(ur_event_handle_t), POINTER(ur_event_handle_t) )
19261926

19271927
###############################################################################
1928-
## @brief Function-pointer for urEnqueueUSMMemset
1928+
## @brief Function-pointer for urEnqueueUSMFill
19291929
if __use_win_types:
1930-
_urEnqueueUSMMemset_t = WINFUNCTYPE( ur_result_t, ur_queue_handle_t, c_void_p, c_int, c_size_t, c_ulong, POINTER(ur_event_handle_t), POINTER(ur_event_handle_t) )
1930+
_urEnqueueUSMFill_t = WINFUNCTYPE( ur_result_t, ur_queue_handle_t, c_void_p, c_size_t, c_void_p, c_size_t, c_ulong, POINTER(ur_event_handle_t), POINTER(ur_event_handle_t) )
19311931
else:
1932-
_urEnqueueUSMMemset_t = CFUNCTYPE( ur_result_t, ur_queue_handle_t, c_void_p, c_int, c_size_t, c_ulong, POINTER(ur_event_handle_t), POINTER(ur_event_handle_t) )
1932+
_urEnqueueUSMFill_t = CFUNCTYPE( ur_result_t, ur_queue_handle_t, c_void_p, c_size_t, c_void_p, c_size_t, c_ulong, POINTER(ur_event_handle_t), POINTER(ur_event_handle_t) )
19331933

19341934
###############################################################################
19351935
## @brief Function-pointer for urEnqueueUSMMemcpy
@@ -1959,13 +1959,6 @@ class ur_mem_dditable_t(Structure):
19591959
else:
19601960
_urEnqueueUSMFill2D_t = CFUNCTYPE( ur_result_t, ur_queue_handle_t, c_void_p, c_size_t, c_size_t, c_void_p, c_size_t, c_size_t, c_ulong, POINTER(ur_event_handle_t), POINTER(ur_event_handle_t) )
19611961

1962-
###############################################################################
1963-
## @brief Function-pointer for urEnqueueUSMMemset2D
1964-
if __use_win_types:
1965-
_urEnqueueUSMMemset2D_t = WINFUNCTYPE( ur_result_t, ur_queue_handle_t, c_void_p, c_size_t, c_int, c_size_t, c_size_t, c_ulong, POINTER(ur_event_handle_t), POINTER(ur_event_handle_t) )
1966-
else:
1967-
_urEnqueueUSMMemset2D_t = CFUNCTYPE( ur_result_t, ur_queue_handle_t, c_void_p, c_size_t, c_int, c_size_t, c_size_t, c_ulong, POINTER(ur_event_handle_t), POINTER(ur_event_handle_t) )
1968-
19691962
###############################################################################
19701963
## @brief Function-pointer for urEnqueueUSMMemcpy2D
19711964
if __use_win_types:
@@ -2007,12 +2000,11 @@ class ur_enqueue_dditable_t(Structure):
20072000
("pfnMemImageCopy", c_void_p), ## _urEnqueueMemImageCopy_t
20082001
("pfnMemBufferMap", c_void_p), ## _urEnqueueMemBufferMap_t
20092002
("pfnMemUnmap", c_void_p), ## _urEnqueueMemUnmap_t
2010-
("pfnUSMMemset", c_void_p), ## _urEnqueueUSMMemset_t
2003+
("pfnUSMFill", c_void_p), ## _urEnqueueUSMFill_t
20112004
("pfnUSMMemcpy", c_void_p), ## _urEnqueueUSMMemcpy_t
20122005
("pfnUSMPrefetch", c_void_p), ## _urEnqueueUSMPrefetch_t
20132006
("pfnUSMMemAdvise", c_void_p), ## _urEnqueueUSMMemAdvise_t
20142007
("pfnUSMFill2D", c_void_p), ## _urEnqueueUSMFill2D_t
2015-
("pfnUSMMemset2D", c_void_p), ## _urEnqueueUSMMemset2D_t
20162008
("pfnUSMMemcpy2D", c_void_p), ## _urEnqueueUSMMemcpy2D_t
20172009
("pfnDeviceGlobalVariableWrite", c_void_p), ## _urEnqueueDeviceGlobalVariableWrite_t
20182010
("pfnDeviceGlobalVariableRead", c_void_p) ## _urEnqueueDeviceGlobalVariableRead_t
@@ -2444,12 +2436,11 @@ def __init__(self, version : ur_api_version_t):
24442436
self.urEnqueueMemImageCopy = _urEnqueueMemImageCopy_t(self.__dditable.Enqueue.pfnMemImageCopy)
24452437
self.urEnqueueMemBufferMap = _urEnqueueMemBufferMap_t(self.__dditable.Enqueue.pfnMemBufferMap)
24462438
self.urEnqueueMemUnmap = _urEnqueueMemUnmap_t(self.__dditable.Enqueue.pfnMemUnmap)
2447-
self.urEnqueueUSMMemset = _urEnqueueUSMMemset_t(self.__dditable.Enqueue.pfnUSMMemset)
2439+
self.urEnqueueUSMFill = _urEnqueueUSMFill_t(self.__dditable.Enqueue.pfnUSMFill)
24482440
self.urEnqueueUSMMemcpy = _urEnqueueUSMMemcpy_t(self.__dditable.Enqueue.pfnUSMMemcpy)
24492441
self.urEnqueueUSMPrefetch = _urEnqueueUSMPrefetch_t(self.__dditable.Enqueue.pfnUSMPrefetch)
24502442
self.urEnqueueUSMMemAdvise = _urEnqueueUSMMemAdvise_t(self.__dditable.Enqueue.pfnUSMMemAdvise)
24512443
self.urEnqueueUSMFill2D = _urEnqueueUSMFill2D_t(self.__dditable.Enqueue.pfnUSMFill2D)
2452-
self.urEnqueueUSMMemset2D = _urEnqueueUSMMemset2D_t(self.__dditable.Enqueue.pfnUSMMemset2D)
24532444
self.urEnqueueUSMMemcpy2D = _urEnqueueUSMMemcpy2D_t(self.__dditable.Enqueue.pfnUSMMemcpy2D)
24542445
self.urEnqueueDeviceGlobalVariableWrite = _urEnqueueDeviceGlobalVariableWrite_t(self.__dditable.Enqueue.pfnDeviceGlobalVariableWrite)
24552446
self.urEnqueueDeviceGlobalVariableRead = _urEnqueueDeviceGlobalVariableRead_t(self.__dditable.Enqueue.pfnDeviceGlobalVariableRead)

include/ur_api.h

Lines changed: 31 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -4648,7 +4648,7 @@ urEnqueueMemUnmap(
46484648
);
46494649

46504650
///////////////////////////////////////////////////////////////////////////////
4651-
/// @brief Enqueue a command to set USM memory object value
4651+
/// @brief Enqueue a command to fill USM memory.
46524652
///
46534653
/// @returns
46544654
/// - ::UR_RESULT_SUCCESS
@@ -4658,11 +4658,16 @@ urEnqueueMemUnmap(
46584658
/// + `NULL == hQueue`
46594659
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
46604660
/// + `NULL == ptr`
4661+
/// + `NULL == pPattern`
46614662
/// - ::UR_RESULT_ERROR_INVALID_QUEUE
46624663
/// - ::UR_RESULT_ERROR_INVALID_EVENT
46634664
/// - ::UR_RESULT_ERROR_INVALID_SIZE
4664-
/// + `count == 0`
4665-
/// + If `count` is higher than the allocation size of `ptr`
4665+
/// + `size == 0`
4666+
/// + `size % patternSize != 0`
4667+
/// + `patternSize == 0`
4668+
/// + `patternSize > size`
4669+
/// + `patternSize != 0 && ((patternSize & (patternSize - 1)) != 0)`
4670+
/// + If `size` is higher than the allocation size of `ptr`
46664671
/// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST
46674672
/// + `phEventWaitList == NULL && numEventsInWaitList > 0`
46684673
/// + `phEventWaitList != NULL && numEventsInWaitList == 0`
@@ -4671,12 +4676,13 @@ urEnqueueMemUnmap(
46714676
/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY
46724677
/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES
46734678
UR_APIEXPORT ur_result_t UR_APICALL
4674-
urEnqueueUSMMemset(
4679+
urEnqueueUSMFill(
46754680
ur_queue_handle_t hQueue, ///< [in] handle of the queue object
46764681
void *ptr, ///< [in] pointer to USM memory object
4677-
int value, ///< [in] value to fill. It is interpreted as an 8-bit value and the upper
4678-
///< 24 bits are ignored
4679-
size_t count, ///< [in] size in bytes to be set
4682+
size_t patternSize, ///< [in] the size in bytes of the pattern. Must be a power of 2 and less
4683+
///< than or equal to width.
4684+
const void *pPattern, ///< [in] pointer with the bytes of the pattern to set.
4685+
size_t size, ///< [in] size in bytes to be set. Must be a multiple of patternSize.
46804686
uint32_t numEventsInWaitList, ///< [in] size of the event wait list
46814687
const ur_event_handle_t *phEventWaitList, ///< [in][optional][range(0, numEventsInWaitList)] pointer to a list of
46824688
///< events that must be complete before this command can be executed.
@@ -4811,10 +4817,13 @@ urEnqueueUSMMemAdvise(
48114817
/// + `NULL == pPattern`
48124818
/// - ::UR_RESULT_ERROR_INVALID_SIZE
48134819
/// + `pitch == 0`
4820+
/// + `pitch < width`
48144821
/// + `width == 0`
4822+
/// + `width % patternSize != 0`
48154823
/// + `height == 0`
4816-
/// + `pitch < width`
48174824
/// + `patternSize == 0`
4825+
/// + `patternSize > width`
4826+
/// + `patternSize != 0 && ((patternSize & (patternSize - 1)) != 0)`
48184827
/// + If `pitch * height` is higher than the allocation size of `pMem`
48194828
/// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST
48204829
/// + `phEventWaitList == NULL && numEventsInWaitList > 0`
@@ -4829,9 +4838,11 @@ urEnqueueUSMFill2D(
48294838
ur_queue_handle_t hQueue, ///< [in] handle of the queue to submit to.
48304839
void *pMem, ///< [in] pointer to memory to be filled.
48314840
size_t pitch, ///< [in] the total width of the destination memory including padding.
4832-
size_t patternSize, ///< [in] the size in bytes of the pattern.
4841+
size_t patternSize, ///< [in] the size in bytes of the pattern. Must be a power of 2 and less
4842+
///< than or equal to width.
48334843
const void *pPattern, ///< [in] pointer with the bytes of the pattern to set.
4834-
size_t width, ///< [in] the width in bytes of each row to fill.
4844+
size_t width, ///< [in] the width in bytes of each row to fill. Must be a multiple of
4845+
///< patternSize.
48354846
size_t height, ///< [in] the height of the columns to fill.
48364847
uint32_t numEventsInWaitList, ///< [in] size of the event wait list
48374848
const ur_event_handle_t *phEventWaitList, ///< [in][optional][range(0, numEventsInWaitList)] pointer to a list of
@@ -4842,49 +4853,6 @@ urEnqueueUSMFill2D(
48424853
///< particular kernel execution instance.
48434854
);
48444855

4845-
///////////////////////////////////////////////////////////////////////////////
4846-
/// @brief Enqueue a command to set 2D USM memory.
4847-
///
4848-
/// @returns
4849-
/// - ::UR_RESULT_SUCCESS
4850-
/// - ::UR_RESULT_ERROR_UNINITIALIZED
4851-
/// - ::UR_RESULT_ERROR_DEVICE_LOST
4852-
/// - ::UR_RESULT_ERROR_INVALID_NULL_HANDLE
4853-
/// + `NULL == hQueue`
4854-
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
4855-
/// + `NULL == pMem`
4856-
/// - ::UR_RESULT_ERROR_INVALID_SIZE
4857-
/// + `pitch == 0`
4858-
/// + `width == 0`
4859-
/// + `height == 0`
4860-
/// + `pitch < width`
4861-
/// + `pitch * height` is higher than the memory allocation size
4862-
/// - ::UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST
4863-
/// + `phEventWaitList == NULL && numEventsInWaitList > 0`
4864-
/// + `phEventWaitList != NULL && numEventsInWaitList == 0`
4865-
/// + If event objects in phEventWaitList are not valid events.
4866-
/// - ::UR_RESULT_ERROR_INVALID_MEM_OBJECT
4867-
/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY
4868-
/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES
4869-
/// - ::UR_RESULT_ERROR_UNSUPPORTED_FEATURE
4870-
UR_APIEXPORT ur_result_t UR_APICALL
4871-
urEnqueueUSMMemset2D(
4872-
ur_queue_handle_t hQueue, ///< [in] handle of the queue to submit to.
4873-
void *pMem, ///< [in] pointer to memory to be filled.
4874-
size_t pitch, ///< [in] the total width of the destination memory including padding.
4875-
int value, ///< [in] the value to fill into the region in pMem. It is interpreted as
4876-
///< an 8-bit value and the upper 24 bits are ignored
4877-
size_t width, ///< [in] the width in bytes of each row to set.
4878-
size_t height, ///< [in] the height of the columns to set.
4879-
uint32_t numEventsInWaitList, ///< [in] size of the event wait list
4880-
const ur_event_handle_t *phEventWaitList, ///< [in][optional][range(0, numEventsInWaitList)] pointer to a list of
4881-
///< events that must be complete before the kernel execution.
4882-
///< If nullptr, the numEventsInWaitList must be 0, indicating that no wait
4883-
///< event.
4884-
ur_event_handle_t *phEvent ///< [in,out][optional] return an event object that identifies this
4885-
///< particular kernel execution instance.
4886-
);
4887-
48884856
///////////////////////////////////////////////////////////////////////////////
48894857
/// @brief Enqueue a command to copy 2D USM memory.
48904858
///
@@ -6934,27 +6902,28 @@ typedef void(UR_APICALL *ur_pfnEnqueueMemUnmapCb_t)(
69346902
void **ppTracerInstanceUserData);
69356903

69366904
///////////////////////////////////////////////////////////////////////////////
6937-
/// @brief Callback function parameters for urEnqueueUSMMemset
6905+
/// @brief Callback function parameters for urEnqueueUSMFill
69386906
/// @details Each entry is a pointer to the parameter passed to the function;
69396907
/// allowing the callback the ability to modify the parameter's value
6940-
typedef struct ur_enqueue_usm_memset_params_t {
6908+
typedef struct ur_enqueue_usm_fill_params_t {
69416909
ur_queue_handle_t *phQueue;
69426910
void **pptr;
6943-
int *pvalue;
6944-
size_t *pcount;
6911+
size_t *ppatternSize;
6912+
const void **ppPattern;
6913+
size_t *psize;
69456914
uint32_t *pnumEventsInWaitList;
69466915
const ur_event_handle_t **pphEventWaitList;
69476916
ur_event_handle_t **pphEvent;
6948-
} ur_enqueue_usm_memset_params_t;
6917+
} ur_enqueue_usm_fill_params_t;
69496918

69506919
///////////////////////////////////////////////////////////////////////////////
6951-
/// @brief Callback function-pointer for urEnqueueUSMMemset
6920+
/// @brief Callback function-pointer for urEnqueueUSMFill
69526921
/// @param[in] params Parameters passed to this instance
69536922
/// @param[in] result Return value
69546923
/// @param[in] pTracerUserData Per-Tracer user data
69556924
/// @param[in,out] ppTracerInstanceUserData Per-Tracer, Per-Instance user data
6956-
typedef void(UR_APICALL *ur_pfnEnqueueUSMMemsetCb_t)(
6957-
ur_enqueue_usm_memset_params_t *params,
6925+
typedef void(UR_APICALL *ur_pfnEnqueueUSMFillCb_t)(
6926+
ur_enqueue_usm_fill_params_t *params,
69586927
ur_result_t result,
69596928
void *pTracerUserData,
69606929
void **ppTracerInstanceUserData);
@@ -7065,34 +7034,6 @@ typedef void(UR_APICALL *ur_pfnEnqueueUSMFill2DCb_t)(
70657034
void *pTracerUserData,
70667035
void **ppTracerInstanceUserData);
70677036

7068-
///////////////////////////////////////////////////////////////////////////////
7069-
/// @brief Callback function parameters for urEnqueueUSMMemset2D
7070-
/// @details Each entry is a pointer to the parameter passed to the function;
7071-
/// allowing the callback the ability to modify the parameter's value
7072-
typedef struct ur_enqueue_usm_memset2_d_params_t {
7073-
ur_queue_handle_t *phQueue;
7074-
void **ppMem;
7075-
size_t *ppitch;
7076-
int *pvalue;
7077-
size_t *pwidth;
7078-
size_t *pheight;
7079-
uint32_t *pnumEventsInWaitList;
7080-
const ur_event_handle_t **pphEventWaitList;
7081-
ur_event_handle_t **pphEvent;
7082-
} ur_enqueue_usm_memset2_d_params_t;
7083-
7084-
///////////////////////////////////////////////////////////////////////////////
7085-
/// @brief Callback function-pointer for urEnqueueUSMMemset2D
7086-
/// @param[in] params Parameters passed to this instance
7087-
/// @param[in] result Return value
7088-
/// @param[in] pTracerUserData Per-Tracer user data
7089-
/// @param[in,out] ppTracerInstanceUserData Per-Tracer, Per-Instance user data
7090-
typedef void(UR_APICALL *ur_pfnEnqueueUSMMemset2DCb_t)(
7091-
ur_enqueue_usm_memset2_d_params_t *params,
7092-
ur_result_t result,
7093-
void *pTracerUserData,
7094-
void **ppTracerInstanceUserData);
7095-
70967037
///////////////////////////////////////////////////////////////////////////////
70977038
/// @brief Callback function parameters for urEnqueueUSMMemcpy2D
70987039
/// @details Each entry is a pointer to the parameter passed to the function;
@@ -7199,12 +7140,11 @@ typedef struct ur_enqueue_callbacks_t {
71997140
ur_pfnEnqueueMemImageCopyCb_t pfnMemImageCopyCb;
72007141
ur_pfnEnqueueMemBufferMapCb_t pfnMemBufferMapCb;
72017142
ur_pfnEnqueueMemUnmapCb_t pfnMemUnmapCb;
7202-
ur_pfnEnqueueUSMMemsetCb_t pfnUSMMemsetCb;
7143+
ur_pfnEnqueueUSMFillCb_t pfnUSMFillCb;
72037144
ur_pfnEnqueueUSMMemcpyCb_t pfnUSMMemcpyCb;
72047145
ur_pfnEnqueueUSMPrefetchCb_t pfnUSMPrefetchCb;
72057146
ur_pfnEnqueueUSMMemAdviseCb_t pfnUSMMemAdviseCb;
72067147
ur_pfnEnqueueUSMFill2DCb_t pfnUSMFill2DCb;
7207-
ur_pfnEnqueueUSMMemset2DCb_t pfnUSMMemset2DCb;
72087148
ur_pfnEnqueueUSMMemcpy2DCb_t pfnUSMMemcpy2DCb;
72097149
ur_pfnEnqueueDeviceGlobalVariableWriteCb_t pfnDeviceGlobalVariableWriteCb;
72107150
ur_pfnEnqueueDeviceGlobalVariableReadCb_t pfnDeviceGlobalVariableReadCb;

include/ur_ddi.h

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -919,11 +919,12 @@ typedef ur_result_t(UR_APICALL *ur_pfnEnqueueMemUnmap_t)(
919919
ur_event_handle_t *);
920920

921921
///////////////////////////////////////////////////////////////////////////////
922-
/// @brief Function-pointer for urEnqueueUSMMemset
923-
typedef ur_result_t(UR_APICALL *ur_pfnEnqueueUSMMemset_t)(
922+
/// @brief Function-pointer for urEnqueueUSMFill
923+
typedef ur_result_t(UR_APICALL *ur_pfnEnqueueUSMFill_t)(
924924
ur_queue_handle_t,
925925
void *,
926-
int,
926+
size_t,
927+
const void *,
927928
size_t,
928929
uint32_t,
929930
const ur_event_handle_t *,
@@ -975,19 +976,6 @@ typedef ur_result_t(UR_APICALL *ur_pfnEnqueueUSMFill2D_t)(
975976
const ur_event_handle_t *,
976977
ur_event_handle_t *);
977978

978-
///////////////////////////////////////////////////////////////////////////////
979-
/// @brief Function-pointer for urEnqueueUSMMemset2D
980-
typedef ur_result_t(UR_APICALL *ur_pfnEnqueueUSMMemset2D_t)(
981-
ur_queue_handle_t,
982-
void *,
983-
size_t,
984-
int,
985-
size_t,
986-
size_t,
987-
uint32_t,
988-
const ur_event_handle_t *,
989-
ur_event_handle_t *);
990-
991979
///////////////////////////////////////////////////////////////////////////////
992980
/// @brief Function-pointer for urEnqueueUSMMemcpy2D
993981
typedef ur_result_t(UR_APICALL *ur_pfnEnqueueUSMMemcpy2D_t)(
@@ -1049,12 +1037,11 @@ typedef struct ur_enqueue_dditable_t {
10491037
ur_pfnEnqueueMemImageCopy_t pfnMemImageCopy;
10501038
ur_pfnEnqueueMemBufferMap_t pfnMemBufferMap;
10511039
ur_pfnEnqueueMemUnmap_t pfnMemUnmap;
1052-
ur_pfnEnqueueUSMMemset_t pfnUSMMemset;
1040+
ur_pfnEnqueueUSMFill_t pfnUSMFill;
10531041
ur_pfnEnqueueUSMMemcpy_t pfnUSMMemcpy;
10541042
ur_pfnEnqueueUSMPrefetch_t pfnUSMPrefetch;
10551043
ur_pfnEnqueueUSMMemAdvise_t pfnUSMMemAdvise;
10561044
ur_pfnEnqueueUSMFill2D_t pfnUSMFill2D;
1057-
ur_pfnEnqueueUSMMemset2D_t pfnUSMMemset2D;
10581045
ur_pfnEnqueueUSMMemcpy2D_t pfnUSMMemcpy2D;
10591046
ur_pfnEnqueueDeviceGlobalVariableWrite_t pfnDeviceGlobalVariableWrite;
10601047
ur_pfnEnqueueDeviceGlobalVariableRead_t pfnDeviceGlobalVariableRead;

0 commit comments

Comments
 (0)