Overview¶
Capabilities¶
The Qualcomm® Neural Processing SDK is a Qualcomm Snapdragon software accelerated runtime for the execution of deep neural networks. With Qualcomm® Neural Processing SDK, users can:
Execute an arbitrarily deep neural network
Execute the network on the Snapdragon CPU, the Adreno GPU or the Hexagon DSP.
Debug the network execution on x86 Ubuntu Linux
Convert PyTorch, TFLite, ONNX, and TensorFlow models to a Qualcomm® Neural Processing SDK Deep Learning Container (DLC) file
Quantize DLC files to 8 or 16 bit fixed point for running on the Hexagon DSP
Debug and analyze the performance of the network with Qualcomm® Neural Processing SDK tools
Integrate a network into applications and other code via C++ or Java
Model Workflow¶
Model training is performed on a popular deep learning framework (PyTorch, TFLite, ONNX, and TensorFlow models are supported by Qualcomm® Neural Processing SDK.) After training is complete the trained model is converted into a DLC file that can be loaded into the Qualcomm® Neural Processing SDK runtime. This DLC file can then be used to perform forward inference passes using one of the Snapdragon accelerated compute cores.
The basic Qualcomm® Neural Processing SDK workflow consists of only a few steps:
Convert the network model to a DLC file that can be loaded by Qualcomm® Neural Processing SDK.
Optionally quantize the DLC file for running on the Hexagon DSP.
Prepare input data for the model.
Load and execute the model using Qualcomm® Neural Processing SDK runtime.
Supported Snapdragon Devices¶
Linux/Android¶
Snapdragon Device/Chip |
Supported Tool Chains |
CPU |
GPU |
DSP Hexagon Arch |
AIP |
SD 8 Gen 4 (SM8750) |
aarch64-android |
Yes |
Yes |
V79 |
No |
SD 8 Gen 3 (SM8650) |
aarch64-android |
Yes |
Yes |
V75 |
No |
SD 8 Gen 2 (SM8550) |
aarch64-android |
Yes |
Yes |
V73 |
No |
SD 8s Gen 3 (SM8635) |
aarch64-android |
Yes |
Yes |
V73 |
No |
SD 8+ Gen 1 (SM8475) |
aarch64-android |
Yes |
Yes |
V69 |
No |
SD 8 Gen 1 (SM8450) |
aarch64-android |
Yes |
Yes |
V69 |
No |
888+ (SM8350P) |
aarch64-android |
Yes |
Yes |
V68 |
No |
888 (SM8350) |
aarch64-android |
Yes |
Yes |
V68 |
No |
7+ Gen 3 (SM7675) |
aarch64-android |
Yes |
Yes |
V73 |
No |
7 Gen 1 (SM7450) |
aarch64-android |
Yes |
Yes |
V69 |
No |
778G (SM7325) |
aarch64-android |
Yes |
Yes |
V68 |
No |
QCM6490 |
aarch64-android, aarch64-ubuntu-gcc9.4, aarch64-oe-linux-gcc11.2 |
Yes |
Yes |
V68 |
No |
865 (SM8250) |
aarch64-android |
Yes |
Yes |
V66 |
Yes |
765 (SM7250) |
aarch64-android |
Yes |
Yes |
V66 |
Yes |
750G (SM7225) |
aarch64-android |
Yes |
Yes |
V66 |
Yes |
690 (SM6350) |
aarch64-android |
Yes |
Yes |
V66 |
Yes |
QRB5165U |
aarch64-ubuntu-gcc9.4 |
Yes |
Yes |
V66 |
Yes |
QRB5165LE |
aarch64-oe-linux-gcc9.3, aarch64-oe-linux-gcc11.2 |
Yes |
Yes |
V66 |
Yes |
QCS7230LA |
aarch64-android |
Yes |
Yes |
V66 |
Yes |
QCS7230LE |
aarch64-oe-linux-gcc9.3, aarch64-oe-linux-gcc11.2 |
Yes |
Yes |
V66 |
Yes |
695 (SM6375) |
aarch64-android |
Yes |
Yes |
V66 |
No |
680 (SM6225) |
aarch64-android |
Yes |
Yes |
V66 |
No |
480 (SM4350/6325) |
aarch64-android |
Yes |
Yes |
V66 |
No |
460 (SM4250) |
aarch64-android |
Yes |
Yes |
V66 |
No |
662 (SM6115) |
aarch64-android |
Yes |
Yes |
V66 |
No |
QCS610LA |
aarch64-android |
Yes |
Yes |
V66 |
No |
QCS610LE |
aarch64-oe-linux-gcc9.3 |
Yes |
Yes |
V66 |
No |
QCS410LA |
aarch64-android |
Yes |
Yes |
V66 |
No |
QCS410LE |
aarch64-oe-linux-gcc9.3 |
Yes |
Yes |
V66 |
No |
QCM4290 |
aarch64-android |
Yes |
Yes |
V66 |
No |
QCM6125 |
aarch64-android |
Yes |
Yes |
V66 |
No |
QRB4210LE |
aarch64-oe-linux-gcc9.3 |
Yes |
Yes |
V66 |
No |
QCM4490 |
aarch64-android |
Yes |
Yes |
N/A |
No |
XR2 Gen 2 (SXR2230P) |
aarch64-android |
Yes |
Yes |
V69 |
No |
XR2 Gen 2 (SXR2250P) |
aarch64-android |
Yes |
Yes |
V69 |
No |
QCS/QCM8550LA |
aarch64-android |
Yes |
Yes |
V73 |
No |
QCS/QCM8550LE |
aarch64-oe-linux-gcc11.2 |
Yes |
Yes |
V73 |
No |
Windows¶
Snapdragon Device/Chip |
Supported Tool Chains |
CPU |
GPU |
DSP Hexagon Arch |
AIP |
Snapdragon 8cx Gen 4 (SC8380XP) |
aarch64-windows-msvc, arm64x-windows-msvc |
Yes |
No |
V73 |
No |
Snapdragon 8cx Gen 3 (SC8280X) |
aarch64-windows-msvc |
Yes |
No |
V68 |
No |
Snapdragon 8cx Gen 2 (SC8180X) |
aarch64-windows-msvc |
Yes |
No |
V66 |
No |
Snapdragon 7c gen 2 (SC7280X) |
aarch64-windows-msvc |
Yes |
No |
V68 |
No |
Note
See Windows ARM64X Support for more information about arm64x-windows-msvc toolchain.
What’s included in the SDK¶
Linux/Android¶
SDK Asset |
Type |
Compiler |
C++ STL |
Description |
bin/x86_64-linux-clang |
binary |
clang |
libc++ 14 |
x86 Linux binaries |
bin/aarch64-android |
binary |
clang |
libc++ |
Aarch64 Android binaries |
bin/aarch64-ubuntu-gcc9.4 |
binary |
gcc9.4 |
gnustl |
Aarch64 Ubuntu binaries |
bin/aarch64-oe-linux-gcc8.2 |
binary |
gcc8.2 |
gnustl |
Aarch64 Linux binaries |
bin/aarch64-oe-linux-gcc9.3 |
binary |
gcc9.3 |
gnustl |
Aarch64 Linux binaries |
bin/aarch64-oe-linux-gcc11.2 |
binary |
gcc11.2 |
gnustl |
Aarch64 Linux binaries |
lib/android |
lib |
- |
- |
Android aar file used to include SNPE into your application |
lib/x86_64-linux-clang |
lib |
clang |
libc++ 14 |
x86 Linux libraries |
lib/aarch64-android |
lib |
clang |
libc++ |
Aarch64 Android libraries |
lib/hexagon-<dsp_version> |
lib |
- |
- |
Hexagon DSP runtime libraries |
lib/aarch64-ubuntu-gcc9.4 |
lib |
gcc9.4 |
gnustl |
Aarch64 Ubuntu libraries |
lib/aarch64-oe-linux-gcc8.2 |
lib |
gcc8.2 |
gnustl |
Aarch64 Linux libraries |
lib/aarch64-oe-linux-gcc9.3 |
lib |
gcc9.3 |
gnustl |
Aarch64 Linux libraries |
lib/aarch64-oe-linux-gcc11.2 |
lib |
gcc11.2 |
gnustl |
Aarch64 Linux libraries |
lib/python |
lib |
- |
- |
Qualcomm (R) Neural Processing SDK Python model tools modules |
include/SNPE |
include dir |
- |
- |
Qualcomm (R) Neural Processing SDK API header files |
examples |
examples dir |
- |
- |
Source code sample applications in Native C, C++ and Android Java |
docs |
documents |
- |
- |
Reference Guide |
benchmarks |
scripts |
- |
- |
Benchmark framework to gather runtime performance data on devices |
Windows¶
SDK Asset |
Type |
Compiler |
C++ STL |
Description |
bin/x86_64-windows-msvc |
binary |
MSVC |
MSVC |
x86_64 Windows binaries |
bin/aarch64-windows-msvc |
binary |
MSVC |
MSVC |
ARM64 Windows binaries |
bin/arm64x-windows-msvc |
binary |
MSVC |
MSVC |
ARM64X Windows binaries |
lib/x86_64-windows-msvc |
lib |
MSVC |
MSVC |
x86_64 Windows libraries |
lib/aarch64-windows-msvc |
lib |
MSVC |
MSVC |
ARM64 Windows libraries |
lib/arm64x-windows-msvc |
lib |
MSVC |
MSVC |
ARM64X Windows libraries |
lib/hexagon-v66 |
lib |
- |
- |
Hexagon DSP v66 runtime libraries |
lib/hexagon-v68 |
lib |
- |
- |
Hexagon DSP v68 runtime libraries |
lib/hexagon-v73 |
lib |
- |
- |
Hexagon DSP v73 runtime libraries |
lib/python |
lib |
- |
- |
Qualcomm (R) Neural Processing SDK Python model tools modules |
include/SNPE |
include dir |
- |
- |
Qualcomm (R) Neural Processing SDK API header files |
examples |
examples dir |
- |
- |
Source code sample applications in Native C++ |
docs |
documents |
- |
- |
Reference Guide |
share |
resources |
- |
- |
Qualcomm (R) Neural Processing SDK Udo resources |
Important Files and Locations¶
$SNPE_ROOT refers to the base directory where the SDK is installed.
Linux/Android¶
File |
Type |
Details |
Location |
|---|---|---|---|
envsetup.sh |
script |
Sets up environment variables needed to run SDK tools and binaries |
|
snpe-onnx-to-dlc |
script |
Converts an ONNX model to a DLC file |
|
snpe-tensorflow-to-dlc |
script |
Converts a TensorFlow model to a DLC file |
|
snpe-tflite-to-dlc |
script |
Converts a TfLite model to a DLC file |
|
snpe-pytorch-to-dlc |
script |
Converts a Pytorch model to a DLC file |
|
snpe-dlc-quant |
executable |
Quantize a DLC file using 8/16 bit quantization |
|
snpe-dlc-graph-prepare |
executable |
Prepares (offline) a graph for HTP on the host |
|
snpe-dlc-quantize |
script |
Invokes snpe-dlc-quant and snpe-dlc-graph-prepare (for backward compatibility) |
|
snpe-diagview |
executable |
Displays Neural Processing SDK timing output |
|
snpe-dlc-info |
script |
Prints DLC file information |
|
snpe-dlc-viewer |
script |
Displays a DLC file as an HTML file |
|
snpe-dlc-diff |
script |
Compares two different DLC files |
|
snpe-udo-package-generator |
executable |
Generates a UDO package |
|
snpe_bench.py |
script |
Executes DLC model on device and collect benchmark information |
|
snpe-net-run |
executable |
Executes neural networks using SDK APIs |
|
libSNPE.so |
library |
Qualcomm® Neural Processing SDK runtime for host and device development |
|
libHtpPrepare.so |
library |
Library for offline graph preparation for HTP |
|
libSnpeDspV66Skel.so |
library |
Hexagon DSP runtime library for v66 targets |
|
libSnpeHtpVxxSkel.so |
library |
Hexagon DSP runtime library for v68/69/73/75/79 targets |
|
Windows¶
File |
Type |
Details |
Location |
|---|---|---|---|
snpe-net-run.exe |
executable |
Executes neural networks using SDK APIs |
|
snpe-onnx-to-dlc |
script |
Converts an ONNX model to a DLC file |
|
snpe-tensorflow-to-dlc |
script |
Converts a TensorFlow model to a DLC file |
|
snpe-dlc-quant |
executable |
Quantizes a DLC file using 8/16 bit quantization |
|
snpe-dlc-graph-prepare |
executable |
Prepares (offline) a graph for HTP on the host |
|
snpe-diagview |
executable |
Displays Neural Processing SDK timing output |
|
snpe-dlc-info |
script |
Prints DLC file information |
|
snpe-dlc-viewer |
script |
Displays a DLC file as an HTML file |
|
snpe-dlc-diff |
script |
Compares two different DLC files |
|
snpe-udo-package-generator |
executable |
Generates UDO package |
|
envsetup.ps1 |
script |
Sets up environment variables needed to run SDK tools and binaries |
|
SNPE.dll |
library |
Qualcomm® Neural Processing SDK runtime for host and device development |
|
SnpeHtpPrepare.dll |
library |
Library for offline graph preparation for HTP |
|
libSnpeDspV66Skel.so |
library |
Hexagon DSP runtime library for v66 targets |
|
libSnpeHtpV68Skel.so |
library |
Hexagon DSP runtime library for v68 targets |
|
libSnpeHtpV73Skel.so |
library |
Hexagon DSP runtime library for v73 targets |
|