diff --git a/.github/workflows/android-perf.yml b/.github/workflows/android-perf.yml index 473dad08c14..c44de955335 100644 --- a/.github/workflows/android-perf.yml +++ b/.github/workflows/android-perf.yml @@ -206,6 +206,10 @@ jobs: name: build-llm-demo uses: pytorch/test-infra/.github/workflows/linux_job.yml@main needs: set-parameters + strategy: + matrix: + delegate: ${{ fromJson(needs.set-parameters.outputs.delegates) }} + fail-fast: false with: runner: linux.2xlarge docker-image: executorch-ubuntu-22.04-clang12-android @@ -222,6 +226,11 @@ jobs: PYTHON_EXECUTABLE=python bash .ci/scripts/setup-linux.sh cmake export ARTIFACTS_DIR_NAME=artifacts-to-be-uploaded + if [[ ${{ matrix.delegate }} == "qnn" ]]; then + PYTHON_EXECUTABLE=python bash .ci/scripts/setup-qnn-deps.sh + PYTHON_EXECUTABLE=python bash .ci/scripts/build-qnn-sdk.sh + fi + # TODO: This needs to be replaced with a generic loader .apk # Build LLM Demo for Android bash build/build_android_llm_demo.sh ${ARTIFACTS_DIR_NAME} diff --git a/build/build_android_llm_demo.sh b/build/build_android_llm_demo.sh index 38efa05b745..5a17c8745dc 100644 --- a/build/build_android_llm_demo.sh +++ b/build/build_android_llm_demo.sh @@ -19,6 +19,13 @@ build_android_native_library() { ANDROID_ABI="$1" ANDROID_NDK="${ANDROID_NDK:-/opt/ndk}" CMAKE_OUT="cmake-out-android-${ANDROID_ABI}" + QNN_SDK_ROOT="${QNN_SDK_ROOT:-}" + if [ -n "$QNN_SDK_ROOT" ]; then + EXECUTORCH_BUILD_QNN=ON + else + EXECUTORCH_BUILD_QNN=OFF + fi + cmake . -DCMAKE_INSTALL_PREFIX="${CMAKE_OUT}" \ -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" \ @@ -34,6 +41,8 @@ build_android_native_library() { -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=ON \ -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=ON \ -DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \ + -DEXECUTORCH_BUILD_QNN="${EXECUTORCH_BUILD_QNN}" \ + -DQNN_SDK_ROOT="${QNN_SDK_ROOT}" \ -DCMAKE_BUILD_TYPE=Release \ -B"${CMAKE_OUT}"