The AllocaSubBuf command enqueues creation of sub-buffer of memory object. More...
#include <detail/scheduler/commands.hpp>
Public Member Functions | |
AllocaSubBufCommand (QueueImplPtr Queue, Requirement Req, AllocaCommandBase *ParentAlloca, std::vector< Command * > &ToEnqueue, std::vector< Command * > &ToCleanUp) | |
void * | getMemAllocation () const final |
void | printDot (std::ostream &Stream) const final |
AllocaCommandBase * | getParentAlloca () |
void | emitInstrumentationData () override |
Instrumentation method which emits telemetry data. More... | |
![]() | |
AllocaCommandBase (CommandType Type, QueueImplPtr Queue, Requirement Req, AllocaCommandBase *LinkedAllocaCmd) | |
ReleaseCommand * | getReleaseCmd () |
SYCLMemObjI * | getSYCLMemObj () const |
const Requirement * | getRequirement () const final |
bool | producesPiEvent () const final |
Returns true iff the command produces a PI event on non-host devices. More... | |
bool | supportsPostEnqueueCleanup () const final |
Returns true iff this command can be freed by post enqueue cleanup. More... | |
![]() | |
Command (CommandType Type, QueueImplPtr Queue) | |
It is safe to bind MPreparedDepsEvents and MPreparedHostDepsEvents references to event_impl class members because Command should not outlive the event connected to it. More... | |
Command * | addDep (DepDesc NewDep, std::vector< Command * > &ToCleanUp) |
Command * | addDep (EventImplPtr Event, std::vector< Command * > &ToCleanUp) |
void | addUser (Command *NewUser) |
CommandType | getType () const |
virtual bool | enqueue (EnqueueResultT &EnqueueResult, BlockingT Blocking, std::vector< Command * > &ToCleanUp) |
Checks if the command is enqueued, and calls enqueueImp. More... | |
bool | isFinished () |
bool | isSuccessfullyEnqueued () const |
bool | isEnqueueBlocked () const |
const QueueImplPtr & | getQueue () const |
const QueueImplPtr & | getSubmittedQueue () const |
const EventImplPtr & | getEvent () const |
void | emitInstrumentationDataProxy () |
Proxy method which calls emitInstrumentationData. More... | |
void | resolveReleaseDependencies (std::set< Command * > &list) |
Looks at all the dependencies for the release command and enables instrumentation to report these dependencies as edges. More... | |
void | emitEdgeEventForCommandDependence (Command *Cmd, void *ObjAddr, bool IsCommand, std::optional< access::mode > AccMode=std::nullopt) |
Creates an edge event when the dependency is a command. More... | |
void | emitEdgeEventForEventDependence (Command *Cmd, RT::PiEvent &EventAddr) |
Creates an edge event when the dependency is an event. More... | |
void | emitEnqueuedEventSignal (RT::PiEvent &PiEventAddr) |
Creates a signal event with the enqueued kernel event handle. More... | |
uint64_t | makeTraceEventProlog (void *MAddress) |
Create a trace event of node_create type; this must be guarded by a check for xptiTraceEnabled(). More... | |
void | makeTraceEventEpilog () |
If prolog has been run, run epilog; this must be guarded by a check for xptiTraceEnabled(). More... | |
void | emitInstrumentation (uint16_t Type, const char *Txt=nullptr) |
Emits an event of Type. More... | |
virtual | ~Command () |
const char * | getBlockReason () const |
virtual const ContextImplPtr & | getWorkerContext () const |
Get the context of the queue this command will be submitted to. More... | |
virtual const QueueImplPtr & | getWorkerQueue () const |
Get the queue this command will be submitted to. More... | |
const std::vector< EventImplPtr > & | getPreparedHostDepsEvents () const |
Additional Inherited Members | |
![]() | |
enum | CommandType { RUN_CG, COPY_MEMORY, ALLOCA, ALLOCA_SUB_BUF, RELEASE, MAP_MEM_OBJ, UNMAP_MEM_OBJ, UPDATE_REQUIREMENT, EMPTY_TASK, HOST_TASK } |
enum | BlockReason : int { BlockReason::HostAccessor = 0, BlockReason::HostTask } |
![]() | |
void * | MMemAllocation = nullptr |
AllocaCommandBase * | MLinkedAllocaCmd = nullptr |
Alloca command linked with current command. More... | |
bool | MIsActive = true |
Indicates that current alloca is active one. More... | |
bool | MIsLeaderAlloca = true |
Indicates that the command owns memory allocation in case of connected alloca command. More... | |
![]() | |
std::vector< DepDesc > | MDeps |
Contains list of dependencies(edges) More... | |
std::unordered_set< Command * > | MUsers |
Contains list of commands that depend on the command. More... | |
bool | MIsBlockable = false |
Indicates whether the command can be blocked from enqueueing. More... | |
unsigned | MLeafCounter = 0 |
Counts the number of memory objects this command is a leaf for. More... | |
Marks | MMarks |
Used for marking the node during graph traversal. More... | |
BlockReason | MBlockReason |
std::atomic< EnqueueResultT::ResultT > | MEnqueueStatus |
Describes the status of the command. More... | |
void * | MTraceEvent = nullptr |
The event for node_create and task_begin. More... | |
int32_t | MStreamID = -1 |
The stream under which the traces are emitted. More... | |
void * | MAddress = nullptr |
Reserved for storing the object address such as SPIR-V or memory object address. More... | |
std::string | MAddressString |
Buffer to build the address string. More... | |
std::string | MCommandNodeType |
Buffer to build the command node type. More... | |
std::string | MCommandName |
Buffer to build the command end-user understandable name. More... | |
bool | MTraceEventPrologComplete = false |
Flag to indicate if makeTraceEventProlog() has been run. More... | |
bool | MFirstInstance = false |
Flag to indicate if this is the first time we are seeing this payload. More... | |
uint64_t | MInstanceID = 0 |
Instance ID tracked for the command. More... | |
bool | MShouldCompleteEventIfPossible = true |
bool | MPostEnqueueCleanup = false |
Indicates that the node will be freed by cleanup after enqueue. More... | |
![]() | |
void | waitForEvents (QueueImplPtr Queue, std::vector< EventImplPtr > &RawEvents, RT::PiEvent &Event) |
void | waitForPreparedHostEvents () const |
Command * | processDepEvent (EventImplPtr DepEvent, const DepDesc &Dep, std::vector< Command * > &ToCleanUp) |
Perform glueing of events from different contexts. More... | |
![]() | |
Requirement | MRequirement |
ReleaseCommand | MReleaseCmd |
![]() | |
QueueImplPtr | MQueue |
QueueImplPtr | MSubmittedQueue |
EventImplPtr | MEvent |
std::vector< EventImplPtr > & | MPreparedDepsEvents |
Dependency events prepared for waiting by backend. More... | |
std::vector< EventImplPtr > & | MPreparedHostDepsEvents |
CommandType | MType |
The type of the command. More... | |
std::mutex | MEnqueueMtx |
Mutex used to protect enqueueing from race conditions. More... | |
The AllocaSubBuf command enqueues creation of sub-buffer of memory object.
Definition at line 424 of file commands.hpp.
cl::sycl::detail::AllocaSubBufCommand::AllocaSubBufCommand | ( | QueueImplPtr | Queue, |
Requirement | Req, | ||
AllocaCommandBase * | ParentAlloca, | ||
std::vector< Command * > & | ToEnqueue, | ||
std::vector< Command * > & | ToCleanUp | ||
) |
Definition at line 946 of file commands.cpp.
References cl::sycl::detail::Command::addDep(), cl::sycl::detail::Command::emitInstrumentationDataProxy(), and cl::sycl::detail::AllocaCommandBase::getRequirement().
|
overridevirtual |
Instrumentation method which emits telemetry data.
Reimplemented from cl::sycl::detail::AllocaCommandBase.
Definition at line 964 of file commands.cpp.
References cl::sycl::detail::AccessorImplHost::MAccessRange, cl::sycl::detail::Command::makeTraceEventEpilog(), cl::sycl::detail::Command::MFirstInstance, cl::sycl::detail::AccessorImplHost::MOffsetInBytes, cl::sycl::detail::AllocaCommandBase::MRequirement, and cl::sycl::detail::Command::MTraceEvent.
|
finalvirtual |
Implements cl::sycl::detail::AllocaCommandBase.
Definition at line 983 of file commands.cpp.
References cl::sycl::detail::AllocaCommandBase::getMemAllocation(), cl::sycl::detail::AllocaCommandBase::MMemAllocation, cl::sycl::detail::AccessorImplHost::MOffsetInBytes, cl::sycl::detail::Command::MQueue, and cl::sycl::detail::AllocaCommandBase::MRequirement.
|
inline |
Definition at line 433 of file commands.hpp.
|
finalvirtual |
Implements cl::sycl::detail::Command.
Definition at line 1010 of file commands.cpp.
References cl::sycl::detail::accessModeToString(), cl::sycl::detail::deviceToString(), cl::sycl::detail::AccessorImplHost::MAccessRange, cl::sycl::detail::Command::MDeps, cl::sycl::detail::AccessorImplHost::MOffsetInBytes, cl::sycl::detail::Command::MQueue, cl::sycl::detail::AllocaCommandBase::MRequirement, and cl::sycl::detail::AccessorImplHost::MSYCLMemObj.