CUDNN convolution incorrect for small images
- Dominant language
- Julia
- Stars
- 1.4k
- Forks
- 281
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 30
Description
The CUDNN convolution is giving incorrect results for small images, e.g.
```
julia> f(k, x, padding) = CUDA.CUDNN.cudnnConvolutionForward(CuArray(Float32.(k)),
CuArray(Float32.(x)),
padding=padding)
f (generic function with 1 method)
julia> size(f(rand(7, 1, 1, 1), rand(5, 5, 1, 1), 5))
(9, 15, 1, 1) # Correct
julia> size(f(rand(7, 1, 1, 1), rand(3, 5, 1, 1), 5))
(3, 15, 1, 1) # Should have been (7, 15, 1, 1)
julia> size(f(rand(7, 1, 1, 1), rand(1, 5, 1, 1), 5))
ERROR: CUDNNError: CUDNN_STATUS_BAD_PARAM (code 3) # Should have been (5, 15, 1, 1)
```
The cause of the problem can be located to
https://github.com/JuliaGPU/CUDA.jl/blob/445081cf78a250941b2ecdef1a3a2ecead3fec44/lib/cudnn/convolution.jl#L157-L162
where the `min` silently changes the requested padding.
Cc: @denizyuret
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.