Tencent / TNN

TNN: developed by Tencent Youtu Lab and Guangying Lab, a uniform deep learning inference framework for mobile、desktop and server. TNN is distinguished by several outstanding features, including its cross-platform capability, high performance, model compression and code pruning. Based on ncnn and Rapidnet, TNN further strengthens the support and performance optimization for mobile devices, and also draws on the advantages of good extensibility and high performance from existed open source efforts. TNN has been deployed in multiple Apps from Tencent, such as Mobile QQ, Weishi, Pitu, etc. Contributions are welcome to work in collaborative with us and make TNN a better framework.
Other
4.41k stars 771 forks source link

使用海思平台编译器himix200,himix400,失败. #1588

Open briertang opened 2 years ago

briertang commented 2 years ago

TNN-master/examples/linux/cross$ source ./build_armhf_linux.sh mkdir: cannot create directory ‘build_armhf_linux’: File exists /home/jasontang/workspace/third_lib_compile/TNN-master /home/jasontang/workspace/third_lib_compile/TNN-master -- >>>>>>>>>>>>> -- TNN BUILD INFO: -- System: Linux -- Processor: arm -- Cpu: ON -- X86: OFF -- Arm: ON -- Arm82: OFF -- Metal: OFF -- OpenCL: OFF -- CUDA: OFF -- DSP: OFF -- Atlas: OFF -- TensorRT: OFF -- AppleNPU: OFF -- HuaweiNPU: OFF -- RKNPU: OFF -- OpenVINO: OFF -- OpenMP: ON -- TEST: ON -- --Unit Test: OFF -- Quantization: OFF -- ModelCheck: OFF -- DEBUG: OFF -- PROFILE: OFF -- BENCHMARK: OFF -- BENCHMARK Layer: OFF -- Model Converter: OFF -- ONNX2TNN Converter: OFF -- TNN2MEM: OFF -- BENCHMARK Test Lib: OFF -- Configuring done -- Generating done -- Build files have been written to: /home/jasontang/workspace/third_lib_compile/TNN-master/scripts/build_armhf_linux [ 1%] Built target gflags_nothreads_static [ 1%] Building CXX object source/tnn/device/arm/CMakeFiles/TNNArm.dir/arm_util.cc.o [ 23%] Built target TNNCpu /tmp/cc0Q1Jfo.s: Assembler messages: /tmp/cc0Q1Jfo.s:6883: Error: selected processor does not support pld [r4,#128]' in ARM mode /tmp/cc0Q1Jfo.s:6895: Error: selected processor does not supportpld [r0,#128]' in ARM mode /tmp/cc0Q1Jfo.s:6897: Error: selected processor does not support pld [r1,#128]' in ARM mode /tmp/cc0Q1Jfo.s:6926: Error: selected processor does not supportpld [r4,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7050: Error: selected processor does not support pld [r4,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7062: Error: selected processor does not supportpld [r0,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7064: Error: selected processor does not support pld [r1,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7093: Error: selected processor does not supportpld [r4,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7217: Error: selected processor does not support pld [r4,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7230: Error: selected processor does not supportpld [r0,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7232: Error: selected processor does not support pld [r1,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7261: Error: selected processor does not supportpld [r4,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7386: Error: selected processor does not support pld [r4,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7399: Error: selected processor does not supportpld [r0,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7401: Error: selected processor does not support pld [r1,#128]' in ARM mode /tmp/cc0Q1Jfo.s:7430: Error: selected processor does not supportpld [r4,#128]' in ARM mode make[2]: [source/tnn/device/arm/CMakeFiles/TNNArm.dir/build.make:1428: source/tnn/device/arm/CMakeFiles/TNNArm.dir/arm_util.cc.o] Error 1 make[1]: [CMakeFiles/Makefile2:214: source/tnn/device/arm/CMakeFiles/TNNArm.dir/all] Error 2 make: *** [Makefile:130: all] Error 2

想把TNN往海思平台编译器himix200,himix400上移植,但是在编译的时候死活编译不过, 哪位大神帮忙看下这个错误该如何处理?

nicklezheng commented 2 years ago

I have the same problem imported by commit 2310d475, where adding add_definitions( -mfloat-abi=softfp ) in CMakeLists.txt line 286

if you remove add_definitions( -mfloat-abi=softfp ), this problem will disappear. but another problem cames:

/opt/hisi-linux/x86-arm/arm-himix400-linux/host_bin/../lib/gcc/arm-linux-gnueabi/7.3.0/../../../../arm-linux-gnueabi/bin/ld: source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/arm32/CONV_BFP16_SLIDEW_C3.S.o: in function `GemmBfp16SlidewC3':
(.text+0x0): multiple definition of `GemmBfp16SlidewC3'; source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/compute.cc.o:compute.cc:(.text+0x64c): first defined here
/opt/hisi-linux/x86-arm/arm-himix400-linux/host_bin/../lib/gcc/arm-linux-gnueabi/7.3.0/../../../../arm-linux-gnueabi/bin/ld: source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/arm32/CONV_DW_3X3_BFP16_SLIDEW.S.o: in function `ConvDw3x3Bfp16SlideW':
(.text+0x0): multiple definition of `ConvDw3x3Bfp16SlideW'; source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/compute.cc.o:compute.cc:(.text+0xe2c): first defined here
/opt/hisi-linux/x86-arm/arm-himix400-linux/host_bin/../lib/gcc/arm-linux-gnueabi/7.3.0/../../../../arm-linux-gnueabi/bin/ld: source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/arm32/CONV_DW_3X3_FLOAT_SLIDEW.S.o: in function `ConvDw3x3FloatSlideW':
(.text+0x0): multiple definition of `ConvDw3x3FloatSlideW'; source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/compute.cc.o:compute.cc:(.text+0x8e4): first defined here
/opt/hisi-linux/x86-arm/arm-himix400-linux/host_bin/../lib/gcc/arm-linux-gnueabi/7.3.0/../../../../arm-linux-gnueabi/bin/ld: source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/arm32/CONV_DW_5X5_BFP16_SLIDEW.S.o: in function `ConvDw5x5Bfp16SlideW':
(.text+0x0): multiple definition of `ConvDw5x5Bfp16SlideW'; source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/compute.cc.o:compute.cc:(.text+0x1424): first defined here
/opt/hisi-linux/x86-arm/arm-himix400-linux/host_bin/../lib/gcc/arm-linux-gnueabi/7.3.0/../../../../arm-linux-gnueabi/bin/ld: source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/arm32/CONV_DW_5X5_FLOAT_SLIDEW.S.o: in function `ConvDw5x5FloatSlideW':
(.text+0x0): multiple definition of `ConvDw5x5FloatSlideW'; source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/compute.cc.o:compute.cc:(.text+0x10d0): first defined here
/opt/hisi-linux/x86-arm/arm-himix400-linux/host_bin/../lib/gcc/arm-linux-gnueabi/7.3.0/../../../../arm-linux-gnueabi/bin/ld: source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/arm32/CONV_FLOAT_SLIDEW_C3.S.o: in function `GemmFloatSlidewC3':
(.text+0x0): multiple definition of `GemmFloatSlidewC3'; source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/compute.cc.o:compute.cc:(.text+0x3e4): first defined here
/opt/hisi-linux/x86-arm/arm-himix400-linux/host_bin/../lib/gcc/arm-linux-gnueabi/7.3.0/../../../../arm-linux-gnueabi/bin/ld: source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/arm32/DECONV_FLOAT_O4.S.o: in function `DeconvFloatO4':
(.text+0x0): multiple definition of `DeconvFloatO4'; source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/compute.cc.o:compute.cc:(.text+0x0): first defined here
/opt/hisi-linux/x86-arm/arm-himix400-linux/host_bin/../lib/gcc/arm-linux-gnueabi/7.3.0/../../../../arm-linux-gnueabi/bin/ld: source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/arm32/GEMM_BFP16_N4.S.o: in function `GEMM_BFP16_N4':
(.text+0x0): multiple definition of `GEMM_BFP16_N4'; source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/compute.cc.o:compute.cc:(.text+0x1aa4): first defined here
/opt/hisi-linux/x86-arm/arm-himix400-linux/host_bin/../lib/gcc/arm-linux-gnueabi/7.3.0/../../../../arm-linux-gnueabi/bin/ld: source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/arm32/GEMM_FLOAT_N4.S.o: in function `GEMM_FLOAT_N4':
(.text+0x0): multiple definition of `GEMM_FLOAT_N4'; source/tnn/device/arm/CMakeFiles/TNNArm.dir/acc/compute/compute.cc.o:compute.cc:(.text+0x1aa8): first defined here

i have to delete conflict code in compute.cc to solve conflict between c code and assembly code, but I don't know if it will affect performance? who can give an authoritative explanation