Loading...
Searching...
No Matches
VdfSimpleExecutor Class Reference

Executes a VdfNetwork to compute a requested set of values using depth first search. More...

#include <simpleExecutor.h>

+ Inheritance diagram for VdfSimpleExecutor:

Public Member Functions

virtual VDF_API ~VdfSimpleExecutor ()
 Destructor.
 
virtual VDF_API const VdfExecutorFactoryBase & GetFactory () const override final
 Factory construction.
 
- Public Member Functions inherited from VdfDataManagerBasedExecutor< VdfParallelDataManagerVector, VdfExecutorInterface >
 VdfDataManagerBasedExecutor ()
 Default constructor.
 
 VdfDataManagerBasedExecutor (const VdfExecutorInterface *parentExecutor)
 Construct with a parent executor.
 
virtual ~VdfDataManagerBasedExecutor ()
 Destructor.
 
virtual void Resize (const VdfNetwork &network) override
 Resize the executor data manager to accommodate the given network.
 
virtual void SetOutputValue (const VdfOutput &output, const VdfVector &value, const VdfMask &mask)
 Sets the cached value for a given output.
 
virtual bool TakeOutputValue (const VdfOutput &output, VdfVector *value, const VdfMask &mask)
 Transfers the value to the given output.
 
virtual void DuplicateOutputData (const VdfOutput &sourceOutput, const VdfOutput &destOutput)
 Duplicates the output data associated with sourceOutput and copies it to destOutput.
 
virtual bool IsEmpty () const
 Returns true of the data manager is empty.
 
virtual bool HasInvalidationTimestampMismatch (const VdfOutput &source, const VdfOutput &dest) const
 Returns true, if the invalidation timestamps between the source and dest outputs do not match, i.e.
 
- Public Member Functions inherited from VdfExecutorInterface
 VdfExecutorInterface (const VdfExecutorInterface &)=delete
 Noncopyable.
 
VdfExecutorInterfaceoperator= (const VdfExecutorInterface &)=delete
 
virtual VDF_API ~VdfExecutorInterface ()
 Destructor.
 
VDF_API void Run (const VdfSchedule &schedule, VdfExecutorErrorLogger *errorLogger=NULL)
 Executes the schedule.
 
VDF_API void Run (const VdfSchedule &schedule, const VdfRequest &computeRequest, VdfExecutorErrorLogger *errorLogger=NULL)
 Executes the schedule.
 
VDF_API void RegisterObserver (const VdfExecutorObserver *observer) const
 Can be called by clients to register a VdfExecutorObserver with this executor.
 
VDF_API void UnregisterObserver (const VdfExecutorObserver *observer) const
 Must be called by clients to unregister a VdfExecutorObserver, which has been previously registered with RegisterObserver().
 
const VdfVectorGetOutputValue (const VdfOutput &output, const VdfMask &mask) const
 Returns the cached value for a given output if it has a cache that contains all values specified by mask.
 
const VdfExecutorInterfaceGetParentExecutor () const
 Returns the parent executor, if any.
 
VDF_API void SetParentExecutor (const VdfExecutorInterface *parentExecutor)
 Sets the parent executor.
 
VDF_API void InvalidateValues (const VdfMaskedOutputVector &invalidationRequest)
 Invalidates the network, starting from the masked outputs in request.
 
VDF_API void InvalidateTopologicalState ()
 Invalidate all state depending on network topology.
 
VDF_API void ClearData ()
 Clears the executors buffers.
 
VDF_API void ClearDataForOutput (const VdfId outputId, const VdfId nodeId)
 Clears the executor buffers for a specific output.
 
void IncrementExecutorInvalidationTimestamp ()
 Increment this executor's invalidation timestamp for mung buffer locking.
 
void InheritExecutorInvalidationTimestamp (const VdfExecutorInterface &executor)
 Inherit the invalidation timestamp from another executor.
 
VdfInvalidationTimestamp GetExecutorInvalidationTimestamp () const
 Returns this executor's invalidation timestamp.
 
void SetInterruptionFlag (const std::atomic_bool *interruptionFlag)
 Set the interruption flag.
 
const std::atomic_bool * GetInterruptionFlag () const
 Returns the interruption flag.
 
bool HasBeenInterrupted () const
 Returns whether or not the executor has been interrupted, if the executor supports interruption.
 
void SetExecutionStats (VdfExecutionStats *stats)
 Sets an execution stats object.
 
VdfExecutionStatsGetExecutionStats () const
 Returns the Execution Stats object, if any.
 

Protected Types

using DataManagerType = VdfParallelDataManagerVector
 The data manager type used by this executor.
 
using _DataHandle = typename DataManagerType::DataHandle
 The data handle type defined by the data manager.
 

Protected Member Functions

virtual VDF_API void _Run (const VdfSchedule &schedule, const VdfRequest &computeRequest, VdfExecutorErrorLogger *errorLogger)
 Executes the schedule.
 
VDF_API void _PrepareReadWriteBuffer (VdfExecutorBufferData *bufferData, const VdfInput &input, const VdfMask &mask, const VdfSchedule &schedule)
 Prepares a buffer to be used as a read/write output.
 
- Protected Member Functions inherited from VdfDataManagerBasedExecutor< VdfParallelDataManagerVector, VdfExecutorInterface >
virtual const VdfVector_GetInputValue (const VdfConnection &connection, const VdfMask &mask) const override
 Returns value for the cache that flows across connection.
 
virtual const VdfVector_GetOutputValueForReading (const VdfOutput &output, const VdfMask &mask) const override
 Returns an output value for reading.
 
virtual VdfVector_GetOutputValueForWriting (const VdfOutput &output) const override
 Returns an output value for writing.
 
void _ClearDataForOutput (const VdfId outputId, const VdfId nodeId) override
 Clears the data for a specific output on this executor.
 
virtual bool _IsOutputInvalid (const VdfId outputId, const VdfMask &invalidationMask) const override
 Returns true if the output is already invalid for the given invalidationMask.
 
virtual bool _InvalidateOutput (const VdfOutput &output, const VdfMask &invalidationMask)
 Called during invalidation to mark outputs as invalid and determine when the traversal can terminate early.
 
virtual void _UpdateInvalidationTimestamp ()
 Called before invalidation begins to update the timestamp that will be written for every VdfOutput visited during invalidation.
 
virtual void _SetReferenceOutputValue (const VdfOutput &destOutput, const VdfOutput &sourceOutput, const VdfMask &sourceMask) const
 Called to set destOutput's buffer output to be a reference to the buffer output of sourceOutput.
 
virtual void _TouchOutput (const VdfOutput &output) const override
 Mark the output as having been visited.
 
- Protected Member Functions inherited from VdfExecutorInterface
VDF_API VdfExecutorInterface ()
 Protected default constructor.
 
VDF_API VdfExecutorInterface (const VdfExecutorInterface *parentExecutor)
 Construct with a parent executor.
 
virtual void _Run (const VdfSchedule &schedule, const VdfRequest &computeRequest, VdfExecutorErrorLogger *errorLogger)=0
 Run this executor with the given schedule and request.
 
virtual const VdfVector_GetInputValue (const VdfConnection &connection, const VdfMask &mask) const =0
 Returns a value for the cache that flows across connection.
 
virtual const VdfVector_GetOutputValueForReading (const VdfOutput &output, const VdfMask &mask) const =0
 Returns an output value for reading.
 
virtual VdfVector_GetOutputValueForWriting (const VdfOutput &output) const =0
 Returns an output value for writing.
 
virtual bool _IsOutputInvalid (const VdfId outputId, const VdfMask &invalidationMask) const =0
 Returns true if the output is already invalid for the given invalidationMask.
 
virtual bool _InvalidateOutput (const VdfOutput &output, const VdfMask &invalidationMask)=0
 Called during invalidation to mark outputs as invalid and determine when the traversal can terminate early.
 
virtual bool _PreProcessInvalidation (const VdfMaskedOutputVector &invalidationRequest, VdfMaskedOutputVector *processedRequest)
 This method is called as a pre-processing step before an InvalidateValues() call.
 
virtual void _UpdateInvalidationTimestamp ()=0
 Called before invalidation begins to update the timestamp that will be written for every VdfOutput visited during invalidation.
 
virtual VDF_API void _ClearData ()
 Virtual implementation of the ClearData call.
 
virtual VDF_API void _ClearDataForOutput (const VdfId outputId, const VdfId nodeId)
 Virtual implementation of the ClearDataForOutput call.
 
virtual void _SetReferenceOutputValue (const VdfOutput &destOutput, const VdfOutput &sourceOutput, const VdfMask &sourceMask) const =0
 Called to set destOutput's buffer output to be a reference to the buffer output of sourceOutput.
 
virtual void _TouchOutput (const VdfOutput &output) const =0
 Mark the output as having been visited.
 

Additional Inherited Members

- Protected Attributes inherited from VdfDataManagerBasedExecutor< VdfParallelDataManagerVector, VdfExecutorInterface >
VdfParallelDataManagerVector _dataManager
 

Detailed Description

Executes a VdfNetwork to compute a requested set of values using depth first search.

Definition at line 33 of file simpleExecutor.h.

Member Typedef Documentation

◆ _DataHandle

using _DataHandle = typename DataManagerType::DataHandle
protected

The data handle type defined by the data manager.

Definition at line 57 of file simpleExecutor.h.

◆ DataManagerType

The data manager type used by this executor.

Definition at line 53 of file simpleExecutor.h.

Constructor & Destructor Documentation

◆ ~VdfSimpleExecutor()

virtual VDF_API ~VdfSimpleExecutor ( )
virtual

Destructor.

Member Function Documentation

◆ _PrepareReadWriteBuffer()

VDF_API void _PrepareReadWriteBuffer ( VdfExecutorBufferData bufferData,
const VdfInput input,
const VdfMask mask,
const VdfSchedule schedule 
)
protected

Prepares a buffer to be used as a read/write output.

◆ _Run()

virtual VDF_API void _Run ( const VdfSchedule schedule,
const VdfRequest &  computeRequest,
VdfExecutorErrorLogger errorLogger 
)
protectedvirtual

Executes the schedule.

VdfSimpleExecutor ignores the computeRequest and computes all the outputs in the schedule.

Implements VdfExecutorInterface.

◆ GetFactory()

virtual VDF_API const VdfExecutorFactoryBase & GetFactory ( ) const
finaloverridevirtual

Factory construction.

Implements VdfExecutorInterface.


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