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