7 #ifndef PXR_EXEC_VDF_SPECULATION_EXECUTOR_H
8 #define PXR_EXEC_VDF_SPECULATION_EXECUTOR_H
35 template <
typename>
class EngineType,
36 typename DataManagerType>
40 VdfSpeculationExecutorBase >
111 virtual void _TouchOutput(
const VdfOutput &output)
const override final {
119 static const _Factory _factory;
123 EngineType<DataManagerType> _engine;
129 template <
template <
typename>
class EngineType,
typename DataManagerType>
133 template <
template <
typename>
class EngineType,
typename DataManagerType>
137 Base(parentExecutor),
159 template <
template <
typename>
class EngineType,
typename DataManagerType>
167 Base::SetOutputValue(output, value, mask);
170 _TouchOutput(output);
173 template <
template <
typename>
class EngineType,
typename DataManagerType>
181 const bool success = Base::TakeOutputValue(output, value, mask);
184 _TouchOutput(output);
189 template <
template <
typename>
class EngineType,
typename DataManagerType>
198 TF_VERIFY(Base::GetParentExecutor());
208 [&engine = _engine, &schedule, &computeRequest, errorLogger]() {
209 engine.RunSchedule(schedule, computeRequest, errorLogger);
VdfExecutionStats * GetExecutionStats() const
VdfSpeculationExecutor(const VdfExecutorInterface *parentExecutor)
const std::atomic_bool * GetInterruptionFlag() const
#define PXR_NAMESPACE_OPEN_SCOPE
GLsizei const GLfloat * value
virtual void _TouchOutput(const VdfOutput &output) const =0
const VdfExecutorInterface * GetNonSpeculationParentExecutor() const
A VdfMask is placed on connections to specify the data flowing through them.
virtual bool TakeOutputValue(const VdfOutput &output, VdfVector *value, const VdfMask &mask) overridefinal
**But if you need a or simply need to know when the task has note that the like this
Executor used in speculation.
PXR_NAMESPACE_OPEN_SCOPE auto WorkWithScopedParallelism(Fn &&fn, bool dropPythonGIL=true)
const VdfNetwork & GetNetwork() const
Contains a specification of how to execute a particular VdfNetwork.
void SetInterruptionFlag(const std::atomic_bool *interruptionFlag)
VdfSpeculationExecutor(const VdfSpeculationNode *speculationNode, const VdfExecutorInterface *parentExecutor)
A node that pulls on a vector of value that are downstream of the current execution position...
virtual const VdfExecutorFactoryBase & GetFactory() const overridefinal
virtual void SetOutputValue(const VdfOutput &output, const VdfVector &value, const VdfMask &mask) overridefinal
#define PXR_NAMESPACE_CLOSE_SCOPE
virtual ~VdfSpeculationExecutor()
void SetExecutionStats(VdfExecutionStats *stats)
VDF_API VdfExecutionStats * AddSubStat(const VdfNetwork *network, const VdfNode *invokingNode)
Abstract base class for classes that execute a VdfNetwork to compute a requested set of values...
void _SetSpeculationNode(const VdfNode *speculationNode)