# Backend

Clients interact with Qualcomm® AI Engine Direct through backends. In general terms, a Qualcomm® AI Engine Direct backend is a software entity
that implements [QNN API](https://docs.qualcomm.com/doc/80-63442-10/topic/general_api.html), and is typically compiled in the form of a
shared library. The terms *QNN backend* and *QNN backend library* are often used interchangeably.

QNN backend libraries provide integration modularity per hardware accelerator core (see [Overview](https://docs.qualcomm.com/doc/80-63442-10/topic/QNN_general_overview.html) for more details).

The QNN SDK provides several backend libraries. These libraries can be found in `<QNN_SDK_ROOT>/lib/<target-platform>` folders.
QNN backend libraries follow naming rules that are platform dependent (see Platform Differences for more details).
In the [Available Backend Libraries table](https://docs.qualcomm.com/doc/80-63442-10/topic/backend.html#qnn-sdk-backends-table) Library Description, the backend library is referred to by its platform agnostic name.

**Available QNN SDK Backend libraries**

| Backend Name | Backend Description | Target and Library Names | Library Description |
| --- | --- | --- | --- |
| CPU | Backend for Snapdragon™ CPU hardware core(s) | <ul class="simple"><br><li><p>aarch64-android</p></li><br><li><p>x86_64-linux-clang</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnCpu.so</span></code></p></li><br></ul><br></li><br><li><p>aarch64-windows-msvc</p></li><br><li><p>arm64x-windows-msvc</p></li><br><li><p>x86_64-windows-msvc</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnCpu.dll</span></code></p></li><br></ul><br></li><br></ul> | `QnnCpu` : CPU backend library, same name used across all targets. |
| DSP | Backend for Hexagon™ DSP hardware accelerator | <ul class="simple"><br><li><p>hexagon-v##</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnDspV##Skel.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnDspV##.so</span></code></p></li><br></ul><br></li><br><li><p>aarch64-android</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnDsp.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnDspV##Stub.so</span></code></p></li><br></ul><br></li><br></ul> | **Note: v## indicates libraries for different hexagon architecture versions are available.**<br><br><br>`libQnnDspV##Skel.so`   : DSP native library which is to be loaded using corresponding QnnDspV##Stub<br>from the device CPU side and is responsible for executing graphs<br>on the DSP accelerator as a proxy for CPU side backend.<br><br><br>`QnnDspV##Stub`   : DSP CPU-side proxy library that communicates with libQnnDspV##Skel.so<br>on DSP side via RPC channel.<br><br><br>`QnnDsp`          : DSP device CPU-side backend library, loads the corresponding DSP stub library based on the SoC.<br><br><br>`libQnnDspV##.so`        : DSP native backend library that allows direct integration on DSP without RPC. |
| GPU | Backend for Adreno™ GPU hardware accelerator | <ul class="simple"><br><li><p>aarch64-android</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnGpu.so</span></code></p></li><br></ul><br></li><br><li><p>aarch64-windows-msvc</p></li><br><li><p>arm64x-windows-msvc</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnGpu.dll</span></code></p></li><br></ul><br></li><br></ul> | `QnnGpu` : GPU backend library, same name used across all targets. |
| HTP | Backend for Hexagon™ HTP hardware accelerator | <ul class="simple"><br><li><p>hexagon-v##</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnHtpV##Skel.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnHtpV##.so</span></code></p></li><br></ul><br></li><br><li><p>aarch64-android</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnHtp.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnHtpPrepare.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnHtpV##Stub.so</span></code></p></li><br></ul><br></li><br><li><p>x86_64-linux-clang</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnHtp.so</span></code></p></li><br></ul><br></li><br><li><p>aarch64-windows-msvc</p></li><br><li><p>arm64x-windows-msvc</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnHtp.dll</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnHtpPrepare.dll</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnHtpV##Stub.dll</span></code></p></li><br></ul><br></li><br></ul> | **Note: v## indicates libraries for different hexagon architecture versions are available.**<br><br><br>`libQnnHtpV##Skel.so`    : HTP native library which is to be loaded using corresponding QnnHtpV##Stub<br>from the device CPU side and is responsible for executing graphs<br>on the HTP accelerator as a proxy for CPU side backend.<br><br><br>`QnnHtpV##Stub`    : HTP CPU-side proxy library that communicates with libQnnHtpV##Skel.so on<br>the HTP side via RPC channel.<br><br><br>`QnnHtp`           : HTP backend library. There are two variants:<br>(aarch64-android) Android device CPU-side backend library, loads the corresponding HTP stub library based<br>on the SoC; (x86\_64-linux) x86 Linux host backend serves as an functional simulator for the hardware accelerator and supports graph preparation on x86\_64 hosts.<br><br><br>`libQnnHtpV##.so`        : HTP native backend library that allows direct integration on HTP without RPC.<br><br><br>`QnnHtpPrepare`    : HTP library which provides functionality to compose and finalize graphs on<br>the device ARM (CPU) side. This library is automatically loaded by HTP backend library only when one of the following<br>operations is requested: 1) QnnBackend\_validateOpConfig, 2) QnnGraph\_addNode, 3)<br>QnnGraph\_finalize, or 4) QnnBackend\_registerOpPackage() with “CPU” target.<br>If these operations are not requested, this library does not need to be on the device. |
| HTA | Backend for Snapdragon™ HTA hardware accelerator | <ul class="simple"><br><li><p>aarch64-android</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnHta.so</span></code></p></li><br></ul><br></li><br></ul> | `QnnHta` : HTA backend library, same name used across all supported targets. |
| LPAI | Backend for Snapdragon™ LPAI hardware accelerator | <ul class="simple"><br><li><p><strong>Artifacts for offline model generation</strong></p><br><ul><br><li><p>x86_64-linux-clang</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpai.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpaiPrepare_v##.so</span></code></p></li><br></ul><br></li><br><li><p>x86_64-windows-msvc</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnLpai.dll</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnLpaiPrepare_v##.dll</span></code></p></li><br></ul><br></li><br></ul><br></li><br><li><p><strong>Artifacts for execution from v5 version only</strong></p><br><ul><br><li><p>lpai-v##</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpaiSkel.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpai.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpaiIsland.so</span></code></p></li><br></ul><br></li><br><li><p>aarch64-android</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpai.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpaiStub.so</span></code></p></li><br></ul><br></li><br><li><p>x86_64-linux-clang</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpai.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpaiPrepare_v##.so</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpaiSim_v##.so</span></code></p></li><br></ul><br></li><br><li><p>x86_64-windows-msvc</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnLpai.dll</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnLpaiPrepare_v##.dll</span></code></p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnLpaiSim_v##.dll</span></code></p></li><br></ul><br></li><br></ul><br></li><br></ul> | **Note:**<br><br><br><br>> <br>> <br>> <ul class="simple"><br>> <li><p><code class="docutils literal notranslate"><span class="pre">Sim_v##</span></code>       indicates Simulator libraries for different eNPU architecture versions.</p></li><br>> <li><p><code class="docutils literal notranslate"><span class="pre">Prepare_v##</span></code>   indicates compiler libraries for different eNPU architecture versions.</p></li><br>> </ul><br><br><br><ul class="simple"><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpai.so</span></code>             : LPAI native library located under lpai-v## to be loaded by qnn-net-run direct-mode or other DSP client app.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpaiSkel.so</span></code>         : LPAI native library which is to be loaded using corresponding QnnLpaiStub.so from the device ARM(CPU) side and is responsible for executing graphs on the LPAI accelerator as a proxy for CPU side backend.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpaiIsland.so</span></code>       : LPAI native Island library which is to be used by client to develop native DSP app with island functionality.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnLpaiStub.so</span></code>            : LPAI ARM(CPU) side proxy library that communicates with libQnnLpaiSkel.so on the LPAI side via RPC channel.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpai.so</span></code>             : LPAI backend library. There are two variants: (aarch64-android) Android device ARM(CPU) side backend library, loads the corresponding LPAI stub library based on the SoC; (x86_64-linux) x86 Linux host backend serves as an functional simulator for the hardware accelerator and supports graph generation on x86_64 hosts.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpaiSim_v##.so</span></code>      : x86_64 Linux host simulator library for specific eNPU architecture. This library is automatically loaded by LPAI backend library when one of the following operations is requested: 1) QnnContext_createFromBinary 2) QnnContext_create.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnLpaiPrepare_v##.so</span></code>  : x86_64 Linux host model generator library for specific eNPU architecture. This library is automatically loaded by LPAI backend library when one of the following operations is requested: 1) QnnBackend_validateOpConfig, 2) QnnGraph_addNode, 3) QnnGraph_finalize</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnLpai.dll</span></code>               : x86_64 Windows host backend serves as an functional simulator for the hardware accelerator and supports graph generation on x86_64 hosts.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnLpaiSim_v##.dll</span></code>        : x86_64 Windows host simulator library for specific eNPU architecture. This library is automatically loaded by LPAI backend library when one of the following operations is requested: 1) QnnContext_createFromBinary 2) QnnContext_create.</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnLpaiPrepare_v##.dll</span></code>    : x86_64 Windows host model generator library for specific eNPU architecture. This library is automatically loaded by LPAI backend library when one of the following operations is requested: 1) QnnBackend_validateOpConfig, 2) QnnGraph_addNode, 3) QnnGraph_finalize</p></li><br></ul> |
| Saver | Backend which captures QNN API calls and saves them to a file as they are issued by a client.<br>This can later be replayed for support and troubleshooting. | <ul class="simple"><br><li><p>aarch64-android</p></li><br><li><p>x86_64-linux-clang</p></li><br><li><p>hexagon-v68</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">libQnnSaver.so</span></code></p></li><br></ul><br></li><br><li><p>aarch64-windows-msvc</p></li><br><li><p>x86_64-windows-msvc</p><br><ul><br><li><p><code class="docutils literal notranslate"><span class="pre">QnnSaver.dll</span></code></p></li><br></ul><br></li><br></ul> | `QnnSaver` : Saver backend library. |

## Backend Specific Pages

- [DSP](https://docs.qualcomm.com/doc/80-63442-10/topic/dsp_backend.html)
- [HTP](https://docs.qualcomm.com/doc/80-63442-10/topic/htp_backend.html)
- [HTA](https://docs.qualcomm.com/doc/80-63442-10/topic/hta_backend.html)
- [LPAI](https://docs.qualcomm.com/doc/80-63442-10/topic/lpai_backend.html)
- [CPU](https://docs.qualcomm.com/doc/80-63442-10/topic/cpu_backend.html)
- [GPU](https://docs.qualcomm.com/doc/80-63442-10/topic/gpu_backend.html)
- [Saver](https://docs.qualcomm.com/doc/80-63442-10/topic/saver_backend.html)

Last Published: Jun 04, 2026

[Previous Topic
Windows Setup](https://docs.qualcomm.com/bundle/publicresource/80-63442-10/topics/windows_setup.md) [Next Topic
DSP](https://docs.qualcomm.com/bundle/publicresource/80-63442-10/topics/dsp_backend.md)