I can run compile and run throug rpc, but cannot run tune

Hello,

I successfully created runtime for aarch64, libtvm.so for my local computer, compiled tensorflow model, run this model on target device, but I cannot run tuning operation through tvmc. I’m getting this error:

DEBUG   :   Check failed: (f != nullptr) is false: Loader for `.` files is not registered, resolved to (runtime.module.loadfile_tar) in the global registry.Ensure that you have loaded the correct runtime code, andthat you are on the correct hardware architecture.
DEBUG   : Stack trace:
DEBUG   :   File "/home/piotr/projects/odai/tvm/tvm/apps/android_rpc/app/src/main/jni/../../../../../../include/../src/runtime/module.cc", line 87
DEBUG   : 
DEBUG   :   at void org.apache.tvm.Base.checkCall(int) (Base.java:173)
DEBUG   :   at org.apache.tvm.TVMValue org.apache.tvm.Function.invoke() (Function.java:130)
DEBUG   :   at org.apache.tvm.Module org.apache.tvm.Module.load(java.lang.String, java.lang.String) (Module.java:140)
DEBUG   :   at org.apache.tvm.Module org.apache.tvm.Module.load(java.lang.String) (Module.java:146)
DEBUG   :   at java.lang.Object org.apache.tvm.rpc.NativeServerLoop$2.invoke(org.apache.tvm.TVMValue[]) (NativeServerLoop.java:89)
DEBUG   :   at java.lang.Object org.apache.tvm.Function.invokeRegisteredCbFunc(org.apache.tvm.Function$Callback, org.apache.tvm.TVMValue[]) (Function.java:330)
DEBUG   :   at int org.apache.tvm.LibInfo.tvmFuncCall(long, org.apache.tvm.Base$RefTVMValue) (LibInfo.java:-2)
DEBUG   :   at org.apache.tvm.TVMValue org.apache.tvm.Function.invoke() (Function.java:130)
DEBUG   :   at void org.apache.tvm.rpc.NativeServerLoop.run() (NativeServerLoop.java:49)
DEBUG   :   at void org.apache.tvm.rpc.ConnectTrackerServerProcessor.run() (ConnectTrackerServerProcessor.java:166)
DEBUG   :   at void org.apache.tvm.tvmrpc.RPCProcessor.run() (RPCProcessor.java:63)

Here are my commands for running model compilation, run and tune:

TVM_LIBRARY_PATH=/home/piotr/projects/odai/tvm/tvm/build-sys-llvm12 python3 \
    -m tvm.driver.tvmc compile \
    --target "llvm -device=arm_cpu -mtriple=aarch64-linux-androideabi -mattr=+neon" \
    --cross-compiler /home/piotr/Android/Sdk/ndk/22.1.7171670/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang \
    --cross-compiler-options="--target=aarch64-none-linux-androideabi30 -mfpu=neon -lm --sysroot=/home/piotr/projects/odai/tvm/toolchains/arm64-30/sysroot" \
    --input-shapes "input_tensor:[1,288,512,3]" \
    --desired-layout NHWC \
    --output ex17_module.tar \
    model_288_512.pb 
TVM_LIBRARY_PATH=/home/piotr/projects/odai/tvm/tvm/build-sys-llvm12 python3 \
    -m tvm.driver.tvmc run \
    --inputs 10-512-288.jpg.npz \
    --outputs ex17_output.npz \
    --rpc-key android \
    --rpc-tracker 0.0.0.0:9191 \
    --print-time \
    --repeat 3 \
    --number 3 \
    ex17_module.tar
TVM_LIBRARY_PATH=/home/piotr/projects/odai/tvm/tvm/build-sys-llvm12 python3 \
    -m tvm.driver.tvmc tune \
    --rpc-key android \
    --rpc-tracker 0.0.0.0:9191 \
    --output output_austin.json \
    --target "llvm -mtriple=aarch64-linux-android" \
    --enable-autoscheduler \
    --input-shapes "input_tensor:[1,288,512,3]" \
    --desired-layout NHWC \
    model_288_512.pb

The only difference I can see between compile and tune is cross-compiler. Am I using autotvm incorrectly, or there is a way to use cross compiler in tune?

Command to compile runtime for aarch64:

cp ../cmake/config.cmake .

sed -i 's/set(USE_LLVM OFF)/set(USE_LLVM \/home\/piotr\/Android\/Sdk\/ndk\/22.1.7171670\/toolchains\/llvm\/prebuilt\/linux-x86_64\/bin\/llvm-config)/g' config.cmake

cmake .. \
    -DUSE_RPC=ON \
    -DUSE_LIBBACKTRACE=ON \
    -DUSE_CPP_RPC=ON \
    -DCMAKE_SYSTEM_NAME=Android \
    -DCMAKE_SYSTEM_VERSION=30 \
    -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
    -DCMAKE_ANDROID_NDK=$ANDROID_NDK \
    -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang \
    -DCMAKE_FIND_ROOT_PATH=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/ \
    -DCMAKE_C_COMPILER=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang \
    -DCMAKE_CXX_COMPILER=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang++ \
    -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
    -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY

TVM_BUILD_PATH=/home/piotr/projects/odai/tvm/tvm/build-ndk-runtime-aarch64-api-30 make -j4 runtime