code: func (co *Context) GetRNNWorkspaceSize(rnnDesc *RNN, seqLength int, xDesc []*TensorDescriptor) (sizeInBytes uintptr, err error) {
  	var sizeInBytesC C.size_t
  	if len(xDesc) != seqLength {
  		return 0, errors.Errorf("Incorrect xDesc length. Want %d. Got %d", seqLength, len(xDesc))
  	}
  
  	internals := make([]C.cudnnTensorDescriptor_t, len(xDesc))
  	for i := range xDesc {
  		internals[i] = xDesc[i].internal
  	}
  	ptr := (*C.cudnnTensorDescriptor_t)(unsafe.Pointer(&internals[0]))
  
  	// call cudnnGetRNNWorkspaceSize
  	err = result(C.cudnnGetRNNWorkspaceSize(co.internal, rnnDesc.internal, C.int(seqLength), ptr, &sizeInBytesC))
  	sizeInBytes = uintptr(sizeInBytesC)
  	return
  }
docs: // GetRNNWorkspaceSize is used to query the amount of work space required to execute the RNN described by rnnDesc with inputs dimensions defined by xDesc.