Open
Description
Convolutions provided by the FastConv
package
Described in their paper is considerably outperforming the back ends for 1D and 2D convolutions. At least on CPU.
using FastConv
using NNlib
using BenchmarkTools
x = randn(500,500,1,1)
spatial_dims = (5,5)
k = randn(spatial_dims...,1,1)
cdims = DenseConvDims(x,k; padding= spatial_dims .-1)
fast_y = @btime convn(x,k);
# 9.582 ms (8 allocations: 1.94 MiB)
nnlib_y = @btime conv(x,k,cdims);
#244.020 ms (33 allocations: 5.80 MiB)
nnlib_im2col_y = @btime NNlib.conv_im2col(x,k,cdims);
#10.453 ms (50 allocations: 50.39 MiB)
isapprox(fast_y,nnlib_y,atol=1e-3)
#true
Metadata
Metadata
Assignees
Labels
No labels