#ifndef CUDANET_CONVOLUTION_H #define CUDANET_CONVOLUTION_H #include #include "layer.cuh" namespace CUDANet::Kernels { /** * @brief Convolution kernel * * @param d_input Device pointer to the input matrix * @param d_kernel Device pointer to the convolution kernel * @param d_bias Device pointer to the bias * @param d_output Device pointer to the output matrix * @param inputSize Width and height of the input matrix * @param nChannels Number of channels in the input matrix * @param kernelSize Width and height of the convolution kernel * @param stride Convolution stride * @param nFilters Number of output filters * @param outputSize Width and height of the output matrix */ __global__ void convolution( const float* __restrict__ d_input, const float* __restrict__ d_kernel, const float* __restrict__ d_bias, float* __restrict__ d_output, const shape2d inputSize, const int nChannels, const shape2d paddingSize, const shape2d kernelSize, const shape2d stride, const int nFilters, const shape2d outputSize ); } // namespace CUDANet::Kernels #endif // CUDANET_CONVOLUTION_H