TVM搭建系列(二)

安装NDK

Android NDK 是一组使您能将 C 或 C++(“原生代码”)嵌入到 Android 应用中的工具。

  1. 在平台之间移植其应用。

  2. 重复使用现有库,或者提供其自己的库供重复使用。

  3. 在某些情况下提高性能,特别是像游戏这种计算密集型应用。

Android NDK下载
将其解压到/opt 文件夹下,并修改环境变量:

export NDKROOT=/opt/ndk/android-ndk-r12b
export PATH=$NDKROOT:$PATH

保存更新环境变量:

source  ~/.bashrc

安装SDK

下载 http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
环境变量

export ANDROID_HOME=/home/software/ubuntu18/android-sdk-linux
export $ANDROID_HOME/TOOLS:$ANDROID_HOME/platform-tools:$PATH
android update sdk -u --all --filter 29

安装Android Stdio

安装执行运行,之后在sdk/tools/bin/下运行

./sdkmanager --licenses

安装gradle

官网:http://www.gradle.org/downloads

export PATH=$PATH:/home/software/ubuntu18/gradle-6.3/bin

编译TVM4J

TVM for java,TVM的java前端。如果想使用TVM的java API,那么需要编译TVM4J库(jar包);另外如果你需要RPC的话,TVM4J也为RPC server 和 client提供了简单的API;

  1. 使用make jvmpkg命令编译TVM4J,这会下载很多maven的pom配置文件:(时间有点长)

  2. 使用make jvminstall命令将tvm4j的相关jar包安装在$HOME/.m2/repository/目录下:
    在tvm目录下执行

make jvmpkg
make jvminstall

安装RPC App到Android手机上

在tvm/apps/android_rpc目录下执行

gradle clean build
#报错则试试
gradle clean build --no-daemon

成功后则生成apk文件

./app/build/outputs/apk/debug/app-debug.apk
./app/build/outputs/apk/release/app-release-unsigned.apk
生成证书
keytool -genkey -keystore /tvm/apps/android_rpc/dev_tools/tvmrpc.keystore -alias tvmrpc -keyalg RSA -validity 10000
为apk签名
jarsigner -keystore /tvm/apps/android_rpc/dev_tools/tvmrpc.keystore \
          -signedjar /tvm/apps/android_rpc/dev_tools/../app/build/outputs/apk/release/tvmrpc-release.apk \
          /tvm/apps/android_rpc/dev_tools/../app/build/outputs/apk/release/app-release-unsigned.apk 'tvmrpc'
安装这个apk到Android手机
adb install -r /tvm/apps/android_rpc/dev_tools/../app/build/outputs/apk/release/tvmrpc-release.apk

通过RPC在Android上调试模型的OP

在宿主机上运行RPC tracker
python -m tvm.exec.rpc_tracker --port 7030
打开Android手机的TVM RPC程序,填写以下信息
Address:192.168.31.74
Port:7030
Key:android
在宿主机上查看RPC连接信息
python -m tvm.exec.query_rpc_tracker --port 7030
运行tests/android_rpc_test.py

这会把TVM IR编译为共享库,并且上传共享库到Android手机上,并且在Android手机上运行:

export TVM_TRACKER_HOST=0.0.0.0
export TVM_TRACKER_PORT=7030
export TVM_NDK_CC=/home/software/ubuntu18/android-ndk-r21/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android28-clang++

python3 tests/android_rpc_test.py

使用RPC将ONNX模型运行在Android手机上

完整的Android工程

相比cmake,使用Ninja 新型的编译工具
安装ninja

sudo apt install ninja-build

切换到tvm/apps/android_deploy目录下,编译官方自带的android_deploy项目:

# 稳定版本4.0+建议
gradle clean build
# 非稳定版本3.0建议
gradle clean build --no-daemon
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值