xref: /aosp_15_r20/external/executorch/examples/qualcomm/test_qualcomm.sh (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker#!/bin/bash
2*523fa7a6SAndroid Build Coastguard Worker# Copyright (c) Meta Platforms, Inc. and affiliates.
3*523fa7a6SAndroid Build Coastguard Worker# All rights reserved.
4*523fa7a6SAndroid Build Coastguard Worker#
5*523fa7a6SAndroid Build Coastguard Worker# This source code is licensed under the BSD-style license found in the
6*523fa7a6SAndroid Build Coastguard Worker# LICENSE file in the root directory of this source tree.
7*523fa7a6SAndroid Build Coastguard Worker
8*523fa7a6SAndroid Build Coastguard Worker# Test the end-to-end flow of qualcomm runner.
9*523fa7a6SAndroid Build Coastguard Worker
10*523fa7a6SAndroid Build Coastguard Workerset -e
11*523fa7a6SAndroid Build Coastguard Worker
12*523fa7a6SAndroid Build Coastguard Worker# shellcheck source=/dev/null
13*523fa7a6SAndroid Build Coastguard Workersource "$(dirname "${BASH_SOURCE[0]}")/../../../.ci/scripts/utils.sh"
14*523fa7a6SAndroid Build Coastguard Workercmake_install_executorch_qnn_lib() {
15*523fa7a6SAndroid Build Coastguard Worker  echo "Installing libexecutorch.a, libqnn_executorch_backend.a"
16*523fa7a6SAndroid Build Coastguard Worker  rm -rf cmake-out
17*523fa7a6SAndroid Build Coastguard Worker
18*523fa7a6SAndroid Build Coastguard Worker  retry cmake -DBUCK2="$BUCK" \
19*523fa7a6SAndroid Build Coastguard Worker          -DCMAKE_INSTALL_PREFIX=cmake-out \
20*523fa7a6SAndroid Build Coastguard Worker          -DCMAKE_BUILD_TYPE=Release \
21*523fa7a6SAndroid Build Coastguard Worker          -DEXECUTORCH_BUILD_QNN=ON \
22*523fa7a6SAndroid Build Coastguard Worker          -DPYTHON_EXECUTABLE="$PYTHON_EXECUTABLE" \
23*523fa7a6SAndroid Build Coastguard Worker          -Bcmake-out .
24*523fa7a6SAndroid Build Coastguard Worker  cmake --build cmake-out -j9 --target install --config Release
25*523fa7a6SAndroid Build Coastguard Worker}
26*523fa7a6SAndroid Build Coastguard Worker
27*523fa7a6SAndroid Build Coastguard Workertest_cmake_qualcomm() {
28*523fa7a6SAndroid Build Coastguard Worker    echo "Exporting MobilenetV2"
29*523fa7a6SAndroid Build Coastguard Worker    ${PYTHON_EXECUTABLE} -m examples.qualcomm.scripts.export_example --model_name mv2
30*523fa7a6SAndroid Build Coastguard Worker
31*523fa7a6SAndroid Build Coastguard Worker    local example_dir=examples/qualcomm
32*523fa7a6SAndroid Build Coastguard Worker    local build_dir=cmake-out/${example_dir}
33*523fa7a6SAndroid Build Coastguard Worker    CMAKE_PREFIX_PATH="${PWD}/cmake-out/lib/cmake/ExecuTorch;${PWD}/cmake-out/third-party/gflags"
34*523fa7a6SAndroid Build Coastguard Worker    # build qnn_executor_runner
35*523fa7a6SAndroid Build Coastguard Worker    rm -rf ${build_dir}
36*523fa7a6SAndroid Build Coastguard Worker    retry cmake \
37*523fa7a6SAndroid Build Coastguard Worker        -DCMAKE_BUILD_TYPE=Release \
38*523fa7a6SAndroid Build Coastguard Worker        -DQNN_SDK_ROOT=$QNN_SDK_ROOT \
39*523fa7a6SAndroid Build Coastguard Worker        -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
40*523fa7a6SAndroid Build Coastguard Worker        -DANDROID_ABI='arm64-v8a' \
41*523fa7a6SAndroid Build Coastguard Worker        -DANDROID_NATIVE_API_LEVEL=23 \
42*523fa7a6SAndroid Build Coastguard Worker        -DCMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH" \
43*523fa7a6SAndroid Build Coastguard Worker        -DPYTHON_EXECUTABLE="$PYTHON_EXECUTABLE" \
44*523fa7a6SAndroid Build Coastguard Worker        -B${build_dir} \
45*523fa7a6SAndroid Build Coastguard Worker        ${example_dir}
46*523fa7a6SAndroid Build Coastguard Worker
47*523fa7a6SAndroid Build Coastguard Worker    echo "Building ${example_dir}"
48*523fa7a6SAndroid Build Coastguard Worker    cmake --build ${build_dir} -j9 --config Release
49*523fa7a6SAndroid Build Coastguard Worker    # Need to run on device
50*523fa7a6SAndroid Build Coastguard Worker#   ${build_dir}/qnn_executor_runner --model_path="./mv2_qnn.pte"
51*523fa7a6SAndroid Build Coastguard Worker}
52*523fa7a6SAndroid Build Coastguard Worker
53*523fa7a6SAndroid Build Coastguard Workerif [[ -z $PYTHON_EXECUTABLE ]];
54*523fa7a6SAndroid Build Coastguard Workerthen
55*523fa7a6SAndroid Build Coastguard Worker  PYTHON_EXECUTABLE=python3
56*523fa7a6SAndroid Build Coastguard Workerfi
57*523fa7a6SAndroid Build Coastguard Worker
58*523fa7a6SAndroid Build Coastguard Workerif [[ -z $BUCK ]];
59*523fa7a6SAndroid Build Coastguard Workerthen
60*523fa7a6SAndroid Build Coastguard Worker  BUCK=buck2
61*523fa7a6SAndroid Build Coastguard Workerfi
62*523fa7a6SAndroid Build Coastguard Worker
63*523fa7a6SAndroid Build Coastguard Worker
64*523fa7a6SAndroid Build Coastguard Workercmake_install_executorch_qnn_lib
65*523fa7a6SAndroid Build Coastguard Workertest_cmake_qualcomm
66