栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Depthwise 卷积实际速度与理论速度差距较大,解释原因。

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Depthwise 卷积实际速度与理论速度差距较大,解释原因。

参考回答:

首先,caffe原先的gpu实现group convolution很糟糕,用for循环每次算一个卷积,速度极慢。第二,cudnn7.0及之后直接支持group convolution,但本人实测,速度比github上几个直接写cuda kernel计算的dw convolution速度慢。例如对于n=128, c=512, h=32, w=32, group=512的卷积跑100次,cudnn 7.0里的group convolution需要4秒多,而DepthwiseConvolution大概只需要1秒。

分析了一下dw convolution与普通convolution的理论计算复杂度,举例如下:

卷积1:普通卷积,输入为6464256,输出为6464256,卷积核大小为33。参数为33256256=590K,计算量为646425633256=2.42G,计算过程的工作集内存总量(输入输出数据+参数)为64642562 + 33256*256 = 2.69M。

卷积2:dw卷积,输入为6464256,输出为6464256,卷积核大小为33。参数为33256=2.3K个,计算量为646425633=9.44M,计算过程的工作集内存总量为64642562 + 33256=2.10M。

卷积3:普通卷积,输入为646416,输出为646416,卷积核大小为33。参数为331616=2.3K个,计算量为6464163316=9.44M,计算过程的工作集内存总量为6464162 + 3316*16=133K。

可以看到卷积2肯定比卷积1快,因为计算量下降到1/256了,但卷积2实际上无法达到卷积1的256倍速度(我记得我测得结果大概是快10倍左右),因为工作集内存大小并没有显著降低。卷积2也无法达到卷积3的速度,因为虽然FLOPS相同,但工作集内存大小相差了很多倍,因此单位数据的计算密度小很多,很难充分利用GPU上的计算单元。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/364214.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号