LoginSignup
1
0

More than 3 years have passed since last update.

libtorch を Android でビルドするメモ

Last updated at Posted at 2020-01-21

とりあえず一式ビルドするスクリプトあります(実態は cmake を呼んでいる)

setup

  • Android SDK
  • Android NDK
  • cmake, ninja
  • Gradle

が必要です. Ubuntu 18.04 で Android Studio をインストールしておくのが楽でしょうか.

export ANDROID_HOME=$HOME/Android/Sdk
export ANDROID_NDK=$HOME/Android/Sdk/ndk/21.0.6113669/
# export GRADLE_HOME=$HOME/local/gradle

gradle は GRADLE_HOME, GRADLE_PATH で設定はうまく行かないかもです. PATH で直接 gradle が見えるようにしておくのがよさそうです.

また, gradle は特定のバージョンでないとうまくいきません. 執筆時点では 4.10.3 でした. sdkman あたりでインストールしておきましょう. 使っている gradle version は .circleci あたりの設定ファイルで確認しましょう.

あとは, python で yaml を使っているので pip install pyyaml しておきます.

libtorch(.a) をビルドする

デフォルトでは arm, x86 でそれぞれ 32bit, 64bit で合計 4 種類ビルドするので, 必要な ABI が決まっていれば ANDROID_ABI で指定します.

ANDROID_ABI=arm64-v8a BUILD_PYTORCH_MOBILE=1 ./scripts/build_android.sh

C++ アプリメインであれば, この .a をあとはリンクすればいけるかと思います.

コンパイル時間

1 アーキテクチャあたり Ryzen9 3950X で 10 分ほどです.
torch/csrc/jit 部分のコンパイルが時間かかります.

Java binding やらをビルドして .so をビルドする

./scripts/build_pytorch_android.sh arm64-v8a

などとするだけです(内部で build_android.sh で .a を作ってから, fbjni などの .so を作っている).

一部 c10/util/Registory.h で cerr が見つからないと言われるかもしれません(.h で printf しているやんちゃなコードですね). そのときは適当にコメントアウトしてビルドしましょう.

注意点

ANDROID_ABI など, 設定を変えたら build_android* あたりのフォルダを消して再度一からビルドする必要があります.
(build_***.sh では既存のビルドディレクトリの中身を消してはくれないため)

TODO

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0