                                                         time_steps,
                                                         xDescArray_.ptr(),
                                                         &workspace_size_) );
+
+            dW_ = zeros<T>(std::vector<int>{static_cast<int>(weight_size_ / sizeof(T)), 1});
 
             workspace_ = zeros<float>(std::vector<int>{static_cast<int>(workspace_size_ / sizeof(float)), 1});
 

#else
        if (precision != "float")
            throw std::runtime_error(ss.str());
        std::tie(fwd_time, bwd_time) = time_rnn<float>(hidden_state,
                                                       batch_size,
                                                       time_steps,
                                                       type,
                                                       inference);
#endif

        std::cout << std::setw(18) << fwd_time;
        if (!inference)
            std::cout << std::setw(18) << bwd_time;
        std::cout << std::endl;
    }


        std::cout << std::setw(8) << batch_size;
        std::cout << std::setw(8) << time_steps;
        std::cout << std::setw(14) << precision;
        int fwd_time, bwd_data_time, bwd_params_time;

        std::stringstream ss;
        ss << "Unsupported precision requested. Precision: " << precision << " Inference: " << inference;
