is true for torch.autograd.grad. If you want to use autograd,
         you can compute gradients directly with
         functionalize(grad(f)).
  2. Like other torch.func transforms, *functionalize()* doesn't
     work with global state. If you call *functionalize(f)* on a
     function that takes views / mutations of non-local state,
     functionalization will simply no-op and pass the
     view/mutation calls directly to the backend. One way to work
     around this is is to ensure that any non-local state creation
     is wrapped into a larger function, which you then call
     functionalize on.

  3. *resize_()* has some limitations: functionalize will only
     work on programs that use resize_()` as long as the tensor
     being resized is not a view.

  4. *as_strided()* has some limitations: functionalize will not
     work on *as_strided()* calls that result in tensors with
     overlapping memory.
