|
Expression Templates Library (ETL)
|
Convolution implementations with NVidia cuDNN library. More...

Go to the source code of this file.
Functions | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv2_valid ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv, [[maybe_unused]] size_t s1, [[maybe_unused]] size_t s2, [[maybe_unused]] size_t p1, [[maybe_unused]] size_t p2) |
| CUDNN implementation of a 2D 'valid' convolution C = I * K. More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv2_valid_flipped ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv, [[maybe_unused]] size_t s1, [[maybe_unused]] size_t s2, [[maybe_unused]] size_t p1, [[maybe_unused]] size_t p2) |
| CUDNN implementation of a 2D 'valid' convolution C = I * K. More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv4_forward ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv, [[maybe_unused]] size_t s1, [[maybe_unused]] size_t s2, [[maybe_unused]] size_t p1, [[maybe_unused]] size_t p2) |
| cudnn implementation of a 4D 'valid' convolution C = I * K More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv4_forward_flipped ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv, [[maybe_unused]] size_t s1, [[maybe_unused]] size_t s2, [[maybe_unused]] size_t p1, [[maybe_unused]] size_t p2) |
| cudnn implementation of a 4D 'valid' convolution C = I * K, with flipped weights More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv4_backward_filter ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv, [[maybe_unused]] size_t s1, [[maybe_unused]] size_t s2, [[maybe_unused]] size_t p1, [[maybe_unused]] size_t p2) |
| CUDNN implementation of a 4D 'valid' convolution C = I * K, where the output are considered to be kernels. More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv4_backward_filter_flipped ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv, [[maybe_unused]] size_t s1, [[maybe_unused]] size_t s2, [[maybe_unused]] size_t p1, [[maybe_unused]] size_t p2) |
| CUDNN implementation of a 4D 'valid' convolution C = I * K, where the output are considered to be kernels, with flipped weights. More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv2_full ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv) |
| cudnn implementation of a 2D 'full' convolution C = I * K More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv2_full_flipped ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv) |
| cudnn implementation of a 2D 'full' convolution C = I * K More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv4_backward_data_full ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv) |
| cudnn implementation of a 4D 'full' convolution C = I * K More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv4_backward_data_full_flipped ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv) |
| cudnn implementation of a 2D 'valid' convolution C = I * K, with multiple kernels More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv2_valid_multi ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv, [[maybe_unused]] size_t s1, [[maybe_unused]] size_t s2, [[maybe_unused]] size_t p1, [[maybe_unused]] size_t p2) |
| CUDNN implementation of a 2D 'valid' convolution C = I * K. More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv2_valid_multi_flipped ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv, [[maybe_unused]] size_t s1, [[maybe_unused]] size_t s2, [[maybe_unused]] size_t p1, [[maybe_unused]] size_t p2) |
| Standard implementation of a 2D 'valid' convolution C = I * K, with multiple flipped kernels. More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv4_backward_data ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv, [[maybe_unused]] size_t s1, [[maybe_unused]] size_t s2, [[maybe_unused]] size_t p1, [[maybe_unused]] size_t p2) |
| cudnn implementation of a 4D 'valid' backward convolution C = I * K More... | |
| template<typename I , typename K , typename C > | |
| void | etl::impl::cudnn::conv4_backward_data_flipped ([[maybe_unused]] I &&input, [[maybe_unused]] K &&kernel, [[maybe_unused]] C &&conv, [[maybe_unused]] size_t s1, [[maybe_unused]] size_t s2, [[maybe_unused]] size_t p1, [[maybe_unused]] size_t p2) |
| cudnn implementation of a 2D 'valid' backward convolution C = I * K More... | |
Variables | |
| template<typename I , typename K , typename C > | |
| constexpr bool | etl::impl::cudnn::conv_possible = cudnn_enabled&& all_homogeneous<I, K, C>&& all_row_major<I, K, C>&& all_dma<I, K, C> |
| Traits indicating if Convolution with CUDNN is possible for the given configuration. More... | |
| template<typename I , typename K > | |
| constexpr bool | etl::impl::cudnn::conv_possible_ = cudnn_enabled&& all_homogeneous<I, K>&& all_row_major<I, K>&& all_dma<I, K> |
| Traits indicating if Convolution with CUDNN is possible for the given configuration. More... | |
Convolution implementations with NVidia cuDNN library.
| void etl::impl::cudnn::conv2_full | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv | ||
| ) |
cudnn implementation of a 2D 'full' convolution C = I * K
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv2_full_flipped | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv | ||
| ) |
cudnn implementation of a 2D 'full' convolution C = I * K
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv2_valid | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv, | ||
| [[maybe_unused] ] size_t | s1, | ||
| [[maybe_unused] ] size_t | s2, | ||
| [[maybe_unused] ] size_t | p1, | ||
| [[maybe_unused] ] size_t | p2 | ||
| ) |
CUDNN implementation of a 2D 'valid' convolution C = I * K.
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| s1 | The first dimension stride |
| s2 | The second dimension stride |
| p1 | The first dimension padding (left and right) |
| p2 | The second dimension padding (top and bottom) |
| void etl::impl::cudnn::conv2_valid_flipped | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv, | ||
| [[maybe_unused] ] size_t | s1, | ||
| [[maybe_unused] ] size_t | s2, | ||
| [[maybe_unused] ] size_t | p1, | ||
| [[maybe_unused] ] size_t | p2 | ||
| ) |
CUDNN implementation of a 2D 'valid' convolution C = I * K.
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| s1 | The first dimension stride |
| s2 | The second dimension stride |
| p1 | The first dimension padding (left and right) |
| p2 | The second dimension padding (top and bottom) |
| void etl::impl::cudnn::conv2_valid_multi | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv, | ||
| [[maybe_unused] ] size_t | s1, | ||
| [[maybe_unused] ] size_t | s2, | ||
| [[maybe_unused] ] size_t | p1, | ||
| [[maybe_unused] ] size_t | p2 | ||
| ) |
CUDNN implementation of a 2D 'valid' convolution C = I * K.
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv2_valid_multi_flipped | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv, | ||
| [[maybe_unused] ] size_t | s1, | ||
| [[maybe_unused] ] size_t | s2, | ||
| [[maybe_unused] ] size_t | p1, | ||
| [[maybe_unused] ] size_t | p2 | ||
| ) |
Standard implementation of a 2D 'valid' convolution C = I * K, with multiple flipped kernels.
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv4_backward_data | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv, | ||
| [[maybe_unused] ] size_t | s1, | ||
| [[maybe_unused] ] size_t | s2, | ||
| [[maybe_unused] ] size_t | p1, | ||
| [[maybe_unused] ] size_t | p2 | ||
| ) |
cudnn implementation of a 4D 'valid' backward convolution C = I * K
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv4_backward_data_flipped | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv, | ||
| [[maybe_unused] ] size_t | s1, | ||
| [[maybe_unused] ] size_t | s2, | ||
| [[maybe_unused] ] size_t | p1, | ||
| [[maybe_unused] ] size_t | p2 | ||
| ) |
cudnn implementation of a 2D 'valid' backward convolution C = I * K
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv4_backward_data_full | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv | ||
| ) |
cudnn implementation of a 4D 'full' convolution C = I * K
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv4_backward_data_full_flipped | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv | ||
| ) |
cudnn implementation of a 2D 'valid' convolution C = I * K, with multiple kernels
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv4_backward_filter | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv, | ||
| [[maybe_unused] ] size_t | s1, | ||
| [[maybe_unused] ] size_t | s2, | ||
| [[maybe_unused] ] size_t | p1, | ||
| [[maybe_unused] ] size_t | p2 | ||
| ) |
CUDNN implementation of a 4D 'valid' convolution C = I * K, where the output are considered to be kernels.
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv4_backward_filter_flipped | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv, | ||
| [[maybe_unused] ] size_t | s1, | ||
| [[maybe_unused] ] size_t | s2, | ||
| [[maybe_unused] ] size_t | p1, | ||
| [[maybe_unused] ] size_t | p2 | ||
| ) |
CUDNN implementation of a 4D 'valid' convolution C = I * K, where the output are considered to be kernels, with flipped weights.
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv4_forward | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv, | ||
| [[maybe_unused] ] size_t | s1, | ||
| [[maybe_unused] ] size_t | s2, | ||
| [[maybe_unused] ] size_t | p1, | ||
| [[maybe_unused] ] size_t | p2 | ||
| ) |
cudnn implementation of a 4D 'valid' convolution C = I * K
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| void etl::impl::cudnn::conv4_forward_flipped | ( | [[maybe_unused] ] I && | input, |
| [[maybe_unused] ] K && | kernel, | ||
| [[maybe_unused] ] C && | conv, | ||
| [[maybe_unused] ] size_t | s1, | ||
| [[maybe_unused] ] size_t | s2, | ||
| [[maybe_unused] ] size_t | p1, | ||
| [[maybe_unused] ] size_t | p2 | ||
| ) |
cudnn implementation of a 4D 'valid' convolution C = I * K, with flipped weights
| input | The input matrix |
| kernel | The kernel matrix |
| conv | The output matrix |
| constexpr bool etl::impl::cudnn::conv_possible = cudnn_enabled&& all_homogeneous<I, K, C>&& all_row_major<I, K, C>&& all_dma<I, K, C> |
Traits indicating if Convolution with CUDNN is possible for the given configuration.
| I | The type of the input matrix |
| K | The type of the kernel matrix |
| C | The type of the output matrix |
| constexpr bool etl::impl::cudnn::conv_possible_ = cudnn_enabled&& all_homogeneous<I, K>&& all_row_major<I, K>&& all_dma<I, K> |
Traits indicating if Convolution with CUDNN is possible for the given configuration.
| I | The type of the input matrix |
| K | The type of the kernel matrix |
1.8.13