DPC++ Runtime
Runtime libraries for oneAPI DPC++
sycl::_V1::detail::Command Class Referenceabstract

The Command class represents some action that needs to be performed on one or more memory objects. More...

#include <detail/scheduler/commands.hpp>

Inheritance diagram for sycl::_V1::detail::Command:
Collaboration diagram for sycl::_V1::detail::Command:

Classes

struct  Marks
 

Public Types

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
}
 
enum class  BlockReason : int { HostAccessor = 0 , HostTask }
 

Public Member Functions

 Command (CommandType Type, QueueImplPtr Queue, sycl::detail::pi::PiExtCommandBuffer CommandBuffer=nullptr, const std::vector< sycl::detail::pi::PiExtSyncPoint > &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...
 
CommandaddDep (DepDesc NewDep, std::vector< Command * > &ToCleanUp)
 
CommandaddDep (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 QueueImplPtrgetQueue () const
 
const EventImplPtrgetEvent () const
 
void emitInstrumentationDataProxy ()
 Proxy method which calls emitInstrumentationData. More...
 
virtual void emitInstrumentationData ()=0
 Instrumentation method which emits telemetry data. 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, sycl::detail::pi::PiEvent &EventAddr)
 Creates an edge event when the dependency is an event. More...
 
void emitEnqueuedEventSignal (sycl::detail::pi::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 void printDot (std::ostream &Stream) const =0
 
virtual const RequirementgetRequirement () const
 
virtual ~Command ()
 
const char * getBlockReason () const
 
virtual const ContextImplPtrgetWorkerContext () const
 Get the context of the queue this command will be submitted to. More...
 
const QueueImplPtrgetWorkerQueue () const
 Get the queue this command will be submitted to. More...
 
virtual bool producesPiEvent () const
 Returns true iff the command produces a PI event on non-host devices. 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< sycl::detail::pi::PiEventgetPiEvents (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< sycl::detail::pi::PiEventgetPiEventsBlocking (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
 
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...
 

Public Attributes

std::vector< DepDescMDeps
 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::ResultTMEnqueueStatus
 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< EventImplPtrMBlockedUsers
 Contains list of commands that depends on the host command explicitly (by depends_on). More...
 
std::mutex MBlockedUsersMutex
 

Protected Member Functions

void waitForEvents (QueueImplPtr Queue, std::vector< EventImplPtr > &RawEvents, sycl::detail::pi::PiEvent &Event)
 
void waitForPreparedHostEvents () const
 
CommandprocessDepEvent (EventImplPtr DepEvent, const DepDesc &Dep, std::vector< Command * > &ToCleanUp)
 Perform glueing of events from different contexts. More...
 
virtual pi_int32 enqueueImp ()=0
 Private interface. Derived classes should implement this method. More...
 
sycl::detail::pi::PiExtCommandBuffer getCommandBuffer () const
 Gets the command buffer (if any) associated with this command. More...
 

Protected Attributes

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...
 
sycl::detail::pi::PiExtCommandBuffer MCommandBuffer
 CommandBuffer which will be used to submit to instead of the queue, if set. More...
 
std::vector< sycl::detail::pi::PiExtSyncPointMSyncPointDeps
 List of sync points for submissions to a command buffer. More...
 

Friends

class DispatchHostTask
 

Detailed Description

The Command class represents some action that needs to be performed on one or more memory objects.

The Command has a vector of DepDesc objects that represent dependencies of the command. It has a vector of pointers to commands that depend on the command. It has a pointer to a queue object and an event that is associated with the command.

Definition at line 102 of file commands.hpp.

Member Enumeration Documentation

◆ BlockReason

Enumerator
HostAccessor 
HostTask 

Definition at line 331 of file commands.hpp.

◆ CommandType

Enumerator
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 

Definition at line 104 of file commands.hpp.

Constructor & Destructor Documentation

◆ Command()

sycl::_V1::detail::Command::Command ( CommandType  Type,
QueueImplPtr  Queue,
sycl::detail::pi::PiExtCommandBuffer  CommandBuffer = nullptr,
const std::vector< sycl::detail::pi::PiExtSyncPoint > &  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.

Definition at line 509 of file commands.cpp.

References MEnqueueStatus, MEvent, MQueue, MStreamID, MWorkerQueue, sycl::_V1::detail::SYCL_STREAM_NAME, and sycl::_V1::detail::EnqueueResultT::SyclEnqueueReady.

◆ ~Command()

virtual sycl::_V1::detail::Command::~Command ( )
inlinevirtual

Definition at line 214 of file commands.hpp.

References MEvent.

Member Function Documentation

◆ addBlockedUserUnique()

void sycl::_V1::detail::Command::addBlockedUserUnique ( const EventImplPtr NewUser)
inline

◆ addDep() [1/2]

◆ addDep() [2/2]

Command * sycl::_V1::detail::Command::addDep ( EventImplPtr  Event,
std::vector< Command * > &  ToCleanUp 
)
Parameters
NewDepdependency to be added
ToCleanUpcontainer for commands that can be cleaned up.
Returns
an optional connection cmd to enqueue

Definition at line 782 of file commands.cpp.

References emitEdgeEventForEventDependence(), and processDepEvent().

◆ addUser()

void sycl::_V1::detail::Command::addUser ( Command NewUser)
inline

Definition at line 135 of file commands.hpp.

References MUsers.

Referenced by addDep(), and sycl::_V1::detail::Scheduler::GraphBuilder::connectDepEvent().

◆ clearAllDependencies()

void sycl::_V1::detail::Command::clearAllDependencies ( )
inline

Clear all dependency events This should only be used if a command is about to be deleted without being executed before that.

As of now, the only valid use case for this function is in kernel fusion, where the fused kernel commands are replaced by the fused command without ever being executed.

Definition at line 307 of file commands.hpp.

References MDeps, MPreparedDepsEvents, and MPreparedHostDepsEvents.

◆ copySubmissionCodeLocation()

void sycl::_V1::detail::Command::copySubmissionCodeLocation ( )

◆ emitEdgeEventForCommandDependence()

void sycl::_V1::detail::Command::emitEdgeEventForCommandDependence ( Command Cmd,
void *  ObjAddr,
bool  IsCommand,
std::optional< access::mode AccMode = std::nullopt 
)

Creates an edge event when the dependency is a command.

Method takes in void * for the address as adding a template function to the command group object maybe undesirable.

Parameters
CmdThe command object of the source of the edge
ObjAddrThe address that defines the edge dependency; it is the event address when the edge is for an event and a memory object address if it is due to an accessor
PrefixContains "event" if the dependency is an edge and contains the access mode to the buffer if it is due to an accessor
IsCommandTrue if the dependency has a command object as the source, false otherwise

Definition at line 550 of file commands.cpp.

References sycl::_V1::detail::accessModeToString(), MAddress, MStreamID, and MTraceEvent.

Referenced by addDep(), and emitEdgeEventForEventDependence().

◆ emitEdgeEventForEventDependence()

void sycl::_V1::detail::Command::emitEdgeEventForEventDependence ( Command Cmd,
sycl::detail::pi::PiEvent PiEventAddr 
)

Creates an edge event when the dependency is an event.

Creates an edge when the dependency is due to an event.

Parameters
CmdThe command object of the source of the edge
PiEventAddrThe address that defines the edge dependency, which in this case is an event

Definition at line 601 of file commands.cpp.

References emitEdgeEventForCommandDependence(), MAddress, MStreamID, and MTraceEvent.

Referenced by addDep().

◆ emitEnqueuedEventSignal()

void sycl::_V1::detail::Command::emitEnqueuedEventSignal ( sycl::detail::pi::PiEvent PiEventAddr)

Creates a signal event with the enqueued kernel event handle.

Definition at line 797 of file commands.cpp.

References MInstanceID, MStreamID, and MTraceEvent.

Referenced by enqueue().

◆ emitInstrumentation()

void sycl::_V1::detail::Command::emitInstrumentation ( uint16_t  Type,
const char *  Txt = nullptr 
)

Emits an event of Type.

Definition at line 806 of file commands.cpp.

References MInstanceID, MStreamID, and MTraceEvent.

Referenced by enqueue().

◆ emitInstrumentationData()

◆ emitInstrumentationDataProxy()

◆ enqueue()

bool sycl::_V1::detail::Command::enqueue ( EnqueueResultT EnqueueResult,
BlockingT  Blocking,
std::vector< Command * > &  ToCleanUp 
)
virtual

Checks if the command is enqueued, and calls enqueueImp.

Parameters
EnqueueResultis set to the specific status if enqueue failed.
Blockingif this argument is true, function will wait for the command to be unblocked before calling enqueueImp.
ToCleanUpcontainer for commands that can be cleaned up.
Returns
true if the command is enqueued.

Definition at line 817 of file commands.cpp.

References emitEnqueuedEventSignal(), emitInstrumentation(), enqueueImp(), getBlockReason(), MEnqueueMtx, MEnqueueStatus, MEvent, MIsBlockable, MLeafCounter, MMarkedForCleanup, MShouldCompleteEventIfPossible, MSubmissionCodeLocation, supportsPostEnqueueCleanup(), sycl::_V1::detail::EnqueueResultT::SyclEnqueueBlocked, sycl::_V1::detail::EnqueueResultT::SyclEnqueueFailed, and sycl::_V1::detail::EnqueueResultT::SyclEnqueueSuccess.

Referenced by sycl::_V1::detail::Scheduler::GraphProcessor::enqueueCommand().

◆ enqueueImp()

virtual pi_int32 sycl::_V1::detail::Command::enqueueImp ( )
protectedpure virtual

Private interface. Derived classes should implement this method.

Referenced by enqueue().

◆ getBlockReason()

const char * sycl::_V1::detail::Command::getBlockReason ( ) const

Definition at line 950 of file commands.cpp.

References HostAccessor, HostTask, and MBlockReason.

Referenced by enqueue().

◆ getCommandBuffer()

sycl::detail::pi::PiExtCommandBuffer sycl::_V1::detail::Command::getCommandBuffer ( ) const
inlineprotected

Gets the command buffer (if any) associated with this command.

Definition at line 397 of file commands.hpp.

References MCommandBuffer.

◆ getEvent()

◆ getPiEvents()

std::vector< sycl::detail::pi::PiEvent > sycl::_V1::detail::Command::getPiEvents ( const std::vector< EventImplPtr > &  EventImpls) const

Collect PI events from EventImpls and filter out some of them in case of in order queue.

Definition at line 232 of file commands.cpp.

References getWorkerQueue(), and isHostTask().

Referenced by waitForEvents().

◆ getPiEventsBlocking()

std::vector< sycl::detail::pi::PiEvent > sycl::_V1::detail::Command::getPiEventsBlocking ( const std::vector< EventImplPtr > &  EventImpls) const

Collect PI events from EventImpls and filter out some of them in case of in order queue.

Does blocking enqueue if event is expected to produce pi event but has empty native handle.

Definition at line 259 of file commands.cpp.

References sycl::_V1::detail::BLOCKING, sycl::_V1::detail::Scheduler::enqueueCommandForCG(), sycl::_V1::detail::Scheduler::getInstance(), getWorkerQueue(), isHostTask(), and producesPiEvent().

◆ getPreparedDepsEvents()

const std::vector<EventImplPtr>& sycl::_V1::detail::Command::getPreparedDepsEvents ( ) const
inline

◆ getPreparedHostDepsEvents()

const std::vector<EventImplPtr>& sycl::_V1::detail::Command::getPreparedHostDepsEvents ( ) const
inline

◆ getQueue()

◆ getRequirement()

◆ getType()

◆ getWorkerContext()

const ContextImplPtr & sycl::_V1::detail::Command::getWorkerContext ( ) const
virtual

Get the context of the queue this command will be submitted to.

Could differ from the context of MQueue for memory copy commands.

Reimplemented in sycl::_V1::detail::MemCpyCommandHost, and sycl::_V1::detail::MemCpyCommand.

Definition at line 739 of file commands.cpp.

References MQueue.

Referenced by sycl::_V1::detail::Scheduler::GraphBuilder::connectDepEvent().

◆ getWorkerQueue()

const QueueImplPtr & sycl::_V1::detail::Command::getWorkerQueue ( ) const

Get the queue this command will be submitted to.

Could differ from MQueue for memory copy commands.

Definition at line 743 of file commands.cpp.

References MWorkerQueue.

Referenced by getPiEvents(), getPiEventsBlocking(), sycl::_V1::detail::MemCpyCommand::getWorkerContext(), sycl::_V1::detail::MemCpyCommandHost::getWorkerContext(), processDepEvent(), and waitForEvents().

◆ isBlocking()

bool sycl::_V1::detail::Command::isBlocking ( ) const
inline

Definition at line 163 of file commands.hpp.

References isHostTask(), and MEvent.

Referenced by sycl::_V1::detail::Scheduler::GraphProcessor::handleBlockingCmd().

◆ isEnqueueBlocked()

bool sycl::_V1::detail::Command::isEnqueueBlocked ( ) const
inline

◆ isFinished()

bool sycl::_V1::detail::Command::isFinished ( )

◆ isFusable()

bool sycl::_V1::detail::Command::isFusable ( ) const

◆ isHostTask()

bool sycl::_V1::detail::Command::isHostTask ( ) const

Definition at line 296 of file commands.cpp.

References MType.

Referenced by getPiEvents(), getPiEventsBlocking(), and isBlocking().

◆ isSuccessfullyEnqueued()

bool sycl::_V1::detail::Command::isSuccessfullyEnqueued ( ) const
inline

◆ makeTraceEventEpilog()

◆ makeTraceEventProlog()

◆ printDot()

◆ processDepEvent()

Command * sycl::_V1::detail::Command::processDepEvent ( EventImplPtr  DepEvent,
const DepDesc Dep,
std::vector< Command * > &  ToCleanUp 
)
protected

Perform glueing of events from different contexts.

Parameters
DepEventevent this commands should depend on
Depoptional DepDesc to perform connection of events properly
ToCleanUpcontainer for commands that can be cleaned up.
Returns
returns an optional connection command to enqueue

Glueing (i.e. connecting) will be performed if and only if DepEvent is not from host context and its context doesn't match to context of this command. Context of this command is fetched via getWorkerContext().

Optionality of Dep is set by Dep.MDepCommand not equal to nullptr.

Definition at line 704 of file commands.cpp.

References sycl::_V1::detail::Scheduler::GraphBuilder::connectDepEvent(), sycl::_V1::detail::Scheduler::getInstance(), getWorkerQueue(), sycl::_V1::detail::Scheduler::MGraphBuilder, MPreparedDepsEvents, and MPreparedHostDepsEvents.

Referenced by addDep().

◆ producesPiEvent()

bool sycl::_V1::detail::Command::producesPiEvent ( ) const
virtual

◆ readyForCleanup()

bool sycl::_V1::detail::Command::readyForCleanup ( ) const
virtual

◆ resolveReleaseDependencies()

void sycl::_V1::detail::Command::resolveReleaseDependencies ( std::set< Command * > &  list)

Looks at all the dependencies for the release command and enables instrumentation to report these dependencies as edges.

Definition at line 908 of file commands.cpp.

References MAddress, MStreamID, MTraceEvent, and MType.

Referenced by sycl::_V1::detail::Scheduler::waitForRecordToFinish().

◆ supportsPostEnqueueCleanup()

bool sycl::_V1::detail::Command::supportsPostEnqueueCleanup ( ) const
virtual

Returns true iff this command can be freed by post enqueue cleanup.

Reimplemented in sycl::_V1::detail::ExecCGCommand, sycl::_V1::detail::AllocaCommandBase, and sycl::_V1::detail::ReleaseCommand.

Definition at line 750 of file commands.cpp.

Referenced by enqueue(), and sycl::_V1::detail::ExecCGCommand::supportsPostEnqueueCleanup().

◆ waitForEvents()

void sycl::_V1::detail::Command::waitForEvents ( QueueImplPtr  Queue,
std::vector< EventImplPtr > &  RawEvents,
sycl::detail::pi::PiEvent Event 
)
protected

◆ waitForPreparedHostEvents()

void sycl::_V1::detail::Command::waitForPreparedHostEvents ( ) const
protected

Definition at line 447 of file commands.cpp.

References MPreparedHostDepsEvents.

Friends And Related Function Documentation

◆ DispatchHostTask

friend class DispatchHostTask
friend

Definition at line 287 of file commands.hpp.

Member Data Documentation

◆ MAddress

◆ MAddressString

std::string sycl::_V1::detail::Command::MAddressString

Buffer to build the address string.

Definition at line 354 of file commands.hpp.

Referenced by makeTraceEventProlog().

◆ MBlockedUsers

std::vector<EventImplPtr> sycl::_V1::detail::Command::MBlockedUsers

Contains list of commands that depends on the host command explicitly (by depends_on).

Not involved in the cleanup process since it is one-way link and does not hold resources. Using EventImplPtr since enqueueUnblockedCommands and event.wait may intersect with command enqueue.

Definition at line 392 of file commands.hpp.

Referenced by addBlockedUserUnique(), and sycl::_V1::detail::Scheduler::NotifyHostTaskCompletion().

◆ MBlockedUsersMutex

std::mutex sycl::_V1::detail::Command::MBlockedUsersMutex

◆ MBlockReason

BlockReason sycl::_V1::detail::Command::MBlockReason

Definition at line 334 of file commands.hpp.

Referenced by getBlockReason(), and sycl::_V1::detail::isHostAccessorCmd().

◆ MCommandBuffer

sycl::detail::pi::PiExtCommandBuffer sycl::_V1::detail::Command::MCommandBuffer
protected

CommandBuffer which will be used to submit to instead of the queue, if set.

Definition at line 403 of file commands.hpp.

Referenced by getCommandBuffer(), and sycl::_V1::detail::ExecCGCommand::producesPiEvent().

◆ MCommandName

std::string sycl::_V1::detail::Command::MCommandName

Buffer to build the command end-user understandable name.

Definition at line 358 of file commands.hpp.

Referenced by sycl::_V1::detail::KernelFusionCommand::emitInstrumentationData(), and makeTraceEventProlog().

◆ MCommandNodeType

std::string sycl::_V1::detail::Command::MCommandNodeType

Buffer to build the command node type.

Definition at line 356 of file commands.hpp.

Referenced by sycl::_V1::detail::KernelFusionCommand::emitInstrumentationData(), makeTraceEventEpilog(), and makeTraceEventProlog().

◆ MDeps

◆ MEnqueueMtx

std::mutex sycl::_V1::detail::Command::MEnqueueMtx
protected

Mutex used to protect enqueueing from race conditions.

Definition at line 285 of file commands.hpp.

Referenced by enqueue().

◆ MEnqueueStatus

std::atomic<EnqueueResultT::ResultT> sycl::_V1::detail::Command::MEnqueueStatus

Describes the status of the command.

Definition at line 337 of file commands.hpp.

Referenced by Command(), enqueue(), isEnqueueBlocked(), isSuccessfullyEnqueued(), readyForCleanup(), and sycl::_V1::detail::Scheduler::releaseHostAccessor().

◆ MEvent

◆ MFirstInstance

◆ MInstanceID

◆ MIsBlockable

bool sycl::_V1::detail::Command::MIsBlockable = false

Indicates whether the command can be blocked from enqueueing.

Definition at line 318 of file commands.hpp.

Referenced by enqueue(), and isEnqueueBlocked().

◆ MLeafCounter

◆ MMarkedForCleanup

bool sycl::_V1::detail::Command::MMarkedForCleanup = false

Indicates that the node will be freed by graph cleanup.

Such nodes should be ignored by other cleanup mechanisms (e.g. during memory object removal).

Definition at line 385 of file commands.hpp.

Referenced by enqueue(), and sycl::_V1::detail::Scheduler::NotifyHostTaskCompletion().

◆ MMarks

Marks sycl::_V1::detail::Command::MMarks

Used for marking the node during graph traversal.

Definition at line 329 of file commands.hpp.

Referenced by sycl::_V1::detail::Scheduler::GraphBuilder::cleanupCommandsForRecord(), and sycl::_V1::detail::markNodeAsVisited().

◆ MPreparedDepsEvents

std::vector<EventImplPtr>& sycl::_V1::detail::Command::MPreparedDepsEvents
protected

Dependency events prepared for waiting by backend.

See processDepEvent for details.

Definition at line 256 of file commands.hpp.

Referenced by clearAllDependencies(), getPreparedDepsEvents(), and processDepEvent().

◆ MPreparedHostDepsEvents

std::vector<EventImplPtr>& sycl::_V1::detail::Command::MPreparedHostDepsEvents
protected

◆ MQueue

QueueImplPtr sycl::_V1::detail::Command::MQueue
protected

Definition at line 250 of file commands.hpp.

Referenced by Command(), sycl::_V1::detail::MemCpyCommand::emitInstrumentationData(), sycl::_V1::detail::MemCpyCommandHost::emitInstrumentationData(), sycl::_V1::detail::ExecCGCommand::emitInstrumentationData(), sycl::_V1::detail::UpdateHostRequirementCommand::emitInstrumentationData(), sycl::_V1::detail::KernelFusionCommand::emitInstrumentationData(), sycl::_V1::detail::EmptyCommand::emitInstrumentationData(), sycl::_V1::detail::ReleaseCommand::emitInstrumentationData(), sycl::_V1::detail::AllocaCommandBase::emitInstrumentationData(), sycl::_V1::detail::AllocaSubBufCommand::emitInstrumentationData(), sycl::_V1::detail::MapMemObject::emitInstrumentationData(), sycl::_V1::detail::UnMapMemObject::emitInstrumentationData(), sycl::_V1::detail::AllocaSubBufCommand::getMemAllocation(), getQueue(), getWorkerContext(), sycl::_V1::detail::MemCpyCommand::MemCpyCommand(), sycl::_V1::detail::MemCpyCommandHost::MemCpyCommandHost(), sycl::_V1::detail::ReleaseCommand::printDot(), sycl::_V1::detail::AllocaCommand::printDot(), sycl::_V1::detail::AllocaSubBufCommand::printDot(), sycl::_V1::detail::MapMemObject::printDot(), sycl::_V1::detail::UnMapMemObject::printDot(), sycl::_V1::detail::MemCpyCommand::printDot(), sycl::_V1::detail::MemCpyCommandHost::printDot(), sycl::_V1::detail::ExecCGCommand::printDot(), sycl::_V1::detail::UpdateHostRequirementCommand::printDot(), sycl::_V1::detail::KernelFusionCommand::printDot(), sycl::_V1::detail::UnMapMemObject::producesPiEvent(), sycl::_V1::detail::MemCpyCommand::producesPiEvent(), and sycl::_V1::detail::KernelFusionCommand::resetQueue().

◆ MShouldCompleteEventIfPossible

bool sycl::_V1::detail::Command::MShouldCompleteEventIfPossible = true

Definition at line 380 of file commands.hpp.

Referenced by enqueue().

◆ MStreamID

◆ MSubmissionCodeLocation

code_location sycl::_V1::detail::Command::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).

Definition at line 368 of file commands.hpp.

Referenced by copySubmissionCodeLocation(), enqueue(), and sycl::_V1::detail::DispatchHostTask::operator()().

◆ MSubmissionFileName

std::string sycl::_V1::detail::Command::MSubmissionFileName

Introduces string to handle memory management since code_location struct works with raw char arrays.

Definition at line 371 of file commands.hpp.

Referenced by copySubmissionCodeLocation().

◆ MSubmissionFunctionName

std::string sycl::_V1::detail::Command::MSubmissionFunctionName

Definition at line 372 of file commands.hpp.

Referenced by copySubmissionCodeLocation().

◆ MSyncPointDeps

std::vector<sycl::detail::pi::PiExtSyncPoint> sycl::_V1::detail::Command::MSyncPointDeps
protected

List of sync points for submissions to a command buffer.

Definition at line 405 of file commands.hpp.

◆ MTraceEvent

◆ MTraceEventPrologComplete

bool sycl::_V1::detail::Command::MTraceEventPrologComplete = false

Flag to indicate if makeTraceEventProlog() has been run.

Definition at line 360 of file commands.hpp.

Referenced by makeTraceEventEpilog(), and makeTraceEventProlog().

◆ MType

◆ MUsers

std::unordered_set<Command *> sycl::_V1::detail::Command::MUsers

◆ MWorkerQueue


The documentation for this class was generated from the following files: