MNN/benchmark/scripts/READMD.md

3.1 KiB
Executable File

Environment

Common Prerequisites

cmake 3.x

Mac

os < 12.3 (see FAQ Q1)
command line tool < 13.3 (see FAQ Q3)
Xcode use Legacy Build System (see FAQ Q4)

Android Build Prerequisites

android sdk and ndk < r22 (see FAQ Q2), ANDROID_SDK and ANDROID_NDK env var should be set

Linux (Command line only)

apt install -y android-sdk # switch mirror when slow, link: https://blog.csdn.net/qq_31456593/article/details/89638163
ANDROID_SDK=/usr/lib/android-sdk
curl -LO https://dl.google.com/android/repository/android-ndk-r21-linux-x86_64.zip
unzip android-ndk-r21-linux-x86_64.zip -d $ANDROID_SDK 1>/dev/null
echo -e "\nexport ANDROID_SDK=$ANDROID_SDK\nexport ANDROID_NDK=$ANDROID_SDK/android-ndk-r21" >> ~/.bashrc

Other

Install Android Studio, download ndk 21.x in SDK Manager

iOS Build Prerequisites

ruby from rbenv # avoid abuse root permission

Mac

brew install rbenv  # avoid abuse root permission
rbenv install 3.1.2
rbenv global 3.1.2
echo -e "\nexport PATH=\"$HOME/.rbenv/bin:$PATH\"\neval \"$(rbenv init -)\"" | tee -a ~/.bash_profile ~/.zshrc

Benchmark

Build bench tools

PC

./build.sh --pc --mnn-tag 90719ce2 --torch-tag v1.11.0 --tf-tag v2.7.0

Android

./build.sh --android --mnn-tag 90719ce2 --torch-tag v1.11.0 --tf-tag v2.7.0

iOS

./build.sh --ios --mnn-tag 90719ce2 --torch-tag v1.11.0 --tf-tag v2.7.0

Convert Models (onnx -> mnn/pb/tflite/torch/torchlite)

./convert.sh --mnn-tag 90719ce2 --torch-tag v1.11.0

Run bench

PC

./bench.sh --pc --mnn --torch --tf --sync-models --tooldir dist

Android

./bench.sh --android --mnn --torch --tf --sync-models --tooldir dist

iOS

./bench.sh --ios --mnn --torch --tf --sync-models --tooldir dist

FAQ

Q1: build tensorflow/tflite for ios failed: env: python: no such file or directory
A: Some bazel version can't deal with --incompatible_strict_action_env and --action_env correctly when run py_binary (bundletool on macos), then it use /usr/bin/python (instead of /usr/local/bin/python from homebrew). Mac >= 12.3 remove python 2.7 from /usr/bin, then bundletool run failed. Solution: Downgrade os version to 12.2, Or change shebang line (#!/usr/bin/env python -> #!/usr/bin/env python3) of failed file (tensorflow/bazel-out/host/bin/external/build_bazel_rules_apple/tools/bundletool/bundletool)

Q2: No such file or directory: '{ANDROID_NDK}/platforms'
A: older toolchain (include platforms) be removed on android ndk r22, which breaking tflite compile, so ndk should be lower than r22

Q3: section __TEXT/__const address out of range for architecture x86_64 A: pytorch compile failed on command line tool 13.3, see issue: https://github.com/pytorch/pytorch/issues/76094#issuecomment-1106624976

Q4: Building for iOS, but the linked and embedded framework 'TensorFlowLiteBenchmarkC.framework' was built for iOS + iOS Simulator. A: tflite produce ios_fat framework containing many arch, which isn't support on New Build System (need XCFramework)