Defined in File operator_node.h
public mgb::cg::OperatorNodeBase (Class OperatorNodeBase)
executable used internally for cg
Subclassed by mgb::cg::OperatorNodeBase
append the dependencies into record
Some deps might be moved; the original operator should not be used again.
The default implementation does nothing
dependency for execute()
This is used when comp_node_seq_recorder_level is 2: the objects needed by kernels in execute() should be moved to this object and the parent operator class would later be destructed.
if this returns true, do_runtime_check() would be called before each run
operator execution environment
When GraphExecutable::execute() is called, it should add tasks into the ExecEnv. The tasks added to ExecEnv would be invoked by a scheduler to perform actual computing.
Operator code usually only calls dispatch_on_comp_node()
Note: The ExecEnv class exists as an abstraction layer for controlling asynchronous kernel dispatching behavior. CUDA has a limited task queue so we have to use a dedicated CPU thread for each CUDA stream (it can be treated as a blocking queue). But for CPU we have our own unlimited dispatch queue so the ExecEnv can be synchonous.
add a task to the queue corresponding to given comp node
like dispatch_on_comp_node, but with specific mask other than current opr mask
pause execution on all threads if there are async dispatch threads
This is currently only used by memory defragmenter.
resume execution (cancel previous pause_exec())