18 template <
size_t S1,
size_t S2,
size_t P1,
size_t P2>
26 template <
typename I,
typename K,
typename C>
27 static void apply(
const I& input,
const K& kernel, C&& conv) {
28 #ifndef ETL_MANUAL_SELECT 29 if constexpr (impl::cudnn::conv_possible<I, K, C>) {
33 auto impl = select_conv4_valid_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
46 cpp_unreachable(
"Invalid conv implementation selection");
48 #ifndef ETL_MANUAL_SELECT 57 template <
size_t S1,
size_t S2,
size_t P1,
size_t P2>
65 template <
typename I,
typename K,
typename C>
66 static void apply(
const I& input,
const K& kernel, C&& conv) {
67 #ifndef ETL_MANUAL_SELECT 68 if constexpr (impl::cudnn::conv_possible<I, K, C>) {
72 auto impl = select_conv4_valid_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
85 cpp_unreachable(
"Invalid conv implementation selection");
87 #ifndef ETL_MANUAL_SELECT 103 template <
typename I,
typename K,
typename C>
104 static void apply(
const I& input,
const K& kernel, C&& conv,
size_t s1,
size_t s2,
size_t p1,
size_t p2) {
105 #ifndef ETL_MANUAL_SELECT 106 if constexpr (impl::cudnn::conv_possible<I, K, C>) {
110 auto impl = select_conv4_valid_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
123 cpp_unreachable(
"Invalid conv implementation selection");
125 #ifndef ETL_MANUAL_SELECT 141 template <
typename I,
typename K,
typename C>
142 static void apply(
const I& input,
const K& kernel, C&& conv,
size_t s1,
size_t s2,
size_t p1,
size_t p2) {
143 #ifndef ETL_MANUAL_SELECT 144 if constexpr (impl::cudnn::conv_possible<I, K, C>) {
148 auto impl = select_conv4_valid_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
161 cpp_unreachable(
"Invalid conv implementation selection");
163 #ifndef ETL_MANUAL_SELECT 172 template <
size_t S1,
size_t S2,
size_t P1,
size_t P2>
180 template <
typename I,
typename K,
typename C>
181 static void apply(
const I& input,
const K& kernel, C&& conv) {
182 auto impl = select_conv4_valid_filter_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
193 cpp_unreachable(
"Invalid conv implementation selection");
201 template <
size_t S1,
size_t S2,
size_t P1,
size_t P2>
209 template <
typename I,
typename K,
typename C>
210 static void apply(
const I& input,
const K& kernel, C&& conv) {
211 auto impl = select_conv4_valid_filter_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
222 cpp_unreachable(
"Invalid conv implementation selection");
237 template <
typename I,
typename K,
typename C>
238 static void apply(
const I& input,
const K& kernel, C&& conv,
size_t s1,
size_t s2,
size_t p1,
size_t p2) {
239 auto impl = select_conv4_valid_filter_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
250 cpp_unreachable(
"Invalid conv implementation selection");
265 template <
typename I,
typename K,
typename C>
266 static void apply(
const I& input,
const K& kernel, C&& conv,
size_t s1,
size_t s2,
size_t p1,
size_t p2) {
267 auto impl = select_conv4_valid_filter_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
278 cpp_unreachable(
"Invalid conv implementation selection");
286 template <
size_t S1,
size_t S2,
size_t P1,
size_t P2>
294 template <
typename I,
typename K,
typename C>
295 static void apply(
const I& input,
const K& kernel, C&& conv) {
296 auto impl = select_conv4_valid_back_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
307 cpp_unreachable(
"Invalid conv implementation selection");
315 template <
size_t S1,
size_t S2,
size_t P1,
size_t P2>
323 template <
typename I,
typename K,
typename C>
324 static void apply(
const I& input,
const K& kernel, C&& conv) {
325 auto impl = select_conv4_valid_back_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
336 cpp_unreachable(
"Invalid conv implementation selection");
351 template <
typename I,
typename K,
typename C>
352 static void apply(
const I& input,
const K& kernel, C&& conv,
size_t s1,
size_t s2,
size_t p1,
size_t p2) {
353 auto impl = select_conv4_valid_back_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
364 cpp_unreachable(
"Invalid conv implementation selection");
379 template <
typename I,
typename K,
typename C>
380 static void apply(
const I& input,
const K& kernel, C&& conv,
size_t s1,
size_t s2,
size_t p1,
size_t p2) {
381 auto impl = select_conv4_valid_back_impl<I, K, C>(etl::dim<2>(input), etl::dim<3>(input), etl::dim<2>(kernel), etl::dim<3>(kernel));
392 cpp_unreachable(
"Invalid conv implementation selection");
407 template <
typename I,
typename K,
typename C>
408 static void apply(
const I& input,
const K& kernel, C&& conv) {
409 #ifndef ETL_MANUAL_SELECT 410 if constexpr (impl::cudnn::conv_possible<I, K, C>) {
414 auto impl = select_conv4_full_impl<I, K, C>(etl::dim<2>(kernel), etl::dim<3>(kernel));
429 cpp_unreachable(
"Invalid conv implementation selection");
431 #ifndef ETL_MANUAL_SELECT 447 template <
typename I,
typename K,
typename C>
448 static void apply(
const I& input,
const K& kernel, C&& conv) {
449 #ifndef ETL_MANUAL_SELECT 450 if constexpr (impl::cudnn::conv_possible<I, K, C>) {
454 auto impl = select_conv4_full_impl<I, K, C>(etl::dim<2>(kernel), etl::dim<3>(kernel));
469 cpp_unreachable(
"Invalid conv implementation selection");
471 #ifndef ETL_MANUAL_SELECT FFT reduction (with MKL impl)
The functor impl for 4D valid_back conv.
Definition: conv_4d.hpp:372
The functor impl for 4D full conv.
Definition: conv_4d.hpp:440
static void apply(const I &input, const K &kernel, C &&conv, size_t s1, size_t s2, size_t p1, size_t p2)
Apply the convolution.
Definition: conv_4d.hpp:142
static void apply(const I &input, const K &kernel, C &&conv, size_t s1, size_t s2, size_t p1, size_t p2)
Apply the convolution.
Definition: conv_4d.hpp:380
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_4d.hpp:408
The functor impl for 4D valid conv.
Definition: conv_4d.hpp:173
static void apply(const I &input, const K &kernel, C &&conv, size_t s1, size_t s2, size_t p1, size_t p2)
Apply the convolution.
Definition: conv_4d.hpp:238
The functor impl for 4D valid conv.
Definition: conv_4d.hpp:96
The functor impl for 4D valid_back conv.
Definition: conv_4d.hpp:344
Definition: expression_builder.hpp:699
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_4d.hpp:295
The functor impl for 4D valid_back conv.
Definition: conv_4d.hpp:316
FFT reduction (with STD impl)
The functor impl for 4D valid conv.
Definition: conv_4d.hpp:258
static void apply(const I &input, const K &kernel, C &&conv, size_t s1, size_t s2, size_t p1, size_t p2)
Apply the convolution.
Definition: conv_4d.hpp:266
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_4d.hpp:324
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_4d.hpp:210
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_4d.hpp:448
The functor impl for 4D valid conv.
Definition: conv_4d.hpp:58
decltype(auto) smart_forward_gpu(E &expr)
Smart forwarding for a temporary expression that will be computed in GPU.
Definition: helpers.hpp:343
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_4d.hpp:27
The functor impl for 4D valid conv.
Definition: conv_4d.hpp:134
decltype(auto) smart_forward(E &expr)
Smart forwarding for a temporary expression.
Definition: helpers.hpp:323
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_4d.hpp:66
The functor impl for 4D valid conv.
Definition: conv_4d.hpp:19
static void apply(const I &input, const K &kernel, C &&conv, size_t s1, size_t s2, size_t p1, size_t p2)
Apply the convolution.
Definition: conv_4d.hpp:352
The functor impl for 4D full conv.
Definition: conv_4d.hpp:400
The functor impl for 4D valid conv.
Definition: conv_4d.hpp:202
static void apply(const I &input, const K &kernel, C &&conv)
Apply the convolution.
Definition: conv_4d.hpp:181
static void apply(const I &input, const K &kernel, C &&conv, size_t s1, size_t s2, size_t p1, size_t p2)
Apply the convolution.
Definition: conv_4d.hpp:104
The functor impl for 4D valid conv.
Definition: conv_4d.hpp:230
The functor impl for 4D valid_back conv.
Definition: conv_4d.hpp:287
FFT reduction (with CUFFT impl)