title: How to compute a 'full' convolution with NVIDIA cuDNN?
body: <p>I'm testing the NVIDIA cuDNN library on simple problems. I'm trying to achieve something that I thought would be simple, doing a 'full' convolution. I have been able to compute a 'valid' convolution with the forward algorithm without too much problems, but I'm unable to do the same with the backward algorithm for the 'full' convolution. </p>
  
  <p>I've prepared the tensors for my input, kernel and convolution and tried: </p>
  
  <pre><code>cudnnConvolutionBackwardData(handle.get(),
      alpha, //Set to 1.0
      filter, //Filter descriptor
      kernel_gpu_memory,
      input_tensor, //The input tensor descriptor
      input_gpu_memory,
      convolution, //The convolution descriptor
      conv_algo, //Obtained with getConvolutionBackwardDataAlgorithm
      workspace_cpu_memory, 
      workspace_size, //Obtained with getConvolutionBackwardDataWorkspaceSize
      beta, //Set to 0.0
      output_tensor, //The output tensor descriptor
      conv_gpu_memory);
  </code></pre>
  
  <p>I have checked the return of all CUDA calls and I have no errors, but the result are not the results of the correct 'full' convolution. I'm comparing the obtained results with the 'full' convolution of matlab. </p>
  
  <p>I guess that this does not do what I'm expecting. Should I try the convolutionBackwardFilter algorithm ?</p>
  
  <p>How can I perform a 'full' convolution with cudnn ? </p>