Tencent / ncnn

ncnn is a high-performance neural network inference framework optimized for the mobile platform
Other
20.18k stars 4.15k forks source link

开启多线程后运行变慢 #5576

Open Gui0215 opened 2 months ago

Gui0215 commented 2 months ago

我的项目运行在 2a76+6a55的安卓设备上, 单线程(opt.num_thread = 1 && powersave = 2)时的推理耗时比多线程(opt.num_thread = 8 && powersave = 0)快很多(2000ms vs 3000ms), 请问有可能是什么原因

wzyforgit commented 2 months ago

大小核之间的切换是有开销的,另外某些特殊算子(比如LSTM)用单线程多batch更好

Gui0215 commented 2 months ago

大小核之间的切换是有开销的,另外某些特殊算子(比如LSTM)用单线程多batch更好

感谢您的回复。我是简单的卷积+Relu堆叠成的神经网络,个人猜测一个相关的理由应该是:大小核运算能力不同,测试后发现2个大核速度 > 单大核速度。这个结论是符合我预期的

wzyforgit commented 2 months ago

大小核之间的切换是有开销的,另外某些特殊算子(比如LSTM)用单线程多batch更好

感谢您的回复。我是简单的卷积+Relu堆叠成的神经网络,个人猜测一个相关的理由应该是:大小核运算能力不同,测试后发现2个大核速度 > 单大核速度。这个结论是符合我预期的

不是运算能力不同,是大核跟小核之间的通信开销很大,对这类计算密集型任务来说非常不划算,一般要么全小核慢慢跑,要么就全大核一口气快速跑完