卷积层是卷积神经网络 (CNN) 中计算量最大的部分。目前实现卷积层的常用方法是将图像扩展为列矩阵 (im2col),并使用现有的并行通用矩阵乘法 (GEMM) 库。但是 im2col 操作需要加载和存储图像数据,还需要另一个内存块来保存中间数据。
如果我需要优化卷积实现,我可能会选择使用 SIMD 指令直接实现。这种方法不会产生任何内存操作开销。
非常规则的内存访问模式带来的好处超过了浪费的存储成本。
从以下链接,在链接的末尾
https://petewarden.com/2015/04/20/why-gemm-is-at-the-heart-of-deep-learning/
所以我希望知道原因。浮点运算可能需要更多的指令周期吗?或者输入图像不是很大,所以它可能会残留在缓存中,内存操作不需要访问DDR并且消耗更少的周期。