When linking my own project to XNNPACK's library, I get an error: undefined reference to 'xnn_f32_vadd_ukernel__neon_u8'
XNNPACK was compiled under ARMv8 without problems, but my own project linking to libxnnpack.a encountered the following error, /usr/bin/ld: XNNPACK/build/libXNNPACK.a(binary-elementwise-config.c.o): in function `init_f32_vadd_config':
binary-elementwise-config.c:(.text+0xc): undefined reference to `xnn_f32_vadd_ukernel__neon_u8'
/usr/bin/ld: binary-elementwise-config.c:(.text+0x10): undefined reference to `xnn_f32_vaddc_ukernel__neon_u8'
/usr/bin/ld: binary-elementwise-config.c:(.text+0x14): undefined reference to `xnn_f32_vadd_ukernel__neon_u8'
/usr/bin/ld: binary-elementwise-config.c:(.text+0x18): undefined reference to `xnn_f32_vaddc_ukernel__neon_u8'
Writing a test test link phase is fine, but when it comes to project code referencing the XNNPACK function get an error like above, check that neon is turned on correctly.
a build produces a collection of libraries libaarch64_prod_microkernels_private.a libaarch64_prod_microkernels_private.pic.a libfp16arith_prod_microkernels_private.a libfp16arith_prod_microkernels_private.pic.a libneon_aarch64_prod_microkernels_private.a libneon_aarch64_prod_microkernels_private.pic.a libneonbf16_prod_microkernels_private.a libneonbf16_prod_microkernels_private.pic.a libneondot_aarch64_prod_microkernels_private.a libneondot_aarch64_prod_microkernels_private.pic.a libneondotfp16arith_prod_microkernels_private.a libneondotfp16arith_prod_microkernels_private.pic.a libneondot_prod_microkernels_private.a libneondot_prod_microkernels_private.pic.a libneonfma_aarch64_prod_microkernels_private.a libneonfma_aarch64_prod_microkernels_private.pic.a libneonfma_prod_microkernels_private.a libneonfma_prod_microkernels_private.pic.a libneonfp16arith_aarch64_prod_microkernels_private.a libneonfp16arith_aarch64_prod_microkernels_private.pic.a libneonfp16arith_prod_microkernels_private.a libneonfp16arith_prod_microkernels_private.pic.a libneonfp16_prod_microkernels_private.a libneonfp16_prod_microkernels_private.pic.a libneoni8mm_prod_microkernels_private.a libneoni8mm_prod_microkernels_private.pic.a libneon_prod_microkernels_private.a libneon_prod_microkernels_private.pic.a libneonv8_prod_microkernels_private.a libneonv8_prod_microkernels_private.pic.a libscalar_prod_microkernels_private.a libscalar_prod_microkernels_private.pic.a
Did you solved your issue?
I'm having
libxnnpack_backend.a(XNNCompiler.cpp.o): in function executorch::backends::xnnpack::delegate::defineExpNode(xnn_subgraph*, std::unordered_map<unsigned int, unsigned int, std::hash<unsigned int>, std::equal_to<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int> > > const&, fb_xnnpack::XNode const*, fb_xnnpack::XNNGraph const*)': XNNCompiler.cpp:(.text._ZN10executorch8backends7xnnpack8delegate13defineExpNodeEP12xnn_subgraphRKSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEPKN10fb_xnnpack5XNodeEPKNSH_8XNNGraphE+0xdc): undefined reference to xnn_define_exp'
Hi @AvilaGTZ ,
The function xnn_define_exp is defined in `src/subgraph/deprecated.c``.
Are you sure this is being linked in whith your build target?
Cheers, Pedro