
    iTw                    
   U d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlmZ ddlmZmZmZmZmZmZ ddlZddlZddlmZ ddlm Z  ddl!m"Z"m#Z#m$Z$m%Z% ddl&m'Z' dd	l(m)Z) dd
l*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD ddlEmFZFmGZG ddlHmIZI ddlJmKZKmLZL ddlMmNZN ddlOmPZP ddlQmRZRmSZSmTZTmUZUmVZV ddlWmXZX ddlYmZZZm[Z[m\Z\ ddl]m^Z^m_Z_m`Z` ddlambZbmcZcmdZdmeZemfZf ddlgmhZh ddlimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d d!lmZmZmZmZmZmZ d d"lmZ d d#lmZmZ d d$lmZmZmZmZmZmZmZmZ d d%lmZmZmZmZmZmZ d d&lmZmZmZmZmZ d d'lmZmZmZmZmZmZmZmZmZmZmZmZmZ d d(lmZ d d)lmZ d d*lmZ d d+lmZmZmZmZmZmZmZmZmZ d d,lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d d-lmZm Z mZ d d.lmZ d d/lmZ d d0lmZ d d1lm	Z	m
Z
mZmZmZmZ d d2lmZmZmZmZ d d3lmZmZmZ d d4lmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# 	 ddl$Z%erdd5l'm(Z( dd6l)m*Z*  e
jV                  e,      Z-ej\                  j_                  e,d7      Z0e1Z2d8 Z3 G d9 d:      Z4ejj                   G d; d<             Z6 G d= d>e6      Z7 e8d?  e9e	      ju                         D              Z;e8e<   e=d@<    e>       Z?e>e<   e=dA<   ej                  j                  j                  ZCej                  j                  j                  ZE G dB dC      ZFdD ZGdE ZH	 dhdFefdGZIdH ZJ	 dhdIZK	 didJZL	 dhdKZMdL ZNdM ZOdN ZPdO ZQdP ZRdaSee>eT      e=dQ<   daUee<   e=dR<   dFe>eT   fdSZVdTeTdFeWfdUZXdVdWdXeTdYej                  dFedfdZZZda[ee>eT      e=d[<   da\ee<   e=d\<   dFe>eT   fd]Z]dTeTdFeWfd^Z^	 djdFeBfd_Z_dd`daee   dbeWfdcZ` G dd de      Zaeaj                         ea_c         G df dg      Zdy# e&$ r dZ%Y 0w xY w)kaq  
This module contains classes and utilities for building variable trackers in Dynamo.
Variable trackers are used to convert Python values into symbolic representations
that can be traced and transformed during graph capture.

The key classes are:

- VariableBuilder: Handles source-tracked objects that need guards and proper
  reconstruction in the output graph. Used for inputs, module attributes, etc.

- SourcelessBuilder: Handles ephemeral objects created during tracing that don't
  need source tracking or guards. Used for temporary lists, intermediate values, etc.

Variable trackers enable Dynamo to track the flow of values through the program,
maintain guards for dynamic properties, and reconstruct values in the output graph.
The builders in this module handle converting Python values into appropriate
VariableTracker instances based on their type and usage context.
    N)MutableMapping)AnyCallable
NamedTupleOptionalTYPE_CHECKINGUnion)SymInt)enable_python_dispatcher)get_metrics_contextis_int_specialization_caseis_torch_symset_feature_use)TracingContext)
flat_apply)call_torchbind)HigherOrderOperator)
FakeTensoris_fakemaybe_get_fake_mode)is_sparse_any	safe_grad)justknobs_check)BackwardState)normalize_source_name)	_constrain_range_for_size_nested_int_aware_sort
DimDynamicRelaxedUnspecConstraintStatefulSymbolicContextSubclassSymbolicContextSymbolicContextSymIntSymbolicContextTrackedFake)immutable_dictimmutable_list)ExpandedWeight)is_traceable_wrapper_subclass"is_traceable_wrapper_subclass_type)ValueRanges)TensorWeakRef   )configgraph_break_hintsmutation_guardreplay_recordtrace_rules) get_registered_device_interfaces)InternalTorchDynamoErrorraise_observed_exceptionunimplemented_v2)GuardBuilderinstall_guardmake_dupe_guard)auto_dynamic
auto_unsetFrameStateSizeEntryInferStrideprocess_automatic_dynamic)SideEffects)AttrProxySource
AttrSourceCallMethodItemSourceChainedSourceConstDictKeySourceConvertIntSourceDictGetItemSourceDictSubclassGetItemSourceFloatTensorSourceGetItemSource
GradSourceis_constant_sourceis_from_closure_sourceis_from_global_sourceis_from_nonlocal_sourceis_from_optimizer_source&is_from_unspecialized_nn_module_sourceListGetItemSourceLocalSourceNonSerializableSetGetItemSourceNumpyTensorSourceOptimizerSourceRandomValueSourceSourceSubclassAttrListSourceTupleIteratorGetItemSource"UnspecializedBuiltinNNModuleSourceUnspecializedNNModuleSource) _extract_tensor_dictbuild_checkpoint_variablebuild_invoke_subgraph_variableclone_inputcommon_constant_types	dict_keysget_fake_valueget_items_from_dictget_locals_to_stealget_static_address_typeis_frozen_dataclassis_functionis_function_or_wrapperis_invoke_subgraphis_lru_cache_wrapped_functionis_namedtupleis_parameter_freezing	is_typingis_utils_checkpointis_wrapper_or_member_descriptoristypenamedtuple_fieldsodict_valuesproxy_args_kwargsrange_iteratorset_example_valuetensor_always_has_static_shapetuple_iteratortuple_iterator_getitemtuple_iterator_len unwrap_with_attr_name_if_wrapperwrap_fake_exception   )AttributeMutationNewtypestrValueMutationExistingValueMutationNewVariableTrackerVariableTrackerMeta)BuiltinVariable)ConstantVariableEnumVariable)AutocastModeVariableDynamoConfigPatchVariableErrorOnGraphBreakVariableEventVariableNullContextVariablePreserveVersionContextVariableStreamContextVariableStreamVariable)ConstDictVariableDefaultDictVariableDictKeySetVariableFrozensetVariableMappingProxyVariableSetVariable)DeviceMeshVariablePlacementClassVariablePlacementVariableProcessGroupVariableWorldMetaClassVariable)BuiltinMethodVariableCollectionsNamedTupleFunction!CollectiveFunctionRewriteVariable'CreateTMADescriptorExperimentalVariable!CreateTMADescriptorStableVariableFunctoolsPartialVariableFunctoolsWrapsVariableSysFunctionVariableTracebackVariableTritonKernelVariableUserFunctionVariableUserMethodVariableWrapperUserFunctionVariable) TorchHigherOrderOperatorVariable)ItertoolsVariable)LazyVariableTracker)	BaseListVariableListIteratorVariableListVariableNamedTupleVariableRangeVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradEngineVariableAutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableDebuggingVariableDelayGraphBreakVariableGetAttrVariableGetSetDescriptorVariableLambdaVariableLoggingLoggerVariableMethodWrapperVariableNumpyDTypeVariableNumpyTypeInfoVariableNumpyVariablePythonModuleVariableRandomClassVariableRandomVariableRegexPatternVariableSavedTensorBoxTorchVersionVariableTypingVariableWeakRefVariable)FSDPManagedNNModuleVariable$UnspecializedBuiltinNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)TorchScriptObjectVariableSDPAParamsVariable)NumpyNdarrayVariable$supported_const_comparison_op_valuesSymNodeVariableTensorSubclassVariableTensorVariableUnspecializedPythonVariable)DispatchKeySetVariableFuncTorchInterpreterVariableTorchCtxManagerClassVariableTorchInGraphFunctionVariable)TensorWithTFOverrideVariable#torch_function_mode_stack_state_mgrTorchFunctionModeVariable)FrozenDataClassVariableIntWrapperVariableKeyedJaggedTensorVariableMutableMappingVariableSourcelessGraphModuleVariableUserDefinedClassVariableUserDefinedDictVariable!UserDefinedExceptionClassVariableUserDefinedListVariableUserDefinedObjectVariableUserDefinedSetVariableUserDefinedTupleVariable)	PyCodegen)InstructionTranslatorcudagraph_static_inputsc                     t         j                  j                  t         j                  j                  j                        5  t        | d      cd d d        S # 1 sw Y   y xY w)Ngrad)torch_logginghide_warnings	_internalsafe_grad_filterhasattr)ts    Y/var/www/html/engine/venv/lib/python3.12/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr   6  sC    		%	%enn&>&>&O&O	P "q&!" " "s   AA!c                       e Zd Zy)_missingN__name__
__module____qualname__     r   r   r   ;  s    r   r   c                       e Zd ZU eed<   eeej                  f   ed<   e	ed<   e
ej                  j                  j                     ed<   dZe	ed<   dZe
ej                      ed<   ed	        Zd
 ZddZd Zd Zy)GraphArgsource_examplepass_arg_as_tensorfake_tensorT	is_tensorNexample_strong_refc                 z    t        | j                  t              r| j                         }|J |S | j                  S N)
isinstancer   r+   )selfrs     r   examplezGraphArg.examplec  s4    dmm]3A= =H== r   c                     t        | j                  t        j                        r2t	        | j                        | _        t        | j                        sJ y y r  )r  r   r   Tensorr+   r   r  r  s    r   __post_init__zGraphArg.__post_init__l  s=    dmmU\\2)$--8DM4++,,, 3r   c                 (     || j                          y r  r   r  codegens     r   reconstructzGraphArg.reconstructq  s    r   c                      d | _         d | _        y r  )r   r  r  s    r   erasezGraphArg.eraset  s    "&r   c                 l    | j                   j                         |j                   j                         k(  S r  )r   name)r  others     r   __eq__zGraphArg.__eq__x  s'    {{!U\\%6%6%888r   r  r   )r   r   r   rV   __annotations__r	   r+   r   r
   boolr   _subclassesr  r   r  r  r  propertyr
  r  r  r  r  r   r   r   r   r   ?  s    N M5<</00" %++77BBCC It 26.5! !-
'9r   r   c                   (     e Zd Zd fdZddZ xZS )BackwardStateGraphArgc                 >    t         |   d t               dd d       y )NF)r   r   r  r  r  )super__init__r   )r  	__class__s    r   r#  zBackwardStateGraphArg.__init__}  s&    "_$ 	 	
r   c                    j                   j                  j                  sJ j                  fd       j	                  dd       j                          j                  j                   j                  j                         y )Nc                  D     j                  t        j                  d      S )Nr   )load_import_fromr   r   )r  s   r   <lambda>z3BackwardStateGraphArg.reconstruct.<locals>.<lambda>  s    G,,]-E-EW r   r   F)txoutputbackward_state_varadd_push_nullcall_functiondup_topstorer  s    `r   r  z!BackwardStateGraphArg.reconstruct  se    zz  3333W	
 	a'gjj''::;r   returnNr  )r   r   r   r#  r  __classcell__r$  s   @r   r   r   |  s    
<r   r   c              #      K   | ]8  \  }}|j                  d       s"t        j                  |      rt        |       : yw)_N)
startswithinspectisclassid).0r  members      r   	<genexpr>r<    s7      /f??3GOOF$; vJ/s   >A ITERTOOLS_TYPE_IDSITERTOOLS_POLYFILLED_TYPE_IDSc                   L    e Zd ZdZdeddf fdZd Zd Zd Zd	 Z	e
d
        Ze
ej                  d               Zdej                   fdZdej&                  fdZd Zd Zd Ze
ej                  deeed egef   f   fd              Zd ZdefdZde e!e"e#e$f   fdZ%de&fdZ'de(fdZ)de e*e+f   fdZ,de-j\                  de/fdZ0de-jb                  jd                  fdZ3d Z4de-j\                  fdZ5de-j\                  fdZ6d Z7	 	 d%d e8e9   d!e8e:   fd"Z;d# Z<d$ Z= xZ>S )&VariableBuilderz3Wrap a python value in a VariableTracker() instancer   r1  Nc                     |J d       t        j                         J d       t        |           || _        || _        |j                         | _        y )NzRConsider SourcelessBuilder for ephemeral objects, usually objects created locally.zExpected active TracingContext)r   try_getr"  r#  r)  r   r  )r  r)  r   r$  s      r   r#  zVariableBuilder.__init__  s^    
 ! 	
`	
! %%'3U5UU3KKM	r   c                 <   || j                   j                  j                  v rX| j                   j                  j                  |   }t        | j                  |j                        }|r| j                  |       |S | j                   j                  j                  j                  || j                        }|r|S | j                  |      }|j                  | j                  |_        d }| j                  |      s	 |||      r]|| j                   j                  j                  vr;t        |      s0| j                   j                  j                  j                  ||      }| j                   j                  j                  j                  || j                  |       |S )Nc                 <    t        |       xr t        |t              S r  )r   r  r   )valuevts     r   _is_deduplicable_sym_variablez?VariableBuilder.__call__.<locals>._is_deduplicable_sym_variable  s    
  &J:b/+JJr   )r)  r*  side_effectsr8   r   install_guardsvariable_tracker_cachelookup_wrap_can_lift_attrs_to_inputsrn   track_object_existingadd)r  rE  side_effect_result	dup_guard	cached_vtrF  rG  s          r   __call__zVariableBuilder.__call__  s6   DGGNN///!%!<!<U!C'5G5N5NOI##I.%%GGNN99@@T	ZZ99BI	K ..r20;TWW^^8883E:,,BB5"MB--11%bI	r   c                 D    t        |      t        t        t        t        hv S r  )typer   r   r   r   )r  rF  s     r   rM  z)VariableBuilder._can_lift_attrs_to_inputs  s$    Bx(% 	
 
 	
r   c                     | j                   S r  r  r  s    r   
get_sourcezVariableBuilder.get_source  s    {{r   c                     | j                         }	 |D cg c]  }|j                  |       }}t        |ddi i S c c}w # t        $ r Y y w xY w)Nskipr{   )rW  
make_guardNotImplementedErrorr7   )r  guardsr   guardtmps        r   rI  zVariableBuilder.install_guards  s]    "	9?@6$$U+@C@ 	s##		 A" 		s   A =A A 	AAc                 @    | j                  t        j                        S r  )_type_dispatch_implr-   trace_numpy)clss    r   _type_dispatchzVariableBuilder._type_dispatch  s    &&v'9'9::r   c                    t         j                  t         j                  j                  t         j                  j
                  t         j                  j                  j                  f| j                  ft        t        t        t        j                  t         j                  f| j                  ft         | j"                  ft$        | j&                  ft(        t*        f| j,                  ft        t.              | j0                  ft2        j4                  | j6                  ft8        j:                  | j<                  ft         j>                  j@                  jB                  | jD                  ft         jF                  jH                  | jJ                  ftL        jN                  | jP                  fg}|r1tR        r+|jU                  tR        jV                  | jX                  f       i }|D ]*  \  }}t[        |t              r|n|fD ]  }||vsJ |||<    , |S r  ).r   r  nn	Parameterr  r   functional_tensorFunctionalTensorwrap_tensortuplelistrq   collectionsdequeSizewrap_listlikerv   wrap_tuple_iteratorrs   wrap_range_iteratorslicerangewrap_slice_ranger_   wrap_literalrePatternwrap_regex_patternweakrefReferenceTypewrap_weakrefutilshooksRemovableHandlewrap_removable_handlejitScriptFunctionwrap_jit_functiontypesMappingProxyTypewrap_mapping_proxynpappendndarraywrap_numpy_ndarrayr  )rb  ra  entriesresulttsfnr   s          r   r`  z#VariableBuilder._type_dispatch_impl  s    LLHH&&%%00%%77HH	  lK,=,=uzzJ!! S445S445U^S112()3+;+;<ZZ//0""C$4$45[[..0I0IJYY%%s'<'<=##S%;%;<-
2 2NNBJJ(>(>?@ 	FB%b%0Rre &q		
 r   rE  c                 V    | j                  t        j                         t        |      S r  )rI  r6   ID_MATCHr   r  rE  s     r   rx  z"VariableBuilder.wrap_regex_pattern  s!    L112#E**r   c                     | j                  t        j                         t        j                  | j
                  || j                        S Nr  )rI  r6   
TYPE_MATCHr   buildr)  r   r  s     r   r{  zVariableBuilder.wrap_weakref  s3    L334$$TWWeDKKHHr   c                 "    t        dddg        y )Nz3Attempted to represent unregistered RemovableHandle zDynamo attempted to build a representation of a torch.utils.hooks.RemovableHandle, which is not supported. This happens because the RemovableHandle was created in another frame.gb_typecontextexplanationhints)r5   r  s     r   r  z%VariableBuilder.wrap_removable_handle   s    
 	Im	
r   c                 p    | j                  t        j                         t        |d| j                        S )N_torchdynamo_inliner  )rI  r6   r  r   r   r  s     r   r  z!VariableBuilder.wrap_jit_function-  s/    L334*(
 	
r   c           
      P     j                  t        j                          j                  t        j                         t	        d |j                         D              }|sEt        dd|j                         D cg c]  }t        j                  |      r| c} ddg        fdt        fd|j                         D              }t        |d 	      }t        | j                  	      } j                  j                  j                   j#                  ||      S c c}w )
Nc              3   F   K   | ]  }t        j                  |        y wr  r   
is_literalr:  ks     r   r<  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>8  s     M1(33A6M   !znon-const keys in mappingproxynon-const keys: z1Dynamo expects mappingproxy keys to be constants.zFEnsure your mappingproxy keys are constants (e.g. int, float, strings)r  c                     t        j                  |       }| }t        j                         |      }t	        j                  ||      }||fS r  )r   createrH   rW  r   )r  vkey
source_keysource_value	res_valuer  s         r   build_key_valuez;VariableBuilder.wrap_mapping_proxy.<locals>.build_key_valueD  sG    "))!,CJ():JGL+221lCI	>!r   c              3   6   K   | ]  \  }} ||        y wr  r   )r:  r  r  r  s      r   r<  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>M  s     Etq!_Q*Es   r  )rI  r6   r  MAPPING_KEYS_CHECKallkeysr5   r   r  dictitemsr   r   r   r)  r*  rH  track_mutable)r  rE  	all_constr  r  dict_vtr  r  s   `      @r   r  z"VariableBuilder.wrap_mapping_proxy3  s    L334 	L;;<M

MM	8*uzz|+j!K[KfKfghKiA+j*klO\		" Eu{{}EE $E$7%gdkkBww~~**88GG+ ,ks   <D#D#c                     ddl m } |d ft        j                  d ft        j                  d fg}i }|D ]9  \  }}t        |t        t        f      r|n|fD ]  }||vsJ ||t        |      <    ; |S )Nr,   )comptimec                     t               S r  )r   r  s     r   r(  z.VariableBuilder._id_dispatch.<locals>.<lambda>\  s
    +;+= r   c                 t    t        t        fd| j                  i| j                  t        j
                        S )Nr   )r   _dataclasses_fields_lambdar   rI  r6   FUNCTION_MATCHr  s     r   r(  z.VariableBuilder._id_dispatch.<locals>.<lambda>_  s5    N.%;;% )),*E*EF% r   c                     t               S r  )r   r  s     r   r(  z.VariableBuilder._id_dispatch.<locals>.<lambda>e  s
    4H4J r   )	r  dataclassesfieldsr   __version__r  rj  rk  r9  )rb  r  r  r  r  r  r   s          r   _id_dispatchzVariableBuilder._id_dispatchT  s    
 	( =>""  JK
  	#FB%b5$-8Rre #& "r!u#	#
 r   c                 "`   9: ddl m}m}m} ddlm}m}  |       rddlm} ddl	m
} n G d d      } G d	 d
      }d }	d }
 G d d      } |       rddlm}	m}
  |       rddlm}  j!                         j#                  t%        |            }|	 | |      S  j'                         j#                  t)        |            }|	 | |      S t+        |t,        j.                        rt%        |      t,        j0                  j2                  j4                  t,        j0                  j2                  j6                  t8        fvrft%        |      t:        j<                  vrKt%        |      j>                  t,        j.                  j>                  u stA        |      r jC                  |      S tE        |      r jG                  tH        jJ                         tM        t%        |            D cg c]7  }tO        jP                  tS        ||      tU         jV                  |            9 }}tY        |t%        |       jV                        }|S t[        |t\        t^        j`                  t^        jb                  f      rn jG                  tH        jd                         tg        d |ji                         D              99s9 jj                  jl                  jn                  jq                   jV                         9 fd:t]        :fdts        tu        |            D              }t[        |t^        j`                        r]tU         jV                  d      }tw        |t%        |       ty         jj                  |      |jz                         jV                        }n!t}        |t%        |       jV                        } jj                  jl                  j~                  j                  ||      S t+        |t,        j0                  j                        r j                  |      S t        j                  |      r j                  |      S t+        |t,        j                  j                        rIt        | jV                        } jj                  jl                  j~                  j                  ||       |S t[        |t              rt        d |D              r t        ddddgt        j                          jG                  tH        jd                          jG                  tH        jJ                         t        |      }ts        |      D cg c]0  \  }}tO        jP                  |t         jV                  |            2 }}}t        | jV                        } jj                  jl                  j~                  j                  ||      S t[        |t              rutg        d |D              rc|D cg c]"  }t        jQ                   jj                  |      $ }} jG                  tH        j                         t        | jV                        S t+        |t        j                  t,        j                  t,        j                  j                  j                  f      r6 jG                  tH        j                         t        | jV                         S t        j                  |      r6 jG                  tH        j                         t        | jV                        S t+        |t        j                        r6 jG                  tH        j                         t        | jV                        S t        |      rt         jV                        S t        |      rt         jV                        S t+        |t        j                        rtU         j                         d!      } ty         jj                  |      |j                        }g }tU         j                         d"      }ts        |j                        D ]:  \  }}|j                   ty         jj                  t        ||            |             < i }tU         j                         d#      }|j                  j                         D ]e  \  }}t        j                  |      s"t        d$d%| d&g t        j                          ty         jj                  t        ||            |      ||<   g t         j                         j                  tH        jd                        |j                  tH        j                        |j                  tH        jJ                               t        |||      S t        |      r6 jG                  tH        j                         t        | jV                        S t        >t+        |t        j                        r$ j                  t        j                  |            S t        j                  |      rZt        sJ  jG                  t        |      rtH        j                  ntH        jd                         t        | jV                        S t        j                  |      r7 jG                  tH        j                         t        | jV                        S t        j                  |      rt+        |t        j                        r^ jG                  tH        jd                         tU         jV                  d'      }t        |j                  tH        j                               n jG                  tH        j                         t        | jV                        S t        j                  |      rL jG                  tH        j                         t        jP                   jj                  | jV                        S t[        |t,        j                  j                  j                        r7 jG                  tH        j                         t        | jV                        S t+        |t,        j                  j                  j                        r2d } 	 |j                  } g }! jV                  j                  tH        jd                        g}"t+        | t              rtU         jV                  d(      }#|"j                  |#j                  tH        jJ                               ts        |       D ]:  \  }}|!j                   ty         jj                  t        |#|            |             < t        |"   jj                  jl                  j~                  j                  |t!        | jV                  t#        |!      )            S t+        |t$        j&                        rt[        tS        |d*d       t,        j                  j                  j                        rtS        |d+d,      d-k(  rs|tS        |j(                  d-d       k(  rX jG                  tH        j                         t+        t        |j(                  tU         jV                  d*.            d-      S t+        |t,        j                  j,                        r7 jG                  tH        j                         t/        | jV                        S |t,        j0                  j2                  j4                  j6                  u r. jG                  tH        j                         t9         fd/      S t+        ||      rt;        |j<                        S t+        ||      rt?        |j@                        S t        |      ryt        jB                  |      ct        jD                  |      rd0 jj                  jl                  _        t        jB                  |      jI                  | jV                        S t        r-t+        |t        jJ                        r jM                  |      S t+        |tN              r|t,        jP                  jR                  u rt        d1d,d2g         jG                  tH        jd                  tH        jT                         tW        jX                  | jV                        S t+        |t,        jZ                  j\                        r} jG                  tH        j                         tU         jV                  d3      }$ ty         jj                  |$      |j^                        }%ta        jP                   jj                  |%      S t+        |t,        jb                        r jG                  tH        j                          jj                  jl                  je                  d4t%        |      d5|jf                  |jh                  |jj                  d6      }&tm        |&jn                  |       tq        |&||jr                   jV                        S t+        |t,        j                  jt                        rK jG                  tH        jd                         tw        jP                   jj                  | jV                        S t+        |t,        j                  jx                  jz                        r+ jG                  tH        j                         t}        |      S t+        |t,        j~                        rԉ jG                  tH        j                         t,        j0                  j                  j                  |        jj                  jl                  je                  d4t,        j0                  j                  j                  t)        |      fi       }'tm        |'jn                  |       t        |'| jV                        S t[        |t        j                        rOt        j                  |d7d       6 jG                  tH        jd                         t         jV                        S t        j                  |      rg jG                  tH        jd                         t        | jV                        } jj                  jl                  j~                  j                  ||      S t+        |t,        j                  j                        rR jG                  tH        j                         t         jV                         _+        t        | jV                        S t+        |t,        j                        r, jG                  tH        j                         t        |      S t        j                  |      rt        | jV                        S t        j                  |      r7 jG                  tH        j                         t        | jV                        S t        j                  |      r8 jG                  tH        j                         t        | jV                        S t        j                  |      r7 jG                  tH        j                         t        | jV                        S t        j                  |      r8 jG                  tH        j                         t        | jV                        S t)        |      t        v rIt)        |      t        vr7 jG                  tH        j                         t        | jV                        S t        |      r]t+        |t,        j                        r jV                  nt         jV                        }(|jn                  j                         re jj                  jl                  j                  j                  t        |jn                  j                        |(t        j                  8      })nkt+        |t,        j                        r1 jj                  jl                  j                  j                         })nt        d9d,d:g t        j                          jj                  jl                  j                  j                  t        j                  d;d< j                        t%        )      |)|(      }*t        |(|)d=d d=|)>      |*jn                  j                  d?<   |)jn                  j                  }+t+        |+t        j                        s
J |+ d@        jj                  jl                  j                  j                  t        |)|(d              t+        |t,        j                        r|)n|)dAk(  },t        |*|,      S t+        |||f      r9 jG                  tH        j                         t        |d d  jV                        S ||	u rt        dAB      S ||
u rt        dB      S ||j                  u rt               S t+        |t,        j                  j                  j                        rg jG                  tH        j                         t        |jr                  |j                  |j                  |j                  g jV                  C      S t	        j
                  |      r7 jG                  tH        j                         t	        | jV                        S t        j                  |dDd=      r8 jG                  tH        jd                         t        |dE jV                        S t        |      r8 jG                  tH        jd                         t        |dF jV                        S |t        j                  u rt         jV                        S |t        j                  u s)t        j                  dGk\  r,|t        j                  u rt        | jV                        S t!        |      rQt        j                  |dHd=      r8 jG                  tH        jd                         t        |dH jV                        S |t        j"                  u r7 jG                  tH        j                         t%        | jV                        S |t^        j&                  u r7 jG                  tH        j                         t)        | jV                        S t+        |t$        j*                        rNt-        j.                  |      r7 jG                  tH        j                         t-        | jV                        S t1        |      rx|t2        j4                  t2        j6                  fv rR jG                  tH        j                         t+        t9        t2         jV                        |j:                        S t!        |      r^t=        |      \  }}-|-tU         jV                  |-       _+        t        j>                  |      jI                  | jV                        S |t@        jB                  u r6 jG                  tH        j                         tE         jV                        S t[        |t@        jB                        rtG        jH                  |      ri jG                  tH        jd                         tG        | jV                        } jj                  jl                  j~                  j                  ||       |S t+        |t$        jJ                  tL        jN                  f      ri jG                  tH        j                         tQ        | jV                        } jj                  jl                  j~                  j                  ||       |S t+        |t$        j&                        rt+        |j(                  t,        j0                  j                  t,        j                  jR                  jT                  f      r ty         jj                  tU         jV                  d*            |j(                        }.|.rt+        |.tV              sJ dI        jG                  tH        j                         tY        |jZ                  |. jV                        S t+        |t$        j\                        rt_        |      S t+        |t$        j`                        rtc        |      S te        t%        |      t$              r=te        |tf              r+ jG                  tH        j                         ti        |      S te        t%        |      t$              r|t,        j                  jj                  jl                  t,        j0                  jn                  t,        j0                  jp                  fv r2t        j>                  |      jI                  | jV                        S |t,        j                  jr                  u r@ jG                  tH        j                         tu        jv                   jj                        S te        |t,        j.                        r\|t,        j.                  urJ|j>                  t,        j.                  j>                  u r$ty        |      st{        | jV                        S t}         jV                        s jG                  tH        j                         t        | jV                        S t        j
                  t%        |            rddJl+mA}/mB}0 t,        j                  j                  j                  |      r jj                  jl                  j                  j                  t        j                  d;d< j                        t%        |      | jV                        }1t         jV                  |d=d d=|      |1jn                  j                  d?<   t        jP                  |1| jV                        S t        |dK      s j                  |      S tO        j                   ty         jj                   |0 jV                              |j                         j                                      tO        j                   ty         jj                   |/ jV                              |j                                      t,        j                  j                  j                   jj                  jl                  j                  |      }2 jj                  jl                  j                  j                  t        j                  d;d< j                        t%        |      |2 jV                        }1t         jV                  |d=d d=|2      |1jn                  j                  d?<   t        jP                  |1|2 jV                        S t+        |t\        t^        jb                  f      rkt%        |      j                  t\        j                  u rC jG                  tH        jd                          jG                  tH        jJ                          jj                  jl                  jn                  jq                   jV                          fdL:t]        :fdMts        tu        |            D              }t}        |t+        |t^        jb                        rt^        jb                  nt\        t                jV                  N      }3d0|3_P        t        ||3 jV                  O      } jj                  jl                  j~                  j                  ||      S t+        |t              r jG                  tH        jd                          jG                  tH        jJ                         t        t        j                  |            D cg c]G  }tO        jP                  t        j                  ||      t         j                         |            I }}t        | jV                  t               P      }4t        ||4 jV                  Q      } jj                  jl                  j~                  j                  ||      S t+        |t              r jG                  tH        jd                          jG                  tH        jJ                         t        t        j                  |            D cg c]G  }tO        jP                  t        j                  ||      t         j                         |            I }}t        | jV                  t               P      }5t        ||5 jV                  R      } jj                  jl                  j~                  j                  ||      S t+        |t        t        f      rO jG                  tH        jd                          jG                  tH        jJ                         t        t\        j                  |            }t        t        j                  |            D cg c]F  }tO        jP                  t        j                  ||      t         j                         |            H }}t+        |t              rt        nt        }6 |6| jV                  t               P      }7t        ||7 jV                  S      } jj                  jl                  j~                  j                  ||      S te        t%        |      t              rg jG                  tH        jd                         t        | jV                        } jj                  jl                  j~                  j                  ||      S t        |      r| jG                  tH        jd                         t        jP                   jj                  | jV                        } jj                  jl                  j~                  j                  ||      S t+        |t              rtg        dT |D              r|D cg c]"  }t        jQ                   jj                  |      $ }}t         j                         j                  tH        jJ                         j                         j                  tH        j                               t        | jV                        S t        dUdV|D cg c]  }t        j                  |      r| c} dWdXg       y t        j                  |      rddYlcmd}8 |j                  %|j                  j$                  |8j                  k(  r j                  |j                        S |j                  j$                  |8j                  k(  rt        j                  dZ jV                  j                         t        j                          j                  |j                  t        j                  t        t        d=[      \      ]      S |j                  j$                  |8j                  k(  rqt        j                  dZ jV                  j                         t        j                          j                  |j                  t        j                  ^      S t        d_|j                          j                  |      S c c}w c c}}w c c}w # t        $ r Y #Mw xY wc c}w c c}w c c}w c c}w c c}w )`Nr   )
has_triton has_triton_experimental_host_tma%has_triton_tensor_descriptor_host_tmar,   )DynamoConfigPatchProxy(ErrorOnGraphBreakDecoratorContextManager)	Autotuner)JITFunctionc                       e Zd Zy)*VariableBuilder._wrap.<locals>.JITFunctionNr   r   r   r   r  r        r   r  c                       e Zd Zy)(VariableBuilder._wrap.<locals>.AutotunerNr   r   r   r   r  r    r  r   r  c                       y r  r   r   r   r   create_1d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_1d_tma_descriptor      r   c                       y r  r   r   r   r   create_2d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_2d_tma_descriptor  r  r   c                       e Zd Zed        Zy)/VariableBuilder._wrap.<locals>.TensorDescriptorc                       y r  r   r   r   r   from_tensorz;VariableBuilder._wrap.<locals>.TensorDescriptor.from_tensor  s    r   N)r   r   r   staticmethodr  r   r   r   TensorDescriptorr    s     r   r  )r  r  )r  r  )	tuple_clsr   c              3   F   K   | ]  }t        j                  |        y wr  r  r  s     r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>  s     Qq,77:Qr  c                     	j                         }rt        j                  |      }|}n"t        ||       }t	        j                  ||      }t        ||      }t	        j                  ||      }||fS r  )rW  r   r  rC   r   rE   )
ir  r  baser  r  r  r  r  r  s
           r   r  z.VariableBuilder._wrap.<locals>.build_key_value  sm    (*11!4C!"J!3D!!<J-44Q
CC0zB/66q,G	I~%r   c              3   >   K   | ]  \  }\  }} |||        y wr  r   r:  r  r  r  r  s       r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>  *      Av1  1a(   default_factory)r  r   )user_clsr   c              3   P   K   | ]  }t        |t        j                           y wr  )r  r   r  r:  xs     r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>  s     >1:a.>s   $&z$Attempted to wrap a set with tensorsz+Python set containing torch.Tensor elementszDynamo cannot trace sets of tensors. To get a stable ordering, Dynamo needs to convert the set into a list and the order might not be stable if the set contains tensors.z,Use a dictionary where the keys are tensors.r  c              3      K   | ]X  }t        |      t        j                  u xr |j                  d k(  xs& |t        j
                  j                  j                  v  Z yw)r   N)rU  r  BuiltinMethodTyper   r   r|  _pytreeBUILTIN_TYPESr  s     r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>3  s[      	.
  aE333O8O 7 U[[((6667	.
s   AA rE  r   funcargskeywordsz,functools.partial() with non-literal keywordznon-literal keyword: z3functools.partial() expects literal/string keywordsdtypesaved_tensors)r   r  __self__r   r  apply)r;  c                     t        t        j                  j                  j                  j
                        j                   j                   j                  j                  j                  j                         fi       S r  )r   r   _dynamoexternal_utilsFakeCompiledAutogradEngineexec_final_callbacksr-  r)  r*  rH  get_ca_final_callbacks_varr  s   r   r(  z'VariableBuilder._wrap.<locals>.<lambda>  sZ    ,MM00KK``-GGWW^^00KKMO r   Tz9Attempted to wrap torch._higher_order_ops.invoke_subgraphzJDirectly using invoke_subgraph is not supported. Use nested_compile_regionstreamr-  r   )	stream_iddevice_indexdevice_typeenter_result)dynamic_dimz!Attempted to wrap unbacked SymIntz+Unbacked SymInt input is not supported yet.[^a-zA-Z0-9]+r5  F)r  r  grapharg is not a basic Symbol.r{   )rank)target_valuesr   __script_if_tracing_wrapper__original_fn__wrapped__)      r  z"Failed to produce a valid self obj)FlattenScriptObjectSourceScriptObjectQualifiedNameSource__obj_flatten__c                     j                         }t        ||       }t        j                  ||      }t	        ||      }t        j                  ||      }||fS r  )rW  rC   r   r  rF   )	r  r  r  r  r  r  r  r  r  s	           r   r  z.VariableBuilder._wrap.<locals>.build_key_value  sU    (/a8
)00J?8zJ/66q,G	I~%r   c              3   >   K   | ]  \  }\  }} |||        y wr  r   r  s       r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>  r  r  )r  mutation_typer   )r  r   )r   r  )tuple_vtr   )list_vtr   )set_vtr   c              3   F   K   | ]  }t        j                  |        y wr  r  r  s     r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>  s     Aa#..q1Ar  znon-const keys in dict_keysr  z.Dynamo expects dict_keys keys to be constants.zCEnsure your dict_keys keys are constants (e.g. int, float, strings))_DimHintTypez%s marked %s via IntWrapper	warn_only)
constraint)dynamismr  r  zUndefined dynamism (n  torch.utils._tritonr  r  r  
decoratorsr  r  triton.runtime.autotunerr  triton.runtime.jitr  $triton.tools.experimental_descriptorr  r  triton.tools.tensor_descriptorr  rc  getrU  r  r9  r  r   r  re  	parameterUninitializedBufferUninitializedParameterr'   r-   nontraceable_tensor_subclasses__torch_dispatch__r(   ri  rj   rI  r6   SEQUENCE_LENGTHrp   r   r  getattrr@   r   r   ro   r  rl  defaultdictOrderedDictr  r  r  r)  r*  guard_on_key_orderrO  	enumeraterb   r   r@  r  r   rH  r  Modulewrap_moduler   r  ru  	overridesTorchFunctionModer   rN  setanyr5   r.   SUPPORTABLErk  rR   r   	frozensetSourcelessBuilderr  r   enumEnumDispatchKey_C
_functorchTransformTyper   r   is_reorderable_logging_functionBUILTIN_MATCHloggingLoggerr  r   rm   r\   rh   r]   	functoolspartialrW  r  r  r  rH   r  r  
USER_ERRORrE   r7   rZ  DICT_KEYS_MATCHr   rl   r   r  genericr  asarrayr1   is_numpycallabler   is_numpy_dtyper   is_numpy_type_infoiinfor   r   can_rewriteautogradfunctionFunctionMetar   FunctionCtxr  RuntimeErrorrj  r   r   r  
MethodTyper  r   _ImperativeEnginer   r  r  r  _exec_final_callbacks_stubr   r   changesr   error_on_graph_breaklookup_callableis_callable_allowed!has_user_defined_allowed_in_graphcreate_with_sourcenumberwrap_unspecialized_primitiver   _higher_order_opsinvoke_subgraph
NAME_MATCHr   makecudaStreamContextr  r   Streamcreate_proxyr  r  r  rt   noder   device_SDPAParamsr   pyfunctorchFuncTorchInterpreterr   Eventr|  store_user_object_weakrefget_user_object_from_idr   
contextlibnullcontextr7  getattr_staticr   r   is_matching_objectoptim	OptimizerrT   r   DispatchKeySetDISPATCH_KEY_SET_MATCHr   r   is_group_member_typer   is_process_groupr   is_device_meshEQUALS_MATCHr   is_placement_typer   is_placementr=  r>  r   r   r
   rD   has_hint	shape_env$create_unspecified_symint_and_symbolinthintr   DYNAMICSymBoolcreate_unbacked_symintroot_tracercreate_graph_inputrv  subr  r   metaexprsympySymboltracked_fakesr$   r   r   r   r  r   ampautocast_modeautocastr   
fast_dtype_enabled_cache_enabledr   is_matching_clsr   ri   	tracebackclear_framesr   sysexc_infoversion_info	exceptionr   rg   wrapsr   
namedtupler   r  r   is_supported_builtin_methodrf   floatfromhexhexr   r   ry   rK  randomRandomr   r   is_supported_random_obj
ModuleTyper0   DummyModuler   r  TreeSpecr   r   __func__GetSetDescriptorTyper   MethodWrapperTyper   
issubclassBaseExceptionr   r}  BackwardHookrf  Buffer _unsafe_preserve_version_counterr   constructorr)   r   rK   r   r   r
  r  _libraryfake_class_registrytracing_with_realr   wrap_user_definedrealize_all_typequalified_namer  maybe_to_fake_obj	fake_mode__new__r~   should_reconstruct_allr   rs  __len____getitem__r   r   rP   r   r   fromkeysr   r   r   re   r   r`   r   r   torch.export.dynamic_shapesr  r  STATICwrap_symintvallogdebugr#   r   AUTO);r  rE  r  r  r  r  r  r  r  r  r  r  type_dispatchid_dispatchr  r*  r  factory_sourcevarLr  r  r  func_srcfunc_objr  args_sourceargr  keywords_sourcer  	dt_sourceactual_saved_tensorsr  r\  saved_tensors_sourcestream_source
stream_varstream_proxyevent_proxyr   
new_symintsym_node_proxysym_exprtracing_symint	attr_nameself_objr
  r  proxyfake_script_objr  r  r  
set_vt_clsr  r  r  r  s;   `                                                        @@r   rL  zVariableBuilder._wrapp  s;#   	
 	
	

 <:6  			 	
 ,- 12G ++-11$u+>$ u-- '')--bi8"tU++ uell+U ""66""99	 U6#H#HH U..%,,2Q2QQ07''.. < <= .d5k:
 	 $**E4(%dkk48F  ($u+dkkF MED+"9"9;;R;RST 7 78QEJJLQQI " 1155dkkB&"  !*+>u+E!F F
 e[445!+DKK9J!K,K$LODGG^$L--%  ;; +T%[ 77>>..<<UFKKuxx/##E**((/$$U++u@@A+E$++FCGGNN''==eSIJE3>>> BI>
 G*66  7 78 < <= UA
 &aL	 Aq $**=dkk1ME  !t{{;F77>>..DDUFSSE9%# 	.
 	.
 	+
 DIIa&--dggq9IEI 5 56$U4;;??DIIu00%((2E2E2S2ST
  5 56eDKK@@>>uE  : :;$U4;;??w~~. ; ;<(t{{CC ',DKK@@&1EEy001!$//"3V<H9tww9%**EHD$T__%6?K#EJJ/ 3KODGG];-JKCP
 H():JGO,,. 
1'2215$ N"7s ;$Y= 1 < <=	oGG.B
 !,,\-D-DE**<+G+GH&&|'C'CD
 ,HdHEEu 5 56!{{  ^
5"** =**2::e+<==!!%(I2E? ++!,,
 !t{{;;''. 5 56%eDKK@@++E2%*##L$;$;<&t{{G<	i22<3H3HIJ##L$9$9:(t{{CC.::5A ; ;<4;;{{ 
 E5>>22??@ ; ;<+{{  u~~66BBC#' ',':':$ Mkk,,\-D-DEFF.6'1$++'O$(33L4P4PQ &&:; DAq!(( GG]3G%K 6"77>>..DD/;;"0"?  ue../z40%..2I2I2V2V z2.'9$??  ; ;<"(NN:dkk*+U 	  uxx99: 5 56)%DD}}++FFaab  ; ;<!  56,U]];;GH,U-G-GHHe_!<!<U!C!O..u5CG@..u5HHdkk I   Jubii044U;;23//??? W l	  7 79P9PQ388t{{SSuzz778 5 56&t{{H=M@-@NJ(//DDu||, 5 5677>>66U!&$)$6$6#(#4#4		L l//7!{{	   4 46 7 78%,,TWWeT[[IIu//;;PPQ 5 56/66u{{+ 5 56MM99%@''..55##;;E	K k..6 {{  5*001&&undCK 7 78&dkk::&99%@ 7 78.uT[[IF77>>..DDUFSSu{{445 5 56)$++6DK$U4;;??u334 C CD)%00#88?)%DD!2259 5 56'dkkBB..u5 9 9:%eDKK@@#55e< 5 56)%DD++E2 9 9:${{ 
 uI++5	!>> ; ;<$U4;;??%  eU\\2 %dkk2 
 zz""$GGNN,,QQEJJOO,$.$6$6 R   eU]]3!%!9!9!P!P!RJ % C "$Q> 1 = =>	 "WW^^77JJ'dii8Z 	 K N 4<#-4N$$Z0 "++Hh5 *345 GGNN((//JPT0UV )=
:QR?  #>>BBY78 5 56'{{	  ..:BB..:BB&222466uyy66??@ 5 56'LL$$NN((	 {{  *99%@ ; ;</dkkJJ##E+H%P 7 78.t{{  +51 7 78.umDKKXXi,,,$DKK88cll"'ES]],B&uT[[AA#E*w/E/E(%0
  7 78.,T[[  ioo% 5 56)%DDk,,, 5 560t{{KK5**
#??F 5 56(t{{CCEemmUYY-G$G 5 56"dkk:  $E*?FE9 $(i@%%e,??dkk @   fmm# 5 56&dkk::E6==)n.T.T/
  7 78#E$++>FGGNN''55eVDM  0 0-2K2KLM ; ;<){{F GGNN''==eVLMu//0ZNNUXX__ekk.A.A.J.JK6

4;;
 CnnH 
8_ E 4E  ; ;<%{{ 
 u99: ,E22u667
 )//UT*z%/O 5 564U;;UT*!!..""  #))%0CC$++ D   GGG##L$?$?@5AA$''JJ 5%,,/- ,,0O0OO
 ;5A-eDKKHH)$++6 ##L$9$9:+{{  '66tE{C 
 ~~11CCEJ22EEFF+S$))<K;;	 F  /7KKtUE/


+ 177;;  5"34--e44  ++V)H)UVKKM002  ++P)B4;;)OP))+ $nn@@RR((%O GGNN..AA'dii8U{{	 B E +3UE4+EJJOOJ' -33{{  ut[%<%<=>U##t||3  7 78 < <= GGNN--11$++>&  !*+>u+E!F F
 ( "%)@)@A  ++35{{	G .2G*,UGDKKXF77>>..DDUFSSu% 7 78 < <= u}}U34
 	 $**%%eQ/():A>F  %t{{:O:QH .F 77>>..DDUFSSt$ 7 78 < <= t||E23
 	 $**$$UA.,T__->BF  #t{{:O:QG -UGDKKXF77>>..DDUFSSY/0 7 78 < <=T]]5)*A t||A/
 	 $**$$Q*:4??;LaPF  )35#(>DUJt{{:O:QF ,E&UF77>>..DDUFSSU^4 7 78+E$++FF77>>..DDUFSS ' 7 78,33DGGU4;;WF77>>..DDUFSSy)A5AA HMM!*11$''1=MMOO%001M1MNOO%001J1JK *%DD 9.5/gaHXHcHcdeHf/g.hi P]	  2259@~~%)<)<@S@S)S''		22$$(<(<<		1KK$$&&&
 ''II'//1#:U#K (   $$(9(99		1KK$$&&&
 ''		J<N<N'OO"%88H#IJJ))%00a\, JD   z*"8 N 0hs_   (<B	5B.'B"B' b#AB8gAB=lAC@t'C@wC@w'C@'
B54B5c                    | j                  t        j                         t        || j                        }t        j                  t        |            s|S | j                  j                  j                  j                  ||      S r  )rI  r6   r  r   r   r>   "cls_supports_mutation_side_effectsrU  r)  r*  rH  rN  )r  rE  r  s      r   r  z!VariableBuilder.wrap_user_defined/  s^    L334*5E==d5kJMww~~**@@OOr   c                 n   |D ]  }||u st        ddddg        t        j                  rPt        |      t        j
                  u r5| j                  t        j                         t        j                  |      S | j                  t        j                         t        |t              rt        d |D              rs| j                  j!                         j#                         rK| j                  t        j                         t%        |D cg c]  }t        j                  |       c}      S t'        |      D cg c]4  \  }}t)        j                  |t+        | j-                         |            6 }}}| j.                  j0                  j2                  j5                  d	      }t7        | j                  t8              r| j                  j:                  t=        |      v r| j                  }t7        |t>              sJ | j.                  j0                  j@                  jC                  tE        jF                  d
d| jH                        t        |      ||      }d|jJ                  jL                  d<   tO        tP        | j.                  ||d |      }g }	t'        |jR                        D ]  \  }}
t+        ||d      }|
| j.                  j0                  jT                  |<   tW        ||         |
jX                  jJ                  jL                  d<   t[        j\                  t        j^                  ta        ||               }|	jc                  |je                  |              tg        |	ddi ti        ||dd d      }||jJ                  jL                  d<   |D ]  }|jk                            tm        jn                  |      || j                        }t        |t>        tp        jr                  f      r0| j.                  j0                  jt                  jw                  ||      S |S c c}w c c}}w )Nz-list elements are pointing to the list itselfr  z=Dynamo does not support lists whose items reference to itselfz!Avoid using self referential listr  rE  c              3   F   K   | ]  }t        j                  |        y wr  r  )r:  items     r   r<  z0VariableBuilder.wrap_listlike.<locals>.<genexpr>N  s     H$$//5Hr  r  r  r   r5  T	steal_arg)
target_clsr)  r  example_valuesubclass_typer   Fr  indexindex_is_slicetensor_dictrY  r{   )r  r  r  r  )<r5   r-   specialize_intrU  r   rn  rI  r6   CONSTANT_MATCHr   r  r&  ro   rj  r  r   guard_sourceis_unspecialized_nn_moduler   r+  r   rH   rW  r)  r*  local_scoper   r  rQ   
local_namerc   rk  r  r  rv  r  r  rc  r  wrap_fx_proxy_clsr   r  input_source_to_varr[   r  r?  r@  TENSOR_MATCHr+   r  rZ  r7   r   realizer   cls_for_instancerl  rm  rH  r  )r  rE  r  r  r*  maybe_gmr   tensor_list_proxylist_variabler\  tensor_variablesource_ir]  r  rF  r  s                   r   ro  zVariableBuilder.wrap_listlike7  s    	Du} K _>?		   T%[EJJ%> ; ;<#**77 	L889 5% H%HH((*EEG ; ;< E!RD"2"9"9$"?!RSS %U+

 4	  &&$T__%6:
 
 77>>--11&9KK
kk$$(;H(EE [[FeT*** $ : : M M'dii8U	 !N ! 8<""''4-)77'#"M F&/0C0C&D 
:"?(fAeT?N228<AU!HB%%**//> ")) --]585L h11%89
: 6**#( H 7?""''
3(  

 :!2259&U%$ 1 12377>>..<<UFKKw "S
s   P,?9P1c                    | j                  t        j                         t        t	        |            D cg c]@  } t        | j                  t        | j                         |            t        ||            B }}t        || j                        }| j                  j                  j                  j                  ||      S c c}w r  )rI  r6   TUPLE_ITERATOR_LENrs  rx   r@  r)  rX   rW  rw   r   r   r*  rH  r  )r  rE  r  r*  r  s        r   rp  z#VariableBuilder.wrap_tuple_iterator  s    L;;<
 -e45	
  WODGG%?@QST%UV&ua0
 
 'vdkkBww~~**88GG
s   ACc                 B   | j                  t        j                         t        j                  |      D cg c]  }t        j                  |       }}t        || j                        }| j                  j                  j                  j                  ||      S c c}w r  )rI  r6   RANGE_ITERATOR_MATCHcopydeepcopyr   r  r   r   r)  r*  rH  r  )r  rE  r  r  r  s        r   rq  z#VariableBuilder.wrap_range_iterator  sw    L==> 6:]]55IJ!((+JJ%eDKK@ww~~**88GG Ks   Bc                 \   dD cg c]@  } t        | j                  t        | j                         |            t	        ||            B }}| j                  t        j                         t        |t              rt        || j                        S t        || j                        S c c}w )N)startstopstepr  )r@  r)  r@   rW  r'  rI  r6   r  r  rr  r   r   r   )r  rE  r  r  s       r   rt  z VariableBuilder.wrap_slice_range  s    
 /	
  GODGGZ0A1%EFq!
 
 	L334eU# t{{;; t{{;;
s   AB)r]  c                    ddl m} t        j                  d| j                  j                         t        |              |||       || j                  j                  j                  v rT| j                  j                  j                  |   }|j                  |j                  j                  j                  d   d<   y y )Nr,   )mark_static_addressz Marking static input %s, id: %s)r]  r  _dynamo_static_input_type)r  r  static_inputs_logr  r   r  r9  r)  r*  rH  r  r  rc  r  )r  rE  r]  r  r  s        r   mark_static_inputz!VariableBuilder.mark_static_input  s    4.0@0@0BBuI	
 	E/ DGGNN///''..--e4C// IINN./JK 0r   c                 0   ddl m} t        |j                        dk(  r7t	        dt        |      dt        |       dg t        j                  d       t        ||      rt        j                  |j                  d	d
      r<t        j                  |j                  dd       }t        | j                  d| d      S | j                  t        j                          t#        | j                  d      | _        | j%                  |j&                        S t)        |t*        j,                  j.                  t*        j,                  j0                  t*        j,                  j2                  f      r8t4        j6                  s(t	        dt9        |      dg t        j:                         t=        |dd
      rt=        |dd
      st	        dddg        | j                  t        j                          t?        || jA                               }tC        jD                  tG        |            s|S | jH                  jJ                  jL                  jO                  ||      S tQ        jR                  || jH                  jT                        rEt)        |t*        jV                  jX                  jZ                  j\                        r*|j_                         }ta        | j                        | _        t*        jb                  j4                  jd                  rtg               }ti        |jj                        rI|jj                  jl                  tn        u r-	 |jk                         D ]  \  }}| jq                  ||        	 ti        |jz                        rI|jz                  jl                  t|        u r-	 |j{                         D ]  \  }}	| jq                  |	|        	 |r-|| jH                  jJ                  j~                  | j                  <   |j                  j                  d      r|j                  j                  d      rt=        |j                  dd
      r| j                  }
t4        jd                  rE| jH                  jJ                  jT                  rt4        j                  rt        | j                        }
t        ||
      }t        |
j                  t        j                                n| j                  }
t4        jd                  rE| jH                  jJ                  jT                  rt4        j                  rt        | j                        }
t        ||
      }t        |
j                  t        j                                tC        jD                  tG        |            s|S | jH                  jJ                  jL                  jO                  ||      S t        |j                  t*        j,                  j                  j                  j                        r:| j                  t        j                          t        || jA                               S | jH                  jJ                  j                  || j                  | jA                               S # tr        $ r?}tu        tG        |      | jH                  tw        |jx                               Y d }~Vd }~ww xY w# tr        $ r?}tu        tG        |      | jH                  tw        |jx                               Y d }~Cd }~ww xY w)Nr,   )OptimizedModuler   zUninitialized nn.Modulez6Attempted to trace an uninitialized nn.Module of type .z?Ensure your nn.Module instance has called `super().__init__()`.r  _torchdynamo_disableF_torchdynamo_disable_msgzHOptimized `nn.Module` is wrapped with `torch.compiler.disable` (reason: ))r   msg	_orig_modz#Attempted to wrap RNN, GRU, or LSTMz*Dynamo does not support RNN, GRU, or LSTM._is_fsdp_managed_module_fsdp_use_orig_paramszFSDP with use_orig_params=Falser  z3Dynamo only supports FSDP with use_orig_params=Truer  r  )r  )ztorch.nn.modulesz	torch.ao.ztorch.nn.modules.container_dynamo_marked_static)P
eval_framer	  len__dict__r5   r}   r.   rA  ro   r7  rm  forwardr   r   rI  r6   r  r@   r-  r  r  r   re  RNNGRULSTMr-   	allow_rnnstrr2  r'  r   rW  r>   r  rU  r)  r*  rH  rN  r/   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baser?   r  inline_inbuilt_nn_modulesrk   rF  named_parametersr  !og_module_named_parameters_fn_ptrr  	TypeErrorr4   rk  r  named_buffersog_module_named_buffers_fn_ptr
nn_modulesr  r   r6  r$  install_free_tensorsrY   r   r7   rZ  rZ   r   r  paralleldistributedDistributedDataParallelregister_attr_or_module)r  rE  r	  r  r  freezingr5  peb
new_sources              r   r-  zVariableBuilder.wrap_module  sV   0u~~!#1TU\]bUcTddef&11U	 %)%%emm5KUS
 ,,MM#=t /;;bcfbgghi 
  7 78$T[[+>DK##EOO44 uuxx||UXX\\588==IJ$$=E
H6)556	 53U; 5"95A = U	"  7 780t?PQFAA$u+N77>>..DDUFSS00G
 %!6!6!C!C!N!NO(-dkk:}}##==02 U334..7789V$)$:$:$< FDAq 221H2EF U001++448VVV$)$7$7$9 FDAq 221H2EF
  <ADGGNN--dii8   ++,MN((334PQ*A5I![[
33--1L1L "DDKK!PJ=eJWj33L4K4KLM![[
33--1L1L "=T[[!IJ6uZPj33L4K4KLMAA$u+N77>>..DDUFSSOOUXX..::RR
  7 780t?PQQ77>>99		( :  g % V0a$''QVVUUV % V0a$''QVVUUVs0   +Z !+[ 	[
4[[
	\4\\c                    t        |      t        u r0t        | j                  j	                               rOt
        j                  d| j                  j	                                | j                  |t        j                        S t        | j                  j	                               rOt
        j                  d| j                  j	                                | j                  |t        j                        S t        j                  s*t        || j                        rd }| j                  j                         j!                         s(| j                  j                         j#                         rd}t%        | j&                  | j                  j	                         t)        j*                  |      | j                  j                         j#                                | j-                  t/        j0                  t2        j4                  |             t7        j8                  || j                        S | j                  |      S t        j:                  s"t        |      t<        u r| j?                  |      S | j-                  t2        j@                         t7        j8                  || j                        }tC        |tD        tF        f      r0| j&                  jH                  jJ                  jM                  ||      S |S )N&%s marked dynamic via source whitelistr  '%s marked unbacked via source whitelista  torch.compile considers integer attributes of the nn.Module to be static. If you are observing recompilation, you might want to make this integer dynamic using torch._dynamo.config.allow_unspec_int_on_nn_module = True, or convert this integer into a tensor.r  )recompile_hintr  )'rU  r|  is_dynamic_sourcer   r  r  r  r  r   r~  is_unbacked_sourceSIZE_LIKE_UNBACKEDr-   r  r   r  "is_unspecialized_builtin_nn_moduler  r=   r)  r;   make_scalarrI  r?  r@  r6   rv  r   r  specialize_floatr  wrap_symfloatr  r  rk  r0  r*  rH  r  )r  rE  r8  r  s       r   ru  zVariableBuilder.wrap_literalz  s    ;# !1!1!34		BDKKDTDTDVW''
8J8J'KK!$++"2"2"45		CT[[EUEUEWX''
8U8U'VV(( .eT[[A%)N002UUW;;335PPR5 ' .((*+77>37;;3K3K3M3h3h3j	 ''!))(55n
 ,22t{{SS##E**((T%[E-A%%e,, ; ;<%,,5MF%$-ww~~22@@OOMr   c                 v    t        |      r.t        |      | j                  j                  u rt	        dd      y y )Nz*Cannot wrap a Tensor that has already beenz"wrapped by this instance of Dynamo)r   r   r)  r  r3   r  s     r    assert_not_wrapped_by_this_graphz0VariableBuilder.assert_not_wrapped_by_this_graph  s;    5>1%8DGG<M<MM*<4  N>r   c           	      P   | j                         }|| j                  j                  j                  vsJ t	        |      d u}t
        j                  rc|sat        |t        j                  j                        s |r;|j                         j                         r| j                  |t                      d}t
        j                  xr% t!        |      xs t#        |      xs t%        |      }|xrC t
        j                   xs0 t               xs$ t        j&                  j
                  j(                  }|s>|j                         j+                         s|ra|j                         j-                         sC| j/                  |       | j                  j                  j1                  || j2                  |      S t	        |      dk(  rb| j5                  t6        j8                         | j/                  |       | j                  j                  j1                  || j2                  |      S t;        |      rX| j/                  |       | j                  j                  j1                  |t=        j>                  dd| j2                        |      S || j                  j                  j@                  v }|r#| j                  j                  j@                  |   S i }tC        |      }|| j5                  t6        jD                         t	        |      dk(  r| j5                  t6        j8                         | j/                  |       t        |t        jF                        rS|jH                  rGt        |t        jJ                  jL                  jN                  jP                        stS        ddd	g 
       t        |t        jF                        rPtU        |      rE| j                  jV                  rt
        jX                  stS        dddg tZ        j\                  
       t_        |      rota        |      d|jb                  ta        |      jb                  k7  rBtS        dd|jb                   dta        |      jb                   dg tZ        j\                  
       te        || j                  d|      }	| j                  j                  jf                  ji                  t=        j>                  dd| j2                        tk        |      |	|      }
tm        | j                  |
|       to        d| j                  |
|	||d|}|jq                         r-te        |jr                  | j                  tu        |d      d       t6        jv                  }t        |tx              rt{        |      rt6        j|                  }| j5                  t        j                  |t        |t              r|n
t        |                   t        |      r| j5                  t6        j                         | j5                  t6        jD                         t        t        |      j                  t6        j                               |j                         \  }}|D ]S  }t        ||      }tu        | j                  |      }t        j                   t        | j                  |      |             U || j                  j                  j@                  |<   d|
j                  j                  vsJ t        |      |
j                  j                  d<   |j                  j                  j                  d   }t        |      | j                  j                  urt        d      t        ||d|      }||
j                  j                  d<   |S )Nr  Tr  guardedr   r5  z&Attempted to wrap strided NestedTensorr  3torch.compile does not support strided NestedTensorr  zAttempted to wrap sparse Tensorz-torch.compile does not support sparse Tensorsz.dtype mismatch between tensor and its gradientztensor dtype: z; grad dtype: zmInconsistent dtype between tensor and its gradient. This can happen in FSDP and crashes meta tensor creation.r)  r  r   )r)  r  r  r  r   _base)r)  r   r  r  r  r  z(Wrapped Tensor must be this graph's fakeFr  r   )WrW  r)  r*  rH  rd   r-   r#  r  r   re  rf  r  r  r  rk   r*  rL   rM   rO   r  prepare_freezingis_specialized_nn_moduleis_fsdp_modulerA  r.  r  rI  r6   r  rJ   rv  r  r  infer_subclass_typer  r  	is_nestednestedr   nested_tensorNestedTensorr5   r   r  capture_sparse_computer.   r2  r   r   r  wrap_to_fake_tensor_and_recordr  r  rU  cache_real_value_when_exportwrap_fx_proxy_is_viewrF  r@   r  rI   rN   NOT_NONE_MATCHr?  r@  rS   r+   r(   TENSOR_SUBCLASS_METADATA_MATCHr7   rW   rZ  rv  __tensor_flatten__r'  r   r   r  r@  rc  r  r[   r  r   r  r3   r   )r  rE  r   is_static_inputshould_install_free_tensormake_graph_attributeis_duplicate_tensoroptionsr  r  tensor_proxyr  
guard_typeattrsr5  attrinner_valueinner_sourcefake_tensor_valuer  s                       r   ri  zVariableBuilder.wrap_tensor  sb   " DGGNN777771%8D ,,#5%(("4"45 v224OOQ ""50E0G"H"O &,%@%@ &
!&) >&v.>5f= 	#  /  
000 5$&5}}##44 	 &  ";;=AU'')88:11%877>>99tyy :   #5)Y6  5 5611%877>>99tyy :   f%11%877>>99'dii8 :   %(J(JJ77>>55f==+E2$ 7 78"5)Y6 5 56 	--e4 uell+uell&<&<&J&J&W&WX@Q	 uell+e$WW^^6+H+H
 9K6)556	 % % ,y/555H(^IeDTDZDZC[\L6)556" 7dggf
 ww~~11DDFF#S$))4K	 E 
 	%TWWlEB' 
ww''
 
 >> +77!&'2	 "..
fj).Fv.N%44J "&*;< &u-		
 )/ K KL 7 78&v.99,:S:ST //1HE1 %eT2)$++t<#//:ODGG\:;G 6E**62L$5$5$:$::::0DU0K}- ,1166;;OL019J9JJ*+UVVFE52CD-5z*r   c           	          t         J t        |t         j                        sJ t        | j	                               }ddlm} |j                  j                   }|r	 d|j                  _        t        j                         5  	 |j                  |      }|rddlm}  ||      }d d d        t)        j*                   t-        | j.                  |                   t1        || j.                  d|	      }| j.                  j2                  j4                  j7                  t9        j:                  d
d| j<                        t?        |      ||      }	tA        | j.                  |	|       d|i}
tC        dtD        | j.                  |	|d|
}|| j.                  j2                  jF                  |<   |jH                  jJ                  jL                  d   }tO        ||d|d|      }||	jJ                  jL                  d<   | jP                  |_(        |S # t        $ r* t        |j                  t         j                        sJ Y w xY w# t"        $ r$}t%        dt'        |      dg |       Y d }~d }~ww xY w# 1 sw Y   xY w)Nr   )_utilT)clone_preserve_stridesz)failed to convert numpy.ndarray to TensorzHException encountered when attempting to convert numpy.ndarray to Tensor)r  r  r  r  from_excFrE  r   r5  r  r   r  r)  r  r  r  r  r  r  r  r  r   ))r  r  r  rS   rW  torch._numpyrd  flags	writeable
ValueErrorr  nditerr   temp_restore_stack_try_convert_to_tensortorch._prims_commonre  r[  r5   r  r   r  r@  r)  rP  r*  r  r  rv  r  r  rU  rQ  r  r   r  r  rc  r  r   r   )r  rE  r   rd  readonlytensor_valuere  r1  r  r  r[  numpy_ndarray_variabler  s                r   r  z"VariableBuilder.wrap_numpy_ndarray  sH   ~~%,,,"4??#45&{{,,,9(,% 1CCE 	$;;EBJ#9,#GL	* 	''(H(H(VW6ww	
 **==FF#S$))4	 > 
 	%TWWe\BV$!2 "
+ww'	"

 "
 6L**62.4499>>O #%+
 '/


# )-%%%I  9 "%**bii8889 '  GJ j 	 	sB   H I3!I/I ?I 	I0I+%I3+I00I33I=r  r  c                    t        |      t        u sJ | j                  | j                  j                  j
                  v r-| j                  j                  j
                  | j                     S | j                  j                  j                  }t        j                         j                  ra|j                         }t        |       | j                  j                  j                  j                  t        || j                  d              nt!        | j#                               s||dt$        j&                  j(                  j*                  r@| j-                  t.        j0                         t3        j4                  || j                        S | j                  j                         }t7        | j                  |t9        j:                  |      | j                  j=                         j?                               }tA        | j                  j                               }| j                  }	tC        |	tD              r|	jG                         }	||}
nt(        jH                  r)|jJ                  tL        u rtO        dd       tQ               }
ntC        |	tR              r6|	jT                  *tW        |	jT                        j                  |ddi      d   st(        jX                  stZ        j\                  }
nS|jJ                  tL        u rtO        dd       | j-                  t.        j0                         t3        j4                  |      S |j_                  || j                  |
      }| j                  j                  j                  j                  t        || j                  |             n[t!        | j#                               sJ | j-                  t.        j0                         t3        j4                  || j                        S tC        | j#                         t`              rJ tc        | j#                         je                  t.        jf                               d	| j#                         i}| j                  j                  jh                  jk                  tm        jn                  d
d| j                        t        |      || j#                               }|jp                  jr                  }tC        |tt        jv                        s
J | d       || j                  j                  jh                  jx                  |<   t{        ||fi |}|| j                  j                  j
                  | j                  <   t!        | j#                               s6t}        | j#                         |dd d|      |jp                  j~                  d<   |S )Nr  r7  dynamo.automatic_dynamic_shapesTr   Fr  )r   r  r   r   r5  r  r  rh  r  )@rU  r|  r  r)  r*  unspec_variable_maprz  r   r   #force_unspec_int_unbacked_size_liker  r   r  r  r$   r   rJ   rW  r   r  r-   r  rI  r6   r  r   r  r=   r;   r=  r  r  r   r  rB   r"  automatic_dynamic_shapesscalarr9   r   $get_automatic_dynamic_shapes_mark_asrQ   r  r  assume_static_by_defaultr   r~  r{  rU   r7   rZ  r  r  r  rv  r  rc  r  r  r  bound_symbolsr   r   r  )r  rE  r  r  rz  wrapped_valuer  frame_state_entrynormalized_source_namebase_sourcer  r[  r  r  
unspec_vars                  r   r  zVariableBuilder.wrap_symint  sK    E{c!!!99:::77>>55dii@@GGNN,,	CC%<<>M%m4GGNN((//M4;;= $DOO$56EMM$8$8$G$G
 ##L$?$?@'..U4;;OO;;##%D 9#//6+/;;+C+C+E+`+`+b	! &;4;;;K;K;M%N"++K+}5)224#&//%,,< A4HBD;4((4--.223IAu:V 44(00 %++|;#$EuM##L$?$?@'..U;;%JJ{{' K M GGNN((//M4;;@ &doo&7888 ; ;<#**t{{KKdoo/1BCCCdoo'22<3J3JKLT__./**==FF#S$))4??$	 > 
 !%%**(ELL1WhZ?V3WW1=B""00:$UMEWE
8B**4995!$//"34*2!#( #0+EJJOOJ' r   c           
      
   | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S t	        | j                  | j
                  j                         t        j                  |      | j
                  j                         j                               }t        j                  j                  j                  st        | j                               st!        j"                  |      sqt!        j$                  |      s\t        j&                  j                  j(                  j*                  s.t-        dd      s"t        j.                  rR|j0                  t2        ur@| j5                  t6        j8                         t;        j<                  || j
                        S t        j>                  |t        j@                        }t        jB                  jD                  jG                  |      r@| j5                  t6        j8                         t;        j<                  || j
                        S tI        | j                         tJ              rJ tM        | j                         jO                  t6        jP                               tS        | j                               }||d}tU        || j                  d|      }| j                  j                  jV                  jY                  t[        j\                  dd	| j                         t_        |      ||
      }ta        | j                  ||       tc        td        f| j                  ||d|}tI        |td              sJ || j                  j                  j                  | j                   <   | j                  jf                  r=tI        | j                         th              stk        d| d| j                                d }	|jl                  jn                  jp                  d   }ts        |      sJ |}	|	jt                  | j                  jt                  u sJ d|	jt                   d       tw        | j                         |d|	d|      |jn                  jp                  d<   ty        | j                   | j                  j                  jz                  ddgt}        |gi              }
| j                  j                  j~                  j                  t        |
j                  | j
                  d              t               j                  ddd       |
S )Nr7  z.pytorch/compiler:unspecialize_float_killswitchFr  )r  )r   	raw_valuerE  r   r5  r  r)  r  r  =Dynamo attempts to add additional input during export: value=	, source=r  fake mode (^) from fake tensor metadata doesn't match mode({self.tx.fake_mode}) from InstructionTranslatorTrh  r  call_methodr  tensorify_float_attempt)	overwrite)Er  r)  r*  rv  r=   r   r;   r=  r  r  r   r  r-   r>  rJ   rW  mathisnanisinf	_inductortriton
cudagraphsr   r{  ry  r9   rI  r6   r  r   r  tensorfloat64r8  r9  is_gradtrackingtensorr  rU   r7   rZ  r  rG   rP  r  r  rv  r  rU  rQ  r  r   r  rQ   AssertionErrorr  rc  r  r   r  r   rR  rb  rr   r  r  r$   sym_numr   r0  )r  rE  r~  r}  r   r[  r  r  r  rb  r	  s              r   r?  zVariableBuilder.wrap_symfloat\	  s'    99:::77>>55dii@@5GGKK++E2'+{{'?'?'A'\'\'^	
 MM  11!$//"34zz% zz%  %%,,77OQVW//%,,L@  ; ;<#**t{{KK U%--@
 8844]C ; ;<#**t{{KK doo/1BCCCdoo'22<3J3JKL #4??#45#%8 7dggv
 **==FF#S$))4	 > 
 	%TWWe]C&'
ww'	

 

 *&ABBB8B**499577>>*T__->"L OP]^ghlhwhwhygz{  !"((--22?C}%%%) **dgg.?.?? 	
+556 7? ?	
?  '/OO#),'



# GG'DGGNN'' #J<4
 	$$++K		4;;PT,UV!!";TT!Rr   c                    | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S t	        j
                  |      }t        | j                         t              s6t        | j                         j                  t        j                               d| j                         i}|j                  d|i       t        || j                  d| j                               }| j                  j                  j                  j!                  t#        j$                  dd| j                         t'        |      || j                               }t)        | j                  ||       t+        t,        f| j                  ||d|}|| j                  j                  j                  | j                   <   t/        | j                               s| j                  j0                  r=t        | j                         t2              st5        d	| d
| j                                d }t        |t6              r|j8                  }n#|j:                  j<                  j>                  d   }tA        |      sJ |}|jB                  | j                  jB                  u sJ d|jB                   d       tE        | j                         |d|d|      |j<                  j>                  d<   |S )Nr   r  FrE  r   r5  r  r  r  r  r  r  r  Trh  r  )#r  r)  r*  rv  r   r  r  rW  rU   r7   rZ  r6   r  updaterP  r  r  rv  r  rU  rQ  r  r   rJ   r  rQ   r  r   rE  r  rc  r  r   r  r   )r  rE  r}  r[  r  r  r  rb  s           r   rZ  z,VariableBuilder.wrap_unspecialized_primitive	  s   99:::77>>55dii@@U+$//+->?$//+66|7N7NOPT__./U+,6dggt?P
 **==FF#S$))4??$	 > 
 	%TWWe]C&'
ww'	

 

 9C**4995!$//"34ww~~j1BK&P$STaSbbklpl{l{l}k~  !%*&67 * 0 0 * 0 0 5 5 : :? K=))) -$..$''2C2CC /99: ;C CC
 +3!#'-#0+EJJOOJ' r   NN)?r   r   r   __doc__rV   r#  rS  rM  rW  rI  classmethodrc  r?  cacher`  rv  rw  rx  ry  rz  r{  r  r  r  r  r|  r   r   r   r  rL  r  r	   rj  rk  rq   r   ro  rv   rp  rs   rq  rr  rs  rt  r   r  r  r  re  r,  r-  ru  rA  ri  r  r   r   r#   r  r?  rZ  r2  r3  s   @r   r@  r@    s   =" " 
	"#J
 ; ; __$  $L+

 +
I'"7"7 I

HB __	c8.4oEFF	G  4}1~Ps Pv5lJ)N#O vp	H 	HH H<eE5L&9 <u|| D  Y Yv5nell Y YvP&j *.37	u :&u /0	unJX9r   r@  c           	      z   t        | t              r| j                  }n"t        dd|  dt	        |        d|  dg        g }t        j                        D ]X  }d }| j                  r,t        | j                  d      }t        ||j                        }|j                  t        ||             Z t        |      S )	Nzdataclass fields failurezobj: z; variable type: z$Dataclass fields handling fails for z*. Expected it to be a user-defined object.r  __dataclass_fields__r  )r  r   rE  r5   rU  r  r  r   r@   rE   r  r  r   )objrE  r  fieldr   base_srcs         r   r  r  $
  s    #01		.C5 1$s)=>seCmn		
 E##E* F::!#**.DEH&x<F.uVDEF r   c                     t        | t        j                        rIt        | t              s9t        j                  |       rt        |       |u s| j                  st        |       } | S r  )r  r   r  r   _is_functional_tensorr   rK  r^   )rE  r  s     r   _clone_inputr  8
  sQ    %& uj) ++E2'.);  &ELr   r1  c                     | |||d|}|t        ddt        i|S t        ddt        i|}|j                  |        |S )N)r)  r  r  r  r  r   )r  r   r   install_global)r)  r  r  r  r[  kwargsr  s          r   rR  rR  J
  sb     &&	
 F  ENEfEE"U.JUfUb!r   c                     | j                   r_t        j                  j                         5  t	        || j
                        |j                  j                  |j                  <   d d d        y y # 1 sw Y   y xY wr  )	r  r   r8  DisableTorchFunctionSubclassr  r  tracerreal_value_cacherc  r  s      r   rQ  rQ  \
  s`    	yy XX224 	8Dr||9ELL))%**5	 		 	 	s   8A--A6c                     |t        | ||||fi |S t        |t        j                        rt	        | ||||fi |S t        ||||||       S r  )_wrap_fx_proxyr  r   r  _wrap_fx_preexisting_tensorhandle_traced_outputr  r)  r  r  r  r[  s         r   r  r  
  sv     E=-
CJ
 	
 
M5<<	0*E=-
CJ
 	
 $2ug}j
 	
r   c                 z   ddl m} t        |t        j                        sJ dt        |              t        ||      sJ d|v r-|d   (|j                  j                  j                  |d          |j                  j                  dk(  r#d|j                  j                  v sBJ d| d       d|j                  j                  vsJ |j                  j                  d           t        j                  j                  j                         5  t        |      |j                   u rnt#        |||       |j$                  r^t        j&                  j)                         5  t+        ||j                         |j,                  j.                  |j                  <   d d d        d	| t0        t2        fv i}d
|v r|d
   J |d
   |d
<   t5        |fd|i|}|j6                  j
                  dk7  r%t        |      |j                   urt9        d|       d d d        t;        | |||||      S # 1 sw Y   xY w# 1 sw Y   %xY w)Nr,   InstructionTranslatorBasez1_wrap_fx_preexisting_tensor expected tensor, got r\  placeholderr  zplaceholder z* doesn't have 'example_value' in node.metar  r   r)  r  zN`tensor` needs to be a `FakeTensor`wrapped by this instance of Dynamo. Found: )symbolic_convertr  r  r   r  rU  r*  r\  r  rc  opr  r  r|  +_disable_saved_tensors_hooks_during_tracingr   r  rQ  r  r8  r  r  r  r  r   r   rP  rd  r3   construct_tensor_variable)r  r)  r  r  r  r[  r  r  s           r   r  r  
  s9    =fell+ 
;DL>J+ b34447wx0<
		 12 zz}}%%**//1 	
5'!KL	
1 ejjoo5 	
zz/0	
5
 
			H	H	J  v&",,6(UF;yy XX::< @LAELL11%**= Z"$@ABF w&78+<+HHH&x0F83FLrLVLF==''r||;*>>DXG ; D %Bv}g 1    s&   AH18H%A7H1%H.	*H11H:c                    ddl m} t        ||      sJ d|v r-|d   (|j                  j                  j                  |d          d|j                  j                  vsJ |j                  j                  d           t        j                  j                  j                         5  t        |j                  |d      }d d d        t        ||||||       S # 1 sw Y   xY w)Nr,   r  r\  r  T)allow_non_graph_fake)r  r  r  r*  r\  r  rc  r  r   r  r|  r  ra   r  )r  r)  r  r  r  r[  r  s          r   r  r  
  s     =b34447wx0<
		 12%**//1Xejjooo6V5WX1 
			H	H	J R 'uzz2DQ	R  r5'=* R Rs   %CCc                 T   dd l }dd l}dd l}t        | |j                        r>t        |||| ||      }|j                  j                  j                  ||t               |S t        |j                  j                  d      ra|j                  j                  j                  dk(  r>t        |j                  j                  j                  |j                  j                         s-|j                  j                  |j"                  j$                  k(  rt'        |j                  j                        S |j                  j                  |j                  j(                  k(  s-|j                  j                  |j*                  j,                  k(  rt/        |       S t1        | |j2                        r@t5        d | D              r.| D cg c]  }t7        j8                  |       }	}t;        |	fi |S t        | t<        t>        f      rtA        |j                  |        g }
tC        |       D ]  \  }}|%|
jE                  t7        j8                  d!i |       -|jF                  jI                  dtJ        jL                  ||fi       }d|v r9t        | t>              sJ |d   }|jO                         }tQ        ||d	
      |d<   n|}|
jE                  tS        d"||||d|        t        | |j2                        rt;        |
|fi |S t1        | t<              rtU        |
fi |S t1        | t>        tV        f      rtY        |
fi |S | jZ                  j\                  dk(  s6t        | d      s*J d| jZ                  j\                   dt_        |               ta        |
| jZ                  fi |S | "|j                  j                  |jb                  u rt7        j8                  d!i |S t        | |jd                  |jf                  |jh                  f      rI|j                  jj                  jm                  | |       tA        |j                  |        to        || fi |S tq        jr                  |j                  j                        r*tu        |j                  j                  |jv                        s=|j                  j                  ty               D cg c]  \  }}|jz                   c}}v r.tA        |j                  |        t}        || | j~                  fi |S tq        jr                  |j                  j                        r*tu        |j                  j                  |j                        s=|j                  j                  ty               D cg c]  \  }}|j                   c}}v r#tA        |j                  |        t        || fi |S |j                  j                  dk(  r;|j                  j                  dk(  r"tA        |j                  |        t7        | fi |S | kt        | |j                        rU|j                  j                  dk(  r<|j                  j                  dk(  r#tA        |j                  |        t        || fi |S t        | t              r_|j                  j                  |j                  t        tJ        jL                  |j                  j                  |j                  tJ        j                  |j                  j                  j                  |j                  j                  j                  |j                  j                  j                  t        |j                  dt              t        |j                  dt              |j                  fv s1|j                  j                  dk(  rD|j                  j                  dv r,tA        |j                  |        t7        j8                  | fi |S t        | |j                  j*                  j                        r%ddlUmV} tA        |j                  |         ||fi |S t        | t              r|j                  j                  |j                  j                  |j                  j                  j                  |j                  j*                  j                  |j                  j*                  j                  |j                  j*                  j                  dgt?        t        j                               z   v r,tA        |j                  |        t7        j8                  | fi |S t        | t        t        t        f      r|j                  j                  t        u sN|j                  j                  t        u s2|j                  j                  dk(  rE|j                  j                  dk(  r,tA        |j                  |        t7        j8                  | fi |S t        | t              s|j                  j                  dv r,tA        |j                  |        t7        j8                  | fi |S t        ddt        |        d|j                  j                   d|j                  j                   dg         y c c}w c c}}w c c}}w )#Nr   )mutation_type_clsr   	set_statec              3   <   K   | ]  }t        |t                y wr  )r  r|  r  s     r   r<  z'handle_traced_output.<locals>.<genexpr>$  s      3 
1c3s   r-  )kindtargetr  r  r   Fr  rg  ztorch.return_types_fieldsz	expected z. == torch.return_types or named tuple but got queryr  record_eventget_rankget_world_size)
bit_lengthr{   r   
is_integerr  )r  	__round__ztorch.* op returned non-Tensorzexample_value type: z; op: z
; target: zUtorch.* ops that return a non-Tensor cannot be traced into the Dynamo FX graph outputr  r  r   )dtorch._functorch.vmaptorch._subclasses.fake_tensortorch._utilsr  r  r  r*  rH  
_track_objr|   r   rc  r  r   r  r8  	Generatorr  set_rng_stater   _DisableFuncTorchr_  _is_in_bad_forkr   ro   rn  r  r   r  r   rj  rk  rt   r+  r  r  rb  operatorgetitemr  rH   r  r   r&   r   r$  r   rU  r   manual_seedr
   SymFloatr  current_tracertrack_produced_symintsr   r7  r8  r  ra  r2   current_streamr   rd  rh  r   r  r|  sym_intr'  _utils_element_sizeseedmodr9  vmap_validate_and_get_batch_sizepredispatch_vmap_increment_nesting_vmap_decrement_nestingr,  r   _constrain_as_sizebackends
SDPAParamssdpar   r   _are_functorch_transforms_activeis_batchedtensoris_flash_attention_availablecan_use_flash_attentioncan_use_efficient_attentionr   r  r  r   r   r5   r}   )r  r)  r  r[  r  r  r   r  r  sizesunpackedr  r  proxy_ir   	options_ir5  device_interfacer   s                      r   r  r    s    (-.'E=-
 			))3*> 	* 	
 


!!:.JJ&&+5uzz((115883E3EF:: : ::+EJJ,=,=>>

UXX777::

 : ::(77	uzz	*s 3$13 0 6CC!((+CCE-W--	ME4=	1%**m4. $	FAs{$++<G<  ,,33(#++	 4  w& &mT:::$X.F 'I*7#1U+Ih'
 !(I % #-%&)	
 $9$	J mUZZ0  %;7;;M5) 5W55MD.#9:4G44 ''226JJ=)4 M33>>??mnr  tA  oB  nC  D	5
 &h0G0GS7SS		%**"3"3u7H7H"H&&7w77	MELL%..%--#P	Q
		  77uM%**m4um?w??

))*uzz((%,,7			#C#EA 	'' 
 	%**m4e]M4H4HTGTT

))*uzz((%++6			#C#EA 	 
 	%**m4UM=W==			g	%%**--=*H%**m4999!}ekk2JJ/JJMM]*%**m4UM=W==	M3	'

MMLL&&JJLL!!>>((@@((@@E%%z8<E%%'7B $$
	
( JJMM]*uzz/@/@N/R 	%**m4&&}@@@	M5>>#6#6#A#A	B,%**m4!%3733	M4	(

HH55HH00NN<<NN77NN;;
 388:
;<		< 	%**m4&&}@@@	MC#5	6

^+::
*JJMM]*uzz/@/@F/J%**m4&&}@@@	M5	)UZZ->->BV-V%**m4&&}@@@4*7=+A*B&Wabgblblbsbsatuo		
k DFs   ?j
jj$c                 &   t        |       t        j                  t        j                  j                  t        j
                  j                  j                  t        j
                  j                  j                  fv st        |       ry t        |       S r  )rU  r   r  re  rf  r  r  r   rg  rh  r(   r  s    r   rJ  rJ    sj    E{%%00++<<	 
 
'u	-$ E{r   c                    | j                  |      }t        |t        j                  j                  j
                        r|j                  |j                  u r|r|}nt        |t        j                  j                        rt        j                  j                  }nOt        |t        j                  j                        rt        j                  j                  }nt        j                  }||d<   |S )N
class_type)
specializer  r   r  r  r   r  re  rf  r  r  )r  r)  r  r  specialized_propstensor_types         r   get_specialized_propsr    s    "--m< 	=%"3"3"?"?"J"JK##r||3'Kuxx'9'9:((,,Kuxx7((//K,,K*5,'r   c                 $   t        ||j                        }t        |j                  |       |j                  j                  dk7  r&|j
                  j                  j                  ||       |j                  t        | |||              | |fi |S )z
    Actually construct a tensor variable after all the pre-processing from
    wrapping a pre-existing or newly created tensor value.
    r  )
r  r  rt   rc  r  r*  r  r  r  r  r  s         r   r  r    sv     !=Mejj-0
 zz}}%
		  77uMNN(RVWe'w''r   c                     t         j                  dk(  rt        j                  S t         j                  dk(  rt        j                  S t         j                  dk(  rt        j
                  S t        dt         j                         )Ndynamicunbacked	obliviousz+invalid automatic_dynamic_shapes_mark_as = )r-    automatic_dynamic_shapes_mark_asr   r~  r;  OBLIVIOUS_SIZErl  r   r   r   rz  rz    sn    ..);!!!		0	0J	>,,,		0	0K	?(((9&:a:a9bc
 	
r   _DYNAMIC_SOURCES_DYNAMIC_SOURCES_CONFIG_HASHc                  F   t        t        j                  j                  j                        } t
        t        | k(  rt
        S t        j                  j                  j                  j                  dd      j                  d      D ch c]  }|r| c}a| at
        S c c}w N r  ,)	hashr   compilerr-   dynamic_sourcesr  r  replacesplitcurrent_hashss     r   get_dynamic_sourcesr    s     --==>L #(D(T
 &&66>>sBGMMcR 	

 $0    Bsource_namec                     t               }|D ]6  }|| k(  st        j                  ||       st        j	                  d| |        y y)NzA%s was marked dynamic due to dynamic source allowlist pattern: %sTF)r  rv  matchr  r  )r  r  patterns      r   r9  r9  0  sM    )+O" k!RXXg{%CIIS
  r   r)  r   r  r1  c           
         |j                         }t        |      s|j                         }|j                         }d g|z  }t	        |      D cg c]
  }||   | f }}|j                  t               i }	|D ]>  \  }
}| }|	j                  |
|
      ||<   |	j                  |
||   z  t        |             @ ng }t        | |t        j                  t        |      t        |                  S c c}w )N)r  )sizer   stridedimrs  sortr   r   
setdefaultr<   r=   r;   make_tensorrj  )r)  r  r1  ex_size	ex_strider  r  r  pending
candidatesi_strideneg_is               r   record_automatic_dynamicr  =  s     ffhGHHJ	eeg#/4Sz:!IaL1"%::/0
& 	IOHeA"x:F1I!!(WQZ"7QH	I
 $
D%11%.%-P  ;s   C1_UNBACKED_SOURCES_UNBACKED_SOURCES_CONFIG_HASHc                  F   t        t        j                  j                  j                        } t
        t        | k(  rt
        S t        j                  j                  j                  j                  dd      j                  d      D ch c]  }|r| c}a| at
        S c c}w r  )	r  r   r  r-   unbacked_sourcesr   r!  r  r  r	  s     r   get_unbacked_sourcesr$  Z  s     -->>?L $)F,)V  
 &&77??RHNNsS 	

 %1!r  c                     t               }|D ]6  }|| k(  st        j                  ||       st        j	                  d| |        y y)NzC%s was marked unbacked due to unbacked source allowlist pattern: %sTF)r$  rv  r  r  r  )r  r#  r  s      r   r:  r:  n  sN    +-# k!RXXg{%CIIU
  r   c           
      D  01 | j                   rGt        | t        j                  j                  j
                  j                        st        dddg        |j                         }|j                  j                  j                  j                  | d       }|r|j                  nd }d }| j                         r$t        |d      }	t!        | j"                  ||	|      }t%        |       r|st!        | |||d      }
i }t'        |       j)                  |       \  }}|D ]+  }t+        | |      }t        ||      }t!        ||||      ||<   - t-        |
j.                  |
j0                  |
j2                  |
j4                  ||
j6                  |
j                  |      S |rt9        |      svt;        t<        j>                  g| jA                         z  t<        jB                  g| jA                         z  d g| jA                         z  d g| jA                         z  |||	      S d
dl"m#1 tI        1fd| jK                         D              rt;        | jK                         D cg c]2  }t        |tL              rt<        jN                  nt<        j>                  4 c}t<        jB                  g| jA                         z  d g| jA                         z  d g| jA                         z  |||	      S tQ        |||       }tS        |       }i 00fd}d
dl*m+} |j                  jX                  r`|j                  jX                  D ]G  }t        ||      r|jZ                  |k(  s  ||j@                  |j\                  |j                         I g }g }g }g }g }t_        | jA                               D ]a  }|t+        | dta                     v }|t+        | dta                     v }|t+        | dta                     v }|t+        | dta                     v } |t+        | dta                     v }!|jc                  t+        | di       j                  |g              te        |j                               }"|}	t        |	tf              r|	ji                         }	|sFt        |	tj              r|	jl                  zto        |	jl                        j                  |"|di      |   rPtp        js                  d|       tt        g| jA                         z  }#tv        |#|<   |ty        jz                  |#      z  }t|        j~                  xr |j                  |      }$t|        j~                  xr |j                  |      }%t9        |      rtp        js                  d|       d}$t        |      rtp        js                  d|       d}$|$xs |%}&0j                  |      }|d }'d }(|rt|        j                  sd }(t        | d      r| j                  D )cg c]  })|)j@                  |k(  s|) c})j                         }*|*j                  |*j                  t        d      }'nd
dl"mJ}+  |+t        |*j                  |*j                        d      }'nt        d      }'n|rt        d      }'n|!s+|&r)t        dd       |$rt        d      }'|%rbt        d      }(nU|!st|        j~                  st        dd       d }'d }(n2|\  }'},d }(| d | d!}-|,|j                  j                  j                  |-<   |jc                  |'       |jc                  |(       |st        |      rt<        j                  }.nr|'|s| s 1| jK                         |         r|&rt               }.nFt<        jN                  }.n5|st|        j                  s|!rt<        j>                  }.nt<        j                  }.|(t<        jN                  }/nt<        jB                  }/|jc                  |.       |jc                  |/       d t;        ||||||||"      S c c}w c c})w )#NzGEncountered strided NestedTensor in automatic dynamic dim determinationr  rD  r  rF  T)
outer_only)dynamic_sizesdynamic_stridesconstraint_sizesconstraint_stridesview_base_contexttensor_source#shape_env_to_source_to_symbol_cacheinner_contexts)r(  r)  r*  r+  r,  r-  r.  r   )is_nested_intc              3   T   K   | ]  }t        |t              xr	  |        ! y wr  )r  r
   )r:  r  r0  s     r   r<  z%_automatic_dynamic.<locals>.<genexpr>  s(     
La:a 9q)9%99
Ls   %(c                     | v r=ddl m} |    \  }} ||j                  |j                  z  d      }|xs |}||f| <   y ||f| <   y )Nr   StrictMinMaxConstraintFvrr  )%torch.fx.experimental.symbolic_shapesr4  r6  )	r  constraint_ranger  r4  old_constraint_rangeold_namenew_constraint_rangenew_namedim2constraints	           r   update_dim2constraintz1_automatic_dynamic.<locals>.update_dim2constraint  sk    . T-;C-@* (#9#&&)=)@)@@$   '4H"6"@N3"2D"8N3r   )_RelaxedConstraint_dynamo_strict_unbacked_indices_dynamo_unbacked_indices_dynamo_dynamic_indices_dynamo_weak_dynamic_indices_dynamo_static_indices_specialize_onFz#automatic dynamic %s marked dynamic)r  r5  r6  _dynamo_dynamic_ranger  r3  )lowerupperr5  ru  z.size()[])r(  r)  r*  r+  specialize_onr,  r-  r.  )SrK  r  r   rL  r   rM  rN  r5   r  r*  tracing_contexttensor_to_contextr   r.  rS  r@   _automatic_dynamicrF  r(   rU  rV  r'  r!   r(  r)  r*  r+  r-  r9  r    r   r  r  INFER_STRIDEr7  r0  r1  r  r
   r~  r  r9  r  r?  export_constraintst_idr8  rs  r0  r  r   rB   r"  rQ   r  r  r  r  r:   r9   r;   	make_sizer-   rx  is_size_dynamicis_stride_dynamicr:  allow_ignore_mark_dynamicr   rF  popminmaxr   r4  r*   r   rz  source_name_to_debug_namer;  rz  r{  DUCK)2r1  r)  r   static_shapesr'  r  prior_policyr.  r,  r  outer_contextr/  r^  r5  r_  inner_tensorra  r  r~  rP  r>  r?  r  r(  r)  r*  r+  rJ  r  marked_strict_unbackedmarked_unbackedmarked_dynamicmarked_weak_dynamicmarked_staticr  	mark_sizeautomatic_dynamic_sizeautomatic_dynamic_strideautomatic_dynamicconstraint_sizeconstraint_stridedr	dim_ranger4  name_dim_namedynamic_sizedynamic_strider=  r0  s2                                                   @@r   rM  rM  }  sz    	{{:	5<<!!//<< 	]M		
 ;;=D99,,>>BB1dKL<H88d (
 48zz| 1.qwwKW$Q'
*r6=T

 7--a0q 	D"1d+L%fd3L#5b,$N4 	 ''55)99*;;,??/'550=0a0a)	
 		
 .t4&%,,-7'445?"Vaeeg- $v// 0S
 	
 D

L1668
LL&  '1F&;
""ARARR (445?"Vaeeg- $v// 0S
 	
 1T1= a5DN9  ?	yy##))66 	J*&89$&%NNJ$?$?		 MOM1557^ B/!"g0#%'
 "
 wq*DceLLga)BCEJJ71.Lce#TTWQ(@#%HHWQ(8"=AA!RHI
 "7v{{}!Ek=1%..0K{K0$$0[))*../E5zRSTU II;TB#quuw.I'IaL!4!>!>I!NN ++T0A0Q0QRS0T 	 ++V0A0S0STU0V 	! T"II>E%)"d#II?F%)"2N6N
 $''*
"O $f&F&F$(!156%&%<%<!!!!ce  !}},1F*AE*R +A*immT&++
 '>&NO'"9E"J"'8 A4H)&=&MO+(?$(O%$V-L-L#$EuM"&$(!%/"OU $xs!,HFKBII99(C0!!"3406%88L'"QVVXa[)
 !CE)11f==%,,L &??L('//N'44N\*~.EB/H ##')-#+,O	 	ql!s   7`.``)parent_contextr   r  c          
          t               t        j                  t        j                  j                  t
        fv s&t         t        j                        st               rJ t         |      \  }}|st         |      n-t        t              sJ j                  }|j                  |   t        j                  dj                         t!         j"                        t                      t%               5  t'         fd      }d d d        Wt        t
              rG|j(                  x}	9j*                  j,                  j/                  t1        |	t3                           t              rf|j5                         \  }
}|
D ]N  }t7        ||      }t7         |      }t        |      }t9        ||t        |t        j                               P j*                  j:                  j<                   <   t?        |      r|j@                  r|jC                         n|jE                         }|jG                         d|jH                  z  |jG                         |jK                         dj*                  jL                  <   n8|jG                         |jK                         dj*                  jL                  <   |r~|rjO                         sltQ              saj*                  j,                  j/                  t1        |             j*                  jR                  tU                  j/                         |S  S # 1 sw Y   @xY w)N)r-  zwrap_to_fake %s %s %s %sc                  @    j                   j                         S )N)r   symbolic_context)r  r  )r1  r   rr  r)  s   r   r(  z0wrap_to_fake_tensor_and_record.<locals>.<lambda>  s$    00!%5 1  r   )r   r  ro  )r{   )r  r  values_sizevalues_stride)r  r  )+rU  r   r  re  rf  r   r  r(   ru   rM  r@   r;  r/  r  r  r  rj  shaper   rz   	item_memor*  r  r  r$   rA   rV  r'  rP  rK  rL  r   	is_sparse_valuesvaluesr  ndimr  input_source_to_sizes_stridesrH  rJ   tracked_fakes_id_to_sourcer9  )r1  r)  r   r  ro  rZ  _reasoninner_context_namefake_esym_valr^  r5  r_  
fake_innerinnerra  ry  rr  s   ```              @r   rP  rP    s    	QELL%(("4"4jAAa&(+!!!!? "
w 1!RO fj111!'-<<=OP		&KKM!''NG	
 &' 	(F	 6:.",,,9II##**G%9&%ACST )0002HE1 
$VT2
4()&$7.'(U\\B#3	
 :J		!!33A6  *0)9)9V^^%v}}F ,%{{}!'?BII33F;  --/?BII33F; "v'F'F'H&v.II##**FF,<= II00A7>>vF}	 	s   MMc                   R    e Zd ZdZd
dZedddefd       Zed        Zed	        Z	y)r4  a  
    Like builder, but stateless and does not require a source. Useful for simple type->VT objects, or objects
    that are being created/evaporated during inlining (ex: consider a locally made list of tensors we then iterate over
    .), such a list should not show up as an artifact from inputs, nor in reconstruction, nor in the graph. However,
    there may be reasons to represent it as a ListVariable internally.

    NOTE - Objects produced here are born UNGUARDED due to the nature of sources!

    NOTE - This class is very new! It will have some rough edges, but it was created to stem the bleeding of giant
    if/else type->VariableTracker trees that were cropping up all over dynamo.
    r1  Nc                     t        d      )NzUse SourcelessBuilder.create()r  r  s    r   r#  zSourcelessBuilder.__init__   s    =>>r   r)  r   c           
         t        |      }t        j                  j                  |      }|r	 || |      S t	        |t
              r|S t	        |t        j                        rt        |      S t        j                  |      rt        j                  |      S t        |      rVt        j                  |      At        j                  |      rd| j                   _         t        j                  |      |      S t        |      rPt%        j&                  |      r; t        j                  |j(                        |j(                        }t+        |d      S t-        |      r t        j.                  |      |      S t	        |t0        j2                  t4        j6                  t4        j8                  j:                  j<                  f      rt?        |      S t	        |t         t@        jB                  f      rt%        |      S t	        |tD        jF                        rtI        |      S t	        |tD        jJ                        rt	        |j(                  t         t@        jB                  f      rvtM        |j(                  |jN                  jP                        |k(  sJ t        j                  | |j(                        }	 |jS                  | |jN                  jP                        S t	        |t4        jV                  jX                  jZ                        rt]        |      S t	        |t4        j^                  j`                  jb                  t4        j^                  j`                  jd                  f      rt        |      S tg        jh                  |      rtg        |      S tk        jl                  |      rtk        |      S |tn        jp                  u rts        |      S t	        |tt        jv                        rty        |      S t	        |t4        jz                  j|                  j~                  j                        rt        j                  t        |            S t	        |t        t4        j                  j                              r3t4        jz                  j|                  j                  j                  |      S t	        |tD        j                        rt        |      S t        |      rUt        t        |            D cg c]"  }t        j                  | tM        ||            $ }}t        |t        |            S t	        |t4        j                        ro|j                  j                  | j                   j                  v rC| j                   j                  |j                  j                     }t        j                  | |      S t        d|j                   d|j                   d| g t        j                         y # tT        $ r Y Gw xY wc c}w )NTr  )r  z%Unexpected type in sourceless builderr
  z3SourcelessBuilder.create does not know how to wrap r  )UrU  r4  _type_handlersr   r  r   r  _HAS_DEFAULT_FACTORY_CLASSr   r   r  r  rF  r1   rU  rV  r*  rW  r   is_supported_new_methodr  r   rg   rK  r5  r6  r   r7  r8  r9  r:  r   abcABCMetar  r  r   rP  r'  r  r   var_getattrr[  r  graph_moduleGraphModuler   r|  r  r  LeafSpecr   rx  r   ru  r?  r  r   rv  rw  r   r  	variableslazyLazySymNodeFormatStringr  r[  flex_attention_backwardhigher_order_ops&FlexAttentionBackwardHighOrderVariableGenericAliasr   rj   rp   r   r
   rc  r  r|  r   r5   r   r   r.   
DYNAMO_BUG)	r)  rE  
value_typefast_handlerr  
cls_obj_vtr  r*  r  s	            r   r  zSourcelessBuilder.create  s   %[
(77;;JGE**e_-L{EEF,U33((/#**511e_!<!<U!C!O..u5>B		;5;..u5e<<e_!9!Q!Q"
 >+--enn=ennMC"3	22#E*,;%%e,U33DIIu00%((2E2E2S2ST
  &&ckk23+E22u667(//ue../ 5>>D#+++>? 5>>5>>+B+BCuLLL*11"ennEJ!--b%..2I2IJJ uxx44@@A077EKK''00%++2E2E2N2NO
 -U33++E2$U++..u5%e,,ioo%)%00rzz*'..u}}66;;SST#**3u:66tE$;$;$S$STU==**;;bb  u112!%((5! .d5k: "((WUD-ABF  &fUDDuell+

299#:#::II++EJJOO<E"))"e44;!,,-Qz/F/F.GHMj\Z1%001		
I ' 2s   5%W3 /'X3	W?>W?c                 \    t        j                  |       sJ t        j                  |       S )Nr  )r   r  r  r  s    r   wrap_constant_literalz'SourcelessBuilder.wrap_constant_literal[  s'    **5111&&U33r   c                  B   t         j                  i } t        D ]  }d | |<   
 fd| t        <   fd| t        <   fd| t
        <   fd| t        <   fd| t        j                  <   | t           | t        j                  <   | t           | t        <   | t
           | t        <   d | t        j                  <   d | t        j                   <   d	 | t        j"                  <   d
 | t        j$                  j&                  j(                  <   d | t        j*                  j,                  j.                  <   d | t        j*                  j,                  j0                  <   d | t        j*                  j,                  j2                  <   dd}t4        j6                  D ]  }|| |<   	 | S )Nc                     t        |      S r  )r   r)  rE  s     r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>e  s    ,<U,C r   c           	      b    t        |D cg c]  } | |       c}t                     S c c}w N)r  )r   r   r)  rE  r  r  s      r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>f  s)    +$)*qVB]*:J:L+
 *   ,c                     t        |j                         D ci c]  \  }} | |       | |       c}}t        |      t                     S c c}}w r  )r   r  rU  r   )r)  rE  r  r  r  s       r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>i  sF    +<6;kkmDdaVB]F2qM)DK*,,
 Ds   A
c           	      b    t        |D cg c]  } | |       c}t                     S c c}w r  )r   r   r  s      r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>n  s)    <$)*qVB]*:J:L,
 *r  c           	      N    t        |D cg c]  } | |       c}      S c c}w r  )r   r  s      r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>q  s#    M$)*qVB]*-
 *   "c           	      N    t        |D cg c]  } | |       c}      S c c}w r  )r   r  s      r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>t  s#    $)*qVB]*2
 *r  c                     t               S r  )r   r  s     r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>z  s
    4G4I r   c                     t        |      S r  )r   r  s     r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>{  s    7KE7R r   c                 ,    t        |t                     S r  )r   r   r  s     r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>}  s    ;Q!1!3<
 r   c                 ,    t        |t                     S r  )r   r   r  s     r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    :%5%7 r   c                 ,    t        |t                     S r  r   r   r  s     r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>      7%5%7 r   c                 ,    t        |t                     S r  r  r  s     r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r  r   c                 ,    t        |t                     S r  r  r  s     r   r(  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r  r   c                     |S r  r   r  s     r   passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthrough  s    Lr   )r)  r   )r4  r  r_   r0  r  rk  rj  r   rn  rl  r)  r%   r&   r  r  r  r  rq  r9  rf  rg  distributionsconstraints_Real	_Interval
Constraintr   all_subclasses)handlersr   r  rb  r  s       @r   make_type_handlersz$SourcelessBuilder.make_type_handlers`  sy   "))& 	DACHQK	D




 
 -5TN(()#+D> #+D> "I%R!!"*
%%& 	!!--BBC 	$$00667 	$$00::; 	$$00;;<	 '55 	(C'HSM	(r   r0  )
r   r   r   r  r#  r  r   r  r  r  r   r   r   r4  r4    s\    
? U
* U
o U
 U
n 4 4 : :r   r4  c                   2    e Zd ZdZddZedddefd       Zy)	"SourcelessUserDefinedObjectBuilderz
    SourceLessBuilder does not return a UserDefinedObjectVariable, but in some
    cases it might be ok to return UserDefinedObjects. In such case, use this
    builder.
    r1  Nc                     t        d      )Nz/Use SourcelessUserDefinedObjectBuilder.create()r  r  s    r   r#  z+SourcelessUserDefinedObjectBuilder.__init__  s    NOOr   r)  r   c                     t        |      }t        |t              rt        |t	                     S t        |t        j                  j                        rt        |t	                     S t        |t	                     S r  )rU  r  r   r   r   r  r   re  r,  r   r   )r)  rE  r  s      r   r  z)SourcelessUserDefinedObjectBuilder.create  sa    %[
j.1)%?O?QRRuxx/0%5%7  -UBRBTUUr   r0  )r   r   r   r  r#  r  r   r  r   r   r   r  r    s4    P 	V* 	Vo 	V 	Vr   r  r  r  )F(e  r  r  rl  rk  r  r  r5  r?  r7  	itertoolsr=  r  r  r  rv  r  r  r  ry  collections.abcr   typingr   r   r   r   r   r	   r  r   r
   torch._dispatch.pythonr   torch._dynamo.utilsr   r   r   r   torch._guardsr   "torch._higher_order_ops.flat_applyr   !torch._higher_order_ops.torchbindr   
torch._opsr   r  r   r   r   torch._subclasses.meta_utilsr   r   torch._utils_internalr   %torch.fx.experimental._backward_stater   torch.fx.experimental._dynamismr   r7  r   r   r   r   r    r!   r"   r#   r$   torch.fx.immutable_collectionsr%   r&    torch.nn.utils._expanded_weightsr'   torch.utils._python_dispatchr(   r)   torch.utils._sympy.value_rangesr*   torch.utils.weakr+   r  r-   r.   r/   r0   r1   r  r2   excr3   r4   r5   r\  r6   r7   r8   pgor9   r:   r;   r<   r=   rH  r>   r   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r|  r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r  r|   r}   r~   r   r   r   builtinr   constantr   r   ctx_managerr   r   r   r   r   r   r   r   dictsr   r   r   r   r   r   r,  r   r   r   r   r   	functionsr   r   r   r   r   r   r   r   r   r   r   r   r   r  r   iterr   r  r   listsr   r   r   r   r   r   r   r   r   miscr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	nn_moduler   r   r   	optimizerr   script_objectr   r  r   r  r   r   r   r   r   r   r   r   r   r   torch_functionr   r   r   user_definedr   r   r   r   r   r   r   r   r   r   r   r   numpyr  ModuleNotFoundErrortorch._dynamo.codegenr   torch._dynamo.symbolic_convertr   	getLoggerr   r  r   getArtifactLoggerr  rk  DimListr   r   	dataclassr   r   r3  varsr  r=  r|  r  r0  r>  re  r,  r'  r(  r$  r%  r@  r  r  rR  rQ  r  r  r  r  rJ  r  r  rz  r  r  r  r  r  r9  r  r  r   r!  r$  r:  rM  rP  r4  r  r  r  r   r   r   <module>r     s  &              	 
    * L L    ;  ) 9 < * R R A 1 ? A
 
 
 J ; 8 * T T ? V V A A  '       <! ! ! ! ! ! ! ! !D  % 4	 	 	      ? # %
 
 
     0 
 ) ( 4 4 $ $       
       
 //DD g!NN44' 
 "
	 	 99 99 99x<H <, &/ /Y--// & IcN  +.% s3x /
 "'!>!> $)HHOO$D$D !@" @"FD (& 26$p >B
, 26=D >B0@
F:((,

 (, (3s8$ +.2 hsm 2SX (
3 
4 
'*/4||2 )- 8CH% ,/3 x} 3c#h (
C 
D 
  .3GGX IMhv&h37hVh hV $5#G#G#I   V V{k  	Bs   U 	UU