trevor-m opened a new issue #6019:
URL: https://github.com/apache/incubator-tvm/issues/6019


   I have the script below which I was using to compile a mobilenet model for 
an android target with a 32-bit ARM processor and a Mali gpu, using a much 
older commit of TVM. 
   When I updated to a newer commit of TVM, I will get this error during 
compilation:
   ```
   RuntimeError: Compilation error:
   Android (6317467 based on r365631c1) clang version 9.0.8 
(https://android.googlesource.com/toolchain/llvm-project 
e0caee08e5f09b374a27a676d04978c81fcb1928) (based on LLVM 9.0.8svn)
   Target: armv7a-unknown-linux-android27
   Thread model: posix
   InstalledDir: /data/standalone-ndk-r21b/bin
   Found candidate GCC installation: 
/data/standalone-ndk-r21b/bin/../lib/gcc/arm-linux-androideabi/4.9.x
   Selected GCC installation: 
/data/standalone-ndk-r21b/bin/../lib/gcc/arm-linux-androideabi/4.9.x
   Candidate multilib: thumb;@mthumb
   Candidate multilib: armv7-a;@march=armv7-a
   Candidate multilib: armv7-a/thumb;@march=armv7-a@mthumb
   Candidate multilib: .;
   Selected multilib: armv7-a;@march=armv7-a
   Found CUDA installation: /usr/local/cuda-10.0, version 10.0
    
"/data/standalone-ndk-r21b/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld"
 --sysroot=/data/standalone-ndk-r21b/sysroot -z noexecstack -EL 
--warn-shared-textrel -z now -z relro -X --hash-style=gnu --enable-new-dtags 
--eh-frame-hdr -m armelf_linux_eabi -shared -o compiled.so 
/data/standalone-ndk-r21b/sysroot/usr/lib/arm-linux-androideabi/27/crtbegin_so.o
 -L/data/standalone-ndk-r21b/lib64/clang/9.0.8/lib/linux/arm 
-L/data/standalone-ndk-r21b/bin/../lib/gcc/arm-linux-androideabi/4.9.x/armv7-a 
-L/data/standalone-ndk-r21b/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/lib/../lib/armv7-a
 -L/data/standalone-ndk-r21b/sysroot/usr/lib/arm-linux-androideabi/27 
-L/data/standalone-ndk-r21b/sysroot/usr/lib/arm-linux-androideabi 
-L/data/standalone-ndk-r21b/sysroot/usr/lib/../lib 
-L/data/standalone-ndk-r21b/sysroot/usr/lib/arm-linux-androideabi/../../lib 
-L/data/standalone-ndk-r21b/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/lib/armv7-a
 -L/data/standalone-ndk-r21b/sysroot/usr/lib /tmp/tmp6x5vf9t2/lib0.o 
/tmp/tmp6x5vf9t2/devc.o -Bstatic -lc++ -Bdynamic -lm -lgcc -ldl -lc -lgcc -ldl 
/data/standalone-ndk-r21b/sysroot/usr/lib/arm-linux-androideabi/27/crtend_so.o
   
/data/standalone-ndk-r21b/bin/../lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld:
 error: /tmp/tmp6x5vf9t2/devc.o uses VFP register arguments, output does not
   clang90++: error: linker command failed with exit code 1 (use -v to see 
invocation)
   ```
   
   I did a binary search on the TVM commits to find when this error was 
introduced, and I traced it down to the following PR. Before this PR, my script 
worked fine. After this PR, I get the error above.
   https://github.com/apache/incubator-tvm/pull/4657
   
   **Question:** Is there is a bug introduced by that PR? If not, how should my 
compilation script be updated? I have tried many, many combinations of compiler 
flags (`-mfloat-abi=hard`),  using`ndk.create_shared`, etc and could not find a 
solution.
   
   ```
   import tvm
   from tvm import relay
   import mxnet
   from mxnet.gluon.model_zoo.vision import get_model
   import gluoncv
   import os
   
   block = get_model('mobilenetv2_1.0', pretrained=True)
   input_shape = (1, 3, 224, 224)
   mod, params = relay.frontend.from_mxnet(block, shape={'data': input_shape}, 
dtype='float32')
   
   # Compile
   target = tvm.target.mali()
   target_host = "llvm -target=arm-linux-android -mattr=+neon -mfloat-abi=soft"
   with relay.build_config(opt_level=3):
       graph, lib, params = relay.build(mod, params=params, target=target, 
target_host=target_host)
   
   # Save
   with open('compiled.json', 'w') as f_graph_json:
       f_graph_json.write(graph)
   with open('compiled.params', 'wb') as f_params:
       f_params.write(relay.save_param_dict(params))
   cc = "/data/standalone-ndk-r21b/bin/armv7a-linux-androideabi27-clang++"
   options = ["-v", "-static-libstdc++", "--sysroot", 
"/data/standalone-ndk-r21b/sysroot"]
   lib.export_library('compiled.so', cc=cc, options=options)
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to