Loading...
Searching...
No Matches
VdfParallelExecutorEngine< DataManagerType > Class Template Reference

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

#include <parallelExecutorEngine.h>

+ Inheritance diagram for VdfParallelExecutorEngine< DataManagerType >:

Public Types

typedef VdfParallelSpeculationExecutorEngine< DataManagerType > SpeculationExecutorEngine
 The equivalent speculation executor engine.
 
typedef VdfParallelExecutorEngineBase< VdfParallelExecutorEngine< DataManagerType >, DataManagerType > Base
 Base class.
 

Public Member Functions

 VdfParallelExecutorEngine (const VdfExecutorInterface &executor, DataManagerType *dataManager)
 Constructor.
 
- Public Member Functions inherited from VdfParallelExecutorEngineBase< VdfParallelExecutorEngine< DataManagerType >, DataManagerType >
 VdfParallelExecutorEngineBase (const VdfParallelExecutorEngineBase &)=delete
 Noncopyable.
 
 VdfParallelExecutorEngineBase (const VdfExecutorInterface &executor, DataManagerType *dataManager)
 Constructor.
 
VdfParallelExecutorEngineBaseoperator= (const VdfParallelExecutorEngineBase &)=delete
 
virtual ~VdfParallelExecutorEngineBase ()
 Destructor.
 
void RunSchedule (const VdfSchedule &schedule, const VdfRequest &computeRequest, VdfExecutorErrorLogger *errorLogger)
 Executes the given schedule with a computeRequest and an optional errorLogger.
 
void RunSchedule (const VdfSchedule &schedule, const VdfRequest &computeRequest, VdfExecutorErrorLogger *errorLogger, Callback &&callback)
 Executes the given schedule with a computeRequest and an optional errorLogger.
 

Additional Inherited Members

- Protected Types inherited from VdfParallelExecutorEngineBase< VdfParallelExecutorEngine< DataManagerType >, DataManagerType >
typedef DataManager::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

◆ Base

typedef VdfParallelExecutorEngineBase< VdfParallelExecutorEngine<DataManagerType>, DataManagerType> Base

Base class.

Definition at line 61 of file parallelExecutorEngine.h.

◆ 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

◆ VdfParallelExecutorEngine()

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: