Data graphs
Data graph pipelines encapsulate computational graphs that operate on whole resources (e.g. tensors). The graph operations that form these computational graphs are executed by graph processing engines.
Pipeline Creation
Sessions
Graph pipelines execute within data graph pipeline sessions that provide a context for their execution as well as binding points for the memory they need (e.g. transient storage).
Dispatch
Properties
Processing Engines
Data graph pipelines execute on one or more data graph processing engines.
Each queue family of a VkPhysicalDevice that supports
VK_QUEUE_DATA_GRAPH_BIT_ARM may provide access to processing engines.
Processing engines may be foreign.
Foreign processing engines require the use of external memory and semaphores
to exchange data and synchronize with data graph pipelines that target them.
Each processing engine may support a selection of graph
operations.
There exists a default processing engine that enables implementations to
support some operations without tying support to specific processing
engines.
This allows implementations to avoid being specific about the processing
engines that they use internally or to remove the necessity for applications
to choose the specific processing engine used to execute a given set of
operations.
Operations
Data graph processing engines execute data graph operations. Operations may be of a fixed-function nature, configurable or not, or may , for example, be provided as part of a SPIR-V extended instruction set.
Data Graph Operations Requirements
Physical devices that support the dataGraphShaderModule feature must support an operation whose
VkPhysicalDeviceDataGraphOperationSupportARM::operationType is
VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM
and name and version are as described in the following table for
at least one processing engine in at least one queue family when specific
extensions are supported at a specific version:
| Extension | Extension specification version | Operation name | Operation version |
|---|---|---|---|
| VK_ARM_data_graph_instruction_set_tosa | 1 | TOSA.001000.1 | 0 |
Physical devices that support VK_ARM_data_graph_optical_flow must support the following VkPhysicalDeviceDataGraphOperationSupportARM for at least one processing engine in at least one queue family:
operationType:VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_OPTICAL_FLOW_ARMname:OpticalFlowversion:1
TOSA
Optical flow
An optical flow fixed-function node in a graph calculates the forward optical flow between an input image and a reference image. An output flow vector (Vx, Vy) means that current pixel (x, y) of the input image can be found at location (x+Vx, y+Vy) in the reference image.
An optical flow fixed function nodes have the following graph node connection points:
VK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_INPUT_ARMVK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_REFERENCE_ARMVK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_HINT_ARMVK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_FLOW_VECTOR_ARMVK_DATA_GRAPH_PIPELINE_NODE_CONNECTION_TYPE_OPTICAL_FLOW_COST_ARM