31 inline namespace _V1 {
36 namespace ext::oneapi::experimental::detail {
37 class exec_graph_impl;
86 std::vector<detail::AccessorImplPtr> AccStorage,
87 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
88 std::vector<AccessorImplHost *> Requirements,
89 std::vector<detail::EventImplPtr> Events)
113 : MType(Type), MData(std::move(D)) {
117 if (loc.functionName())
121 MLine = loc.lineNumber();
125 CG(
CG &&CommandGroup) =
default;
126 CG(
const CG &CommandGroup) =
default;
145 virtual std::vector<std::shared_ptr<const void>>
176 std::vector<std::shared_ptr<detail::stream_impl>>
MStreams;
182 std::shared_ptr<detail::kernel_impl> SyclKernel,
183 std::shared_ptr<detail::kernel_bundle_impl> KernelBundle,
186 std::vector<std::shared_ptr<detail::stream_impl>> Streams,
187 std::vector<std::shared_ptr<const void>> AuxiliaryResources,
191 :
CG(Type, std::move(CGData), std::move(loc)),
199 assert(
getType() ==
Kernel &&
"Wrong type of exec kernel CG.");
206 std::vector<std::shared_ptr<detail::stream_impl>>
getStreams()
const {
210 std::vector<std::shared_ptr<const void>>
228 std::vector<std::shared_ptr<const void>> MAuxiliaryResources;
232 std::vector<std::shared_ptr<const void>> AuxiliaryResources,
234 :
CG(CopyType, std::move(CGData), std::move(loc)), MSrc(Src), MDst(Dst),
235 MAuxiliaryResources{AuxiliaryResources} {}
239 std::vector<std::shared_ptr<const void>>
241 return MAuxiliaryResources;
254 :
CG(
Fill, std::move(CGData), std::move(loc)),
281 :
CG(
CopyUSM, std::move(CGData), std::move(loc)), MSrc(Src), MDst(Dst),
291 std::vector<char> MPattern;
296 CGFillUSM(std::vector<char> Pattern,
void *DstPtr,
size_t Length,
298 :
CG(
FillUSM, std::move(CGData), std::move(loc)),
299 MPattern(std::move(Pattern)), MDst(DstPtr), MLength(Length) {}
313 :
CG(
PrefetchUSM, std::move(CGData), std::move(loc)), MDst(DstPtr),
329 :
CG(Type, std::move(CGData), std::move(loc)), MDst(DstPtr),
330 MLength(Length), MAdvice(Advice) {}
340 std::shared_ptr<detail::queue_impl>
MQueue;
346 std::shared_ptr<detail::queue_impl> Queue,
347 std::shared_ptr<detail::context_impl> Context,
350 :
CG(Type, std::move(CGData), std::move(loc)),
352 MArgs(std::move(Args)) {}
359 CGBarrier(std::vector<detail::EventImplPtr> EventsWaitWithBarrier,
362 :
CG(Type, std::move(CGData), std::move(loc)),
376 CGCopy2DUSM(
void *Src,
void *Dst,
size_t SrcPitch,
size_t DstPitch,
379 :
CG(
Copy2DUSM, std::move(CGData), std::move(loc)), MSrc(Src), MDst(Dst),
380 MSrcPitch(SrcPitch), MDstPitch(DstPitch), MWidth(Width),
393 std::vector<char> MPattern;
400 CGFill2DUSM(std::vector<char> Pattern,
void *DstPtr,
size_t Pitch,
403 :
CG(
Fill2DUSM, std::move(CGData), std::move(loc)),
404 MPattern(std::move(Pattern)), MDst(DstPtr), MPitch(Pitch),
405 MWidth(Width), MHeight(Height) {}
410 const std::vector<char> &
getPattern()
const {
return MPattern; }
425 :
CG(
Memset2DUSM, std::move(CGData), std::move(loc)), MValue(Value),
426 MDst(DstPtr), MPitch(Pitch), MWidth(Width), MHeight(Height) {}
447 PipeName(Name), Blocking(Block), HostPtr(Ptr), TypeSize(Size),
460 void *MDeviceGlobalPtr;
461 bool MIsDeviceImageScoped;
467 bool IsDeviceImageScoped,
size_t NumBytes,
size_t Offset,
471 MDeviceGlobalPtr(DeviceGlobalPtr),
472 MIsDeviceImageScoped(IsDeviceImageScoped), MNumBytes(NumBytes),
484 void *MDeviceGlobalPtr;
486 bool MIsDeviceImageScoped;
492 bool IsDeviceImageScoped,
size_t NumBytes,
496 MDeviceGlobalPtr(DeviceGlobalPtr), MDest(Dest),
497 MIsDeviceImageScoped(IsDeviceImageScoped), MNumBytes(NumBytes),
527 :
CG(
CopyImage, std::move(CGData), std::move(loc)), MSrc(Src), MDst(Dst),
528 MImageDesc(ImageDesc), MImageFormat(ImageFormat),
529 MImageCopyFlags(ImageCopyFlags), MSrcOffset(SrcOffset),
530 MDstOffset(DstOffset), MHostExtent(HostExtent),
531 MCopyExtent(CopyExtent) {}
538 return MImageCopyFlags;
555 MInteropSemaphoreHandle(InteropSemaphoreHandle) {}
558 return MInteropSemaphoreHandle;
571 MInteropSemaphoreHandle(InteropSemaphoreHandle) {}
574 return MInteropSemaphoreHandle;
582 std::shared_ptr<sycl::ext::oneapi::experimental::detail::exec_graph_impl>
587 const std::shared_ptr<
The file contains implementations of accessor class.
"Advise USM" command group class.
CGAdviseUSM(void *DstPtr, size_t Length, pi_mem_advice Advice, CG::StorageInitHelper CGData, CGTYPE Type, detail::code_location loc={})
pi_mem_advice getAdvice()
CGBarrier(std::vector< detail::EventImplPtr > EventsWaitWithBarrier, CG::StorageInitHelper CGData, CGTYPE Type, detail::code_location loc={})
std::vector< detail::EventImplPtr > MEventsWaitWithBarrier
"Copy 2D USM" command group class.
size_t getDstPitch() const
size_t getSrcPitch() const
CGCopy2DUSM(void *Src, void *Dst, size_t SrcPitch, size_t DstPitch, size_t Width, size_t Height, CG::StorageInitHelper CGData, detail::code_location loc={})
"Copy to device_global" command group class.
void * getDeviceGlobalPtr()
bool isDeviceImageScoped()
CGCopyFromDeviceGlobal(void *DeviceGlobalPtr, void *Dest, bool IsDeviceImageScoped, size_t NumBytes, size_t Offset, CG::StorageInitHelper CGData, detail::code_location loc={})
"Copy Image" command group class.
sycl::detail::pi::PiImageOffset getDstOffset() const
sycl::detail::pi::PiImageCopyFlags getCopyFlags() const
CGCopyImage(void *Src, void *Dst, sycl::detail::pi::PiMemImageDesc ImageDesc, sycl::detail::pi::PiMemImageFormat ImageFormat, sycl::detail::pi::PiImageCopyFlags ImageCopyFlags, sycl::detail::pi::PiImageOffset SrcOffset, sycl::detail::pi::PiImageOffset DstOffset, sycl::detail::pi::PiImageRegion HostExtent, sycl::detail::pi::PiImageRegion CopyExtent, CG::StorageInitHelper CGData, detail::code_location loc={})
sycl::detail::pi::PiImageRegion getCopyExtent() const
sycl::detail::pi::PiImageOffset getSrcOffset() const
sycl::detail::pi::PiImageRegion getHostExtent() const
sycl::detail::pi::PiMemImageFormat getFormat() const
sycl::detail::pi::PiMemImageDesc getDesc() const
"Copy to device_global" command group class.
void * getDeviceGlobalPtr()
CGCopyToDeviceGlobal(void *Src, void *DeviceGlobalPtr, bool IsDeviceImageScoped, size_t NumBytes, size_t Offset, CG::StorageInitHelper CGData, detail::code_location loc={})
bool isDeviceImageScoped()
"Copy USM" command group class.
CGCopyUSM(void *Src, void *Dst, size_t Length, CG::StorageInitHelper CGData, detail::code_location loc={})
"Copy memory" command group class.
void clearAuxiliaryResources() override
std::vector< std::shared_ptr< const void > > getAuxiliaryResources() const override
CGCopy(CGTYPE CopyType, void *Src, void *Dst, CG::StorageInitHelper CGData, std::vector< std::shared_ptr< const void >> AuxiliaryResources, detail::code_location loc={})
"Execute command-buffer" command group class.
sycl::detail::pi::PiExtCommandBuffer MCommandBuffer
CGExecCommandBuffer(const sycl::detail::pi::PiExtCommandBuffer &CommandBuffer, const std::shared_ptr< sycl::ext::oneapi::experimental::detail::exec_graph_impl > &ExecGraph, CG::StorageInitHelper CGData)
std::shared_ptr< sycl::ext::oneapi::experimental::detail::exec_graph_impl > MExecGraph
"Execute kernel" command group class.
std::shared_ptr< detail::kernel_bundle_impl > MKernelBundle
std::vector< std::shared_ptr< const void > > getAuxiliaryResources() const override
std::vector< std::shared_ptr< const void > > MAuxiliaryResources
void clearAuxiliaryResources() override
std::string getKernelName() const
std::vector< ArgDesc > MArgs
bool MKernelIsCooperative
NDRDescT MNDRDesc
Stores ND-range description.
CGExecKernel(NDRDescT NDRDesc, std::shared_ptr< HostKernelBase > HKernel, std::shared_ptr< detail::kernel_impl > SyclKernel, std::shared_ptr< detail::kernel_bundle_impl > KernelBundle, CG::StorageInitHelper CGData, std::vector< ArgDesc > Args, std::string KernelName, std::vector< std::shared_ptr< detail::stream_impl >> Streams, std::vector< std::shared_ptr< const void >> AuxiliaryResources, CGTYPE Type, sycl::detail::pi::PiKernelCacheConfig KernelCacheConfig, bool KernelIsCooperative, detail::code_location loc={})
sycl::detail::pi::PiKernelCacheConfig MKernelCacheConfig
std::shared_ptr< detail::kernel_impl > MSyclKernel
std::shared_ptr< HostKernelBase > MHostKernel
CGExecKernel(const CGExecKernel &CGExec)=default
std::vector< std::shared_ptr< detail::stream_impl > > getStreams() const
std::vector< std::shared_ptr< detail::stream_impl > > MStreams
std::shared_ptr< detail::kernel_bundle_impl > getKernelBundle()
std::vector< ArgDesc > getArguments() const
"Fill 2D USM" command group class.
CGFill2DUSM(std::vector< char > Pattern, void *DstPtr, size_t Pitch, size_t Width, size_t Height, CG::StorageInitHelper CGData, detail::code_location loc={})
const std::vector< char > & getPattern() const
"Fill USM" command group class.
CGFillUSM(std::vector< char > Pattern, void *DstPtr, size_t Length, CG::StorageInitHelper CGData, detail::code_location loc={})
"Fill memory" command group class.
std::vector< char > MPattern
AccessorImplHost * getReqToFill()
CGFill(std::vector< char > Pattern, void *Ptr, CG::StorageInitHelper CGData, detail::code_location loc={})
std::unique_ptr< HostTask > MHostTask
CGHostTask(std::unique_ptr< HostTask > HostTask, std::shared_ptr< detail::queue_impl > Queue, std::shared_ptr< detail::context_impl > Context, std::vector< ArgDesc > Args, CG::StorageInitHelper CGData, CGTYPE Type, detail::code_location loc={})
std::shared_ptr< detail::context_impl > MContext
std::shared_ptr< detail::queue_impl > MQueue
std::vector< ArgDesc > MArgs
"Memset 2D USM" command group class.
CGMemset2DUSM(char Value, void *DstPtr, size_t Pitch, size_t Width, size_t Height, CG::StorageInitHelper CGData, detail::code_location loc={})
"Prefetch USM" command group class.
CGPrefetchUSM(void *DstPtr, size_t Length, CG::StorageInitHelper CGData, detail::code_location loc={})
"ReadWriteHostPipe" command group class.
std::string getPipeName()
CGReadWriteHostPipe(const std::string &Name, bool Block, void *Ptr, size_t Size, bool Read, CG::StorageInitHelper CGData, detail::code_location loc={})
"Semaphore Signal" command group class.
sycl::detail::pi::PiInteropSemaphoreHandle getInteropSemaphoreHandle() const
CGSemaphoreSignal(sycl::detail::pi::PiInteropSemaphoreHandle InteropSemaphoreHandle, CG::StorageInitHelper CGData, detail::code_location loc={})
"Semaphore Wait" command group class.
CGSemaphoreWait(sycl::detail::pi::PiInteropSemaphoreHandle InteropSemaphoreHandle, CG::StorageInitHelper CGData, detail::code_location loc={})
sycl::detail::pi::PiInteropSemaphoreHandle getInteropSemaphoreHandle() const
"Update host" command group class.
AccessorImplHost * getReqToUpdate()
CGUpdateHost(void *Ptr, CG::StorageInitHelper CGData, detail::code_location loc={})
Base class for all types of command groups.
std::vector< detail::AccessorImplPtr > & getAccStorage()
CG(CGTYPE Type, StorageInitHelper D, detail::code_location loc={})
std::vector< detail::EventImplPtr > & getEvents()
CG(const CG &CommandGroup)=default
std::vector< std::vector< char > > & getArgsStorage()
virtual void clearAuxiliaryResources()
virtual std::vector< std::shared_ptr< const void > > getAuxiliaryResources() const
std::vector< AccessorImplHost * > & getRequirements()
CG(CG &&CommandGroup)=default
std::vector< std::shared_ptr< const void > > & getSharedPtrStorage()
CGTYPE
Type of the command group.
std::string MFunctionName
The class is an impl counterpart of the sycl::kernel_bundle.
Class representing the implementation of command_graph<executable>.
::pi_interop_semaphore_handle PiInteropSemaphoreHandle
std::shared_ptr< event_impl > EventImplPtr
C++ wrapper of extern "C" PI interfaces.
StorageInitHelper(StorageInitHelper &&)=default
std::vector< detail::AccessorImplPtr > MAccStorage
Storage for accessors.
std::vector< std::vector< char > > MArgsStorage
Storage for standard layout arguments.
StorageInitHelper()=default
StorageInitHelper(std::vector< std::vector< char >> ArgsStorage, std::vector< detail::AccessorImplPtr > AccStorage, std::vector< std::shared_ptr< const void >> SharedPtrStorage, std::vector< AccessorImplHost * > Requirements, std::vector< detail::EventImplPtr > Events)
std::vector< std::shared_ptr< const void > > MSharedPtrStorage
Storage for shared_ptrs.
std::vector< detail::EventImplPtr > MEvents
List of events that order the execution of this CG.
StorageInitHelper(const StorageInitHelper &)=default
std::vector< AccessorImplHost * > MRequirements
List of requirements that specify which memory is needed for the command group to be executed.