| #!/bin/bash |
| # Copyright (c) Meta Platforms, Inc. and affiliates. |
| # All rights reserved. |
| # |
| # This source code is licensed under the BSD-style license found in the |
| # LICENSE file in the root directory of this source tree. |
| |
| # Test the end-to-end flow of qualcomm runner. |
| |
| set -e |
| |
| # shellcheck source=/dev/null |
| source "$(dirname "${BASH_SOURCE[0]}")/../../../.ci/scripts/utils.sh" |
| cmake_install_executorch_qnn_lib() { |
| echo "Installing libexecutorch.a, libqnn_executorch_backend.a" |
| rm -rf cmake-out |
| |
| retry cmake -DBUCK2="$BUCK" \ |
| -DCMAKE_INSTALL_PREFIX=cmake-out \ |
| -DCMAKE_BUILD_TYPE=Release \ |
| -DEXECUTORCH_BUILD_QNN=ON \ |
| -DPYTHON_EXECUTABLE="$PYTHON_EXECUTABLE" \ |
| -Bcmake-out . |
| cmake --build cmake-out -j9 --target install --config Release |
| } |
| |
| test_cmake_qualcomm() { |
| echo "Exporting MobilenetV2" |
| ${PYTHON_EXECUTABLE} -m examples.qualcomm.scripts.export_example --model_name mv2 |
| |
| local example_dir=examples/qualcomm |
| local build_dir=cmake-out/${example_dir} |
| CMAKE_PREFIX_PATH="${PWD}/cmake-out/lib/cmake/ExecuTorch;${PWD}/cmake-out/third-party/gflags" |
| # build qnn_executor_runner |
| rm -rf ${build_dir} |
| retry cmake \ |
| -DCMAKE_BUILD_TYPE=Release \ |
| -DQNN_SDK_ROOT=$QNN_SDK_ROOT \ |
| -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ |
| -DANDROID_ABI='arm64-v8a' \ |
| -DANDROID_NATIVE_API_LEVEL=23 \ |
| -DCMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH" \ |
| -DPYTHON_EXECUTABLE="$PYTHON_EXECUTABLE" \ |
| -B${build_dir} \ |
| ${example_dir} |
| |
| echo "Building ${example_dir}" |
| cmake --build ${build_dir} -j9 --config Release |
| # Need to run on device |
| # ${build_dir}/qnn_executor_runner --model_path="./mv2_qnn.pte" |
| } |
| |
| if [[ -z $PYTHON_EXECUTABLE ]]; |
| then |
| PYTHON_EXECUTABLE=python3 |
| fi |
| |
| if [[ -z $BUCK ]]; |
| then |
| BUCK=buck2 |
| fi |
| |
| |
| cmake_install_executorch_qnn_lib |
| test_cmake_qualcomm |