error log | 日志或报错信息 | ログ
context | 编译/运行环境 | バックグラウンド
cd ncnn; mkdir build; cd build; cmake .. -G Ninja; cmake --build .
how to reproduce | 复现步骤 | 再現方法
- 直接跑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,发现前面通过的几个算例 K
和 TILE_K
都是一样的,但是resnet18打印出来的是 K==2*TILE_K
,因此怀疑跟 TILE_K
有关系。强制让 TILE_K=K
可以通过benchmark所有算例。
但显然强制不在 K
维进行分块是不合理的。因此进一步去鲲鹏机器上跑,同样的编译和运行,发现是没有这个问题的,非常困惑。
1条答案
按热度按时间fkaflof61#
更新一下,把thunderX2出错的二进制扔到鲲鹏跑,鲲鹏也能正常跑完benchmark,没懂,麻了