ncnn 在ThunderX2机器上跑benchmark到resnet18时出现段错误

lf5gs5x2  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(44)

error log | 日志或报错信息 | ログ

context | 编译/运行环境 | バックグラウンド

cd ncnn; mkdir build; cd build; cmake .. -G Ninja; cmake --build .

how to reproduce | 复现步骤 | 再現方法

  1. 直接跑benchmark, cd benchmark; ../build/benchmark/benchncnn 4 1

more | 其他 | その他

gdb调了一下debug版本,出错位置是在 src/layer/arm/convolution_im2col_gemm.h:ncnn::convolution_gemm_transB_packed_tile:3405:"ld1 {v4.4s, v5.4s, v6.4s, v7.4s}, [%1], #64 \n"

在同文件 convolution_im2col_gemm 函数里打开log,发现前面通过的几个算例 KTILE_K 都是一样的,但是resnet18打印出来的是 K==2*TILE_K ,因此怀疑跟 TILE_K 有关系。强制让 TILE_K=K 可以通过benchmark所有算例。

但显然强制不在 K 维进行分块是不合理的。因此进一步去鲲鹏机器上跑,同样的编译和运行,发现是没有这个问题的,非常困惑。

fkaflof6

fkaflof61#

更新一下,把thunderX2出错的二进制扔到鲲鹏跑,鲲鹏也能正常跑完benchmark,没懂,麻了

相关问题