unstable#
Fully qualified name: omni::graph::exec::unstable
-
namespace unstable#
Unstable features currently in development. Do not depend on any API or ABI in this namespace, as it will change without notice.
Classes#
- AtomicBackoff
Exponential backoff pattern for waiting with a cap number of pauses.
- CompactUniqueIndex
Registry of unique indexes with recycling of released indexes.
- ConstName
An immutable name with fast hash based comparisons.
- ExecutionContext
Stores and provides access to the execution state of the graph.
- ExecutionPath
Path representing a unique location of an instantiated node during execution.
- ExecutionTask
Represents work item generated by an IExecutor and passed to a scheduler for dispatch.
- Executor
Easily configurable omni::graph::exec::unstable::IExecutor implementation providing necessary tools for most common executor types.
- GraphBuilderContextT
Common state for graph builders.
- GraphBuilderT
Graph builder is the only class that has the ability to modify topology of a graph.
- GraphT
Top-level container for storing the Execution Framework's graph of graphs.
- IApplyOnEachFunction
Interface wrapping a function (possibly with storage) to apply on all instantiations of a given definition.
- IApplyOnEachFunction_abi
Interface wrapping a function (possibly with storage) to apply on all instantiations of a given definition.
- IBase
Base class for all omni::graph::exec objects.
- IBase_abi
Base class for all omni::graph::exec objects.
- IDef
Base class for all node definitions.
- IDef_abi
Base class for all node definitions.
- IExecutionContext
Stores and provides access to the execution state of the graph.
- IExecutionContext_abi
Stores and provides access to the execution state of the graph.
- IExecutionCurrentThread
Encapsulates the execution state for the current thread allowing callers to determine quantities like the omni::graph::exec::unstable::ExecutionTask currently executing on the thread.
- IExecutionCurrentThread_abi
Encapsulates the execution state for the current thread allowing callers to determine quantities like the omni::graph::exec::unstable::ExecutionTask currently executing on the thread.
- IExecutionStateInfo
State associated with a given execution task.
- IExecutionStateInfo_abi
State associated with a given execution task.
- IExecutor
Executes the nodes in a graph definition.
- IExecutor_abi
Executes the nodes in a graph definition.
- IGlobalPass
Base class for global passes.
- IGlobalPass_abi
Base class for global passes.
- IGraph
Top-level container for storing the Execution Framework's graph of graphs.
- IGraphBuilder
Graph builder is the only class that has the ability to modify topology of a graph.
- IGraphBuilderContext
Common state for graph builders.
- IGraphBuilderContext_abi
Common state for graph builders.
- IGraphBuilderNode
Describes a node omni::graph::exec::unstable::IGraphBuilder can manipulate.
- IGraphBuilderNode_abi
Describes a node omni::graph::exec::unstable::IGraphBuilder can manipulate.
- IGraphBuilder_abi
Graph builder is the only class that has the ability to modify topology of a graph.
- IGraph_abi
Top-level container for storing the Execution Framework's graph of graphs.
- IInvalidationForwarder
Interface wrapping a function (possibly with storage) to forward topology invalidation notices.
- IInvalidationForwarder_abi
Interface wrapping a function (possibly with storage) to forward topology invalidation notices.
- INode
Represents work in a graph. Nodes point to a shared execution definition to state the actual work.
- INodeDef
Opaque node definition.
- INodeDef_abi
Opaque node definition.
- INodeFactory
Factory interface for creating omni::graph::exec::unstable::INode objects.
- INodeFactory_abi
Factory interface for creating omni::graph::exec::unstable::INode objects.
- INodeGraphDef
Graph definition. Defines work to be done as a graph.
- INodeGraphDefDebug
Interface containing debugging methods for omni::graph::exec::unstable::INodeGraphDef .
- INodeGraphDefDebug_abi
Interface containing debugging methods for omni::graph::exec::unstable::INodeGraphDef .
- INodeGraphDef_abi
Graph definition. Defines work to be done as a graph.
- INode_abi
Represents work in a graph. Nodes point to a shared execution definition to state the actual work.
- IPartitionPass
Base class for graph partitioning passes.
- IPartitionPass_abi
Base class for graph partitioning passes.
- IPass
Base class for graph transformation passes.
- IPassFactory
Factory interface for creating omni::graph::exec::unstable::IPass objects.
- IPassFactory_abi
Factory interface for creating omni::graph::exec::unstable::IPass objects.
- IPassPipeline
Runs registered passes.
- IPassPipeline_abi
Runs registered passes.
- IPassRegistry
Registry (database) of known omni::graph::exec::unstable::IPass objects.
- IPassRegistry_abi
Registry (database) of known omni::graph::exec::unstable::IPass objects.
- IPassTypeRegistry
omni::graph::exec::unstable::IPassFactory registry for a particular omni::graph::exec::unstable::PassType .
- IPassTypeRegistry_abi
omni::graph::exec::unstable::IPassFactory registry for a particular omni::graph::exec::unstable::PassType .
- IPass_abi
Base class for graph transformation passes.
- IPopulatePass
Base class for populate passes.
- IPopulatePass_abi
Base class for populate passes.
- IScheduleFunction
Interface wrapping a function (possibly with storage). Used to wrap a task when passing generated work to the scheduler.
- IScheduleFunction_abi
Interface wrapping a function (possibly with storage). Used to wrap a task when passing generated work to the scheduler.
- ITopology
The Topology of a graph is stored in this class.
- ITopology_abi
The Topology of a graph is stored in this class.
- NodeDefLambda
Wrapper of a lambda function into an opaque node definition.
- NodeDefT
Opaque node definition.
- NodeGraphDefT
Concrete implementation of omni::graph::exec::unstable::INodeGraphDef .
- NodeT
Concrete implementation of omni::graph::exec::unstable::INode .
- PartitionSet
Specialized container to enable partitioning algorithm via disjoint set like data structure.
- PassPipelineT
Runs registered passes.
- RaceConditionFinder
Helper class for detecting race conditions.
- ScheduleFunction
Core ScheduleFunction implementation for omni::graph::exec::unstable::IScheduleFunction .
- ScopedExecutionDebug
Scoped object used mark that a given INodeGraphDef is currently executing.
- ScopedPassRegistration
Scoped object that registers a pass factory in its constructor and deregisters in the objects destructor.
- SmallVector
This is a small-vector class with local storage optimization, the local storage can be specified via a template parameter, and expresses the number of entries the container can store locally.
- SmallVectorBase
Contains parts of the small vector implementation that do not depend on all of SmallVector 's template parameters.
- Span
A pointer along with the number of items the pointer points to.
- Stamp
Lazy, light-weight change notification system.
- SyncStamp
Watcher of a mutating resource. Observes a resources Stamp and detects if it has changed.
- Topology
The Topology of a graph is stored in this class.
Enumerations#
- BackgroundResultStatus
Result of waiting for the result of a omni::graph::exec::unstable::IBackgroundResult.
- uint32_t PassPipelineStatus
Current execution status of pass pipeline a omni::graph::exec::unstable::IPassPipeline .
- PassType
Grouping type for different passes.
- SchedulingInfo
Constraints to be fulfilled by the scheduler when dispatching a task.
- uint32_t Status
Return status of all executions.
Functions#
- auto captureScheduleFunction(Fn &&fn) noexcept -> decltype(detail::ScheduleFunctionHelper< Fn >::capture(std::forward< Fn >(fn)))
Helper function to efficiently capture an invocable object (i.e. std::function, function ptr, IScheduleFunction*).
- T * cast(omni::core::ObjectParam< U > ptr) noexcept
Casts the given pointer to the given interface (e.g. T).
- T * cast(U *ptr) noexcept
Casts the given pointer to the given interface (e.g. T).
- T * cast(omni::core::ObjectPtr< U > ptr) noexcept
Casts the given pointer to the given interface (e.g. T).
- NodeFactoryPtr createNodeFactory(Fn &&fn)
Generates an INodeFactory from an invocable object such as a function pointer, functor, etc.
- PassFactoryPtr createPassFactory(Fn &&fn) noexcept
Generates an IPassFactory from an invocable object such as a function pointer, functor, etc.
- void deregisterModulePasses() noexcept
Deregisters the module's omni::graph::exec::unstable::IPass factories with IPassRegistry .
- IExecutor * getCurrentExecutor() noexcept
Access executor currently used on the current thread.
- ExecutionTask * getCurrentTask() noexcept
Access task currently executed on a calling thread.
- IExecutionCurrentThread * getCurrentThread() noexcept
Access current thread's execution state.
- IPassRegistry * getPassRegistry() noexcept
Returns the singleton pass registry.
- omni::graph::exec::unstable::Status invokeScheduleFunction(Fn &&fn) noexcept
Helper function to efficiently call an invocable object (i.e. std::function, function ptr, IScheduleFunction*).
- constexpr bool operator!=(NameHash lhs, const ConstName &rhs) noexcept
Compares a hash with a ConstName .
- constexpr bool operator!=(const ConstName &lhs, NameHash rhs) noexcept
Compares a ConstName with a hash.
- bool operator!=(const ExecutionPath &lhs, const ExecutionPath &rhs) noexcept
Comparison operator.
- constexpr bool operator!=(const ConstName &lhs, const ConstName &rhs) noexcept
Compares two ConstName objects.
- auto operator+(const ConstName &lhs, const std::string &rhs)
Concatenates
std::string
with a ConstName . Returns aomni::string
.- auto operator+(const std::string &lhs, const ConstName &rhs)
Concatenates
std::string
with a ConstName . Returns aomni::string
.- constexpr bool operator<(NameHash lhs, const ConstName &rhs) noexcept
Compares a hash with a ConstName .
- constexpr bool operator<(const ConstName &lhs, NameHash rhs) noexcept
Compares a ConstName with a hash.
- constexpr bool operator<(const ConstName &lhs, const ConstName &rhs) noexcept
Compares two ConstName objects.
- std::ostream & operator<<(std::ostream &os, const ConstName &str)
Output stream operator overload. Outputs the contents of
str
to the streamos
.- constexpr bool operator==(NameHash lhs, const ConstName &rhs) noexcept
Compares a hash with a ConstName .
- constexpr bool operator==(const ConstName &lhs, NameHash rhs) noexcept
Compares a ConstName with a hash.
- constexpr bool operator==(const ConstName &lhs, const ConstName &rhs) noexcept
Compares two ConstName objects.
- bool operator==(const ExecutionPath &lhs, const ExecutionPath &rhs) noexcept
Comparison operator.
- void quickPartitioning(ITopology *topology, Span< INode * > selectedNodes, VerifyAndCreateFn &&verifyAndCommitPartitionFn)
Algorithm to group selected nodes into valid partitions based on node ordering.
- void registerModulePasses() noexcept
Registers the module's omni::graph::exec::unstable::IPass factories with omni::graph::exec::unstable::IPassRegistry .
- void swap(SmallVector< T, N > &a, SmallVector< T, N > &b)
Swap fuction for SmallVector .
- Span< INode *const > toSpan(const std::vector< omni::core::ObjectPtr< INode > > &nodes) noexcept
Converts an contiguous array of NodePtr to a Span . This is useful when returning the array via the ABI.
- void traverseBreadthFirst(INode *node, typename Traversal< INode, ITopology, Strategy, FlowBreadthFirst, NodeUserData, false >::CallbackFn call)
Performs a breadth-first (BFS) traversal of a node.
- auto traverseBreadthFirstAsync(INode *node, typename Traversal< INode, ITopology, Strategy, FlowBreadthFirst, NodeUserData, false >::CallbackFn call)
Performs a breadth-first (BFS) traversal of a node while allowing for asynchronous work to be performed by the given lambda.
- void traverseDepthFirst(INode *node, typename Traversal< INode, ITopology, Strategy, FlowDepthFirst, NodeUserData, false >::CallbackFn call)
Performs a depth-first (DFS) traversal of a node.
- auto traverseDepthFirstAsync(INode *node, typename Traversal< INode, ITopology, Strategy, FlowDepthFirst, NodeUserData, false >::CallbackFn call)
Performs a depth-first (DFS) traversal of a node while allowing for asynchronous work to be performed by the given lambda.
- uint32_t useCount(T *ptr) noexcept
Helper utility to access the number of different instances referencing the given object.
- void writeFlattenedAsGraphviz(omni::core::ObjectParam< IGraph > inGraph, std::ostream &out, const bool deterministicAndSimplified=false)
Debugging utility to write out the graph topology in a graphviz format.
Namespaces#
- detail
Implementation details for omni::graph::exec . Items in this namespace should not be relied on outside of the API.
Structs#
- DefaultSchedulingStrategy
Algorithm to determine how task should be scheduled.
- EnumBitops
Enable bitwise operations on enum classes. Templates save on writing boiler plate code to allow this.
- EnumBitops< PassPipelineStatus >
Enable bitwise operations on PassPipelineStatus state.
- EnumBitops< Status >
Enable bitwise operations on return state.
- EnumBitops< detail::VisitOrder >
Enable bitwise operation on VisitOrder.
- ExecutionNodeData
Data available for executor on every node when traversing the graph.
- ExecutionVisit
Graph traversal visit strategy.
- ExecutionVisitWithCacheCheck
Graph traversal visit strategy with dirty cache check.
- Implements
Helper template for implementing one or more interfaces.
- ImplementsCastWithoutAcquire
Helper template for implementing the castWithoutAcquire function for one or more interfaces.
- PassTypeRegistryEntry
ABI-safe struct to hold registered omni::graph::exec::unstable::IPassFactory objects.
- SerialScheduler
Basic scheduler which executes the task on calling thread and accumulates the result.
Typedefs#
- ApplyOnEachFunctionPtr
Smart pointer managing an instance of IApplyOnEachFunction .
- DefPtr
Smart pointer managing an instance of omni::graph::exec::unstable::IDef .
- ExectorPtr
Smart pointer managing an instance of IExecutor .
- ExecutionContextPtr
Smart pointer managing an instance of IExecutionContext .
- ExecutionCurrentThreadPtr
Smart pointer managing an instance of IExecutionCurrentThread .
- ExecutionPathHash
Hash of each node's topology index in a path.
- ExecutionTaskTag
A task tag can be used by other entities (such as Executor ) to group tasks together.
- ExecutorFactory
Factory owned by a node graph definition used to instantiate an executor to generate work with the graph definition.
- ExecutorFallback
Default executor used by all node graph definitions that don't explicitly pass the executor factory method.
- GlobalPassPtr
Smart pointer managing an instance of IGlobalPass .
- Graph
Core Graph implementation for omni::graph::exec::unstable::IGraph .
- GraphBuilder
Core GraphBuilder implementation for omni::graph::exec::unstable::IGraphBuilder .
- GraphBuilderContext
Core GraphBuilderContext implementation for omni::graph::exec::unstable::IGraphBuilderContext .
- GraphBuilderContextPtr
Smart pointer managing an instance of IGraphBuilderContext .
- GraphBuilderNodePtr
Smart pointer managing an instance of IGraphBuilderNode .
- GraphBuilderPtr
Smart pointer managing an instance of IGraphBuilder .
- GraphPtr
Smart pointer managing an instance of IGraph .
- InvalidationForwarderId
Unique owner of the callback. Meaning is up to the caller. Essentially a void* pointer.
- InvalidationForwarderPtr
Smart pointer managing an instance of IInvalidationForwarder .
- NameHash
Type which store a unique identifier for a node or definition.
- Node
Core node implementation for omni::graph::exec::unstable::INode .
- NodeDataDeleterFn
Type specific function for deleting context specific execution data associated with a node.
- NodeDataKey
Key for a piece of data attached to a node.
- NodeDef
Core NodeDef implementation for omni::graph::exec::unstable::INodeDef .
- NodeDefPtr
Smart pointer managing an instance of omni::graph::exec::unstable::INodeDef .
- NodeFactoryPtr
Smart pointer managing an instance of INodeFactory .
- NodeGraphDef
Core NodeGraphDef implementation for omni::graph::exec::unstable::INodeGraphDef .
- NodeGraphDefDebugPtr
Smart pointer managing an instance of INodeGraphDefDebug .
- NodeGraphDefPtr
Smart pointer managing an instance of INodeGraphDef .
- NodeIndexInTopology
Each node in an ITopology is given a unique index (via ITopology::acquireNodeIndex() ).
- NodePartition
Type definition used to pass node partitions in the ABI.
- NodePtr
Smart pointer managing an instance of INode .
- PartitionPassPtr
Smart pointer managing an instance of IPartitionPass .
- PassFactoryPtr
Smart pointer managing an instance of IPassFactory .
- PassPipeline
Core PassPipeline implementation for omni::graph::exec::unstable::IPassPipeline .
- PassPipelinePtr
Smart pointer managing an instance of IPassPipeline .
- PassPriority
Pass priority used by IPassPipeline to resolve conflicts between passes.
- PassPtr
Smart pointer managing an instance of omni::graph::exec::unstable::IPass .
- PassRegistryPtr
Smart pointer managing an instance of omni::graph::exec::unstable::IPassRegistry .
- PassTypeRegistryPtr
Smart pointer managing an instance of IPassTypeRegistry .
- PopulatePassPtr
Smart pointer managing an instance of IPopulatePass .
- Stamp_abi
Low-level ABI type to represent Stamp .
- VisitAll
Traversal strategy that allows discovering all the edges in the graph. Traversal continuation is controlled by user code.
- VisitFirst
Traversal strategy that enters the node when it was first time discovered.
- VisitLast
Traversal strategy that enters the node when entire upstream was already visited and this is the last opportunity to enter the node.
Variables#
- constexpr const uint64_t kInvalidNodeIndexInTopology
Constant to denote an INode has not been assigned an index in an ITopology .