Skip to content

Commit 64bcefb

Browse files
RossBruntonbb-ur
authored andcommitted
Implement USM/MemBuffer fill (#19885)
1 parent 98faff3 commit 64bcefb

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

source/adapters/offload/enqueue.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,21 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueKernelLaunch(
192192
return UR_RESULT_SUCCESS;
193193
}
194194

195+
UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMFill(
196+
ur_queue_handle_t hQueue, void *pMem, size_t patternSize,
197+
const void *pPattern, size_t size, uint32_t numEventsInWaitList,
198+
const ur_event_handle_t *phEventWaitList, ur_event_handle_t *phEvent) {
199+
ol_queue_handle_t Queue;
200+
OL_RETURN_ON_ERR(hQueue->nextQueue(Queue));
201+
OL_RETURN_ON_ERR(waitOnEvents(Queue, phEventWaitList, numEventsInWaitList));
202+
203+
OL_RETURN_ON_ERR(
204+
olMemFill(Queue, pMem, patternSize, const_cast<void *>(pPattern), size));
205+
OL_RETURN_ON_ERR(makeEvent(UR_COMMAND_USM_FILL, Queue, hQueue, phEvent));
206+
207+
return UR_RESULT_SUCCESS;
208+
}
209+
195210
UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMFill2D(
196211
ur_queue_handle_t, void *, size_t, size_t, const void *, size_t, size_t,
197212
uint32_t, const ur_event_handle_t *, ur_event_handle_t *) {
@@ -279,6 +294,25 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueMemBufferCopy(
279294
phEventWaitList, phEvent);
280295
}
281296

297+
UR_APIEXPORT ur_result_t UR_APICALL urEnqueueMemBufferFill(
298+
ur_queue_handle_t hQueue, ur_mem_handle_t hBuffer, const void *pPattern,
299+
size_t patternSize, size_t offset, size_t size,
300+
uint32_t numEventsInWaitList, const ur_event_handle_t *phEventWaitList,
301+
ur_event_handle_t *phEvent) {
302+
ol_queue_handle_t Queue;
303+
OL_RETURN_ON_ERR(hQueue->nextQueue(Queue));
304+
OL_RETURN_ON_ERR(waitOnEvents(Queue, phEventWaitList, numEventsInWaitList));
305+
306+
char *DevPtr =
307+
reinterpret_cast<char *>(std::get<BufferMem>(hBuffer->Mem).Ptr);
308+
309+
OL_RETURN_ON_ERR(olMemFill(Queue, DevPtr + offset, patternSize,
310+
const_cast<void *>(pPattern), size));
311+
OL_RETURN_ON_ERR(makeEvent(UR_COMMAND_USM_FILL, Queue, hQueue, phEvent));
312+
313+
return UR_RESULT_SUCCESS;
314+
}
315+
282316
UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableRead(
283317
ur_queue_handle_t hQueue, ur_program_handle_t hProgram, const char *name,
284318
bool blockingRead, size_t count, size_t offset, void *pDst,

source/adapters/offload/ur_interface_loader.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueProcAddrTable(
175175
pDdiTable->pfnKernelLaunch = urEnqueueKernelLaunch;
176176
pDdiTable->pfnMemBufferCopy = urEnqueueMemBufferCopy;
177177
pDdiTable->pfnMemBufferCopyRect = nullptr;
178-
pDdiTable->pfnMemBufferFill = nullptr;
178+
pDdiTable->pfnMemBufferFill = urEnqueueMemBufferFill;
179179
pDdiTable->pfnMemBufferMap = urEnqueueMemBufferMap;
180180
pDdiTable->pfnMemBufferRead = urEnqueueMemBufferRead;
181181
pDdiTable->pfnMemBufferReadRect = nullptr;
@@ -186,7 +186,7 @@ UR_DLLEXPORT ur_result_t UR_APICALL urGetEnqueueProcAddrTable(
186186
pDdiTable->pfnMemImageWrite = nullptr;
187187
pDdiTable->pfnMemUnmap = urEnqueueMemUnmap;
188188
pDdiTable->pfnUSMFill2D = urEnqueueUSMFill2D;
189-
pDdiTable->pfnUSMFill = nullptr;
189+
pDdiTable->pfnUSMFill = urEnqueueUSMFill;
190190
pDdiTable->pfnUSMAdvise = nullptr;
191191
pDdiTable->pfnUSMMemcpy2D = urEnqueueUSMMemcpy2D;
192192
pDdiTable->pfnUSMMemcpy = urEnqueueUSMMemcpy;

0 commit comments

Comments
 (0)