| #!/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 building devtools/example_runner and use it to run |
| # an actual model. |
| |
| |
| set -e |
| |
| # shellcheck source=/dev/null |
| source "$(dirname "${BASH_SOURCE[0]}")/../../.ci/scripts/utils.sh" |
| |
| cmake_install_executorch_devtools_lib() { |
| echo "Installing libexecutorch.a, libportable_kernels.a, libetdump.a, libbundled_program.a" |
| rm -rf cmake-out |
| |
| retry cmake -DCMAKE_INSTALL_PREFIX=cmake-out \ |
| -DCMAKE_BUILD_TYPE=Release \ |
| -DEXECUTORCH_BUILD_DEVTOOLS=ON \ |
| -DEXECUTORCH_ENABLE_EVENT_TRACER=ON \ |
| -DPYTHON_EXECUTABLE="$PYTHON_EXECUTABLE" \ |
| -Bcmake-out . |
| cmake --build cmake-out -j9 --target install --config Release |
| } |
| |
| test_cmake_devtools_example_runner() { |
| echo "Exporting MobilenetV2" |
| ${PYTHON_EXECUTABLE} -m examples.devtools.scripts.export_bundled_program --model_name="mv2" |
| local example_dir=examples/devtools |
| local build_dir=cmake-out/${example_dir} |
| CMAKE_PREFIX_PATH="${PWD}/cmake-out/lib/cmake/ExecuTorch;${PWD}/cmake-out/third-party/gflags" |
| rm -rf ${build_dir} |
| retry cmake \ |
| -DCMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH" \ |
| -DCMAKE_BUILD_TYPE=Release \ |
| -DPYTHON_EXECUTABLE="$PYTHON_EXECUTABLE" \ |
| -B${build_dir} \ |
| ${example_dir} |
| |
| echo "Building ${example_dir}" |
| cmake --build ${build_dir} -j9 --config Release |
| |
| echo 'Running example_runner' |
| ${build_dir}/example_runner --bundled_program_path="./mv2_bundled.bpte" |
| } |
| |
| if [[ -z $PYTHON_EXECUTABLE ]]; |
| then |
| PYTHON_EXECUTABLE=python3 |
| fi |
| |
| if [[ -z $BUCK ]]; |
| then |
| BUCK=buck2 |
| fi |
| |
| cmake_install_executorch_devtools_lib |
| test_cmake_devtools_example_runner |