Memory Efficient Convolution (MEC) is an alternative to im2col to lower the tensor and convolution kernel to feed them to BLAS for Matrix-Multiplication.
Compared to FFT and Winograd it uses much less memory and is faster than Winograd on 5 out of 7 benchmarks due to launching several GEMM in parallel and maximizing throughput.
It is especially suitable for mobile devices that are constrained in memory.
Memory Efficient Convolution (MEC) is an alternative to
im2col
to lower the tensor and convolution kernel to feed them to BLAS for Matrix-Multiplication.Compared to FFT and Winograd it uses much less memory and is faster than Winograd on 5 out of 7 benchmarks due to launching several GEMM in parallel and maximizing throughput.
It is especially suitable for mobile devices that are constrained in memory.
Note: It requires NHWC layout (Tensorflow)
Paper: Cho et al, [1706.06873]
Related implementation in lua (before CuDNN existed): CPU and GPU