HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
VdfParallelSpeculationExecutorEngine< typename > Class Template Reference

#include <parallelExecutorEngine.h>

+ Inheritance diagram for VdfParallelSpeculationExecutorEngine< typename >:

Public Types

typedef
VdfParallelExecutorEngineBase
< VdfParallelSpeculationExecutorEngine
< DataManagerType >
, DataManagerType > 
Base
 

Public Member Functions

 VdfParallelSpeculationExecutorEngine (const VdfSpeculationExecutorBase &speculationExecutor, DataManagerType *dataManager)
 
- Public Member Functions inherited from VdfParallelExecutorEngineBase< VdfParallelSpeculationExecutorEngine< DataManagerType >, DataManagerType >
 VdfParallelExecutorEngineBase (const VdfParallelExecutorEngineBase &)=delete
 
 VdfParallelExecutorEngineBase (const VdfExecutorInterface &executor, DataManagerType *dataManager)
 
VdfParallelExecutorEngineBaseoperator= (const VdfParallelExecutorEngineBase &)=delete
 
virtual ~VdfParallelExecutorEngineBase ()
 
void RunSchedule (const VdfSchedule &schedule, const VdfRequest &computeRequest, VdfExecutorErrorLogger *errorLogger)
 
void RunSchedule (const VdfSchedule &schedule, const VdfRequest &computeRequest, VdfExecutorErrorLogger *errorLogger, Callback &&callback)
 

Additional Inherited Members

- Protected Types inherited from VdfParallelExecutorEngineBase< VdfParallelSpeculationExecutorEngine< DataManagerType >, DataManagerType >
typedef DataManagerType::DataHandle _DataHandle
 
typedef uint32_t _EvaluationStage
 
- Protected Member Functions inherited from VdfParallelExecutorEngineBase< VdfParallelSpeculationExecutorEngine< DataManagerType >, DataManagerType >
void _ResetState (const VdfSchedule &schedule)
 
void _RunOutput (const VdfEvaluationState &state, const VdfMaskedOutput &maskedOutput, const size_t requestedIndex, Callback &callback, WorkTaskGraph::TaskList *taskList)
 
void _SpawnRequestedTasks (const VdfEvaluationState &state, const VdfNode &node, WorkTaskGraph::BaseTask *successor, WorkTaskGraph::BaseTask **bypass)
 
void _SpawnOrBypass (WorkTaskGraph::BaseTask *task, WorkTaskGraph::BaseTask **bypass)
 
bool _ProcessLeafTask (WorkTaskGraph::BaseTask *task, const VdfEvaluationState &state, const VdfMaskedOutput &maskedOutput, const size_t requestedIndex, Callback &callback, _EvaluationStage *evaluationStage, WorkTaskGraph::BaseTask **bypass)
 
bool _ProcessComputeTask (WorkTaskGraph::BaseTask *task, const VdfEvaluationState &state, const VdfNode &node, const VdfScheduleComputeTask &scheduleTask, _EvaluationStage *evaluationStage, WorkTaskGraph::BaseTask **bypass)
 
bool _ProcessInputsTask (WorkTaskGraph::BaseTask *task, const VdfEvaluationState &state, const VdfNode &node, const VdfScheduleInputsTask &scheduleTask, _EvaluationStage *evaluationStage, WorkTaskGraph::BaseTask **bypass)
 
bool _ProcessKeepTask (WorkTaskGraph::BaseTask *task, const VdfEvaluationState &state, const VdfNode &node, _EvaluationStage *evaluationStage, WorkTaskGraph::BaseTask **bypass)
 
bool _InvokeKeepTask (const VdfScheduleTaskIndex idx, const VdfNode &node, const VdfEvaluationState &state, WorkTaskGraph::BaseTask *successor, WorkTaskGraph::BaseTask **bypass)
 
void _InvokeTouchTask (const VdfOutput &dest, const VdfOutput &source)
 
bool _InvokeComputeTask (const VdfScheduleTaskId taskIndex, const VdfEvaluationState &state, const VdfNode &node, WorkTaskGraph::BaseTask *successor, WorkTaskGraph::BaseTask **bypass)
 
bool _InvokeComputeTasks (const Iterable &tasks, const VdfEvaluationState &state, const VdfNode &node, WorkTaskGraph::BaseTask *successor, WorkTaskGraph::BaseTask **bypass)
 
bool _IsInputDependencyCached (VdfScheduleInputDependencyUniqueIndex uniqueIndex, const VdfOutput &output, const VdfMask &mask)
 
bool _InvokeComputeOrKeepTasks (const VdfScheduleInputDependency &input, const VdfEvaluationState &state, WorkTaskGraph::BaseTask *successor, WorkTaskGraph::BaseTask **bypass)
 
bool _InvokeComputeOrKeepTasks (const VdfOutput &output, const VdfEvaluationState &state, WorkTaskGraph::BaseTask *successor, WorkTaskGraph::BaseTask **bypass)
 
bool _InvokePrereqInputs (const VdfScheduleInputsTask &scheduleTask, const VdfEvaluationState &state, WorkTaskGraph::BaseTask *successor, WorkTaskGraph::BaseTask **bypass)
 
bool _InvokeOptionalInputs (const VdfScheduleInputsTask &scheduleTask, const VdfEvaluationState &state, const VdfNode &node, WorkTaskGraph::BaseTask *successor, WorkTaskGraph::BaseTask **bypass)
 
bool _InvokeRequiredInputs (const VdfScheduleComputeTask &scheduleTask, const VdfEvaluationState &state, WorkTaskGraph::BaseTask *successor, WorkTaskGraph::BaseTask **bypass)
 
bool _InvokeInputsTask (const VdfScheduleComputeTask &scheduleTask, const VdfEvaluationState &state, const VdfNode &node, WorkTaskGraph::BaseTask *successor, WorkTaskGraph::BaseTask **bypass)
 
bool _InvokePrepTask (const VdfScheduleComputeTask &scheduleTask, const VdfEvaluationState &state, const VdfNode &node, WorkTaskGraph::BaseTask *successor)
 
void _PrepareNode (const VdfEvaluationState &state, const VdfNode &node)
 
void _PrepareOutput (const VdfSchedule &schedule, const VdfSchedule::OutputId outputId)
 
void _CreateScratchCache (const VdfOutput &output, const _DataHandle dataHandle, const VdfMask &mask, VdfExecutorBufferData *scratchBuffer)
 
void _EvaluateNode (const VdfScheduleComputeTask &scheduleTask, const VdfEvaluationState &state, const VdfNode &node, WorkTaskGraph::BaseTask *successor)
 
void _ComputeNode (const VdfScheduleComputeTask &scheduleTask, const VdfEvaluationState &state, const VdfNode &node)
 
void _PassThroughNode (const VdfScheduleComputeTask &scheduleTask, const VdfEvaluationState &state, const VdfNode &node)
 
void _ProcessOutput (const VdfScheduleComputeTask &scheduleTask, const VdfEvaluationState &state, const VdfOutput &output, const VdfSchedule::OutputId outputId, const _DataHandle dataHandle, const bool hasAssociatedInput, VdfExecutorBufferData *privateBuffer)
 
void _PrepareReadWriteBuffer (const VdfOutput &output, const VdfSchedule::OutputId outputId, const VdfMask &mask, const VdfSchedule &schedule, VdfExecutorBufferData *privateBuffer)
 
void _PassOrCopyBuffer (const VdfOutput &output, const VdfOutput &source, const VdfMask &inputMask, const VdfSchedule &schedule, VdfExecutorBufferData *privateBuffer)
 
void _PassBuffer (VdfExecutorBufferData *fromBuffer, VdfExecutorBufferData *toBuffer) const
 
void _CopyBuffer (const VdfOutput &output, const VdfOutput &source, const VdfMask &fromMask, VdfExecutorBufferData *toData) const
 
void _PublishScratchBuffers (const VdfSchedule &schedule, const VdfNode &node)
 
VdfVector_AbsorbPublicBuffer (const VdfOutput &output, const _DataHandle dataHandle, const VdfMask &haveMask)
 
bool _DetectInterruption (const VdfEvaluationState &state, const VdfNode &node)
 
bool _HasDetectedInterruption () const
 
void _TransportErrors (const TfErrorMark &errorMark)
 
void _PostTransportedErrors ()
 
VdfParallelSpeculationExecutorEngine
< DataManagerType > & 
_Self ()
 
- Protected Attributes inherited from VdfParallelExecutorEngineBase< VdfParallelSpeculationExecutorEngine< DataManagerType >, DataManagerType >
const VdfExecutorInterface_executor
 
DataManagerType * _dataManager
 
WorkTaskGraph _taskGraph
 
WorkIsolatingDispatcher _isolatingDispatcher
 
std::unique_ptr< std::atomic
< uint8_t >[]> 
_dependencyState
 
std::atomic< bool > _resetState
 
VdfParallelTaskSync _computeTasks
 
VdfParallelTaskSync _inputsTasks
 
VdfParallelTaskSync _prepTasks
 
VdfParallelTaskSync _keepTasks
 
tbb::concurrent_vector
< TfErrorTransport
_errors
 
std::atomic< bool > _isInterrupted
 

Detailed Description

template<typename>
class VdfParallelSpeculationExecutorEngine< typename >

An executor engine used for parallel speculation node evaluation, deriving from VdfParallelExecutorEngineBase. The engine does not support arena execution. The reason being that the parent executor engine will already be executing tasks inside of an arena. The engine does also not need to do any touching, or buffer locking, due to its temporary lifetime. It does, however, do cycle detection.

Definition at line 28 of file parallelExecutorEngine.h.

Member Typedef Documentation

template<typename >
typedef VdfParallelExecutorEngineBase< VdfParallelSpeculationExecutorEngine<DataManagerType>, DataManagerType> VdfParallelSpeculationExecutorEngine< typename >::Base

Base class.

Definition at line 46 of file parallelSpeculationExecutorEngine.h.

Constructor & Destructor Documentation

template<typename DataManagerType >
VdfParallelSpeculationExecutorEngine< DataManagerType >::VdfParallelSpeculationExecutorEngine ( const VdfSpeculationExecutorBase speculationExecutor,
DataManagerType *  dataManager 
)

Constructor.

Definition at line 96 of file parallelSpeculationExecutorEngine.h.


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