================ Operator Support ================ This page lists the operators currently supported by the Vulkan backend. The source of truth for this information is `op_registry.py `_, which is used by the Vulkan Partitioner to determine which operators should be lowered to the Vulkan backend and additionally describes the capabilities of each operator implementation. If an operator used in your model is not in this list, feel free to create a feature request on Github and we will do our best to add an implementation for the operator. The namespace of an operator describes where it originates from: * **aten** - operators in this namespace correspond 1:1 to operators in PyTorch's `ATen library `_. They all support fp16 and fp32 dtypes at a minimum. * **dim_order_op** - these operators are inserted when lowering to ExecuTorch in order to manage optimal tensor memory layouts. They are typically removed, since the Vulkan backend manages optimal tensor representations internally. * **llama** - custom ops targeted for LLM inference. These are typically inserted by model source transformations applied to a `nn.Module` and are not invoked directly by a PyTorch model. * **operator** - these operators work with symbolic integers, which are also supported by the Vulkan backend. * **quantized_decomposed** / **torchao** - these ops are introduced by quantization workflows (either torchao's `quantize_` API or the PT2E quantization flow). They typically represent quantizing/dequantizing a tensor, or choosing the quantization parameters for a tensor. In practice, most instances of these operators will be fused into a custom op in the **et_vk** namespace. * **et_vk** - these are custom operators implemented only in the Vulkan backend. They typically represent quantized variants of **aten** operators, or fusions of common operator patterns. They are inserted by operator fusion graph passes when lowering to the Vulkan backend. All operators support dynamic input shapes unless otherwise noted (i.e. "no resize support"). The expectation is that over time, all operators will be able to support dynamic shapes. .. csv-table:: Vulkan Backend Operator Support :file: vulkan-op-support-table.csv :header-rows: 1 :widths: 25 25 75 :align: left