@@ -74,7 +74,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueKernelLaunch(
74
74
hKernel->Args .getStorageSize (), &LaunchArgs, &EventOut));
75
75
76
76
if (phEvent) {
77
- auto *Event = new ur_event_handle_t_ ();
77
+ auto *Event = new ur_event_handle_t_ (UR_COMMAND_KERNEL_LAUNCH, hQueue );
78
78
Event->OffloadEvent = EventOut;
79
79
*phEvent = Event;
80
80
}
@@ -94,10 +94,10 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueUSMMemcpy2D(
94
94
}
95
95
96
96
namespace {
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,
101
101
const ur_event_handle_t *phEventWaitList,
102
102
ur_event_handle_t *phEvent) {
103
103
// Ignore wait list for now
@@ -115,7 +115,7 @@ ur_result_t doMemcpy(ur_queue_handle_t hQueue, void *DestPtr,
115
115
}
116
116
117
117
if (phEvent) {
118
- auto *Event = new ur_event_handle_t_ ();
118
+ auto *Event = new ur_event_handle_t_ (Command, hQueue );
119
119
Event->OffloadEvent = EventOut;
120
120
*phEvent = Event;
121
121
}
@@ -131,8 +131,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueMemBufferRead(
131
131
char *DevPtr =
132
132
reinterpret_cast <char *>(std::get<BufferMem>(hBuffer->Mem ).Ptr );
133
133
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,
136
136
numEventsInWaitList, phEventWaitList, phEvent);
137
137
}
138
138
@@ -143,9 +143,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueMemBufferWrite(
143
143
char *DevPtr =
144
144
reinterpret_cast <char *>(std::get<BufferMem>(hBuffer->Mem ).Ptr );
145
145
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);
149
149
}
150
150
151
151
UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableRead (
@@ -159,10 +159,10 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableRead(
159
159
return Err;
160
160
}
161
161
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);
166
166
}
167
167
168
168
UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableWrite (
@@ -176,18 +176,20 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableWrite(
176
176
return Err;
177
177
}
178
178
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);
182
183
}
183
184
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) {
185
187
// This path is a no-op, but we can't output a real event because
186
188
// Offload doesn't currently support creating arbitrary events, and we
187
189
// don't know the last real event in the queue. Instead we just have to
188
190
// wait on the whole queue and then return an empty (implicitly
189
191
// finished) event.
190
- *phEvent = ur_event_handle_t_::createEmptyEvent ();
192
+ *phEvent = ur_event_handle_t_::createEmptyEvent (Type, hQueue );
191
193
return urQueueFinish (hQueue);
192
194
}
193
195
@@ -221,7 +223,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueMemBufferMap(
221
223
}
222
224
223
225
if (phEvent) {
224
- enqueueNoOp (hQueue, phEvent);
226
+ enqueueNoOp (UR_COMMAND_MEM_BUFFER_MAP, hQueue, phEvent);
225
227
}
226
228
}
227
229
*ppRetMap = MapPtr;
@@ -255,7 +257,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urEnqueueMemUnmap(
255
257
}
256
258
257
259
if (phEvent) {
258
- enqueueNoOp (hQueue, phEvent);
260
+ enqueueNoOp (UR_COMMAND_MEM_UNMAP, hQueue, phEvent);
259
261
}
260
262
}
261
263
BufferImpl.unmap (pMappedPtr);
0 commit comments