My Notes and codes documentation for CUDA learning journey
*Start of Chapter 7: Convolution
Convolution is an array operation where each output element is a weighted sum of an input element and its neighboring elements, using a filter array (convolution filter). Convolutions can be applied to 1D (audio), 2D (images), or 3D (video) data.
Fig 16.01: 1D Convolution Example illustratory diagram.
Fig 16.02: 1D Convolution Boundary Condition
Click here to see the code implementation for 1D Convolution with Boundary Condition (Zero padded) enabled.
P_{y,x} = \sum_{j= -r_{y}}^{r_y} \sum_{k= -r_x}^{r_x} f_{j+r_y, k+r_x} \times N_{y+j, x+k}
Fig 16.03: 2D Convolution Example
\begin{aligned}
P_{2,2} = \space & N_{0,0} \times M_{0,0} + N_{0,1} \times M_{0,1} + N_{0,2} \times M_{0,2} + N_{0,3} \times M_{0,3} + N_{0,4} \times M_{0,4} +\\
& N_{1,0} \times M_{1,0} + N_{1,1} \times M_{1,1} + N_{1,2} \times M_{1,2} + N_{1,3} \times M_{1,3} + N_{1,4} \times M_{1,4} +\\
& N_{2,0} \times M_{2,0} + N_{2,1} \times M_{2,1} + N_{2,2} \times M_{2,2} + N_{2,3} \times M_{2,3} + N_{2,4} \times M_{2,4} +\\
& N_{3,0} \times M_{3,0} + N_{3,1} \times M_{3,1} + N_{3,2} \times M_{3,2} + N_{3,3} \times M_{3,3} + N_{3,4} \times M_{3,4} +\\
& N_{4,0} \times M_{4,0} + N_{4,1} \times M_{4,1} + N_{4,2} \times M_{4,2} + N_{4,3} \times M_{4,3} + N_{4,4} \times M_{4,4} \\
\end{aligned}
= 1+4+9+8+5+4+9+16+15+12+9+16+25+24+21+8+15+24+21+16+5+12+21+16+5
= 321
Fig 16.04: 2D Convolution Boundary Condition
Click here to see the code implementation for 2D Convolution with Boundary Condition (Zero padded) enabled.