Loading...
Searching...
No Matches
VdfDatalessExecutor Class Reference

An abstract base class for executors, which do not store any data at all. More...

#include <datalessExecutor.h>

+ Inheritance diagram for VdfDatalessExecutor:

Public Member Functions

virtual VDF_API ~VdfDatalessExecutor ()
 Destructor.
 
virtual VDF_API void SetOutputValue (const VdfOutput &output, const VdfVector &value, const VdfMask &mask) override
 Sets the cached value for a given output.
 
virtual VDF_API bool TakeOutputValue (const VdfOutput &output, VdfVector *value, const VdfMask &mask) override
 Transfers ownership of value to the given output.
 
virtual bool IsEmpty () const override
 Returns true of the data manager is empty.
 
- 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.
 
virtual const VdfExecutorFactoryBase & GetFactory () const =0
 Returns a factory class facilitating the construction of new executors that share traits with this executor instance.
 
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().
 
virtual void Resize (const VdfNetwork &network)
 Resize the executor to accomodate data for the given network.
 
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.
 
virtual void DuplicateOutputData (const VdfOutput &sourceOutput, const VdfOutput &destOutput)=0
 Duplicates the output data associated with sourceOutput and copies it to destOutput.
 
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 executor 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.
 
virtual bool HasInvalidationTimestampMismatch (const VdfOutput &source, const VdfOutput &dest) const =0
 Returns true, if the invalidation timestamps between the source and dest outputs do not match, i.e.
 
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 Member Functions

VDF_API VdfDatalessExecutor ()
 Protected default constructor.
 
virtual const VdfVector_GetInputValue (const VdfConnection &connection, const VdfMask &mask) const override
 Returns a 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.
 
virtual void _UpdateInvalidationTimestamp () override
 Called before invalidation begins to update the timestamp that will be written for every VdfOutput visited during invalidation.
 
virtual VDF_API void _SetReferenceOutputValue (const VdfOutput &destOutput, const VdfOutput &sourceOutput, const VdfMask &sourceMask) const override
 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 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 VDF_API void _ClearData ()
 Virtual implementation of ClearData, which can optionally be overridden by derived classes.
 
virtual VDF_API void _ClearDataForOutput (const VdfId outputId, const VdfId nodeId)
 Virtual implementation of ClearDataForOutput, which can optionally be overridden by derived classes.
 

Detailed Description

An abstract base class for executors, which do not store any data at all.

This class mainly serves the purpose of abstracting away error handling on dataless executors, when methods that are supposed to mutate data are called.

Definition at line 32 of file datalessExecutor.h.

Constructor & Destructor Documentation

◆ ~VdfDatalessExecutor()

virtual VDF_API ~VdfDatalessExecutor ( )
virtual

Destructor.

◆ VdfDatalessExecutor()

VDF_API VdfDatalessExecutor ( )
protected

Protected default constructor.

Member Function Documentation

◆ _GetInputValue()

virtual const VdfVector * _GetInputValue ( const VdfConnection & connection,
const VdfMask & mask ) const
inlineoverrideprotectedvirtual

Returns a value for the cache that flows across connection.

Implements VdfExecutorInterface.

Definition at line 79 of file datalessExecutor.h.

◆ _GetOutputValueForReading()

virtual const VdfVector * _GetOutputValueForReading ( const VdfOutput & output,
const VdfMask & mask ) const
inlineoverrideprotectedvirtual

Returns an output value for reading.

Implements VdfExecutorInterface.

Definition at line 87 of file datalessExecutor.h.

◆ _GetOutputValueForWriting()

virtual VdfVector * _GetOutputValueForWriting ( const VdfOutput & output) const
inlineoverrideprotectedvirtual

Returns an output value for writing.

Implements VdfExecutorInterface.

Definition at line 95 of file datalessExecutor.h.

◆ _SetReferenceOutputValue()

virtual VDF_API void _SetReferenceOutputValue ( const VdfOutput & destOutput,
const VdfOutput & sourceOutput,
const VdfMask & sourceMask ) const
overrideprotectedvirtual

Called to set destOutput's buffer output to be a reference to the buffer output of sourceOutput.

This is not supported on this type of executor.

Implements VdfExecutorInterface.

◆ _TouchOutput()

virtual void _TouchOutput ( const VdfOutput & output) const
inlineoverrideprotectedvirtual

Mark the output as having been visited.

This is only to be used by the speculation engine to tell its parent executor that an output has been visited and should be marked for invalidation.

This has no effect on this type of executor.

Implements VdfExecutorInterface.

Definition at line 125 of file datalessExecutor.h.

◆ _UpdateInvalidationTimestamp()

virtual void _UpdateInvalidationTimestamp ( )
inlineoverrideprotectedvirtual

Called before invalidation begins to update the timestamp that will be written for every VdfOutput visited during invalidation.

This timestamp is later used to identify outputs for mung buffer locking.

This has no effect on this type of executor.

Implements VdfExecutorInterface.

Definition at line 106 of file datalessExecutor.h.

◆ IsEmpty()

virtual bool IsEmpty ( ) const
inlineoverridevirtual

Returns true of the data manager is empty.

This type of executor is always considered empty, since it does not hold any data.

Implements VdfExecutorInterface.

Reimplemented in EfMaskedSubExecutor.

Definition at line 66 of file datalessExecutor.h.

◆ SetOutputValue()

virtual VDF_API void SetOutputValue ( const VdfOutput & output,
const VdfVector & value,
const VdfMask & mask )
overridevirtual

Sets the cached value for a given output.

This is not supported on this type of executor.

Implements VdfExecutorInterface.

◆ TakeOutputValue()

virtual VDF_API bool TakeOutputValue ( const VdfOutput & output,
VdfVector * value,
const VdfMask & mask )
overridevirtual

Transfers ownership of value to the given output.

This is not supported on this type of executor.

Implements VdfExecutorInterface.


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