项目上一直采用的ncnn版本发布于2018.4月份(commit id = 356d018771b389b1efb6d810e1b8db5c803b6ad9,)。最近尝试更新的ncnn版本(commid = a50bcf10aa6b1e367222021534251d0e0acf607a),发布于2019.12月份。对几种设备做压测(Android 8.1, arm-v7),发现cpu性能均略有下降。但是在加载模型时,内存占用相比之前大了许多。一共五个模型,加载后,总计内存大约增长了50%。请问这是什么原因呢。会不会和allocator相关。如何解决。
cpu性能均略有下降,是说变快还是变慢了...
新版本的ncnn中新增了一个开关
net.opt.use_packing_layout
开启后,内部推断时采用 pack4 的内存布局,加快推断速度,但会导致权重参数相应重排,这会需要更多内存
默认是关闭的,在 benchncnn.cpp 中开启以达到更快的速度
谢谢解答。速度是变快了。但是需要的内存增长太多。可以想办法减少推理时内存的占用吗?目前观察主要内存增长来自于模型加载时。运行时的内存增长和之前ncnn版本相比是正常的。
net.opt.use_packing_layout 关掉就能减少内存,但是速度就不快了 ....
将Option里面use_winograd_convolution;use_sgemm_convolution;都设置为false后,内存占用有所降低,但是还是比旧版本的ncnn占用的内存大。推理速度降下来了。
项目对内存使用很敏感,所以对新版ncnn内存的占用需要进一步优化。我们对几个检测功能进行分析发现,有的模型加载时占用内存没有改变,有的模型加载时内存占用增大了2~3倍。不知道这是什么原因?需要提供哪些信息帮忙分析呢?@nihui
@nihui ,Very useful. Thanks a lot.
Most helpful comment
cpu性能均略有下降,是说变快还是变慢了...
新版本的ncnn中新增了一个开关
net.opt.use_packing_layout
开启后,内部推断时采用 pack4 的内存布局,加快推断速度,但会导致权重参数相应重排,这会需要更多内存
默认是关闭的,在 benchncnn.cpp 中开启以达到更快的速度