The android_rpc_test.py failed


#1

Remote device: Coolpad 5267, ARMv7 Processor rev 5(v7l), installed TVM RPC, Android 6.0.1
Local machine: Intel® Xeon® CPU E5-2620 v3 @ 2.40GHz, built tvm previously

About the tvmrpc-release .apk, my targetSdkVersion is 23 and I have modified the config.mk for APP_ABI = armeabi-v7a.

I have used NDK to generate standalone toolchain for my device.
./make_standalone_toolchain.py
–arch arm --api 23 --install-dir /opt/android-toolchain-armv7

In the file android_rpc_test.py, I set arch = “armv7l” and add ‘-mfloat-abi=soft’ in my llvm target.

When the python code run f2 = remote.load_module(“cpu_lib.so”), android_rpc_test.py crashed and the TVM RPC app on my android phone also crashed.


#2

Could you tune the model by yourself? I met this problem the generated code has some problem.However, if you auto tune the model, the issue should be resolved.


#3

If the failure occurs when loading the module before any code execution, it might also be a build problem.

Which ndk version are you using to build your module? Can you try 16b or an older release from here?

I do not have too much experience compiling for a 32bit android target, but setting the correct arch here may also be tricky.


#4

Check what logcat says, it should have more specific information in it.


#5

Thank you very much!
I have tried to use 16b to rebuild the apk and the toolchain.
Finally, I solve it!
But, I have a question that why the 18b can not work?


#6

Good question, we have not figured this out yet either. One clue is that the latest ndk uses clang, but 16b is gcc-based.

Interestingly, the official tflite Android sample recommends an even earlier version of the ndk (14b).