The empty command does nothing during enqueue. More...
#include <detail/scheduler/commands.hpp>
Public Member Functions | |
EmptyCommand () | |
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 UR event on non-host devices. More... | |
![]() | |
Command (CommandType Type, QueueImplPtr Queue, ur_exp_command_buffer_handle_t CommandBuffer=nullptr, const std::vector< ur_exp_command_buffer_sync_point_t > &SyncPoints={}) | |
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, ur_event_handle_t &EventAddr) |
Creates an edge event when the dependency is an event. More... | |
void | emitEnqueuedEventSignal (ur_event_handle_t &UrEventAddr) |
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 ContextImplPtr | getWorkerContext () const |
Get the context of 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< ur_event_handle_t > | getUrEvents (const std::vector< EventImplPtr > &EventImpls) const |
Collect UR events from EventImpls and filter out some of them in case of in order queue. More... | |
std::vector< ur_event_handle_t > | getUrEventsBlocking (const std::vector< EventImplPtr > &EventImpls) const |
Collect UR events from EventImpls and filter out some of them in case of in order queue. More... | |
bool | isHostTask () const |
bool | isFusable () 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 , EXEC_CMD_BUFFER , UPDATE_CMD_BUFFER } |
enum class | BlockReason : int { HostAccessor = 0 , 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, ur_event_handle_t &Event) |
void | waitForPreparedHostEvents () const |
Command * | processDepEvent (EventImplPtr DepEvent, const DepDesc &Dep, std::vector< Command * > &ToCleanUp) |
Perform glueing of events from different contexts. More... | |
ur_exp_command_buffer_handle_t | getCommandBuffer () const |
Gets the command buffer (if any) associated with this command. 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... | |
ur_exp_command_buffer_handle_t | MCommandBuffer |
CommandBuffer which will be used to submit to instead of the queue, if set. More... | |
std::vector< ur_exp_command_buffer_sync_point_t > | MSyncPointDeps |
List of sync points for submissions to a command buffer. 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 415 of file commands.hpp.
sycl::_V1::detail::EmptyCommand::EmptyCommand | ( | ) |
Definition at line 1734 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 1745 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 1761 of file commands.cpp.
References 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::Command::MStreamID, sycl::_V1::detail::AccessorImplHost::MSYCLMemObj, and sycl::_V1::detail::Command::MTraceEvent.
|
inlinefinalvirtual |
Reimplemented from sycl::_V1::detail::Command.
Definition at line 420 of file commands.hpp.
|
finalvirtual |
Implements sycl::_V1::detail::Command.
Definition at line 1789 of file commands.cpp.
References sycl::_V1::detail::accessModeToString(), and sycl::_V1::detail::Command::MDeps.
|
finalvirtual |
Returns true iff the command produces a UR event on non-host devices.
Reimplemented from sycl::_V1::detail::Command.
Definition at line 1807 of file commands.cpp.