30 #include <type_traits>
69 CodeplayInteropTask = 13,
70 CodeplayHostTask = 14,
75 CopyToDeviceGlobal = 19,
76 CopyFromDeviceGlobal = 20,
79 CG(
CGTYPE Type, std::vector<std::vector<char>> ArgsStorage,
80 std::vector<detail::AccessorImplPtr> AccStorage,
81 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
82 std::vector<AccessorImplHost *> Requirements,
84 : MType(Type), MArgsStorage(std::move(ArgsStorage)),
85 MAccStorage(std::move(AccStorage)),
86 MSharedPtrStorage(std::move(SharedPtrStorage)),
87 MRequirements(std::move(Requirements)), MEvents(std::move(Events)) {
91 if (loc.functionName())
92 MFunctionName = loc.functionName();
94 MFileName = loc.fileName();
95 MLine = loc.lineNumber();
96 MColumn = loc.columnNumber();
99 CG(CG &&CommandGroup) =
default;
105 std::vector<detail::AccessorImplPtr> &
getAccStorage() {
return MAccStorage; }
107 virtual ~
CG() =
default;
114 std::vector<std::vector<char>> MArgsStorage;
116 std::vector<detail::AccessorImplPtr> MAccStorage;
118 std::vector<std::shared_ptr<const void>> MSharedPtrStorage;
145 std::vector<std::shared_ptr<detail::stream_impl>>
MStreams;
150 std::shared_ptr<detail::kernel_impl> SyclKernel,
151 std::shared_ptr<detail::kernel_bundle_impl> KernelBundle,
152 std::vector<std::vector<char>> ArgsStorage,
153 std::vector<detail::AccessorImplPtr> AccStorage,
154 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
155 std::vector<AccessorImplHost *> Requirements,
156 std::vector<detail::EventImplPtr> Events,
157 std::vector<ArgDesc> Args, std::string KernelName,
159 std::vector<std::shared_ptr<detail::stream_impl>> Streams,
160 std::vector<std::shared_ptr<const void>> AuxiliaryResources,
163 :
CG(Type, std::move(ArgsStorage), std::move(AccStorage),
164 std::move(SharedPtrStorage), std::move(Requirements),
165 std::move(Events), std::move(loc)),
166 MNDRDesc(std::move(NDRDesc)), MHostKernel(std::move(HKernel)),
167 MSyclKernel(std::move(SyclKernel)),
168 MKernelBundle(std::move(KernelBundle)), MArgs(std::move(Args)),
169 MKernelName(std::move(KernelName)), MOSModuleHandle(
OSModuleHandle),
170 MStreams(std::move(Streams)),
171 MAuxiliaryResources(std::move(AuxiliaryResources)),
172 MKernelCacheConfig(std::move(KernelCacheConfig)) {
173 assert((getType() == RunOnHostIntel || getType() == Kernel) &&
174 "Wrong type of exec kernel CG.");
179 std::vector<std::shared_ptr<detail::stream_impl>>
getStreams()
const {
184 return MAuxiliaryResources;
188 return MKernelBundle;
205 std::vector<std::vector<char>> ArgsStorage,
206 std::vector<detail::AccessorImplPtr> AccStorage,
207 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
208 std::vector<AccessorImplHost *> Requirements,
209 std::vector<detail::EventImplPtr> Events,
211 :
CG(CopyType, std::move(ArgsStorage), std::move(AccStorage),
212 std::move(SharedPtrStorage), std::move(Requirements),
213 std::move(Events), std::move(loc)),
214 MSrc(Src), MDst(Dst) {}
225 CGFill(std::vector<char> Pattern,
void *Ptr,
226 std::vector<std::vector<char>> ArgsStorage,
227 std::vector<detail::AccessorImplPtr> AccStorage,
228 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
229 std::vector<AccessorImplHost *> Requirements,
230 std::vector<detail::EventImplPtr> Events,
232 :
CG(Fill, std::move(ArgsStorage), std::move(AccStorage),
233 std::move(SharedPtrStorage), std::move(Requirements),
234 std::move(Events), std::move(loc)),
245 std::vector<detail::AccessorImplPtr> AccStorage,
246 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
247 std::vector<AccessorImplHost *> Requirements,
248 std::vector<detail::EventImplPtr> Events,
250 :
CG(UpdateHost, std::move(ArgsStorage), std::move(AccStorage),
251 std::move(SharedPtrStorage), std::move(Requirements),
252 std::move(Events), std::move(loc)),
266 std::vector<std::vector<char>> ArgsStorage,
267 std::vector<detail::AccessorImplPtr> AccStorage,
268 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
269 std::vector<AccessorImplHost *> Requirements,
270 std::vector<detail::EventImplPtr> Events,
272 :
CG(CopyUSM, std::move(ArgsStorage), std::move(AccStorage),
273 std::move(SharedPtrStorage), std::move(Requirements),
274 std::move(Events), std::move(loc)),
275 MSrc(Src), MDst(Dst), MLength(Length) {}
284 std::vector<char> MPattern;
289 CGFillUSM(std::vector<char> Pattern,
void *DstPtr,
size_t Length,
290 std::vector<std::vector<char>> ArgsStorage,
291 std::vector<detail::AccessorImplPtr> AccStorage,
292 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
293 std::vector<AccessorImplHost *> Requirements,
294 std::vector<detail::EventImplPtr> Events,
296 :
CG(FillUSM, std::move(ArgsStorage), std::move(AccStorage),
297 std::move(SharedPtrStorage), std::move(Requirements),
298 std::move(Events), std::move(loc)),
299 MPattern(std::move(Pattern)), MDst(DstPtr), MLength(Length) {}
312 std::vector<std::vector<char>> ArgsStorage,
313 std::vector<detail::AccessorImplPtr> AccStorage,
314 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
315 std::vector<AccessorImplHost *> Requirements,
316 std::vector<detail::EventImplPtr> Events,
318 :
CG(PrefetchUSM, std::move(ArgsStorage), std::move(AccStorage),
319 std::move(SharedPtrStorage), std::move(Requirements),
320 std::move(Events), std::move(loc)),
321 MDst(DstPtr), MLength(Length) {}
334 std::vector<std::vector<char>> ArgsStorage,
335 std::vector<detail::AccessorImplPtr> AccStorage,
336 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
337 std::vector<AccessorImplHost *> Requirements,
338 std::vector<detail::EventImplPtr> Events,
CGTYPE Type,
340 :
CG(Type, std::move(ArgsStorage), std::move(AccStorage),
341 std::move(SharedPtrStorage), std::move(Requirements),
342 std::move(Events), std::move(loc)),
343 MDst(DstPtr), MLength(Length), MAdvice(Advice) {}
354 std::vector<std::vector<char>> ArgsStorage,
355 std::vector<detail::AccessorImplPtr> AccStorage,
356 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
357 std::vector<AccessorImplHost *> Requirements,
358 std::vector<detail::EventImplPtr> Events,
CGTYPE Type,
360 :
CG(Type, std::move(ArgsStorage), std::move(AccStorage),
361 std::move(SharedPtrStorage), std::move(Requirements),
362 std::move(Events), std::move(loc)),
370 std::shared_ptr<detail::queue_impl>
MQueue;
376 std::shared_ptr<detail::queue_impl> Queue,
377 std::shared_ptr<detail::context_impl> Context,
378 std::vector<ArgDesc> Args,
379 std::vector<std::vector<char>> ArgsStorage,
380 std::vector<detail::AccessorImplPtr> AccStorage,
381 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
382 std::vector<AccessorImplHost *> Requirements,
383 std::vector<detail::EventImplPtr> Events,
CGTYPE Type,
385 :
CG(Type, std::move(ArgsStorage), std::move(AccStorage),
386 std::move(SharedPtrStorage), std::move(Requirements),
387 std::move(Events), std::move(loc)),
388 MHostTask(std::move(
HostTask)), MQueue(Queue), MContext(Context),
389 MArgs(std::move(Args)) {}
396 CGBarrier(std::vector<detail::EventImplPtr> EventsWaitWithBarrier,
397 std::vector<std::vector<char>> ArgsStorage,
398 std::vector<detail::AccessorImplPtr> AccStorage,
399 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
400 std::vector<AccessorImplHost *> Requirements,
401 std::vector<detail::EventImplPtr> Events,
CGTYPE Type,
403 :
CG(Type, std::move(ArgsStorage), std::move(AccStorage),
404 std::move(SharedPtrStorage), std::move(Requirements),
405 std::move(Events), std::move(loc)),
406 MEventsWaitWithBarrier(std::move(EventsWaitWithBarrier)) {}
419 CGCopy2DUSM(
void *Src,
void *Dst,
size_t SrcPitch,
size_t DstPitch,
420 size_t Width,
size_t Height,
421 std::vector<std::vector<char>> ArgsStorage,
422 std::vector<detail::AccessorImplPtr> AccStorage,
423 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
424 std::vector<AccessorImplHost *> Requirements,
425 std::vector<detail::EventImplPtr> Events,
427 :
CG(Copy2DUSM, std::move(ArgsStorage), std::move(AccStorage),
428 std::move(SharedPtrStorage), std::move(Requirements),
429 std::move(Events), std::move(loc)),
430 MSrc(Src), MDst(Dst), MSrcPitch(SrcPitch), MDstPitch(DstPitch),
431 MWidth(Width), MHeight(Height) {}
443 std::vector<char> MPattern;
450 CGFill2DUSM(std::vector<char> Pattern,
void *DstPtr,
size_t Pitch,
451 size_t Width,
size_t Height,
452 std::vector<std::vector<char>> ArgsStorage,
453 std::vector<detail::AccessorImplPtr> AccStorage,
454 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
455 std::vector<AccessorImplHost *> Requirements,
456 std::vector<detail::EventImplPtr> Events,
458 :
CG(Fill2DUSM, std::move(ArgsStorage), std::move(AccStorage),
459 std::move(SharedPtrStorage), std::move(Requirements),
460 std::move(Events), std::move(loc)),
461 MPattern(std::move(Pattern)), MDst(DstPtr), MPitch(Pitch),
462 MWidth(Width), MHeight(Height) {}
467 const std::vector<char> &
getPattern()
const {
return MPattern; }
480 size_t Height, std::vector<std::vector<char>> ArgsStorage,
481 std::vector<detail::AccessorImplPtr> AccStorage,
482 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
483 std::vector<AccessorImplHost *> Requirements,
484 std::vector<detail::EventImplPtr> Events,
486 :
CG(Memset2DUSM, std::move(ArgsStorage), std::move(AccStorage),
487 std::move(SharedPtrStorage), std::move(Requirements),
488 std::move(Events), std::move(loc)),
489 MValue(Value), MDst(DstPtr), MPitch(Pitch), MWidth(Width),
501 void *MDeviceGlobalPtr;
502 bool MIsDeviceImageScoped;
509 void *Src,
void *DeviceGlobalPtr,
bool IsDeviceImageScoped,
510 size_t NumBytes,
size_t Offset,
511 std::vector<std::vector<char>> ArgsStorage,
512 std::vector<detail::AccessorImplPtr> AccStorage,
513 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
514 std::vector<AccessorImplHost *> Requirements,
515 std::vector<detail::EventImplPtr> Events,
517 :
CG(CopyToDeviceGlobal, std::move(ArgsStorage), std::move(AccStorage),
518 std::move(SharedPtrStorage), std::move(Requirements),
519 std::move(Events), std::move(loc)),
520 MSrc(Src), MDeviceGlobalPtr(DeviceGlobalPtr),
521 MIsDeviceImageScoped(IsDeviceImageScoped), MNumBytes(NumBytes),
534 void *MDeviceGlobalPtr;
536 bool MIsDeviceImageScoped;
543 void *DeviceGlobalPtr,
void *Dest,
bool IsDeviceImageScoped,
544 size_t NumBytes,
size_t Offset,
545 std::vector<std::vector<char>> ArgsStorage,
546 std::vector<detail::AccessorImplPtr> AccStorage,
547 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
548 std::vector<AccessorImplHost *> Requirements,
549 std::vector<detail::EventImplPtr> Events,
551 :
CG(CopyFromDeviceGlobal, std::move(ArgsStorage), std::move(AccStorage),
552 std::move(SharedPtrStorage), std::move(Requirements),
553 std::move(Events), std::move(loc)),
554 MDeviceGlobalPtr(DeviceGlobalPtr), MDest(Dest),
555 MIsDeviceImageScoped(IsDeviceImageScoped), MNumBytes(NumBytes),