I’m trying to export model so file at the end of the compilation process
What float-abi
and fpu
should be used for Raspberry Pi ARMv7l?
I tried ["-mfloat-abi=hard","-mfpu=vfp"]
- “so” file generation fails.
#target = "llvm -device=arm_cpu -model=bcm2837 -target=armv7l-linux-gnueabihf -mattr=+neon"
target = tvm.target.arm_cpu('rasp3b')
lib.export_library(path_lib, tvm.contrib.cc.create_shared, cc="/usr/bin/arm-linux-gnueabi-g++", options=["-mfloat-abi=hard","-mfpu=vfp"])
Error:
$ ./compile.py
('model:', 'resnet50_v2', ', target:', llvm -device=arm_cpu -model=bcm2837 -target=armv7l-linux-gnueabihf -mattr=+neon, ', target_host:', None, ', opt_level:', 3, ', data_shape:', (1, 3, 224, 224))
Compiling...
No handlers could be found for logger "autotvm"
Compilation done
Saving files
('cmd: ', ['/usr/bin/arm-linux-gnueabi-g++', '-shared', '-fPIC', '-o', 'model.so', '/tmp/tmp988SCf/lib.o', '-mfloat-abi=hard', '-mfpu=vfp'])
Traceback (most recent call last):
File "./compile.py", line 49, in <module>
lib.export_library(path_lib, tvm.contrib.cc.create_shared, cc="/usr/bin/arm-linux-gnueabi-g++", options=["-mfloat-abi=hard","-mfpu=vfp"])
File "/root/tvm/python/tvm/module.py", line 121, in export_library
fcompile(file_name, files, **kwargs)
File "/root/tvm/python/tvm/contrib/cc.py", line 33, in create_shared
_linux_shared(output, objects, options, cc)
File "/root/tvm/python/tvm/contrib/cc.py", line 59, in _linux_shared
raise RuntimeError(msg)
RuntimeError: Compilation error:
/usr/lib/gcc-cross/arm-linux-gnueabi/5/../../../../arm-linux-gnueabi/bin/ld: error: /tmp/tmp988SCf/lib.o uses VFP register arguments, model.so does not
/usr/lib/gcc-cross/arm-linux-gnueabi/5/../../../../arm-linux-gnueabi/bin/ld: failed to merge target specific data of file /tmp/tmp988SCf/lib.o
collect2: error: ld returned 1 exit status