94、利用多线程优化卷积运算

上一节简单介绍了多线程的概念,同时也介绍了在使用多线程编程时,对于数据在线程间的切分,应该遵循的一个原则:那就是切分独立的数据快,而不切分有数据依赖的数据块。

最后还抛出了一个问题:对于卷积算法而言,你觉的切分哪个维度最合适呢?

卷积的切分

之前花了很多篇幅来介绍卷积算法,可以返回这里的前后文章来复习一下卷积算法。

总的来说,卷积运算的核心是乘累加运算。这里所谓的乘累加运算,就是将卷积核 [kh, kw] 范围内的数据与对应的 [hi, wi] 范围的数据在 ci 方向对应位置相乘,然后再累加成一个数据作为最终输出。

因为要把这些维度的数据最终累加成一个值,因此这些维度的数据就是存在依赖的数据,因此这些维度不好拆分。

如果硬要在 kh, kw, hi, wi, ci 这些维度做拆分,那么显而易见的是,需要将拆分到多个线程中的数据计算的结果,再进一步累加,得到一个数据作为最终输出。

有些时候,我会把 kh, kw, hi, wi, ci 这几个维度,称为卷积的累加维度,或者叫做 reduce 维度。

无论是做多线程编程,还是利用 GPU 或者其他 AI 芯片做卷积的加速,亦或是做其他算法的优化加速,这些 reduce 维度的数据拆分都是很麻烦的,因此尽量不要去拆这些维度的数据。

那除了这些 reduce 维度之外,卷积运算还有 ho, wo, co 这几个维度可以考虑。

但是,我们根据卷积的

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值