Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/android-release-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ jobs:
source backends/qualcomm/scripts/qnn_config.sh
export QNN_SDK_ROOT="/tmp/qnn/${QNN_VERSION}"
export ANDROID_ABIS=arm64-v8a
GRADLE_ARGS+=" -DqnnVersion=2.50.0"
GRADLE_ARGS+=" -DqnnVersion=${QNN_VERSION%.*}"
fi

# Build AAR Package
Expand Down
11 changes: 11 additions & 0 deletions .wiki/backends/qnn/known-issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,16 @@ CQ8750S (soc_id=705) is not in ExecuTorch's SoC table, causing "No Snapdragon SO

**Workaround**: Wait for SDK v2.43 release or manually add the SoC ID mapping.

### Benign "unexpected GraphHtpSettings option 66" on QNN SDK 2.51

**Symptom**: Host-side (x86) AOT lowering logs this once per graph create:
```
[ERROR] [Qnn ExecuTorch]: <E> unexpected GraphHtpSettings option 66
```
Only on QNN SDK 2.51 (2.51.0.260929); versions earlier are clean.

**Status**: **no action needed**. The graph finalizes, inference runs, numerics are unaffected.

## Resolved Issues (Instructive)

### Conv1dToConv2d Pass IndexError
Expand Down Expand Up @@ -205,6 +215,7 @@ Early versions hardcoded SM8650 in the partitioner, causing failures on other So
- **v2.42+**: SA8797 (V81) support
- **v2.43+**: CQ8750S support
- **v2.44+**: Latest features
- **v2.50 / v2.51**: bumped in-tree for SM8750; 2.51 logs a benign `GraphHtpSettings option 66` error at AOT (see Active Issues above)

Context binaries are not forward-compatible across SDK versions. [Source: #1430, #4155]

Expand Down
4 changes: 2 additions & 2 deletions backends/qualcomm/scripts/download_qnn_sdk.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def _read_qnn_config() -> Dict[str, str]:


_QNN_CONFIG = _read_qnn_config()
QNN_VERSION = _QNN_CONFIG.get("QNN_VERSION", "2.50.0.260828")
QNN_VERSION = _QNN_CONFIG.get("QNN_VERSION", "2.51.0.260929")
QNN_ZIP_URL = _QNN_CONFIG.get(
"QNN_ZIP_URL",
f"https://softwarecenter.qualcomm.com/api/download/software/sdks/" # @lint-ignore only half of a URL, the rest is on the next line
Expand All @@ -81,7 +81,7 @@ def _read_qnn_config() -> Dict[str, str]:


def _get_sdk_dir() -> pathlib.Path:
"""Get the versioned SDK cache directory (e.g. ~/.cache/executorch/qnn/sdk-2.50.0.260828/)."""
"""Get the versioned SDK cache directory (e.g. ~/.cache/executorch/qnn/sdk-2.51.0.260929/)."""
try:
return _get_staging_dir(f"sdk-{QNN_VERSION}")
except ValueError:
Expand Down
2 changes: 1 addition & 1 deletion backends/qualcomm/scripts/qnn_config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# LICENSE file in the root directory of this source tree.

# QNN SDK Configuration
QNN_VERSION="2.50.0.260828"
QNN_VERSION="2.51.0.260929"
QNN_ZIP_URL="https://softwarecenter.qualcomm.com/api/download/software/sdks/Qualcomm_AI_Runtime_Community/All/${QNN_VERSION}/v${QNN_VERSION}.zip"

# Hexagon SDK Configuration (used only by direct-mode CI build).
Expand Down
8 changes: 5 additions & 3 deletions docs/source/backends-qualcomm.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ The target SoC must be one of those listed in the `QcomChipset` enum; see [qc_sc

[Qualcomm AI Engine Direct SDK](https://developer.qualcomm.com/software/qualcomm-ai-engine-direct-sdk)
- Click the "Get Software" button to download the latest version of the QNN SDK.
- Although newer versions are available, we have verified and recommend using QNN 2.50.0 for stability.
- You can download it directly from the following link: [QNN 2.50.0](https://softwarecenter.qualcomm.com/api/download/software/sdks/Qualcomm_AI_Runtime_Community/All/2.50.0.260828/v2.50.0.260828.zip)
- Although newer versions are available, we have verified and recommend using QNN 2.51.0 for stability.
- You can download it directly from the following link: [QNN 2.51.0](https://softwarecenter.qualcomm.com/api/download/software/sdks/Qualcomm_AI_Runtime_Community/All/2.51.0.260929/v2.51.0.260929.zip)

The directory with installed Qualcomm AI Engine Direct SDK looks like:
```
Expand Down Expand Up @@ -617,7 +617,9 @@ cd $DEMO_APP
unzip -l app/build/outputs/apk/debug/app-debug.apk | grep "libQnnHtp.so"
```

Expected size for QNN 2.50.0: ~2,601,473,189 bytes
This prints the single `arm64-v8a/libQnnHtp.so` entry bundled from the
`com.qualcomm.qti:qnn-runtime` artifact. Expected size for QNN 2.51.0:
~4,158,496 bytes.

***Step 3***. Monitor Logs During Model Loading

Expand Down
2 changes: 1 addition & 1 deletion docs/source/using-executorch-android.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ QNN runtime version used by the

```kotlin
dependencies {
implementation("com.qualcomm.qti:qnn-runtime:2.50.0")
implementation("com.qualcomm.qti:qnn-runtime:2.51.0")
}
```

Expand Down
2 changes: 1 addition & 1 deletion examples/qualcomm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ pip install scikit-learn pandas graphviz

## Limitation

1. QNN 2.50 is used for all examples. Newer or older QNN might work, but the performance and accuracy number can differ.
1. QNN 2.51 is used for all examples. Newer or older QNN might work, but the performance and accuracy number can differ.

2. The mobilebert example is on QNN HTP fp16, which is only supported by a limited
set of SoCs. Please check QNN documents for details.
Expand Down
4 changes: 2 additions & 2 deletions examples/qualcomm/custom_op/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ This folder contains examples demonstrating the end-to-end flow for adding a cus

- Please finish tutorial [Setting up executorch](https://pytorch.org/executorch/stable/getting-started-setup).

- Please finish [setup QNN backend](../../../docs/source/backends-qualcomm.md). This example is verified with QNN SDK 2.50.0.
- Please finish [setup QNN backend](../../../docs/source/backends-qualcomm.md). This example is verified with QNN SDK 2.51.0.

- Please follow [the instructions to install proper version of Hexagon SDK and Hexagon Tools.](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-10/linux_setup.html#htp-and-dsp)

The required Hexagon SDK and tools versions depend on your QNN SDK version. Check the `Makefile` in the op package directory for the exact combination — `HEXAGON_SDK_ROOT_V<arch>` and `HEXAGON_TOOLS_VERSION_V<arch>` specify the SDK and tools version per target.

For the examples in this folder (verified with QNN SDK 2.50.0, for SM8650):
For the examples in this folder (verified with QNN SDK 2.51.0, for SM8650):

| Target | Hexagon SDK | Tools version |
|--------|-------------|---------------|
Expand Down
2 changes: 1 addition & 1 deletion shim_et/xplat/executorch/backends/qualcomm/qnn_version.bzl
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
def get_qnn_library_version():
return "2.50"
return "2.51"
Loading