         std::cout << std::setw(7) << c;
         std::cout << std::setw(7) << n;
         std::cout << std::setw(7) << k;
+        std::cout << std::setw(7) << s;
         std::cout << std::setw(7) << r;
-        std::cout << std::setw(7) << s;
         std::cout << std::setw(7) << pad_w;
         std::cout << std::setw(8) << pad_h;
         std::cout << std::setw(10) << wstride;

    cudnnCNN<T1, T2> cnn(w, h, c, n, k, r, s, pad_w, pad_h, wstride, hstride, inference);

    // Allocate memory for filter
    auto filter = rand<T1>(std::vector<int>{r, s, c, k}, curand_gen);

    // Allocate memory for input
    auto input = rand<T1>(std::vector<int>{w, h, c, n}, curand_gen);

    if (!inference) {
        // Allocate memory for backward pass wrt weights
        auto delta = rand<T1>(cnn.get_output_dims(), curand_gen);
        auto dW = zeros<T1>(std::vector<int>{s, r, c, k});

        // Warm up backward
        cnn.backward_params(input, delta, dW);
