ONNX Operators

ONNX Operators#

The AMD Vitis™ AI ONNX opset support map is described in System Requirements. Operators in Vitis AI fall into five categories:

  1. NPU-accelerated operators (Supported Operators) These operators are fully accelerated on the NPU. For optimal performance, use NPU-accelerated operators whenever possible.

  2. CPU-partition-compatible operators (CPU Operators Supported by VART ML Runtime) When a model is compiled with CPU partition support, NPU-incompatible operators in this category are routed to CPU implementations provided by the AMD Vitis AI compiler. These operators are executed on the CPU by the VART ML Runtime and are supported on AArch64 (ARM). Models containing only NPU-accelerated and CPU-partition-compatible operators can be compiled with CPU partition support described in (CPU Partition Compilation).

  3. CPU-fallback operators (standard ONNX Runtime) (Operators Running in CPU) These operators are not supported by the NPU and do not have CPU implementations in the Vitis AI compiler for partitioned execution. When present, the model must be compiled and executed using standard ONNX Runtime (without CPU partition support). In this case, ONNX Runtime executes the CPU portions, and the model may still be partitioned into NPU and CPU subgraphs, but partitioning and execution are managed entirely by ONNX Runtime.

  4. Unsupported operators (Unsupported Operators) These operators are not supported by the NPU and also prevent use of Vitis AI CPU partition support. This category includes operators added after opset 22, dynamic shape usage, and other constraints that make an operator incompatible with the Vitis AI compilation flow. Models that rely on these operators are effectively CPU-only from a Vitis AI perspective and are expected to be executed entirely on the CPU through standard ONNX Runtime. Using operators in this category typically results in significantly reduced performance on NPU-based deployments, so they should be avoided in models intended for Vitis AI.

  5. Custom operators (Custom operators) For operators that fall outside the standard ONNX opset — or that require direct mapping to a hand-tuned AIE kernel for performance — Vitis AI provides a custom operator framework. Custom operators are user-defined extensions that the NPU compiler and ONNX Runtime treat as first-class citizens: they are compiled, partitioned, and executed on the NPU alongside built-in operators. This enables full NPU acceleration for novel or domain-specific operations that would otherwise fall back to the CPU. See Custom operators for authoring requirements, and Custom Op Creation with AI-Assisted Workflow for the AI-assisted development workflow.