The empty command does nothing during enqueue. More...
#include <detail/scheduler/commands.hpp>
Public Member Functions | |
EmptyCommand (QueueImplPtr Queue) | |
void | printDot (std::ostream &Stream) const final |
const Requirement * | getRequirement () const final |
void | addRequirement (Command *DepCmd, AllocaCommandBase *AllocaCmd, const Requirement *Req) |
void | emitInstrumentationData () override |
Instrumentation method which emits telemetry data. More... | |
bool | producesPiEvent () const final |
Returns true iff the command produces a PI event on non-host devices. 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 |
bool | isBlocking () const |
void | addBlockedUserUnique (const EventImplPtr &NewUser) |
const QueueImplPtr & | getQueue () 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... | |
const QueueImplPtr & | getWorkerQueue () const |
Get the queue this command will be submitted to. More... | |
virtual bool | supportsPostEnqueueCleanup () const |
Returns true iff this command can be freed by post enqueue cleanup. More... | |
virtual bool | readyForCleanup () const |
Returns true iff this command is ready to be submitted for cleanup. More... | |
std::vector< RT::PiEvent > | getPiEvents (const std::vector< EventImplPtr > &EventImpls) const |
Collect PI events from EventImpls and filter out some of them in case of in order queue. More... | |
std::vector< RT::PiEvent > | getPiEventsBlocking (const std::vector< EventImplPtr > &EventImpls) const |
Collect PI events from EventImpls and filter out some of them in case of in order queue. More... | |
bool | isHostTask () const |
const std::vector< EventImplPtr > & | getPreparedHostDepsEvents () const |
const std::vector< EventImplPtr > & | getPreparedDepsEvents () const |
void | copySubmissionCodeLocation () |
void | clearAllDependencies () |
Clear all dependency events This should only be used if a command is about to be deleted without being executed before that. More... | |
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, FUSION } |
enum | BlockReason : int { BlockReason::HostAccessor = 0, BlockReason::HostTask } |
![]() | |
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... | |
code_location | MSubmissionCodeLocation |
Represents code location of command submission to SYCL API, assigned with the valid value only if command execution is async (host task) or delayed (blocked by host task). More... | |
std::string | MSubmissionFileName |
Introduces string to handle memory management since code_location struct works with raw char arrays. More... | |
std::string | MSubmissionFunctionName |
bool | MShouldCompleteEventIfPossible = true |
bool | MMarkedForCleanup = false |
Indicates that the node will be freed by graph cleanup. More... | |
std::vector< EventImplPtr > | MBlockedUsers |
Contains list of commands that depends on the host command explicitly (by depends_on). More... | |
std::mutex | MBlockedUsersMutex |
![]() | |
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... | |
![]() | |
QueueImplPtr | MQueue |
EventImplPtr | MEvent |
QueueImplPtr | MWorkerQueue |
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 empty command does nothing during enqueue.
The task can be used to implement lock in the graph, or to merge several nodes into one.
Definition at line 389 of file commands.hpp.
sycl::_V1::detail::EmptyCommand::EmptyCommand | ( | QueueImplPtr | Queue | ) |
Definition at line 1662 of file commands.cpp.
References sycl::_V1::detail::Command::emitInstrumentationDataProxy().
void sycl::_V1::detail::EmptyCommand::addRequirement | ( | Command * | DepCmd, |
AllocaCommandBase * | AllocaCmd, | ||
const Requirement * | Req | ||
) |
Definition at line 1674 of file commands.cpp.
References sycl::_V1::detail::Command::addDep().
|
overridevirtual |
Instrumentation method which emits telemetry data.
Implements sycl::_V1::detail::Command.
Definition at line 1690 of file commands.cpp.
References sycl::_V1::detail::deviceToString(), sycl::_V1::detail::getSyclObjImpl(), sycl::_V1::detail::Command::MAddress, sycl::_V1::detail::Command::makeTraceEventEpilog(), sycl::_V1::detail::Command::makeTraceEventProlog(), sycl::_V1::detail::Command::MFirstInstance, sycl::_V1::detail::Command::MQueue, sycl::_V1::detail::AccessorImplHost::MSYCLMemObj, and sycl::_V1::detail::Command::MTraceEvent.
|
inlinefinalvirtual |
Reimplemented from sycl::_V1::detail::Command.
Definition at line 394 of file commands.hpp.
|
finalvirtual |
Implements sycl::_V1::detail::Command.
Definition at line 1719 of file commands.cpp.
References sycl::_V1::detail::accessModeToString(), and sycl::_V1::detail::Command::MDeps.
|
finalvirtual |
Returns true iff the command produces a PI event on non-host devices.
Reimplemented from sycl::_V1::detail::Command.
Definition at line 1737 of file commands.cpp.