ncnn icon indicating copy to clipboard operation
ncnn copied to clipboard

Add qnx.toolchain.cmake

Open zchrissirhcz opened this issue 3 years ago • 3 comments

zchrissirhcz avatar Sep 21 '22 03:09 zchrissirhcz

As an invoke example of build for qnx, create build/qnx-build.sh with contents:

#!/bin/bash

export QNX_HOST=/home/zz/soft/qnx700_sdp/host/linux/x86_64
export QNX_TARGET=/home/zz/soft/qnx700_sdp/target/qnx7

BUILD_DIR=qnx

mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../.. \
    -G Ninja \
    -DCMAKE_TOOLCHAIN_FILE=../../toolchains/qnx.toolchain.cmake

cmake --build .

zchrissirhcz avatar Sep 21 '22 03:09 zchrissirhcz

The build of ncnn with qnx toolchain success.

Potential issue when integrating more code: People may suffer POSIX functions like "access()" is not recognized issue. The solution is to define _QNX_SOURCE macro.

Related document pages:

http://www.qnx.com/developers/docs/qnxcar2/index.jsp?topic=%2Fcom.qnx.doc.neutrino.prog%2Ftopic%2Fdevel_ConformingToStandards.html

https://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.neutrino.utilities/topic/q/qcc.html

zchrissirhcz avatar Sep 21 '22 03:09 zchrissirhcz

Codecov Report

Merging #4213 (4ff66b8) into master (5eb56b2) will not change coverage. The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #4213   +/-   ##
=======================================
  Coverage   94.44%   94.44%           
=======================================
  Files         750      750           
  Lines      179180   179180           
=======================================
  Hits       169222   169222           
  Misses       9958     9958           

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

codecov-commenter avatar Sep 21 '22 03:09 codecov-commenter

Hello, Threre.

DId you verify this QNX patch in ncnn git? I can't find the verification result on it

Thanks.

skyhblue avatar Sep 26 '22 01:09 skyhblue

@skyhblue

I don't understand the word "verify" and "verification result". Did you find any other platform's "verification result" in "ncnn git"?

zchrissirhcz avatar Sep 26 '22 01:09 zchrissirhcz

@zchrissirhcz

I am trying to compile your patch on the ncnn git. but it makes the error at the last linking stage like the attached. qnx_build_error.txt Could you please help me to utilize your patch?

skyhblue avatar Sep 26 '22 02:09 skyhblue

@skyhblue So your question is, there is linking error for the target benchncnn with your QNX toolchain?

I've re-compiled with my QNX toolchain, it can link successfully, see it from the attached file:

output.txt output2.txt

zchrissirhcz avatar Sep 26 '22 02:09 zchrissirhcz

@zchrissirhcz Hi, Did you change the CMakeLists.txt for compiling QNX ?

Stephenfang51 avatar Nov 23 '22 03:11 Stephenfang51

@Stephenfang51 I did not change CMakeLists.txt when compile for QNX. If I have to do customization, I'll put them in the qnx-build.sh script. As you see the pasted script above(and I just tried again it links ok), I just specified ninja and CMAKE_TOOLCHAIN_FILE.

zchrissirhcz avatar Nov 23 '22 03:11 zchrissirhcz

@Stephenfang51 I did not change CMakeLists.txt when compile for QNX. If I have to do customization, I'll put them in the qnx-build.sh script. As you see the pasted script above(and I just tried again it links ok), I just specified ninja and CMAKE_TOOLCHAIN_FILE.

Thanks for the reply, is ninja necessary for compile ? In my case, the target platform always x86 like below (that's why i wonder if you modified the CMakelists.txt

-- NCNN_VERSION_STRING = 1.0.20221123
-- QNX_HOST: /home/sss/qnx710/host/linux/x86_64
-- QNX_TARGET: /home/sss/qnx710/target/qnx7
CMake Warning at CMakeLists.txt:473 (message):
  The compiler does not support avx extension.  NCNN_AVX will be OFF.


-- Target arch: x86
-- Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS OpenMP_C_LIB_NAMES) 
-- Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES) 
-- Could NOT find OpenMP (missing: OpenMP_C_FOUND OpenMP_CXX_FOUND) 
-- Configuring done
-- Generating done

Stephenfang51 avatar Nov 23 '22 03:11 Stephenfang51

@Stephenfang51

Full logs

The ncnn repo's commit I use:

git log --pretty=oneline -n 1
47c4ab7394b6d4a93d9d73c84fb083de27a2c46c (HEAD -> master, upstream/master) add example project link (#4365)

The content of build/qnx-build.sh is:

#!/bin/bash

export QNX_HOST=/home/zz/soft/qnx700_sdp/host/linux/x86_64
export QNX_TARGET=/home/zz/soft/qnx700_sdp/target/qnx7

BUILD_DIR=qnx2

mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}
cmake ../.. \
    -G Ninja \
    -DCMAKE_TOOLCHAIN_FILE=../../toolchains/qnx.toolchain.cmake

#cmake --build .

The full output when running build/qnx-build.sh (note I just comment out the build step, only keep cmake configuration step):

-- CMAKE_TOOLCHAIN_FILE = /home/zz/work/github/ncnn/toolchains/qnx.toolchain.cmake
-- CMAKE_INSTALL_PREFIX = /home/zz/work/github/ncnn/build/qnx2/install
-- NCNN_VERSION_STRING = 1.0.20221123
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/zz/soft/qnx700_sdp/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.0.0-gcc-5.4.0 - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/zz/soft/qnx700_sdp/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.0.0-g++-5.4.0 - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4_FP16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4_FP16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_DOTPROD
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_DOTPROD - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16FML
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16FML - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_BF16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_BF16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_I8MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_I8MM - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE2
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE2 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEBF16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEBF16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEI8MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEI8MM - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEF32MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEF32MM - Failed
CMake Warning at CMakeLists.txt:201 (message):
  The compiler does not support arm vfpv4.  NCNN_VFPV4 will be OFF.


CMake Warning at CMakeLists.txt:270 (message):
  The compiler does not support armv8.2 fp16.  NCNN_ARM82 will be OFF.


-- Target arch: arm
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS OpenMP_C_LIB_NAMES) 
-- Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES) 
-- Could NOT find OpenMP (missing: OpenMP_C_FOUND OpenMP_CXX_FOUND) 
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/zz/work/github/ncnn/build/qnx2

Is ninja required?

On Linux/macOSX, using make is OK. I prefer ninja due to its fast speed for compilation.

Why it prints x86

I suggest use same git commit of ncnn, then just place this PR provided qnx.toolchain.cmake file to toolchains directory, and put the build/qnx-build.sh file and run it.

zchrissirhcz avatar Nov 23 '22 05:11 zchrissirhcz

@zchrissirhcz Thanks for the quick reply why did you comment out the build step? The x86 platfrom problem solved, just forgot to add set(CMAKE_SYSTEM_PROCESSOR arm) but still got the following

[165/165] Linking CXX executable benchmark/benchncnn
FAILED: benchmark/benchncnn 
: && /home/fangliwei/qnx710/host/linux/x86_64/usr/bin/ntoaarch64-g++  -O3 -DNDEBUG   benchmark/CMakeFiles/benchncnn.dir/benchncnn.cpp.o  -o benchmark/benchncnn  src/libncnn.a && :
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(batchnorm_arm.cpp.o): in function `ncnn::BatchNorm_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
batchnorm_arm.cpp:(.text+0x3ec): undefined reference to `ncnn::BatchNorm_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: batchnorm_arm.cpp:(.text+0x698): undefined reference to `ncnn::BatchNorm_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::convolution_im2col_sgemm_transform_kernel_pack8to4_int8_neon(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)':
convolution_arm.cpp:(.text+0x85e8): undefined reference to `ncnn::convolution_im2col_sgemm_transform_kernel_pack8to4_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::convolution_im2col_sgemm_transform_kernel_pack1to4_int8_neon(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)':
convolution_arm.cpp:(.text+0x8c88): undefined reference to `ncnn::convolution_im2col_sgemm_transform_kernel_pack1to4_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::convolution_im2col_sgemm_transform_kernel_pack8to1_int8_neon(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)':
convolution_arm.cpp:(.text+0x927c): undefined reference to `ncnn::convolution_im2col_sgemm_transform_kernel_pack8to1_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::convolution_im2col_sgemm_transform_kernel_int8_neon(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)':
convolution_arm.cpp:(.text+0x9948): undefined reference to `ncnn::convolution_im2col_sgemm_transform_kernel_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, int, int, int, int)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::im2col_sgemm_pack8to4_int8_neon(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)':
convolution_arm.cpp:(.text+0xa918): undefined reference to `ncnn::im2col_sgemm_pack8to4_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::im2col_sgemm_pack1to4_int8_neon(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)':
convolution_arm.cpp:(.text+0xaf14): undefined reference to `ncnn::im2col_sgemm_pack1to4_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::im2col_sgemm_pack8to1_int8_neon(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)':
convolution_arm.cpp:(.text+0xedf8): undefined reference to `ncnn::im2col_sgemm_pack8to1_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::im2col_sgemm_int8_neon(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)':
convolution_arm.cpp:(.text+0xf3f4): undefined reference to `ncnn::im2col_sgemm_int8_neon_asimddp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::Convolution_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
convolution_arm.cpp:(.text+0x67c54): undefined reference to `ncnn::Convolution_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: convolution_arm.cpp:(.text+0x6a3ec): undefined reference to `ncnn::Convolution_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution_arm.cpp.o): in function `ncnn::Convolution_arm::create_pipeline(ncnn::Option const&)':
convolution_arm.cpp:(.text+0x6cd84): undefined reference to `ncnn::Convolution_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(deconvolution_arm.cpp.o): in function `ncnn::Deconvolution_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
deconvolution_arm.cpp:(.text+0x2684): undefined reference to `ncnn::Deconvolution_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: deconvolution_arm.cpp:(.text+0x3f7c): undefined reference to `ncnn::Deconvolution_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(deconvolution_arm.cpp.o): in function `ncnn::Deconvolution_arm::create_pipeline(ncnn::Option const&)':
deconvolution_arm.cpp:(.text+0x5594): undefined reference to `ncnn::Deconvolution_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(eltwise_arm.cpp.o): in function `ncnn::Eltwise_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
eltwise_arm.cpp:(.text+0x2648): undefined reference to `ncnn::Eltwise_arm::forward_fp16sa(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: eltwise_arm.cpp:(.text+0x3550): undefined reference to `ncnn::Eltwise_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(innerproduct_arm.cpp.o): in function `ncnn::InnerProduct_arm::create_pipeline_fp16s(ncnn::Option const&)':
innerproduct_arm.cpp:(.text+0x9c8): undefined reference to `ncnn::innerproduct_transform_kernel_fp16s_neon_asimdhp(ncnn::Mat const&, ncnn::Mat&, int, int, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(innerproduct_arm.cpp.o): in function `ncnn::InnerProduct_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
innerproduct_arm.cpp:(.text+0x2c74): undefined reference to `ncnn::innerproduct_fp16s_neon_asimdhp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Mat const&, int, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: innerproduct_arm.cpp:(.text+0x2c9c): undefined reference to `ncnn::innerproduct_pack4_fp16s_neon_asimdhp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Mat const&, int, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: innerproduct_arm.cpp:(.text+0x3990): undefined reference to `ncnn::innerproduct_gemm_fp16s_neon_asimdhp(ncnn::Mat const&, ncnn::Mat&, ncnn::Mat const&, ncnn::Mat const&, int, ncnn::Mat const&, ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(innerproduct_arm.cpp.o): in function `ncnn::InnerProduct_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
innerproduct_arm.cpp:(.text+0xa954): undefined reference to `ncnn::InnerProduct_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(pooling_arm.cpp.o): in function `ncnn::Pooling_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
pooling_arm.cpp:(.text+0x1a18): undefined reference to `ncnn::Pooling_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: pooling_arm.cpp:(.text+0x1e1c): undefined reference to `ncnn::Pooling_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(prelu_arm.cpp.o): in function `ncnn::PReLU_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
prelu_arm.cpp:(.text+0x4c): undefined reference to `ncnn::PReLU_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: prelu_arm.cpp:(.text+0x6dc): undefined reference to `ncnn::PReLU_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(relu_arm.cpp.o): in function `ncnn::ReLU_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
relu_arm.cpp:(.text+0x73c): undefined reference to `ncnn::ReLU_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(sigmoid_arm.cpp.o): in function `ncnn::Sigmoid_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
sigmoid_arm.cpp:(.text+0x6c): undefined reference to `ncnn::Sigmoid_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: sigmoid_arm.cpp:(.text+0x13f0): undefined reference to `ncnn::Sigmoid_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(tanh_arm.cpp.o): in function `ncnn::TanH_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
tanh_arm.cpp:(.text+0x6c): undefined reference to `ncnn::TanH_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: tanh_arm.cpp:(.text+0x848): undefined reference to `ncnn::TanH_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(rnn_arm.cpp.o): in function `ncnn::RNN_arm::create_pipeline(ncnn::Option const&)':
rnn_arm.cpp:(.text+0x2f6c): undefined reference to `ncnn::RNN_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(rnn_arm.cpp.o): in function `ncnn::RNN_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
rnn_arm.cpp:(.text+0x3fd8): undefined reference to `ncnn::RNN_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: rnn_arm.cpp:(.text+0x4760): undefined reference to `ncnn::RNN_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(rnn_arm.cpp.o): in function `ncnn::RNN_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
rnn_arm.cpp:(.text+0x621c): undefined reference to `ncnn::RNN_arm::forward_fp16sa(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: rnn_arm.cpp:(.text+0x67ac): undefined reference to `ncnn::RNN_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(lstm_arm.cpp.o): in function `ncnn::LSTM_arm::create_pipeline(ncnn::Option const&)':
lstm_arm.cpp:(.text+0x1160): undefined reference to `ncnn::LSTM_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(lstm_arm.cpp.o): in function `ncnn::LSTM_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
lstm_arm.cpp:(.text+0x4278): undefined reference to `ncnn::LSTM_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: lstm_arm.cpp:(.text+0x4b54): undefined reference to `ncnn::LSTM_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(lstm_arm.cpp.o): in function `ncnn::LSTM_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
lstm_arm.cpp:(.text+0x6aa4): undefined reference to `ncnn::LSTM_arm::forward_fp16sa(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: lstm_arm.cpp:(.text+0x6f74): undefined reference to `ncnn::LSTM_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(binaryop_arm.cpp.o): in function `ncnn::BinaryOp_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
binaryop_arm.cpp:(.text+0x2ae80): undefined reference to `ncnn::BinaryOp_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(binaryop_arm.cpp.o): in function `ncnn::BinaryOp_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
binaryop_arm.cpp:(.text+0x35750): undefined reference to `ncnn::BinaryOp_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(unaryop_arm.cpp.o): in function `ncnn::UnaryOp_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
unaryop_arm.cpp:(.text+0x683c): undefined reference to `ncnn::UnaryOp_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolutiondepthwise_arm.cpp.o): in function `ncnn::ConvolutionDepthWise_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
convolutiondepthwise_arm.cpp:(.text+0xcb80): undefined reference to `ncnn::ConvolutionDepthWise_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: convolutiondepthwise_arm.cpp:(.text+0xccbc): undefined reference to `ncnn::ConvolutionDepthWise_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolutiondepthwise_arm.cpp.o): in function `ncnn::ConvolutionDepthWise_arm::create_pipeline(ncnn::Option const&)':
convolutiondepthwise_arm.cpp:(.text+0x10bd0): undefined reference to `ncnn::ConvolutionDepthWise_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(interp_arm.cpp.o): in function `ncnn::Interp_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
interp_arm.cpp:(.text+0x3954): undefined reference to `ncnn::Interp_arm::forward_fp16sa(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: interp_arm.cpp:(.text+0x48ac): undefined reference to `ncnn::Interp_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(deconvolutiondepthwise_arm.cpp.o): in function `ncnn::DeconvolutionDepthWise_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
deconvolutiondepthwise_arm.cpp:(.text+0x1b28): undefined reference to `ncnn::DeconvolutionDepthWise_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: deconvolutiondepthwise_arm.cpp:(.text+0x2134): undefined reference to `ncnn::DeconvolutionDepthWise_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(deconvolutiondepthwise_arm.cpp.o): in function `ncnn::DeconvolutionDepthWise_arm::create_pipeline(ncnn::Option const&)':
deconvolutiondepthwise_arm.cpp:(.text+0x3694): undefined reference to `ncnn::DeconvolutionDepthWise_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(instancenorm_arm.cpp.o): in function `ncnn::InstanceNorm_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
instancenorm_arm.cpp:(.text+0x44): undefined reference to `ncnn::InstanceNorm_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(clip_arm.cpp.o): in function `ncnn::Clip_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
clip_arm.cpp:(.text+0x2f4): undefined reference to `ncnn::Clip_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(quantize_arm.cpp.o): in function `ncnn::Quantize_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
quantize_arm.cpp:(.text+0x3d8c): undefined reference to `ncnn::Quantize_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: quantize_arm.cpp:(.text+0x46a4): undefined reference to `ncnn::Quantize_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(dequantize_arm.cpp.o): in function `ncnn::Dequantize_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
dequantize_arm.cpp:(.text+0x2374): undefined reference to `ncnn::Dequantize_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: dequantize_arm.cpp:(.text+0x25a0): undefined reference to `ncnn::Dequantize_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(hardsigmoid_arm.cpp.o): in function `ncnn::HardSigmoid_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
hardsigmoid_arm.cpp:(.text+0x4c): undefined reference to `ncnn::HardSigmoid_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: hardsigmoid_arm.cpp:(.text+0x6fc): undefined reference to `ncnn::HardSigmoid_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(hardswish_arm.cpp.o): in function `ncnn::HardSwish_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
hardswish_arm.cpp:(.text+0x4c): undefined reference to `ncnn::HardSwish_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: hardswish_arm.cpp:(.text+0x74c): undefined reference to `ncnn::HardSwish_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(mish_arm.cpp.o): in function `ncnn::Mish_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
mish_arm.cpp:(.text+0x6c): undefined reference to `ncnn::Mish_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: mish_arm.cpp:(.text+0xe94): undefined reference to `ncnn::Mish_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(swish_arm.cpp.o): in function `ncnn::Swish_arm::forward_inplace(ncnn::Mat&, ncnn::Option const&) const':
swish_arm.cpp:(.text+0x6c): undefined reference to `ncnn::Swish_arm::forward_inplace_fp16sa(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: swish_arm.cpp:(.text+0x1330): undefined reference to `ncnn::Swish_arm::forward_inplace_fp16s(ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(gru_arm.cpp.o): in function `ncnn::GRU_arm::create_pipeline(ncnn::Option const&)':
gru_arm.cpp:(.text+0x343c): undefined reference to `ncnn::GRU_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(gru_arm.cpp.o): in function `ncnn::GRU_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
gru_arm.cpp:(.text+0x8550): undefined reference to `ncnn::GRU_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: gru_arm.cpp:(.text+0x8cd8): undefined reference to `ncnn::GRU_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(gru_arm.cpp.o): in function `ncnn::GRU_arm::forward(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const':
gru_arm.cpp:(.text+0xa794): undefined reference to `ncnn::GRU_arm::forward_fp16sa(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: gru_arm.cpp:(.text+0xad24): undefined reference to `ncnn::GRU_arm::forward_fp16s(std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> > const&, std::__1::vector<ncnn::Mat, std::__1::allocator<ncnn::Mat> >&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution1d_arm.cpp.o): in function `ncnn::Convolution1D_arm::create_pipeline(ncnn::Option const&)':
convolution1d_arm.cpp:(.text+0xf30): undefined reference to `ncnn::Convolution1D_arm::create_pipeline_fp16s(ncnn::Option const&)'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: src/libncnn.a(convolution1d_arm.cpp.o): in function `ncnn::Convolution1D_arm::forward(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const':
convolution1d_arm.cpp:(.text+0x248c): undefined reference to `ncnn::Convolution1D_arm::forward_fp16sa(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
/home/sss/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-ld: convolution1d_arm.cpp:(.text+0x27dc): undefined reference to `ncnn::Convolution1D_arm::forward_fp16s(ncnn::Mat const&, ncnn::Mat&, ncnn::Option const&) const'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Stephenfang51 avatar Nov 23 '22 06:11 Stephenfang51

@Stephenfang51 I comment out build step to help you first figure out if there is something wrong/different in the configure step. As we can see, my configure step log prints "The compiler does not support armv8.2 fp16", thus no fp16 related functions will be compiled further. Your latest compile/link log shows it seems related to fp16sa.

I know nearly nothing about fp16 in ncnn. @nihui Is there any idea?

zchrissirhcz avatar Nov 23 '22 06:11 zchrissirhcz

@Stephenfang51 Btw, if you are using a different qnx.toolchain.cmake file, you may paste it here. Different flags may cause different compile/link output.

zchrissirhcz avatar Nov 23 '22 06:11 zchrissirhcz

@zchrissirhcz

set(CMAKE_SYSTEM_NAME QNX)
set(CMAKE_HOST_SYSTEM_NAME QNX)
set(CMAKE_SYSTEM_PROCESSOR arm)
SET(CMAKE_SYSTEM_VERSION 7.1.0)
# set(QCC_COMPILER_TARGET "$ENV{QCC_COMPILER_TARGET}")
set(QCC_NTOARCH "aarch64")
set(ARM 1)

#Check environment variables
if ("$ENV{QNX_HOST}" STREQUAL "")
    message(FATAL_ERROR "QNX_HOST environment variable not set")
endif()

if ("$ENV{QNX_TARGET}" STREQUAL "")
    message(FATAL_ERROR "QNX_TARGET environment variable not set")
endif()

set(QNX_HOST "$ENV{QNX_HOST}")
message(STATUS "QNX_HOST: " ${QNX_HOST}) 
set(QNX_TARGET "$ENV{QNX_TARGET}")
message(STATUS "QNX_TARGET: " ${QNX_TARGET}) 

set(CMAKE_C_COMPILER ${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-gcc)
#set(CMAKE_CXX_COMPILER "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-g++")
set(CMAKE_CXX_COMPILER ${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-g++)

set(CMAKE_LINKER       "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-ld"     CACHE PATH "QNX linker program" FORCE)
set(CMAKE_AR           "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-ar"      CACHE PATH "QNX ar program" FORCE)
set(CMAKE_NM           "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-nm"      CACHE PATH "QNX nm program" FORCE)
set(CMAKE_OBJCOPY      "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-objcopy" CACHE PATH "QNX objcopy program" FORCE)
set(CMAKE_OBJDUMP      "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-objdump" CACHE PATH "QNX objdump program" FORCE)
set(CMAKE_RANLIB       "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-ranlib"  CACHE PATH "QNX ranlib program" FORCE)
set(CMAKE_STRIP        "${QNX_HOST}/usr/bin/nto${QCC_NTOARCH}-strip"   CACHE PATH "QNX strip program" FORCE)
set (CMAKE_SH           "${QNX_HOST}/usr/bin/sh"   CACHE PATH "QNX shell program" FORCE)

set(CMAKE_C_FLAGS_DEBUG "-g")
set(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
set(CMAKE_CXX_FLAGS_DEBUG "-g -D_DEBUG")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")

set(CMAKE_FIND_ROOT_PATH "${QNX_TARGET}/${QCC_NTOARCH}le")
set(CMAKE_FIND_ROOT_PATH "${QNX_TARGET}" "${CMAKE_FIND_ROOT_PATH}")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

Here is my toolchain.cmake

as you said, my configuration below

-- NCNN_VERSION_STRING = 1.0.20221123
-- QNX_HOST: /home/sss/qnx710/host/linux/x86_64
-- QNX_TARGET: /home/sss/qnx710/target/qnx7
-- QNX_HOST: /home/sss/qnx710/host/linux/x86_64
-- QNX_TARGET: /home/sss/qnx710/target/qnx7
-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- Check for working C compiler: /home/sss/qnx710/host/linux/x86_64/usr/bin/ntoaarch64-gcc
-- Check for working C compiler: /home/sss/qnx710/host/linux/x86_64/usr/bin/ntoaarch64-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /home/sss/qnx710/host/linux/x86_64/usr/bin/ntoaarch64-g++
-- Check for working CXX compiler: /home/sss/qnx710/host/linux/x86_64/usr/bin/ntoaarch64-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4_FP16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM_VFPV4_FP16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16 - Success
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_DOTPROD
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_DOTPROD - Success
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16FML
-- Performing Test NCNN_COMPILER_SUPPORT_ARM82_FP16FML - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_BF16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_BF16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_I8MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM84_I8MM - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE2
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVE2 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEBF16
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEBF16 - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEI8MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEI8MM - Failed
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEF32MM
-- Performing Test NCNN_COMPILER_SUPPORT_ARM86_SVEF32MM - Failed

I noticed that my arm82 was sucessful which is different from yours ?

Stephenfang51 avatar Nov 23 '22 06:11 Stephenfang51

Quick solution is turn off NCNN_ARM82.

zchrissirhcz avatar Nov 23 '22 07:11 zchrissirhcz

Quick solution is turn off NCNN_ARM82.

yes, did it mean I can only run fp32 on QNX platform ?

Stephenfang51 avatar Nov 23 '22 07:11 Stephenfang51

Thanks for your contribution !

nihui avatar May 08 '23 08:05 nihui

https://github.com/Tencent/ncnn/pull/4709

add build doc for qnx

nihui avatar May 08 '23 09:05 nihui