diff --git a/.ci/scripts/build-qnn-sdk.sh b/.ci/scripts/build-qnn-sdk.sh index 7f34e8afb63..0725c8ec856 100755 --- a/.ci/scripts/build-qnn-sdk.sh +++ b/.ci/scripts/build-qnn-sdk.sh @@ -11,10 +11,8 @@ set -o xtrace build_qnn_backend() { echo "Start building qnn backend." - # Source QNN configuration - source "$(dirname "${BASH_SOURCE[0]}")/../../backends/qualcomm/scripts/install_qnn_sdk.sh" - setup_android_ndk - install_qnn + export ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT:-/opt/ndk} + export QNN_SDK_ROOT=${QNN_SDK_ROOT:-/tmp/qnn/2.37.0.250724} export EXECUTORCH_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)" parallelism=$(( $(nproc) - 1 )) diff --git a/.ci/scripts/setup-qnn-deps.sh b/.ci/scripts/setup-qnn-deps.sh index 9af688d5cb7..d962f7b908a 100644 --- a/.ci/scripts/setup-qnn-deps.sh +++ b/.ci/scripts/setup-qnn-deps.sh @@ -10,5 +10,4 @@ set -ex source "$(dirname "${BASH_SOURCE[0]}")/../../backends/qualcomm/scripts/install_qnn_sdk.sh" setup_libcpp 12 -setup_android_ndk install_qnn diff --git a/.ci/scripts/test_backend_linux.sh b/.ci/scripts/test_backend_linux.sh index 254d974160a..c31b7834203 100755 --- a/.ci/scripts/test_backend_linux.sh +++ b/.ci/scripts/test_backend_linux.sh @@ -33,7 +33,7 @@ if [[ "$FLOW" == *qnn* ]]; then PYTHON_EXECUTABLE=python bash .ci/scripts/setup-qnn-deps.sh PYTHON_EXECUTABLE=python bash .ci/scripts/build-qnn-sdk.sh QNN_X86_LIB_DIR=`realpath build-x86/lib/` - QNN_SDK_ROOT="/tmp/qnn/2.28.0.241029" + QNN_SDK_ROOT="/tmp/qnn/2.37.0.250724" export LD_LIBRARY_PATH"=$QNN_X86_LIB_DIR:$QNN_SDK_ROOT/lib/x86_64-linux-clang/:${LD_LIBRARY_PATH:-}" # TODO Get SDK root from install scripts diff --git a/.ci/scripts/test_llama.sh b/.ci/scripts/test_llama.sh index 84278e290f6..634e116a196 100644 --- a/.ci/scripts/test_llama.sh +++ b/.ci/scripts/test_llama.sh @@ -119,12 +119,8 @@ echo "COREML option ${COREML}" if [[ "${MODE}" =~ .*qnn.* ]]; then QNN=ON - - # Download QNN_SDK. If already downloaded, export environment path - source "$(dirname "${BASH_SOURCE[0]}")/../../backends/qualcomm/scripts/install_qnn_sdk.sh" - install_qnn - export EXECUTORCH_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" + export QNN_SDK_ROOT=/tmp/qnn/2.37.0.250724 export LD_LIBRARY_PATH="${QNN_SDK_ROOT}/lib/x86_64-linux-clang" export PYTHONPATH=".." cp schema/program.fbs exir/_serialize/program.fbs diff --git a/.ci/scripts/test_qnn_static_llama.sh b/.ci/scripts/test_qnn_static_llama.sh index 0a708fea76a..f4766c0e389 100644 --- a/.ci/scripts/test_qnn_static_llama.sh +++ b/.ci/scripts/test_qnn_static_llama.sh @@ -9,13 +9,8 @@ set -euxo pipefail source "$(dirname "${BASH_SOURCE[0]}")/utils.sh" -# Source QNN configuration -source "$(dirname "${BASH_SOURCE[0]}")/../../backends/qualcomm/scripts/qnn_config.sh" -# Download QNN_SDK. If already downloaded, export environment path -source "$(dirname "${BASH_SOURCE[0]}")/../../backends/qualcomm/scripts/install_qnn_sdk.sh" -install_qnn - export EXECUTORCH_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" +export QNN_SDK_ROOT=/tmp/qnn/2.37.0.250724 export LD_LIBRARY_PATH="${QNN_SDK_ROOT}/lib/x86_64-linux-clang" export PYTHONPATH=".." cp schema/program.fbs exir/_serialize/program.fbs diff --git a/.github/workflows/android-perf.yml b/.github/workflows/android-perf.yml index b37478686a9..33937531a01 100644 --- a/.github/workflows/android-perf.yml +++ b/.github/workflows/android-perf.yml @@ -292,7 +292,7 @@ jobs: export.output_name="${OUT_ET_MODEL_NAME}.pte" ls -lh "${OUT_ET_MODEL_NAME}.pte" elif [[ ${{ matrix.config }} == "llama3_qnn_htp" ]]; then - export QNN_SDK_ROOT=/tmp/qnn/2.37.0.25072 + export QNN_SDK_ROOT=/tmp/qnn/2.37.0.250724 export LD_LIBRARY_PATH=$QNN_SDK_ROOT/lib/x86_64-linux-clang/ export PYTHONPATH=$(pwd)/.. @@ -432,7 +432,7 @@ jobs: PYTHON_EXECUTABLE=python bash .ci/scripts/build-qnn-sdk.sh mkdir -p aar-out - PYTHON_EXECUTABLE=python ANDROID_ABIS="arm64-v8a" BUILD_AAR_DIR=aar-out EXECUTORCH_BUILD_QNN=ON QNN_SDK_ROOT=/tmp/qnn/2.37.0.25072 EXECUTORCH_ANDROID_PROFILING=ON bash scripts/build_android_library.sh + PYTHON_EXECUTABLE=python ANDROID_ABIS="arm64-v8a" BUILD_AAR_DIR=aar-out EXECUTORCH_BUILD_QNN=ON QNN_SDK_ROOT=/tmp/qnn/2.37.0.250724 EXECUTORCH_ANDROID_PROFILING=ON bash scripts/build_android_library.sh mkdir -p extension/benchmark/android/benchmark/app/libs cp aar-out/executorch.aar extension/benchmark/android/benchmark/app/libs pushd extension/benchmark/android/benchmark diff --git a/backends/qualcomm/scripts/install_qnn_sdk.sh b/backends/qualcomm/scripts/install_qnn_sdk.sh index a97d4258770..a8f9e63862d 100644 --- a/backends/qualcomm/scripts/install_qnn_sdk.sh +++ b/backends/qualcomm/scripts/install_qnn_sdk.sh @@ -48,12 +48,6 @@ install_qnn() { echo "Start installing qnn v${QNN_VERSION}" QNN_INSTALLATION_DIR="/tmp/qnn" - - if [ -d "${QNN_INSTALLATION_DIR}/${QNN_VERSION}" ]; then - echo "QNN SDK already installed at ${QNN_INSTALLATION_DIR}/${QNN_VERSION}" - export QNN_SDK_ROOT="${QNN_INSTALLATION_DIR}/${QNN_VERSION}" - return - fi # Clean up any previous installation if [ -d "${QNN_INSTALLATION_DIR}" ]; then @@ -85,7 +79,7 @@ install_qnn() { ls -lah "${QNN_INSTALLATION_DIR}" # Set QNN_SDK_ROOT environment variable - export QNN_SDK_ROOT="${QNN_INSTALLATION_DIR}/${QNN_VERSION}" + export QNN_SDK_ROOT="${QNN_INSTALLATION_DIR}" echo "Set QNN_SDK_ROOT=${QNN_SDK_ROOT}" } @@ -153,3 +147,7 @@ setup_libcpp() { echo "libc++ installed to ${INSTALL_DIR}" } + +setup_libcpp 12 +setup_android_ndk +install_qnn