@@ -74,7 +74,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueKernelLaunch(
7474 hKernel->Args .getStorageSize (), &LaunchArgs, &EventOut));
7575
7676 if (phEvent) {
77- auto *Event = new ur_event_handle_t_ ();
77+ auto *Event = new ur_event_handle_t_ (UR_COMMAND_KERNEL_LAUNCH, hQueue );
7878 Event->OffloadEvent = EventOut;
7979 *phEvent = Event;
8080 }
@@ -94,10 +94,10 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMMemcpy2D(
9494}
9595
9696namespace {
97- ur_result_t doMemcpy (ur_queue_handle_t hQueue, void *DestPtr ,
98- ol_device_handle_t DestDevice, const void *SrcPtr ,
99- ol_device_handle_t SrcDevice, size_t size, bool blocking ,
100- uint32_t numEventsInWaitList,
97+ ur_result_t doMemcpy (ur_command_t Command, ur_queue_handle_t hQueue ,
98+ void *DestPtr, ol_device_handle_t DestDevice ,
99+ const void *SrcPtr, ol_device_handle_t SrcDevice ,
100+ size_t size, bool blocking, uint32_t numEventsInWaitList,
101101 const ur_event_handle_t *phEventWaitList,
102102 ur_event_handle_t *phEvent) {
103103 // Ignore wait list for now
@@ -115,7 +115,7 @@ ur_result_t doMemcpy(ur_queue_handle_t hQueue, void *DestPtr,
115115 }
116116
117117 if (phEvent) {
118- auto *Event = new ur_event_handle_t_ ();
118+ auto *Event = new ur_event_handle_t_ (Command, hQueue );
119119 Event->OffloadEvent = EventOut;
120120 *phEvent = Event;
121121 }
@@ -131,8 +131,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueMemBufferRead(
131131 char *DevPtr =
132132 reinterpret_cast <char *>(std::get<BufferMem>(hBuffer->Mem ).Ptr );
133133
134- return doMemcpy (hQueue, pDst, Adapter->HostDevice , DevPtr + offset ,
135- hQueue->OffloadDevice , size, blockingRead,
134+ return doMemcpy (UR_COMMAND_MEM_BUFFER_READ, hQueue, pDst, Adapter->HostDevice ,
135+ DevPtr + offset, hQueue->OffloadDevice , size, blockingRead,
136136 numEventsInWaitList, phEventWaitList, phEvent);
137137}
138138
@@ -143,9 +143,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueMemBufferWrite(
143143 char *DevPtr =
144144 reinterpret_cast <char *>(std::get<BufferMem>(hBuffer->Mem ).Ptr );
145145
146- return doMemcpy (hQueue, DevPtr + offset, hQueue-> OffloadDevice , pSrc ,
147- Adapter-> HostDevice , size, blockingWrite, numEventsInWaitList ,
148- phEventWaitList, phEvent);
146+ return doMemcpy (UR_COMMAND_MEM_BUFFER_WRITE, hQueue, DevPtr + offset,
147+ hQueue-> OffloadDevice , pSrc, Adapter-> HostDevice , size ,
148+ blockingWrite, numEventsInWaitList, phEventWaitList, phEvent);
149149}
150150
151151UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableRead (
@@ -159,10 +159,10 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableRead(
159159 return Err;
160160 }
161161
162- return doMemcpy (hQueue, pDst, Adapter-> HostDevice ,
163- reinterpret_cast < const char *>(Ptr) + offset ,
164- hQueue->OffloadDevice , count, blockingRead ,
165- numEventsInWaitList, phEventWaitList, phEvent);
162+ return doMemcpy (
163+ UR_COMMAND_DEVICE_GLOBAL_VARIABLE_READ, hQueue, pDst, Adapter-> HostDevice ,
164+ reinterpret_cast < const char *>(Ptr) + offset, hQueue->OffloadDevice ,
165+ count, blockingRead, numEventsInWaitList, phEventWaitList, phEvent);
166166}
167167
168168UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableWrite (
@@ -176,18 +176,20 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableWrite(
176176 return Err;
177177 }
178178
179- return doMemcpy (hQueue, reinterpret_cast <char *>(Ptr) + offset,
180- hQueue->OffloadDevice , pSrc, Adapter->HostDevice , count,
181- blockingWrite, numEventsInWaitList, phEventWaitList, phEvent);
179+ return doMemcpy (UR_COMMAND_DEVICE_GLOBAL_VARIABLE_WRITE, hQueue,
180+ reinterpret_cast <char *>(Ptr) + offset, hQueue->OffloadDevice ,
181+ pSrc, Adapter->HostDevice , count, blockingWrite,
182+ numEventsInWaitList, phEventWaitList, phEvent);
182183}
183184
184- ur_result_t enqueueNoOp (ur_queue_handle_t hQueue, ur_event_handle_t *phEvent) {
185+ ur_result_t enqueueNoOp (ur_command_t Type, ur_queue_handle_t hQueue,
186+ ur_event_handle_t *phEvent) {
185187 // This path is a no-op, but we can't output a real event because
186188 // Offload doesn't currently support creating arbitrary events, and we
187189 // don't know the last real event in the queue. Instead we just have to
188190 // wait on the whole queue and then return an empty (implicitly
189191 // finished) event.
190- *phEvent = ur_event_handle_t_::createEmptyEvent ();
192+ *phEvent = ur_event_handle_t_::createEmptyEvent (Type, hQueue );
191193 return urQueueFinish (hQueue);
192194}
193195
@@ -221,7 +223,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueMemBufferMap(
221223 }
222224
223225 if (phEvent) {
224- enqueueNoOp (hQueue, phEvent);
226+ enqueueNoOp (UR_COMMAND_MEM_BUFFER_MAP, hQueue, phEvent);
225227 }
226228 }
227229 *ppRetMap = MapPtr;
@@ -255,7 +257,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueMemUnmap(
255257 }
256258
257259 if (phEvent) {
258- enqueueNoOp (hQueue, phEvent);
260+ enqueueNoOp (UR_COMMAND_MEM_UNMAP, hQueue, phEvent);
259261 }
260262 }
261263 BufferImpl.unmap (pMappedPtr);
0 commit comments