The release command enqueues release of a memory object instance allocated on Host or underlying framework. More...
#include <detail/scheduler/commands.hpp>
Public Member Functions | |
ReleaseCommand (QueueImplPtr Queue, AllocaCommandBase *AllocaCmd) | |
void | printDot (std::ostream &Stream) const final |
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... | |
bool | supportsPostEnqueueCleanup () const final |
Returns true iff this command can be freed by post enqueue cleanup. More... | |
bool | readyForCleanup () const final |
Returns true iff this command is ready to be submitted for cleanup. More... | |
![]() | |
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... | |
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, 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 const Requirement * | getRequirement () const |
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... | |
std::vector< sycl::detail::pi::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< sycl::detail::pi::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, EXEC_CMD_BUFFER } |
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, sycl::detail::pi::PiEvent &Event) |
void | waitForPreparedHostEvents () const |
Command * | processDepEvent (EventImplPtr DepEvent, const DepDesc &Dep, std::vector< Command * > &ToCleanUp) |
Perform glueing of events from different contexts. More... | |
sycl::detail::pi::PiExtCommandBuffer | 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... | |
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::PiExtSyncPoint > | MSyncPointDeps |
List of sync points for submissions to a command buffer. More... | |
The release command enqueues release of a memory object instance allocated on Host or underlying framework.
Definition at line 429 of file commands.hpp.
sycl::_V1::detail::ReleaseCommand::ReleaseCommand | ( | QueueImplPtr | Queue, |
AllocaCommandBase * | AllocaCmd | ||
) |
Definition at line 1165 of file commands.cpp.
References sycl::_V1::detail::Command::emitInstrumentationDataProxy().
|
overridevirtual |
Instrumentation method which emits telemetry data.
Implements sycl::_V1::detail::Command.
Definition at line 1170 of file commands.cpp.
References sycl::_V1::detail::deviceToString(), sycl::_V1::detail::AllocaCommandBase::getSYCLMemObj(), sycl::_V1::detail::getSyclObjImpl(), sycl::_V1::detail::Command::getType(), 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, and sycl::_V1::detail::Command::MTraceEvent.
|
finalvirtual |
Implements sycl::_V1::detail::Command.
Definition at line 1257 of file commands.cpp.
References sycl::_V1::detail::accessModeToString(), sycl::_V1::detail::deviceToString(), sycl::_V1::detail::AllocaCommandBase::getSYCLMemObj(), sycl::_V1::detail::Command::MDeps, and sycl::_V1::detail::Command::MQueue.
|
finalvirtual |
Returns true iff the command produces a PI event on non-host devices.
Reimplemented from sycl::_V1::detail::Command.
Definition at line 1275 of file commands.cpp.
|
finalvirtual |
Returns true iff this command is ready to be submitted for cleanup.
Reimplemented from sycl::_V1::detail::Command.
Definition at line 1279 of file commands.cpp.
|
finalvirtual |
Returns true iff this command can be freed by post enqueue cleanup.
Reimplemented from sycl::_V1::detail::Command.
Definition at line 1277 of file commands.cpp.