docs: def cudnnGetConvolution2dDescriptor(convDesc):
      """"
      Get a convolution descriptor.
  
      This function queries a previously initialized 2D convolution descriptor object.
  
      Parameters
      ----------
      convDesc : cudnnConvolutionDescriptor
          Handle to a previously created convolution descriptor.
  
      Returns
      -------
      pad_h : int
          zero-padding height: number of rows of zeros implicitly concatenated onto
          the top and onto the bottom of input images.
      pad_w : int
          zero-padding width: number of columns of zeros implicitly concatenated
          onto the left and onto the right of input images.
      u : int
          Vertical filter stride.
      v : int
          Horizontal filter stride.
      dilation_h : int
          Filter height dilation.
      dilation_w : int
          Filter width dilation.
      mode : cudnnConvolutionMode
          Either CUDNN_CONVOLUTION or CUDNN_CROSS_CORRELATION.
      computeType : cudnnDataType
          Compute precision
      """
      pad_h = ctypes.c_int()
      pad_w = ctypes.c_int()
      u = ctypes.c_int()
      v = ctypes.c_int()
      dilation_h = ctypes.c_int()
      dilation_w = ctypes.c_int()
      mode = ctypes.c_int()
      computeType = ctypes.c_int()
  
      status = _libcudnn.cudnnGetConvolution2dDescriptor(convDesc, ctypes.byref(pad_h),
                                                      ctypes.byref(pad_w), ctypes.byref(u),
                                                      ctypes.byref(v), ctypes.byref(dilation_h),
                                                      ctypes.byref(dilation_w),
                                                      ctypes.byref(mode), ctypes.byref(computeType))
  
      cudnnCheckStatus(status)
  
      return (pad_h.value, pad_w.value, u.value, v.value, upscalex.value, upscaley.value, mode.value,
              computeType.value)