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

#include <parallelExecutorEngine.h>

+ Inheritance diagram for VdfParallelExecutorEngine< DataManagerType >:

Public Types

typedef
VdfParallelSpeculationExecutorEngine
< DataManagerType > 
SpeculationExecutorEngine
 
typedef
VdfParallelExecutorEngineBase
< VdfParallelExecutorEngine
< DataManagerType >
, DataManagerType > 
Base
 

Public Member Functions

 VdfParallelExecutorEngine (const VdfExecutorInterface &executor, DataManagerType *dataManager)
 
- Public Member Functions inherited from VdfParallelExecutorEngineBase< VdfParallelExecutorEngine< 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< VdfParallelExecutorEngine< DataManagerType >, DataManagerType >
typedef DataManagerType::DataHandle _DataHandle
 
typedef uint32_t _EvaluationStage
 
- Protected Member Functions inherited from VdfParallelExecutorEngineBase< VdfParallelExecutorEngine< 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 ()
 
VdfParallelExecutorEngine
< DataManagerType > & 
_Self ()
 
- Protected Attributes inherited from VdfParallelExecutorEngineBase< VdfParallelExecutorEngine< 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 DataManagerType>
class VdfParallelExecutorEngine< DataManagerType >

A generic, but fully-featured parallel executor engine, deriving from VdfParallelExecutorEngineBase.

This engine does not perform cycle detection.

Definition at line 40 of file parallelExecutorEngine.h.

Member Typedef Documentation

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

Base class.

Definition at line 61 of file parallelExecutorEngine.h.

template<typename DataManagerType >
typedef VdfParallelSpeculationExecutorEngine<DataManagerType> VdfParallelExecutorEngine< DataManagerType >::SpeculationExecutorEngine

The equivalent speculation executor engine. Executor factories can use this typedef to map from an executor engine to a speculation executor engine with equivalent traits.

Definition at line 53 of file parallelExecutorEngine.h.

Constructor & Destructor Documentation

template<typename DataManagerType >
VdfParallelExecutorEngine< DataManagerType >::VdfParallelExecutorEngine ( const VdfExecutorInterface executor,
DataManagerType *  dataManager 
)
inline

Constructor.

Definition at line 65 of file parallelExecutorEngine.h.


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