# Overview of UDO

Introduction

Qualcomm® Neural Processing SDK provides the ability for users to plug in custom neural
network operations that may not be inherently supported by the
runtime engine in the form of User-Defined Operations
(hereafter referred to as UDO). These could be operations
defined in popular training frameworks such as Tensorflow or
custom operations that are built based as framework extensions
but not available in the Qualcomm® Neural Processing SDK. They can be natively
executed on any of the supported hardware accelerators for
which they are implemented. Qualcomm® Neural Processing SDK provides the infrastructure to
execute these operations in a seamless fashion with little to
no overhead compared to executing internally supported
operations.

Anatomy of a UDO package

Qualcomm® Neural Processing SDK allows users to provide UDO implementations in the form
of dynamic libraries that can be queried, loaded and
exercised to execute inference using kernels defined within
them. Qualcomm® Neural Processing SDK promotes the notion of a ‘UDO package’ with which
a user can easily express the association between the
different components of a UDO. This notion is central to all
the tools that enable users to create UDO packages to be used
in network inference. However, it is to be noted that Qualcomm® Neural Processing SDK
still directly interfaces with the various UDO libraries at
runtime and not with the UDO package construct. Thus users
are free to just build standalone libraries without being
strictly bound to this notion of a package.

The figure below illustrates the concept of a UDO package:

![../images/UdoPackage.png](data:image/png;base64,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)

As seen from the picture, a UDO package consists of a
registration component and an implementation component. They
are usually expressed separately with one registration
library and a set of implementation libraries, one for each
hardware accelerator for which an implementation kernel is
available. Users can optionally build both components into a
single library if they so wish.

The registration library consists of methods that specify all
user-defined operations and the hardware cores they are
designed for. It also consists of methods that allow operations
to be validated for sanity at the time of network creation. The
registration library is loaded and executed on the ARM CPU.

The hardware-specific implementation libraries expose several
other methods that implement operation instance creation,
execution, profiling and destruction. These are implemented
with programming constructs supported from corresponding
software platforms, such as OpenCL for GPU and Hexagon-NN SDK
for DSP. While core-specific implementation files may differ
entirely in source, they are all required to interface with
Qualcomm® Neural Processing SDK using a set of C APIs defined in $SNPE\_ROOT/include/SNPE/SnpeUdo.
The complete details on these APIs can be obtained from
Qualcomm® Neural Processing SDK API.

UDO workflow

Qualcomm® Neural Processing SDK recommends the following workflow in developing and
integrating a UDO into the runtime:

![../images/UdoWorkflow.png](data:image/png;base64,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)

The first step in the workflow is to identify the operations in
the model that need to be expressed as user-defined operations
and describing their attributes through a configuration file.
The format and contents of this file are described in [Defining
a UDO](https://docs.qualcomm.com/doc/80-63442-2/topic/udo_operator_definition.html).

The next set of steps produce the components of a UDO package
by creating source files for the UDO kernels and compiling them
against appropriate tool-chains to generate dynamic libraries
specific to hardware cores such as the GPU and DSP. Qualcomm® Neural Processing SDK
provides a tool called `snpe-udo-package-generator` that
assists users in creating common skeleton code for interfacing
with Qualcomm® Neural Processing SDK UDO APIs and leaves placeholders for users to fill in
the kernel implementation. It also generates makefiles for
common targets such as x86, Android, and for runtimes per
target specified in the config file. For more details on the
package generation refer to [Creating a UDO
Package](https://docs.qualcomm.com/doc/80-63442-2/topic/creating_udo_package.html). For details on
compiling the UDO package for a specific runtime refer to
[Compiling a UDO package](https://docs.qualcomm.com/doc/80-63442-2/topic/compiling_udo_package.html).

The config file created in the first step is also required to
be used by the Qualcomm® Neural Processing SDK model conversion tools along with the
actual trained model to allow interpretation of the
user-defined operations using definitions from the file. The
resulting DLC files can then be inspected using tools like
`snpe-dlc-info` to probe the attributes of the UDOs in the
model. For details on creating (and optionally quantizing) DLCs
with UDOs refer to [Preparing a model with
UDO](https://docs.qualcomm.com/doc/80-63442-2/topic/preparing_model_with_udo.html). Optionally, models with
UDOs can also be quantized using Qualcomm® Neural Processing SDK quantization tools to use
with fixed-point runtimes such as DSP. The quantizer tool
estimates the quantization ranges for activations from all
layers in the network including UDOs. Since the tool runs
offline on an x86 host machine, it is required to have a CPU
implementation for the UDO in order to perform inference
through the entire network. This is also illustrated in dotted
lines in the workflow diagram. Refer to [Quantizing a DLC with
UDO](https://docs.qualcomm.com/doc/80-63442-2/topic/preparing_model_with_udo.html#quantize_network_with_udo)
for details on the quantization process.

The final step in this workflow is to be able to actually
execute network models with UDOs. Qualcomm® Neural Processing SDK applications use the UDO
package to register UDO implementations within the process that
runs inference on select network models. It should be noted
that these UDOs can be exercised by multiple instances of Qualcomm® Neural Processing SDK
simultaneously without race conditions, which increases the
overall throughput for network inference. For more details on
the UDO package registration process refer to [Running a model
with UDO](https://docs.qualcomm.com/doc/80-63442-2/topic/running_model_with_udo.html).

If the DSP implementation library of the UDO is not signed for
execution on a signed process domain (the default for a Qualcomm® Neural Processing SDK
application), it is required to request the use of an unsigned
process domain. Unsigned process domains apply only to the DSP
target, and allow Qualcomm® Neural Processing SDK to use unsigned UDO implementation
libraries. To see how to utilize an unsigned process domain
with the Qualcomm® Neural Processing SDK application, refer to [Running a model with
UDO](https://docs.qualcomm.com/doc/80-63442-2/topic/running_model_with_udo.html).

UDO Backward Compatibility

This section specifies limitations of UDO packages :

- The UDOs compiled for DSP V68 or later on a particular Qualcomm® Neural Processing SDK release
version, needs to be used with same release version and
can’t be used with different release version.
- Users need to recompile UDO packages generated for DSP V68
by using correct Qualcomm® AI Direct SDK which is compatible with a
particular Qualcomm® Neural Processing SDK release.

Last Published: Oct 02, 2025

[Previous Topic
User-defined Operations](https://docs.qualcomm.com/bundle/publicresource/80-63442-2/topics/usergroup2.md) [Next Topic
Defining a UDO](https://docs.qualcomm.com/bundle/publicresource/80-63442-2/topics/udo_operator_definition.md)