I want to using hexagon dsp for model inference, and the device is Hexagon V66 with Linux aarch64 not android. When I build hexagon_api for test, I found two problem. First, when I using aarch64 cross-compile for compiling android_tvm_runtime_rpc and it failed with
“/usr/lib/gcc-cross/aarch64-linux-gnu/7/…/…/…/…/aarch64-linux-gnu/bin/ld: skipping incompatible /workspace/HexagonDSP/4.1.0.4/tools/HEXAGON_Tools/8.4.05/Tools/lib/iss/libwrapper.so when searching for -lwrapper”
I want to know if i miss the wrapper.so in aarch64, while the android ndk will contain this library.
Second, When I build hexagon_tvm_runtime_rpc, the error is
/workspace/HexagonDSP/tvm/src/runtime/hexagon/hexagon_user_dma_instructions.h:41:16: error: invalid instruction asm volatile(" %0 = dmpoll" : “=r”(dm0)); ^ :1:3: note: instantiated into assembly here r2 = dmpoll /workspace/HexagonDSP/tvm/src/runtime/hexagon/ops/conv2d_fp16_hvx.cc:140:22: error: use of undeclared identifier ‘Q6_Vqf16_vmpy_VhfVhf’ HVX_Vector v_res = Q6_Vqf16_vmpy_VhfVhf(act_vec, wgt_vec); // result is in qf16
The cmake set as following:
cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-28 -DUSE_ANDROID_TOOLCHAIN=/opt/qcom/cmake/aarch64_cross_compile.cmake -DUSE_HEXAGON_ARCH=v66 -DUSE_HEXAGON_SDK=/workspace/HexagonDSP/4.5.0.3 -DUSE_HEXAGON_TOOLCHAIN=/workspace/HexagonDSP/4.5.0.3/tools/HEXAGON_Tools/8.5.08/Tools/ -DUSE_OUTPUT_BINARY_DIR=hexagon_api …