树莓派4B上ncnn转换出来的模型调用时总是崩溃(Segment Fault)的原因
最近拿到一个树莓派$B的板子做实验,在上面编译出ncnn后,将模型转换出bin和param文件后调用时总是因为Segment Fault崩溃,编译了个debug版的ncnn后用gdb查一下,发现总是崩溃在convolution_3x3.h里:崩溃处的代码是:r0是当前layer的输入特征数据,k0是卷积核数据,表面看不出有何问题,后来从头检查了一下,发现板子烧写的是32位的系统(armv7l),不
最近拿到一个树莓派4B的板子做实验,在上面编译出ncnn后,将模型转换出bin和param文件后调用时总是因为Segment Fault崩溃,编译了个debug版的ncnn后用gdb查一下,发现总是崩溃在convolution_3x3.h里:
#0 0x000dccb0 in ncnn::_ZN4ncnnL14conv3x3s1_neonERKNS_3MatERS0_S2_S2_RKNS_6OptionE._omp_fn.13(void) () at /root/ncnn/src/layer/arm/convolution_3x3.h:423
#1 0xb6eabc64 in ?? () from /usr/lib/arm-linux-gnueabihf/libgomp.so.1
崩溃处的代码是:
sum0 += r0[0] * k0[0];
r0是当前layer的输入特征数据,k0是卷积核数据,表面看不出有何问题,后来从头检查了一下,发现板子烧写的是32位的系统(armv7l),不是64位(aarch64)的,所以编译ncnn时注意加上
-DCMAKE_TOOLCHAIN_FILE=../toolchains/pi3.toolchain.cmake
这个选项,否则转换出来的模型每次调用时都崩溃,加上这个选项后重新编译ncnn,然后再使用onnx2ncn转换出的模型就可以正常使用了。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)