class_docstr: auto_functionalized(op, mutated_args_names, kwargs)
  
  This HOP runs a "functional" version of op.
  
  Concretely, it clones kwargs that `op` mutates (specified by
  mutated_args_names), runs `out = op(**kwargs)` with the cloned values,
  and then returns (out, Tuple of the cloned values that were mutated).
  
  We have some restrictions on `op`.
  See `can_auto_functionalize` for the restrictions. We can likely lift
  many of these if users request it.
class_docstr_tok: ["auto_functionalized","(","op",",","mutated_args_names",",","kwargs",")","This","HOP","runs","a","``","functional","''","version","of","op",".","Concretely",",","it","clones","kwargs","that","`","op","`","mutates","(","specified","by","mutated_args_names",")",",","runs","`","out","=","op","(","*","*","kwargs",")","`","with","the","cloned","values",",","and","then","returns","(","out",",","Tuple","of","the","cloned","values","that","were","mutated",")",".","We","have","some","restrictions","on","`","op","`",".","See","`","can_auto_functionalize","`","for","the","restrictions",".","We","can","likely","lift","many","of","these","if","users","request","it","."]
code: def __init__(self):
      super().__init__("auto_functionalized")
  
file_path: pytorch/torch/_higher_order_ops/auto_functionalize.py
imports: from typing import Any, Dict, List, Tuple
  import torch
  import torch.utils._pytree
  from torch import Tensor
  from torch._C import DispatchKey
  from torch._ops import HigherOrderOperator
  from torch._prims_common import clone_preserve_strides
  from torch._subclasses.fake_tensor import FakeTensorMode
  from torch.fx.experimental.proxy_tensor import disable_proxy_modes_tracing, ProxyTorchDispatchMode, track_tensor_tree
label_desc: Use image node_id 1 to create a new AutoFunctionalized object from inherited base classes: HigherOrderOperator with example: obj = AutoFunctionalized()