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 a omni::string .

auto operator+(const std::string &lhs, const ConstName &rhs)

Concatenates std::string with a ConstName . Returns a omni::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 stream os .

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 .