# Running a model with UDO

Executing neural networks with UDO

This section describes how to provide the set of libraries
representing a UDO to Qualcomm® Neural Processing SDK, to execute network models
containing the UDO. Execution requires the model containing
the UDO be converted into DLC format using Qualcomm® Neural Processing SDK converter
tools as explained in [Preparing a model with
UDO](https://docs.qualcomm.com/doc/80-63442-2/topic/preparing_model_with_udo.html). Execution
additionally requires the creation of registration and
implementation libraries compatible with UDO APIs as
described in [Overview of UDO](https://docs.qualcomm.com/doc/80-63442-2/topic/udo_overview.html).

UDOs can be registered with a process and be utilized by any
instance of Qualcomm® Neural Processing SDK that employs them throughout the lifetime of
the process. They are registered with Qualcomm® Neural Processing SDK using the
Snpe\_Util\_AddOpPackage()
API:

SNPE_API
    int Snpe_Util_AddOpPackage(const char* regLibraryPath );
    Copy to clipboard

Note that the absolute path to the registration library is
explicitly provided to Qualcomm® Neural Processing SDK using the above API, whereas the
implementation libraries can exist anywhere on the system that
should be discovered by the library loader (using
LD\_LIBRARY\_PATH on Unix systems).

In addition to the native C API, the Qualcomm® Neural Processing SDK provides a
Java API for use in Android applications. The API is a part
of the SNPE class:

public static boolean
    addOpPackage(final Application application, String regLibraryPath)
    Copy to clipboard

**Running snpe-net-run command-line tool with UDO-based DLC**

This section outlines the use of **snpe-net-run** command line
tool with a UDO-based DLC. The use of
[snpe-net-run](https://docs.qualcomm.com/doc/80-63442-2/topic/tools.html#snpe-net-run) is largely
unchanged from its typical usage. The snpe-net-run tool
registers a UDO registration library through the command line
option –udo\_package\_path which accepts the absolute path to
the registration library.

Example usage is as follows:

snpe-net-run --container <path_to_dlc> --input_list <path_to_input_list> --udo_package_path <path_to_registration_lib>
    Copy to clipboard

**Running a UDO-based DLC on a signed process domain**

To run on an signed process domain, the same principles as
the above section on utilizing the **snpe-net-run** command
line tool apply with a few extensions. Firstly, signed
process domains only apply to the DSP target. Second, for a
signed process domain to be created, an argument must be
passed to the command line to request it. This comes in the
form of the platform\_options key:value argument pairing. To
enable model execution on a signed process domain, simply
add the following to the command line:

--use_dsp --platform_options unsignedPD:OFF
    Copy to clipboard

Example usage is as follows:

snpe-net-run --container <path_to_dlc> --input_list <path_to_input_list> --udo_package_path <path_to_registration_lib> --use_dsp --platform_options unsignedPD:OFF
    Copy to clipboard

**Note:** snpe-net-run requires implementation libraries to be
discoverable by the system library loader.

Last Published: Oct 02, 2025

[Previous Topic
Preparing a model with UDO](https://docs.qualcomm.com/bundle/publicresource/80-63442-2/topics/preparing_model_with_udo.md) [Next Topic
Model Conversion](https://docs.qualcomm.com/bundle/publicresource/80-63442-2/topics/usergroup3.md)