
    %VjiTw                    
   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%n# e&$ r dZ%Y nw xY werdd5l'm(Z( dd6l)m*Z*  e
j+        e,          Z-ej.        /                    e,d7          Z0e1Z2d8 Z3 G d9 d:          Z4ej5         G d; d<                      Z6 G d= d>e6          Z7 e8d?  e9e	          :                                D                       Z;e8e<         e=d@<    e>            Z?e>e<         e=dA<   ej@        jA        jB        ZCej@        jA        jD        ZE G dB dC          ZFdD ZGdE ZH	 didFefdGZIdH ZJ	 didIZK	 djdJZL	 didK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jY        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^	 dkdFeBfd`Z_ddadbee         dceWfddZ` G de df          Zaeab                                ea_c         G dg dh          ZddS )laq  
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                            t           j        j        j                  5  t          | d          cd d d            S # 1 swxY w Y   d S )Ngrad)torch_logginghide_warnings	_internalsafe_grad_filterhasattr)ts    Y/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr   6  s    		%	%en&>&O	P	P " "q&!!" " " " " " " " " " " " " " " " " "s   AAAc                       e Zd ZdS )_missingN__name__
__module____qualname__     r   r   r   ;  s        Dr   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dS )GraphArgsource_examplepass_arg_as_tensorfake_tensorT	is_tensorNexample_strong_refc                 x    t          | j        t                    r|                                 }|J |S | j        S N)
isinstancer   r+   )selfrs     r   examplezGraphArg.examplec  s9    dm]33 	!A===H= r   c                     t          | j        t          j                  r/t	          | j                  | _        t          | j                  sJ d S d S r  )r  r   r   Tensorr+   r   r  r  s    r   __post_init__zGraphArg.__post_init__l  sP    dmU\22 	-)$-88DM4+,,,,,	- 	-,,r   codegenr   c                 &     || j                    d S r  r   r  r  s     r   reconstructzGraphArg.reconstructq  s    r   c                 "    d | _         d | _        d S r  )r   r  r  s    r   erasezGraphArg.eraset  s    "&r   c                 j    | j                                         |j                                         k    S r  )r   name)r  others     r   __eq__zGraphArg.__eq__x  s)    {!!U\%6%6%8%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         NNN M5</0000" %+7BCCCC It 26.555! ! X!- - -
   ' ' '9 9 9 9 9r   r   c                   (     e Zd Zd fdZddZ xZS )	BackwardStateGraphArgreturnNc                 l    t                                          d t                      dd d           d S )NF)r   r   r  r  r  )super__init__r   )r  	__class__s    r   r$  zBackwardStateGraphArg.__init__}  sA    "__$ 	 	
 	
 	
 	
 	
r   r  r   c                     j         j        j        sJ                     fd                               dd                                                                j         j        j                   d S )Nc                  D                          t          j        d          S )Nr   )load_import_fromr   r   )r  s   r   <lambda>z3BackwardStateGraphArg.reconstruct.<locals>.<lambda>  s    G,,]-EWW r   r   F)txoutputbackward_state_varadd_push_nullcall_functiondup_topstorer  s    `r   r  z!BackwardStateGraphArg.reconstruct  s    z 3333WWWW	
 	
 	
 	a'''gj':;;;;;r   r!  Nr  )r   r   r   r$  r  __classcell__r%  s   @r   r   r   |  sQ        
 
 
 
 
 
< < < < < < < <r   r   c              #      K   | ]?\  }}|                     d           t          j        |          .t          |          V  @dS )_N)
startswithinspectisclassid).0r  members      r   	<genexpr>r<    sf       / /f??3/ %,OF$;$;/vJJ/ / / / / /r   ITERTOOLS_TYPE_IDSITERTOOLS_POLYFILLED_TYPE_IDSc                   4    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-j1        j2        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   r!  Nc                     |
J d            t          j                    
J d            t                                                       || _        || _        |                                | _        d S )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__  ss    
 !!` "!! %''335U333KKMM			r   c                    || j         j        j        v rJ| j         j        j        |         }t          | j        |j                  }|r|                     |           |S | j         j        j                            || j                  }|r|S |                     |          }|j        | j        |_        d }| 	                    |          s |||          rG|| j         j        j        vr4t          |          s%| j         j        j                            ||          }| j         j        j                            || j        |           |S )Nc                 J    t          |           o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+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__  sV   DGN///!%!<U!C'5G5NOOI /##I...%%GN9@@TT	 	ZZ9BI	K 	K 	K ..r22	N 10;;	N
 TW^8883E:: 9 ,BB5"MMB-11%bIII	r   c                 T    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&    Bxx(% 	
 
 	
r   c                     | j         S r  r  r  s    r   
get_sourcezVariableBuilder.get_source  s
    {r   c                     |                                  	 fd|D             }n# t          $ r Y d S w xY wt          |ddi i S )Nc                 :    g | ]}                     |          S r   )
make_guard)r:  guardr   s     r   
<listcomp>z2VariableBuilder.install_guards.<locals>.<listcomp>  s'    @@@6$$U++@@@r   skipr{   )rW  NotImplementedErrorr7   )r  guardstmpr   s      @r   rI  zVariableBuilder.install_guards  sl    ""	@@@@@@@CC" 	 	 	44	s####	s   & 
44c                 @    |                      t          j                  S r  )_type_dispatch_implr-   trace_numpy)clss    r   _type_dispatchzVariableBuilder._type_dispatch  s    &&v'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.                    | j        ft2          j        | j        ft8          j        | j        ft           j        j         j!        | j"        ft           j#        j$        | j%        ftL          j'        | j(        fg}|r-tR          r&|*                    tR          j+        | j,        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  )rd  rc  entriesresulttsfnr   s          r   rb  z#VariableBuilder._type_dispatch_impl  st    LH&%0%7H	  lK,=uzJ! S45S45U^S12())3+;<Z/0"C$45[.0IJY%s'<=#S%;<-
2  	A2 	ANNBJ(>?@@@ 	 	FB%b%00;RRre  q		 r   rE  c                 ^    |                      t          j                   t          |          S r  )rI  r6   ID_MATCHr   r  rE  s     r   rz  z"VariableBuilder.wrap_regex_pattern  s'    L1222#E***r   c                     |                      t          j                   t          j        | j        || j                  S Nr  )rI  r6   
TYPE_MATCHr   buildr*  r   r  s     r   r}  zVariableBuilder.wrap_weakref  s5    L3444$TWeDKHHHHr   c                 ,    t          dddg            d S )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   s4    
 	Im	
 	
 	
 	
 	
 	
r   c                 n    |                      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444*(
 
 
 	
r   c                 >                          t          j                                         t          j                   t	          d |                                D                       }|s3t          ddd |                                D              ddg            fdt          fd	|                                D                       }t          |d 
          }t          | j        
          } j        j        j                            ||          S )Nc              3   >   K   | ]}t          j        |          V  d S r  r   
is_literalr:  ks     r   r<  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>8  s.      MM1(3A66MMMMMMr   znon-const keys in mappingproxynon-const keys: c                 :    g | ]}t          j        |          |S r   r  r  s     r   r\  z6VariableBuilder.wrap_mapping_proxy.<locals>.<listcomp>=  s*    +j+j+j!K[KfghKiKi+jA+j+j+jr   z1Dynamo expects mappingproxy keys to be constants.zFEnsure your mappingproxy keys are constants (e.g. int, float, strings)r  c                     t          j        |           }| }t                                          |          }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  sM    ")!,,CJ():):JGGL+21lCCI	>!r   c              3   6   K   | ]\  }} ||          V  d S r  r   )r:  r  r  r  s      r   r<  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>M  s3      EEtq!__Q**EEEEEEr   r  )rI  r6   r  MAPPING_KEYS_CHECKallkeysr5   dictitemsr   r   r   r*  r+  rH  track_mutable)r  rE  	all_constr  dict_vtr  r  s   `     @r   r  z"VariableBuilder.wrap_mapping_proxy3  s1   L3444 	L;<<<MM

MMMMM	 	8l+j+juzz||+j+j+jllO\	   	" 	" 	" 	" 	" EEEEu{{}}EEEEE $E$777%gdkBBBw~*88GGGr   c                     ddl m } |d ft          j        d ft          j        d fg}i }|D ]A\  }}t          |t          t          f          r|n|fD ]}||vsJ ||t          |          <   B|S )Nr,   )comptimec                     t                      S r  )r   r  s     r   r)  z.VariableBuilder._id_dispatch.<locals>.<lambda>\  s    +;+=+= r   c                 n    t          t          fd| j        i|                     t          j                  S )Nr   )r   _dataclasses_fields_lambdar   rI  r6   FUNCTION_MATCHr  s     r   r)  z.VariableBuilder._id_dispatch.<locals>.<lambda>_  s=    N.% %;% )),*EFF% % r   c                     t                      S r  )r   r  s     r   r)  z.VariableBuilder._id_dispatch.<locals>.<lambda>e  s    4H4J4J r   )	r  dataclassesfieldsr   __version__r  rl  rm  r9  )rd  r  r  r  r  r  r   s          r   _id_dispatchzVariableBuilder._id_dispatchT  s    
 	(''''' ==>"   J JK
  	# 	#FB%b5$-88CRRre # # "r!uu# r   c                 X   789 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}                                                      t%                              }| |           S                                                      t)                              }| |           S t+          t,          j                  rt%                    t,          j        j        j        t,          j        j        j        t8          fvrdt%                    t:          j        vrIt%                    j        t,          j        j        u stA                    r !                              S tE                    rn #                    tH          j%                    fdtM          t%                              D             }tO          |t%                     j(                  }|S tS          tT          tV          j,        tV          j-        f          ro #                    tH          j.                   t_          d 0                                D                       88s) j1        j2        j3        4                     j(                   8 fd9tU          9fdtk          tm                              D                       }tS          tV          j,                  r\to           j(        d          }tq          |t%                     ts           j1        |          j:                   j(                  }n$tw          |t%                     j(                  } j1        j2        j<        =                    |          S t+          t,          j        j>                  r ?                              S t          jA                  r B                              S t+          t,          jC        jD                  r=t           j(                  } j1        j2        j<        F                    |           |S tS          t                    rt          d D                       r t          ddddgt          jK                    #                    tH          j.                    #                    tH          j%                   t                    7 fd tk          7          D             }t          | j(                  } j1        j2        j<        F                    |          S tS          t                    r\t_          d! D                       rC fd"D             } #                    tH          jO                   t          | j(                  S t+          t          jR        t,          jS        t,          jT        jU        jV        f          r5 #                    tH          jO                   t           j(        #          S t          jY                  r5 #                    tH          jZ                   t           j(                  S t+          t          j\                  r5 #                    tH          j]                   t           j(                  S t                    rt           j(                  S t                    rt           j(                  S t+          t          jd                  rto           e                                d$          } ts           j1        |          jf                  }g }to           e                                d%          }tk          jg                  D ]D\  }}|h                     ts           j1        t          ||                    |                     Ei }to           e                                d&          }jj        k                                D ]j\  }}t          jA        |          s"t          d'd(| d)g t          jl                    ts           j1        t          ||                    |          ||<   kt           e                                o                    tH          j.                  |o                    tH          jp                  |o                    tH          j%                             t          |||          S t                    r5 #                    tH          jO                   t           j(                  S t          At+          t          ju                  r' v                    t          jw                            S t          jy                  rYt          sJ  #                    t                    rtH          j]        ntH          j.                   t           j(                  S t          j|                  r5 #                    tH          jO                   t           j(                  S t          j~                  rt+          t          j                  ra #                    tH          j.                   to           j(        d*          }t          |o                    tH          jO                             n #                    tH          jO                   t           j(                  S t          j                  rA #                    tH          j]                   t          j         j1         j(                  S tS          t,          j        j        j                  r6 #                    tH          j]                   t           j(                  S t+          t,          j        j        j                  rFd }	 j        }n# t          $ r Y nw xY wg } j(        o                    tH          j.                  g} t+          |t                    rto           j(        d+          }!| h                    |!o                    tH          j%                             tk          |          D ]D\  }}|h                     ts           j1        t          |!|                    |                     Et          |    j1        j2        j<        F                    t           j(        t          |          ,                    S t+          t          j                  rtS          t!          d-d           t,          j        j        j                  rt!          d.d/          d0k    rtt!          j        d0d           k    rY #                    tH          j]                   t%          t          j        to           j(        d-1                    d0          S t+          t,          jT        j                  r6 #                    tH          jO                   t)           j(                  S t,          j        j        j        j        u r2 #                    tH          j]                   t3           fd2          S t+          |          rt5          j                  S t+          |          rt9          j                  S t                    rgt          j                  St          j                  rd3 j1        j2        _        t          j                                       j(                  S t          r/t+          t          j                  r                               S t+          tH                    rlt,          j        j        u rt          d4d/d5g             #                    tH          j.        tH          j                   tQ          j         j(                  S t+          t,          j        j                  rr #                    tH          jO                   to           j(        d6          }" ts           j1        |"          j                  }#t[          j         j1        |#          S t+          t,          j                  r #                    tH          jO                    j1        j2                            d7t%                    d8j        j        j        d9          }$tg          |$j                   tk          |$j         j(                  S t+          t,          jT        j                  r@ #                    tH          j.                   tq          j         j1         j(                  S t+          t,          jU        j        j                  r/ #                    tH          jO                   tw                    S t+          t,          j                  r #                    tH          jO                   t,          j        j                                        j1        j2                            d7t,          j        j        j        t)                    fi           }%tg          |%j                   t          |% j(                  S tS          t          j                  rLt          j        d:d           5 #                    tH          j.                   t           j(                  S t          j                  r[ #                    tH          j.                   t           j(                  } j1        j2        j<        F                    |          S t+          t,          j        j                  rP #                    tH          jO                   t           j(                   _(        t           j(                  S t+          t,          j                  r/ #                    tH          j                   t                    S t          j                  rt           j(                  S t          j                  r6 #                    tH          jO                   t           j(                  S t          j                  r6 #                    tH          j                   t           j(                  S t          j                  r6 #                    tH          jO                   t           j(                  S t          j                  r6 #                    tH          j                   t           j(                  S t)                    t          v rMt)                    t          vr6 #                    tH          j]                   t           j(                  S t                    rt+          t,          j                  r j(        nt           j(                  }&j                                        rK j1        j2        j                            t          j        j                  |&t          j        ;          }'n]t+          t,          j                  r$ j1        j2        j                                        }'nt          d<d/d=g t          jK                    j1        j2        j                            t          j        d>d? j                  t%          |'          |'|&          }(t          |&|'d@d d@|'A          |(j        j        dB<   |'j        j        })t+          |)t          j                  sJ |) dC             j1        j2        j        h                    t          |'|&d                      t+          t,          j                  r|'n|'dDk    }*t          |(|*          S t+          ||f          r8 #                    tH          jO                   t          d d  j(                  S |	u rt          dDE          S |
u rt          dE          S |j        u rt                      S t+          t,          j        j        j                  rO #                    tH          jO                   t          j        j        j        j         g j(        F          S t          j                  r6 #                    tH          j]                   t           j(                  S t          j        dGd@          r7 #                    tH          j.                   t          dH j(                  S t	                    r7 #                    tH          j.                   t          dI j(                  S t
          j        u rt           j(                  S t          j	        u s"t          j
        dJk    r't          j        u rt           j(                  S t                    rNt          j        dKd@          r7 #                    tH          j.                   t          dK j(                  S t          j        u r6 #                    tH          jO                   t           j(                  S tV          j        u r6 #                    tH          jO                   t#           j(                  S t+          t          j                  rLt'          j                  r6 #                    tH          jO                   t'           j(                  S t+                    rot,          j        t,          j        fv rQ #                    tH          jO                   t%          t3          t,           j(                  j                  S t                    r^t7                    \  }+|+to           j(        |+           _(        t          j                                       j(                  S t:          j        u r5 #                    tH          jO                   t?           j(                  S tS          t:          j                  rstA          j!                  r] #                    tH          j.                   tA           j(                  } j1        j2        j<        =                    |           |S t+          t          j"        tF          j$        f          r] #                    tH          j]                   tK           j(                  } j1        j2        j<        F                    |           |S t+          t          j                  rt+          j        t,          j        j>        t,          j        j&        j'        f          r ts           j1        to           j(        d-                    j                  },|,rt+          |,tP                    s
J dL             #                    tH          j]                   tS          j*        |, j(                  S t+          t          j+                  rtY                    S t+          t          j-                  rt]                    S t_          t%                    t$                    rFt_          t`                    r/ #                    tH          jO                   tc                    S t_          t%                    t$                    rmt,          j        j2        j3        t,          j        j4        t,          j        j5        fv r/t          j                                       j(                  S t,          j        j6        u r: #                    tH          j]                   to          j8         j1                  S t_          t,          j                  rMt,          j        ur?j        t,          j        j        u r'ts                    stu           j(                  S tw           j(                  s #                    tH          jO                   ty           j(                  S t{          j        t%                              ryddMl(m>}-m?}. t,          j@        jA        B                              r j1        j2        j                            t          j        d>d? j                  t%                     j(                  }/t           j(        d@d d@          |/j        j        dB<   t{          j        |/ j(                  S t          dN          s D                              S t          jF         ts           j1         |. j(                            G                                H                                                     t          jF         ts           j1         |- j(                            I                                                     t,          j@        jA        J                     j1        j2        jK                  }0 j1        j2        j                            t          j        d>d? j                  t%                    |0 j(                  }/t           j(        d@d d@|0          |/j        j        dB<   t{          j        |/|0 j(                  S t+          tT          tV          j-        f          rYt%                    jL        tT          jL        u r6 #                    tH          j.                    #                    tH          j%                    j1        j2        j3        4                     j(                    fdO9tU          9fdPtk          tm                              D                       }tw          |t+          tV          j-                  rtV          j-        ntT          t                       j(        Q          }1d3|1_N        t          |1 j(        R          } j1        j2        j<        F                    |          S t+          t                    r׉ #                    tH          j.                    #                    tH          j%                    fdSt          t          Q                                        D             }t          | j(        t                      T          }2t          |2 j(        U          } j1        j2        j<        F                    |          S t+          t                    r։ #                    tH          j.                    #                    tH          j%                    fdVt          t          Q                                        D             }t          | j(        t                      T          }3t          |3 j(        W          } j1        j2        j<        F                    |          S t+          t          t          f          r #                    tH          j.                    #                    tH          j%                   t          tT          V                                        77 fdXt          t          Q                    7                    D             }t+          t                    rt          nt          }4 |4| j(        t                      T          }5t          |5 j(        Y          } j1        j2        j<        F                    |          S t_          t%                    t                    r[ #                    tH          j.                   t           j(                  } j1        j2        j<        F                    |          S t                    rf #                    tH          j.                   t          j         j1         j(                  } j1        j2        j<        F                    |          S t+          t                    rt_          dZ D                       r fd[D             }t           e                                o                    tH          j%                   e                                o                    tH          j                             t          | j(                  S t          d\d]d^ D              d_d`g           d S t          j                  rzddal_m`}6 ja        ja        j        |6jb        k    r c                    jd                  S ja        j        |6j        k    rt          f                    db j(                                        t          j                    c                    jd        t          j        t          t          d@c          d          e          S ja        j        |6ji        k    rit          f                    db j(                                        t          j                    c                    jd        t          j        f          S t          dgja                    D                              S )hNr   )
has_triton has_triton_experimental_host_tma%has_triton_tensor_descriptor_host_tmar,   )DynamoConfigPatchProxy(ErrorOnGraphBreakDecoratorContextManager)	Autotuner)JITFunctionc                       e Zd ZdS )*VariableBuilder._wrap.<locals>.JITFunctionNr   r   r   r   r  r            r   r  c                       e Zd ZdS )(VariableBuilder._wrap.<locals>.AutotunerNr   r   r   r   r  r    r  r   r  c                      d S r  r   r   r   r   create_1d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_1d_tma_descriptor      Dr   c                      d S 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dS )/VariableBuilder._wrap.<locals>.TensorDescriptorc                      d S 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  c           	      ~    g | ]9}t          j        t          |          t          j        |                     :S r  )r   r  getattrr@   r   )r:  r  r  rE  s     r   r\  z)VariableBuilder._wrap.<locals>.<listcomp>  sY       
 	 $*E4((%dk488    r   )	tuple_clsr   c              3   >   K   | ]}t          j        |          V  d S r  r  r  s     r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>  s.      QQq,7::QQQQQQr   c                     	                                 }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  s~    (( D*1!44C!"JJ!3D!!<!<J-4Q
CCC0zBB/6q,GG	I~%r   c              3   >   K   | ]\  }\  }} |||          V  d S r  r   r:  r  r  r  r  s       r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>  M        Av1  1a((     r   default_factory)r  r   )user_clsr   r  c              3   J   K   | ]}t          |t          j                  V  d S r  )r  r   r  r:  xs     r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>  s.      >>1:a..>>>>>>r   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           	      h    g | ].\  }}t          j        |t          j        |                     /S r  )r   r  rR   r   )r:  r  r  r  s      r   r\  z)VariableBuilder._wrap.<locals>.<listcomp>+  sS        Aq $*=dk1MM    r   c              3      K   | ]B}t          |          t          j        u r|j        d k    p|t          j        j        j        v V  CdS )r   N)rU  r  BuiltinMethodTyper   r   r~  _pytreeBUILTIN_TYPESr  s     r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>3  si       	.
 	.
  aE33O8O 7 U[(66	.
 	.
 	.
 	.
 	.
 	.
r   c                 P    g | ]"}t                               j        |          #S r   SourcelessBuilderr  r*  r:  r  r  s     r   r\  z)VariableBuilder._wrap.<locals>.<listcomp>A  s,    IIIa&--dgq99IIIr   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	        
                                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>  sS    ,M0K` -GW^0KKM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                                                      }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  s^    ((/a88
)0J??8zJJ/6q,GG	I~%r   c              3   >   K   | ]\  }\  }} |||          V  d S r  r   r  s       r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>  r  r   )r  mutation_typer   )r  r   c           	          g | ]Q}t          j        t                              |          t	                                          |                     RS r  )r   r  rl  __getitem__rH   rW  r:  r  r  rE  s     r   r\  z)VariableBuilder._wrap.<locals>.<listcomp>  sg       
 	 $*%%eQ//():):A>>    r   )r   r  )tuple_vtr   c           	          g | ]Q}t          j        t                              |          t	                                          |                     RS r  )r   r  rm  r  rP   rW  r  s     r   r\  z)VariableBuilder._wrap.<locals>.<listcomp>  sg       
 	 $*$$UA..,T__->->BB    r   )list_vtr   c           	          g | ]Q}t          j        t                              |          t	                                          |                     RS r  )r   r  rm  r  rR   rW  )r:  r  Lr  s     r   r\  z)VariableBuilder._wrap.<locals>.<listcomp>  sg       
 	 $*$$Q**:4??;L;LaPP    r   )set_vtr   c              3   >   K   | ]}t          j        |          V  d S r  r  r  s     r   r<  z(VariableBuilder._wrap.<locals>.<genexpr>  s.      AAa#.q11AAAAAAr   c                 P    g | ]"}t                               j        |          #S r   r  r  s     r   r\  z)VariableBuilder._wrap.<locals>.<listcomp>  s,    MMM!*11$'1==MMMr   znon-const keys in dict_keysr  c                 :    g | ]}t          j        |          |S r   r  r  s     r   r\  z)VariableBuilder._wrap.<locals>.<listcomp>  s*    /g/g/gaHXHcdeHfHf/g/g/g/gr   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 (j  torch.utils._tritonr  r  r  
decoratorsr  r  triton.runtime.autotunerr  triton.runtime.jitr  $triton.tools.experimental_descriptorr  r  triton.tools.tensor_descriptorr  re  getrU  r  r9  r  r   r  rg  	parameterUninitializedBufferUninitializedParameterr'   r-   nontraceable_tensor_subclasses__torch_dispatch__r(   rk  rj   rI  r6   SEQUENCE_LENGTHrp   r   r   ro   r  rn  defaultdictOrderedDictr  r  r  r*  r+  guard_on_key_orderrO  	enumeraterb   r@   r   r@  r  r   rH  r  Modulewrap_moduler   r  rw  	overridesTorchFunctionModer   rN  setanyr5   r.   SUPPORTABLErm  r   	frozensetr  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_rewriter  autogradfunctionFunctionMetar   FunctionCtxr  RuntimeErrorrl  r   r   r  
MethodTyper  r  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_inputrx  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  BackwardHookrh  Buffer _unsafe_preserve_version_counterr   constructorr)   r   rK   r   r   r  r  _libraryfake_class_registrytracing_with_realr   wrap_user_definedr   realize_all_typequalified_namer  maybe_to_fake_obj	fake_mode__new__r~   should_reconstruct_allr   ru  __len__r   r   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  factory_sourcevarr  func_srcfunc_objr  args_sourcer  argr  keywords_sourcer  r  	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  r  s:   ``                                                     @@@r   rL  zVariableBuilder._wrapp  s*   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
	
 	
 	
 	
 	
 	
 	
 	

 :<< 		::::::6666666              	 	 		 	 		 	 	 	 	 	 	 	
 ,+-- 	        1022 	HGGGGGG ++--11$u++>>$ =u--- ''))--bii88";tU+++ uel++	/U "6"9	 	 U6#HHH U.%,2QQQ077 R ''... r	1 <===    
 .d5kk::  F ($u++dk  F MED+"9;;RSTT e	1 7888QQEJJLLQQQQQI  C" 155dkBBB& & & & & &"     !*+>u+E+E!F!F    F
 e[455 !+DK9J!K!K,KK$LODG^$L$L-% %  ;   +T%[[   7>.<<UFKKKux// b	1##E***(// `	1$$U+++u@AA ^	1+E$+FFFCGN'==eSIIIJE3 Z	1>>>>>>>  BI>
 G*6     7888 <=== UA    &aLL	  E !t{;;;F7>.DDUFSSSE9%% z	1# 	.
 	.
 	.
 	.
 	.
 	+
 	+
 z	1 JIII5IIIE 5666$U4;????DIu0%(2E2ST
 
 i	1  5666eDK@@@@>uEE d	1  :;;;$U4;????w~.. _	1 ;<<<(t{CCCC '' \	1,DK@@@@&& Z	11EEEEy011 X	1!$//"3"3V<<H9tw99%*EEHD$T__%6%6??K#EJ//  3KODG];-J-JKKCPP    H():):JGGO,,.. 
 
1'2155 $ N ; ; ;$Y= 1 <=	   oG.BB   !!,,\-DEE**<+GHH&&|'CDD  
 ,HdHEEEu y
	1 5666!{    ^
5"* = =^**2:e+<+<===!%(( o
	1II2E??-++!,  
 !t{;;;;'.. g
	1 5666%eDK@@@@+E22 d
	1%** ;##L$;<<<&t{G<<	i22<3HIIJJJJ##L$9:::(t{CCCC.:5AA [
	1 ;<<<4;{   
 E5>2?@@ T
	1 ;<<<+{    u~6BCC N
	1#' ',':$$    Mk,,\-DEEFF.66 
'1$+'O'O$(33L4PQQ   &&:;;  DAq!(( G]3G%K%K     
 6""7>.DD/;"0"?"?     ue.//p		1z400%.2I2V p		1
 z2..'99$????  ;<<<"(N:dk*+U+U+U   	   ux9:: `		1 5666)%DDDD}+Fab b  ;<<<!      566 O		1,U];;;GHH M		1,U-GHHHe__ K		1!<U!C!C!O.u55 HCG@.u55HHdk I     E		1Jubi00 E		144U;;;233 C		1/??? W l	     79PQQQ38t{SSSSuz788 y	1 5666&t{H==M@-@@NNJ(/DDDu|,, t	1 56667>66U!&$)$6#(#4 		 	L l/777!{	     466 a	1 7888%,TWeT[IIIu/;PQQ ^	1 5666/666u{++ [	1 5666M99%@@@'.55#;E	 K k.666 {    5*011L	1&undCCK 7888&dk::::&9%@@ F	1 7888.uT[IIIF7>.DDUFSSSu{455 A	1 5666)$+66DK$U4;????u344 }	1 CDDD)%000#8?? z	1)%DDDD!2599 x	1 5666'dkBBBB.u55 u	1 9:::%eDK@@@@#5e<< q	1 5666)%DDDD+E22 m	1 9:::${   
 uII+++5		!>>> ;<<<$U4;????%   `	1 eU\223%dk22 
 z""$$ GN,QQEJO,,$.$6 R   
 eU]33 !%!9!P!P!R!RJJ % C "$Q> 1 =>	    "W^7JJ'di88Z  	 K  N 4<#-4 4 4N$Z0 "+Hh55  444 5 GN(//JPT0U0UVVV )==R

:QR?  #>>BBBY788 ^	1 5666'{	    ...:BBBB...:BBBB&2224666uy6?@@ P	1 5666'L$N(	 {    *9%@@ E	1 ;<<</dkJJJJ#E+H%PP B	1 7888.t{    +511 }	1 7888.umDKXXXXi,,,$DK8888cl""''ES],B,B&uT[AAAA#E** t	1w/E(%0
 0
 t	1  7888.,T[    io%% 5666)%DDDDk,,, 56660t{KKKK5*
 
 g	1#?FFg	1  5666(t{CCCC b	1EemUY-G$G$G 5666"dk:::   $E** \	1?FFE9 $(i@@%e,,??dk @    fm## 5666&dk::::E6=)) P	1n.T/
 /
 P	1  7888#E$+>>>FGN'55eVDDDM  0-2KLMM F	1 ;<<<){  F GN'==eVLLLMu/00 ~	1ZNUX_ek.A.JK6
 6
 ~	1
4;
 C C  n H  
8_ E E  4 E  ;<<<%{   
 u9:: d	1 ,E222u677 \	1
 )///UT** V	1z%/O/O V	1 56664U;;;UT** R	1!."   #)%00CC$+ D    GGG##L$?@@@5A$'JJJ 5%,//I -- ,0OOO
 ;5AA P .eDKHHHH)$+66 ; ##L$9:::+{    '6tE{{CC i	1       
 ~1CCEJJ 2EEF+S$)<<KK;	 F   /7KtUE/ /

+ 17;    5"344 5--e444  +V)H)H)U)UVVKKMM0022     +P)B)B4;)O)OPP))++    $n@RR(% O GN.AA'di88U{	 B  E +3UE4+ +EJOJ' -3{    ut[%<=>>c	1U#t|33  7888 <=== GN-11$+>>>& & & & &     !*+>u+E+E!F!F    F
 ( "%)@AAK++355{	 	 	G .2G*,UGDKXXXF7>.DDUFSSSu%% s	1 7888 <===    
 u}}U3344  F %t{:O:Q:Q  H .  F 7>.DDUFSSSt$$ ^	1 7888 <===    
 t||E2233  F #t{:O:Q:Q  G -UGDKXXXF7>.DDUFSSSY/00 L	1 7888 <===T]]5))**A    
 t||A//  F )35#(>(>UDUJZt{:O:Q:Q  F ,E&UUUF7>.DDUFSSSU^44 :	1 7888+E$+FFFF7>.DDUFSSS '' 6	1 7888,3DGU4;WWWF7>.DDUFSSSy)) 2	1AA5AAAAA  NMMMuMMMOO%%001MNNOO%%001JKK   *%DDDD 9i/g/g5/g/g/gii P]	       2599 	1@@@@@@~%)<@S)S)S''	222$(<<<		1K$$&&&  
 ''I'/1#:U#K#K#K   (    $(999		1K$$&&&  
 ''	J<N'OOO"#I#I#IJJJ))%000s   4p< <q
	q
c                     |                      t          j                   t          || j                  }t          j        t          |                    s|S | 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/  sh    L3444*5EEE=d5kkJJ 	Mw~*@@OOOr   c                 d    |D ]}||u rt          ddddg           t          j        rOt          |          t          j        u r4                     t          j                   t          j
        |          S                      t          j                   t          |t                    r|t          d |D                       rc j                                                                        r8                     t          j                   t%          d |D                       S  fd	t'          |          D             } j        j        j                            d
          }t1           j        t2                    r j        j        t7          |          v r j        }t1          |t8                    sJ  j        j        j                            t?          j         dd j!                  t          |          ||          }d|j"        j#        d<   tI          tJ           j        ||d |          }g }t'          |j&                  D ]\  }	}
tO          ||	d          }|
 j        j        j(        |<   tS          ||	                   |
j*        j"        j#        d<   tW          j,        t          j-        t]          ||	                             }|/                    |0                    |                     tc          |ddi te          ||dd d          }||j"        j#        d<   |D ]}|3                                  ti          j5        |          | j                  }t          |t8          tl          j7        f          r% j        j        j8        9                    ||          S |S )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   >   K   | ]}t          j        |          V  d S r  r  r:  items     r   r<  z0VariableBuilder.wrap_listlike.<locals>.<genexpr>N  s.      HH$$/55HHHHHHr   c                 6    g | ]}t          j        |          S r   r   r  r  s     r   r\  z1VariableBuilder.wrap_listlike.<locals>.<listcomp>R  s$    !R!R!RD"2"9$"?"?!R!R!Rr   c           	          g | ];\  }}t          j        |t                                          |                     <S r  )r   r  rH   rW  )r:  r  r  r  s      r   r\  z1VariableBuilder.wrap_listlike.<locals>.<listcomp>T  s[     
 
 

 4	  &$T__%6%6::  
 
 
r   r  r	  r5  r  T	steal_arg)
target_clsr*  r  example_valuesubclass_typer   Fr  indexindex_is_slicetensor_dictr]  r{   )r  r  r  r
  ):r5   r-   specialize_intrU  r   rp  rI  r6   CONSTANT_MATCHr   r  r7  ro   rl  r  r   guard_sourceis_unspecialized_nn_moduler   r;  r*  r+  local_scoper1  r  rQ   
local_namerc   rm  r  r  rx  r  r  rr  r  wrap_fx_proxy_clsr   r  rH   input_source_to_varr[   r  rN  rO  TENSOR_MATCHr+   r  rZ  r7   r   realizer   cls_for_instancern  ro  rH  r  )r  rE  r  r+  maybe_gmr   tensor_list_proxylist_variabler_  r  tensor_variablesource_ir[  r
  rF  r  s   `               r   rq  zVariableBuilder.wrap_listlike7  s    	 	Du}} K _>?	      	8T%[[EJ%>%> ;<<<#*7777 	L8999 5%  	THH%HHHHH	T ((**EEGG	T
  ;<<< !R!RE!R!R!RSSS
 
 
 

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

9!2599&UUU%$ 1233 	L7>.<<UFKKKr   c                                           t          j                    fdt          t	                              D             }t          | j                  } j        j        j	        
                    |          S )Nc           
          g | ]N} t          j        t                                          |                    t	          |                    OS r   )r@  r*  rX   rW  rw   r  s     r   r\  z7VariableBuilder.wrap_tuple_iterator.<locals>.<listcomp>  sg     
 
 
  WODG%?@Q@QST%U%UVV&ua00 
 
 
r   r  )rI  r6   TUPLE_ITERATOR_LENru  rx   r   r   r*  r+  rH  r  )r  rE  r+  r  s   ``  r   rr  z#VariableBuilder.wrap_tuple_iterator  s    L;<<<
 
 
 
 
 -e4455	
 
 
 'vdkBBBw~*88GGGr   c                     |                      t          j                   d t          j        |          D             }t          || j                  }| j        j        j	        
                    ||          S )Nc                 6    g | ]}t          j        |          S r   r  )r:  r  s     r   r\  z7VariableBuilder.wrap_range_iterator.<locals>.<listcomp>  s$    JJJ!(++JJJr   r  )rI  r6   RANGE_ITERATOR_MATCHcopydeepcopyr   r   r*  r+  rH  r  )r  rE  r  r  s       r   rs  z#VariableBuilder.wrap_range_iterator  sj    L=>>> KJT]55I5IJJJ%eDK@@@w~*88GGGr   c                       fddD             }                      t          j                   t          t                    rt          | j                  S t          | j                  S )Nc           
          g | ]N} t          j        t                                          |                    t	          |                    OS r   )r@  r*  r@   rW  r  )r:  r  r  rE  s     r   r\  z4VariableBuilder.wrap_slice_range.<locals>.<listcomp>  se     
 
 
  GODGZ0A0A1%E%EFFq!! 
 
 
r   )startstopstepr  )rI  r6   r  r  rt  r   r   r   )r  rE  r  s   `` r   rv  z VariableBuilder.wrap_slice_range  s    
 
 
 
 
 /	
 
 
 	L3444eU## 	< t{;;;; t{;;;;r   r[  c                 B   ddl m} t                              d| j                                        t          |                      |||           || j        j        j	        v r8| j        j        j	        |         }|j
        |j        j        j        d         d<   d S d S )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  rr  r  )r  rE  r[  r  r  s        r   mark_static_inputz!VariableBuilder.mark_static_input  s    444444.0@0@0B0BBuII	
 	
 	
 	E//// DGN///'.-e4C/ IN./JKKK 0/r   c                    ddl m} t          |j                  dk    r?t	          dt          |          dt          |           dg t          j        d           t          ||          rt          j
        |j        d	d
          r5t          j
        |j        dd           }t          | j        d| d          S |                     t          j                   t#          | j        d          | _        |                     |j                  S t)          |t*          j        j        t*          j        j        t*          j        j        f          r8t4          j        s,t	          dt9          |          dg t          j                   t=          |dd
          rt=          |dd
          st	          dddg            |                     t          j                   t?          ||                                            }tC          j"        tG          |                    s|S | j$        j%        j&        '                    ||          S tQ          j)        || j$        j*                  ryt)          |t*          j+        j,        j-        j.                  r-|/                                }ta          | j                  | _        t*          j1        j        j2        rwtg                      }ti          |j5                  r|j5        j6        tn          u r	 |5                                D ]\  }}| 8                    ||           nM# tr          $ r@}tu          tG          |          | j$        tw          |j<                             Y d }~nd }~ww xY wti          |j=                  r|j=        j6        t|          u r	 |=                                D ]\  }}	| 8                    |	|           nM# tr          $ r@}tu          tG          |          | j$        tw          |j<                             Y d }~nd }~ww xY w|r|| j$        j%        j?        | j@        <   |jA        B                    d          r|jA        B                    d          rt=          |jC        dd
          r| j        }
t4          j2        r1| j$        j%        j*        rt4          jD        rt          | j                  }
t          ||
          }t          |
H                    t          j                             n| j        }
t4          j2        r1| j$        j%        j*        rt4          jD        rt          | j                  }
t          ||
          }t          |
H                    t          j                             tC          j"        tG          |                    s|S | j$        j%        j&        '                    ||          S t          |jC        t*          j        jL        jM        jN                  rB|                     t          j                   t          ||                                            S | j$        j%        O                    || j@        |                                            S )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.   rP  ro   r7  r|  forwardr   r   rI  r6   r  r@   r=  r#  r  r   rg  RNNGRULSTMr-   	allow_rnnstrrB  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   rU  named_parametersr  !og_module_named_parameters_fn_ptrr  	TypeErrorr4   rm  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  s   000000u~!##1fU\]bUcUcfff&1U	    %)) 	5%em5KUSS 
 ,M#=t  /;icfiii   
  7888$T[+>>DK##EO444 uux|UX\58=IJJ		$		 =E

H6)56	    53U;; n	 5"95AA  = U	   "  78880t?P?PQQQFA$u++NN 7>.DDUFSSS0GG P	
 %!6!C!NOO ;((-dk::}#=  A022 U344	V.789 9V$)$:$:$<$< F FDAq 221H2EEEEF$ V V V0a$'QVUUUUUUUUUV U011V+48VVVV$)$7$7$9$9 F FDAq 221H2EEEEF$ V V V0a$'QVUUUUUUUUUV  A <ADGN-di8  ++,MNNN(334PQQN *A5IIN "[
3 Q-Q171LQ "DDK!P!PJ=eJWWWj33L4KLLMMMM![
3 J-J171LJ "=T[!I!IJ6uZPPPj33L4KLLMMMA$u++NN 7>.DDUFSSSOUX.:R
 
 	  78880t?P?PQQQQ7>99	(( :   s0   1L= =
N6NN21O$ $
P..6P))P.c                    t          |          t          u r<t          | j                                                  rSt
                              d| j                                                   |                     |t          j	                  S t          | j                                                  rSt
                              d| j                                                   |                     |t          j                  S t          j        s(t          || j                  rd }| j                                                                        s+| j                                                                        rd}t%          | j        | j                                        t)          j        |          | j                                                                                   |                     t/          j        t2          j        |                     t7          j        || j                  S |                     |          S t          j        s+t          |          t<          u r|                     |          S |                     t2          j                    t7          j        || j                  }tC          |tD          tF          f          r%| j        j$        j%        &                    ||          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  rN  rO  r6   r  r   r  specialize_floatr  wrap_symfloatr  r  rm  r@  r+  rH  r  )r  rE  rL  r  s       r   rw  zVariableBuilder.wrap_literalz  s   ;;# !1!1!3!344 L		BDKDTDTDVDVWWW''
8J'KKK!$+"2"2"4"455 W		CT[EUEUEWEWXXX''
8U'VVV(  T .eT[AA T%)N0022UUWW;3355PPRR5 ' .((**+7>>37;3K3K3M3M3h3h3j3j	    ''!)(5n    
 ,2t{SSSS##E***( 	T%[[E-A-A%%e,,, ;<<<%,5MMMF%$-- Pw~2@@OOOMr   c                 ~    t          |          r+t          |          | j        j        u rt	          dd          d S d S )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  sP    5>> 	1%88DG<MMM*<4  	 	MMr   c           	         |                                  }|| j        j        j        vsJ t	          |          d u}t
          j        rn|slt          |t          j	        j
                  s(|rK|                                                                r%|                     |t                                 d}t
          j        o,t!          |          pt#          |          pt%          |          }|o0t
          j         p#t                      pt          j        j        j        }|sN|                                                                s|rb|                                                                s<|                     |           | j        j                            || j        |          S t	          |          dk    r[|                     t6          j                   |                     |           | j        j                            || j        |          S t;          |          rP|                     |           | j        j                            |t=          j        dd| j                  |          S || j        j        j         v }|r| j        j        j         |         S i }tC          |          }||                     t6          j"                   t	          |          dk    r|                     t6          j                   |                     |           t          |t          j#                  rC|j$        r<t          |t          j%        j&        j'        j(                  stS          ddd	g 
           t          |t          j#                  rFtU          |          r7| j        j+        rt
          j,        stS          dddg tZ          j.        
           t_          |          rhta          |          Y|j1        ta          |          j1        k    r<tS          dd|j1         dta          |          j1         dg tZ          j.        
           te          || j        d|          }	| j        j        j3        4                    t=          j        dd| j                  tk          |          |	|          }
tm          | j        |
|           to          d| j        |
|	||d|}|8                                r+te          |j9        | j        tu          |d          d           t6          j;        }t          |tx                    rt{          |          rt6          j>        }|                     t          j@        |t          |t                    r|nt          |                               t          |          r|                     t6          jD                   |                     t6          j"                   t          t          |          G                    t6          jH                             |I                                \  }}|D ]W}t          ||          }tu          | jK        |          }t          jM         t          | j        |          |                     X|| j        j        j         |<   d|
jO        jP        vsJ t          |          |
jO        jP        d<   |jR        jO        jP        d         }t          |          | j        jT        urt          d          t          ||d|          }||
jO        jP        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-   r7  r  r   rg  rh  r  r  r  rk   r>  rL   rM   rO   r  prepare_freezingis_specialized_nn_moduleis_fsdp_modulerU  rB  r  rI  r6   r  rJ   rx  r  r   infer_subclass_typer  r  	is_nestednestedr   nested_tensorNestedTensorr5   r   r1  capture_sparse_computer.   rB  r   r   r  wrap_to_fake_tensor_and_recordr  r  rU  cache_real_value_when_exportwrap_fx_proxy_is_viewrZ  r@   r  rI   rN   NOT_NONE_MATCHrN  rO  rS   r+   r(   TENSOR_SUBCLASS_METADATA_MATCHr7   rW   rZ  r  __tensor_flatten__r  r   r   r  r@  rr  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   rk  zVariableBuilder.wrap_tensor  s   "" DGN777771%88D ,	##	# 5%("455		# 	#  &2244OOQQ	# ""50E0G0G"HHH"O &,%@ &
!&)) >&v..>5f== 	#  /  
00 5$&&5}#4 	 & 	  "";;==	AU	''))88::	 11%8887>99ty :    #5))Y66  566611%8887>99ty :    f%% 	11%8887>99'di88 :    %(JJ 	>7>5f==+E22$ 7888"5))Y66 5666 	--e444 uel++
	
	 uel&<&J&WXX
	
 @Q	    uel++	e$$	 W^	 ,2+H	 9K6)56	    %  	%  ,y//555H\\\IeDTDTDZ\\L6)56   " 7dgf
 
 
 w~1DDF#S$)44KK	 E 
 
 	%TWlEBBB' 
w''
 
 
 
 >> 		 +7!&'22	    ".
fj)) 	5.Fv.N.N 	5%4J "&*;<<.EE&u--  		
 		
 		
 )// 	 KLLL 7888&v..99,:STT   //11HE1  %eT22)$+t<<#/:ODG\::;GG    6E*62L$5$:::::0DU0K0K}- ,16;OL0119JJJ*+UVVVFE52CDD-5z*r   c           	         t           J t          |t           j                  sJ t          |                                           }ddlm} |j        j         }|r?	 d|j        _        n1# t          $ r$ t          |j
        t           j                  sJ Y nw xY wt          j                    5  	 |                    |          }|rddlm}  ||          }n8# t"          $ r+}t%          dt'          |          dg |           Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   t)          j         t-          | j        |          |                     t1          || j        d|	          }| j        j        j                            t9          j        d
d| j                  t?          |          ||          }	tA          | j        |	|           d|i}
tC          dtD          | j        |	|d|
}|| j        j        j#        |<   |j$        j%        j&        d         }tO          ||d|d|          }||	j%        j&        d<   | j(        |_(        |S )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_excFrY  r	  r5  r  r   r  r*  r  r  r  r  r  r  r  r
  r   ))r  r  r  rS   rW  torch._numpyrx  flags	writeable
ValueErrorr  nditerr   temp_restore_stack_try_convert_to_tensortorch._prims_commonry  r^  r5   r/  r   r  r@  r*  rd  r+  r  r  rx  r  r  rU  re  r  r   r   r  rr  r  r   r   )r  rE  r   rx  readonlytensor_valuery  rE  r  r  ro  numpy_ndarray_variabler
  s                r   r  z"VariableBuilder.wrap_numpy_ndarray  s   ~~~%,,,,,"4??#4#455&&&&&&{,, 	99(,%% 9 9 9 "%*bi88888889
 1CEE 	 	$;;EBB HJJJJJJ#9#9,#G#GL&    GJJ j        	 	 	 	 	 	 	 	 	 	 	 	 	 	 	* 	'(H(H(H(V(VWWW6w	
 
 
 *==F#S$)44	 > 
 
 	%TWe\BBBV$!2 "
+w'	"
 "

 "
 "
 6L*62.49>O #%+
 
 
 '/

# )-%%%sN   A* *+BB.D0(CD
D#!D	D	DDD!$D!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	        r]|
                                }t          |           | j        j        j                            t          || j        d                      nt!          |                                           s_|Pt$          j        j        j        r:|                     t.          j                   t3          j        || j                  S | j                                        }t7          | j        |t9          j        |          | j                                                                                  }tA          | j                                                  }| j        }	tC          |	tD                    r|	#                                }	||}
nt(          j$        r-|j%        tL          u rtO          dd           tQ                      }
ntC          |	tR                    r7|	j*        0tW          |	j*                                      |ddi          d         st(          j,        stZ          j.        }
nR|j%        tL          u rtO          dd           |                     t.          j                   t3          j        |          S |/                    || j        |
          }| j        j        j                            t          || j        |                     n]t!          |                                           sJ |                     t.          j                   t3          j        || j                  S tC          |                                 t`                    rJ tc          |                                 2                    t.          j3                             d	|                                 i}| j        j        j4        5                    tm          j7        d
d| j                  t          |          ||                                           }|j8        j9        }tC          |tt          j;                  sJ | d            || j        j        j4        j<        |<   t{          ||fi |}|| j        j        j        | j        <   t!          |                                           s4t}          |                                 |dd d|          |j8        j?        d<   |S )Nr  rK  dynamo.automatic_dynamic_shapesTr   Fr  )r   r  r   r	  r5  r  r  r|  r
  )@rU  r  r  r*  r+  unspec_variable_mapr  r   r1  #force_unspec_int_unbacked_size_liker  r   r  r  r$   r   rJ   rW  r   r  r-   r  rI  r6   r  r   r  r=   r;   rQ  r  r  r   r  rB   r6  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  rx  r  rr  r  r  r  bound_symbolsr   r   r  )r  rE  r)  r  r  wrapped_valuer  frame_state_entrynormalized_source_namebase_sourcer  ro  r  r  
unspec_vars                  r   r  zVariableBuilder.wrap_symint  s    E{{c!!!!9:::7>5di@@GN,	C K	L%<<>>M%m444GN(//M4;==    $DOO$5$566 @	LEM$8$G
 ##L$?@@@'.U4;OOOO;##%%D 9#/66+/;+C+C+E+E+`+`+b+b	! ! ! &;4;;K;K;M;M%N%N"+K+}55 5)2244#&/<%,<< A4HHHBDD;44<(4-..223IAu:VV 5 4	 5
 )0 %+|;;#$EuMMM##L$?@@@'.U;;;;%JJ{' K  M GN(//M4;@@    &doo&7&788888 ;<<<#*t{KKKKdoo//1BCCCCCdoo''22<3JKKLLLT__../*==F#S$)44??$$	 > 
 
 !%*(EL11WWh3W3W3WWW1=B"0:$UMEEWEE
8B*495!$//"3"344 	*2!!#( #0+ + +EJOJ' r   c           
      	   | j         | j        j        j        v r| j        j        j        | j                  S t	          | j        | j                                         t          j        |          | j                                        	                                          }t          j        j        j        st          |                                           smt!          j        |          sYt!          j        |          sEt          j        j        j        j        s*t-          dd          st          j        rH|j        t2          ur:|                     t6          j                   t;          j        || j                  S t          j        |t          j                   }t          j!        j"        #                    |          r:|                     t6          j                   t;          j        || j                  S tI          |                                 tJ                    rJ tM          |                                 '                    t6          j(                             tS          |                                           }||d}tU          || j        d|          }| j        j        j+        ,                    t[          j.        dd	| j                   t_          |          ||
          }ta          | j        ||           tc          td          f| j        ||d|}tI          |td                    sJ || j        j        j        | j         <   | j        j3        rNtI          |                                 th                    s'tk          d| d|                                            d }	|j6        j7        j8        d         }ts          |          sJ |}	|	j:        | j        j:        u sJ d|	j:         d            tw          |                                 |d|	d|          |j7        j8        d<   ty          | j         | j        j        j=        ddgt}          |gi           R            }
| j        j        j?        @                    t          |
jB        | j        d                      t                      D                    ddd           |
S )NrK  z.pytorch/compiler:unspecialize_float_killswitchFr  )r  )r   	raw_valuerY  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 InstructionTranslatorTr|  r
  call_methodr  tensorify_float_attempt)	overwrite)Er  r*  r+  r  r=   r   r;   rQ  r  r  r   r  r-   rR  rJ   rW  mathisnanisinf	_inductortriton
cudagraphsr   r  r  r9   rI  r6   r  r   r  tensorfloat64rG  rH  is_gradtrackingtensorr  rU   r7   rZ  r  rG   rd  r  r  rx  r  rU  re  r  r   r1  rQ   AssertionErrorr  rr  r  r   r  r   rf  rq  rr   r  r  r$   sym_numr   r@  )r  rE  r  r  r   ro  r  r  r  rv  r	  s              r   rS  zVariableBuilder.wrap_symfloat\	  s    9:::7>5di@@5GK+E22'+{'?'?'A'A'\'\'^'^	
 
 
 M 1	L!$//"3"344	L z%  	L z%  		L %,7	L OQVWW	L /	L &,L@@  ;<<<#*t{KKKK U%-@@@
 844]CC 	L ;<<<#*t{KKKK doo//1BCCCCCdoo''22<3JKKLLL #4??#4#455#%88 7dgv
 
 
 *==F#S$)44	 > 
 
 	%TWe]CCC&'
w'	
 

 
 

 *&ABBBBB8B*4957> 	*T__->->"L"L 	 {P]{{hlhwhwhyhy{{   !"(-2?C}%%%%%) *dg.?????+5 ? ? ? @??  '/OO#),'
 '
 '


# G'DGN' #J<44  
 
 	$++K	4;PT,U,UVVV!!";TT!RRRr   c                    | j         | j        j        j        v r| j        j        j        | j                  S t	          j        |          }t          |                                 t                    s>t          |                                 
                    t          j                             d|                                 i}|                    d|i           t          || j        d|                                           }| j        j        j                            t#          j        dd| j                   t'          |          ||                                           }t)          | j        ||           t+          t,          f| j        ||d|}|| j        j        j        | j         <   t/          |                                           s| j        j        rNt          |                                 t2                    s't5          d	| d
|                                            d }t          |t6                    r|j        }n|j        j        j        d         }tA          |          sJ |}|j!        | j        j!        u sJ d|j!         d            tE          |                                 |d|d|          |j        j        d<   |S )Nr   r  FrY  r	  r5  r  r  r  r  r  r  r  Tr|  r
  )#r  r*  r+  r  r   r  r  rW  rU   r7   rZ  r6   r  updaterd  r  r  rx  r  rU  re  r  r   rJ   r1  rQ   r  r   rE  r  rr  r  r   r  r   )r  rE  r  ro  r  r  r  rv  s           r   ri  z,VariableBuilder.wrap_unspecialized_primitive	  s   9:::7>5di@@U++$//++->?? 	Q$//++66|7NOOPPPT__../U+,,,6dgt?P?P
 
 
 *==F#S$)44??$$	 > 
 
 	%TWe]CCC&'
w'	
 

 
 

 9C*495!$//"3"344 	w~ j1B1BK&P&P $Talpl{l{l}l}   !%*&677 L * 0 * 0 5 :? K=))))) -$.$'2CCCCC/9 C C C DCC
 +3!!#'-#0+ + +EJOJ' r   NN)?r   r   r   __doc__rV   r$  rS  rM  rW  rI  classmethodre  rN  cacherb  rx  ry  rz  r{  r|  r}  r  r  r  r  r  r   r   r   r  rL  r  r	   rl  rm  rq   r   rq  rv   rr  rs   rs  rt  ru  rv  r   r  r  r  rg  r<  r=  rw  rU  rk  r  r   r   r#   r  rS  ri  r2  r3  s   @r   r@  r@    sr       ==" " 
	" " " " " "# # #J
 
 
     ; ; [; _$ $ _ [$L+
 + + + +
I'"7 I I I I
 
 

 
 
H H HB _	c8.4oEFF	G   _ [4}1 }1 }1~Ps P P P Pv5lJ)N#O v v v vp	H 	H 	H 	H 	HH H H H H<eE5L&9 < < < <u| D     Y Y Y Y Yv5 5 5nel    Y Y Y Y YvP& P& P&j *.37	u u :&u /0	u u u unJ J JX9 9 9 9 9 9 9r   r@  c           	         t          | t                    r| j        }n*t          dd|  dt	          |            d|  dg            g }t          j        |          D ]Y}d }| j        r*t          | j        d          }t          ||j
                  }|                    t          ||                     Zt          |          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1 
	.=C==$s))==nsnnn		
 	
 	
 	
 E#E** F F: 	=!#*.DEEH&x<<F.uVDDDEEEEr   c                     t          | t          j                  rPt          | t                    s;t          j        |           rt          |           |u s| j        st          |           } | S r  )r  r   r  r   _is_functional_tensorr   r_  r^   )rE  r  s     r   _clone_inputr  8
  sr    %&& ' uj))
	' +E22	
	'
 (..);; <
  &&ELr   r!  c                     | |||d|}|t          ddt          i|S t          ddt          i|}|                    |            |S )N)r*  r  r  r  r  r   )r  r   r   install_global)r*  r  r  r  ro  kwargsr  s          r   rf  rf  J
  sy     &&	 
 F  EENEfEEE"UU.JUfUUb!!!r   c                     | j         r`t          j                                        5  t	          || j                  |j        j        |j        <   d d d            d S # 1 swxY w Y   d S d S r  )	r1  r   rG  DisableTorchFunctionSubclassr  r  tracerreal_value_cacherr  r  s      r   re  re  \
  s    	y  X2244 	 	8Dr|9 9EL)%*5	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 s   (AA"A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  ro  s         r   r  r  
  s     E=-
 
CJ
 
 	
 
M5<	0	0 

*E=-
 
CJ
 
 	
 $2ug}j
 
 	
r   c                 B   ddl m} t          |t          j                  sJ dt          |                       t          ||          sJ d|v r-|d         %|j        j                            |d                    |j	        j
        dk    rd|j	        j        v sJ d| d            n)d|j	        j        vsJ |j	        j        d                      t          j        j                                        5  t          |          |j        u rnt#          |||           |j        r]t          j                                        5  t+          ||j                  |j        j        |j	        <   d d d            n# 1 swxY w Y   d	| t0          t2          fv i}d
|v r|d
         J |d
         |d
<   t5          |fd|i|}|j        j        dk    r(t          |          |j        urt9          d|           d d d            n# 1 swxY w Y   t;          | |||||          S )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  rr  opr  r  r~  +_disable_saved_tensors_hooks_during_tracingr   r  re  r1  rG  r  r  r  r  r   r   rd  rs  r3   construct_tensor_variable)r  r*  r  r  r  ro  r  r  s           r   r  r  
  s    =<<<<<fel++  JDLLJJ + b3444447wx0<
	 1222 z}%%%*/111L5LLL 2111 ejo555z/1 655
 
		H	H	J	J    v&&",66(UF;;;y  X::<<  @LA AEL1%*=               Z"$@ABF w&&78+<+H+HH&x0F83FLLrLVLLF=''''r|;;*G>DG G  ;                             D %Bv}g  s8   7AH(E9-H9E=	=H E=	A5HH	Hc                    ddl m} t          ||          sJ d|v r-|d         %|j        j                            |d                    d|j        j        vsJ |j        j        d                      t          j	        j
                                        5  t          |j        |d          }d d d            n# 1 swxY w Y   t          ||||||           S )Nr,   r  r_  r  T)allow_non_graph_fake)r  r  r  r+  r_  r  rr  r  r   r  r~  r  ra   r  )r  r*  r  r  r  ro  r  s          r   r  r  
  sA    =<<<<<b3444447wx0<
	 1222%*/111ejoo6V3X111 
		H	H	J	J R R 'uz2DQQQ	R R R R R R R R R R R R R R R  r5'=*  s   B::B>B>c                 *   dd l }dd l}dd l}t          | |j                  r=t          |||| ||          }|j        j                            ||t                     |S t          |j        j        d          r>|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          | |j                  r2t5          d | D                       rd | D             }t7          |fi |S t          | t8          t:          f          rt=          |j        |            g }	t?          |           D ]\  }
}|%|	                     tC          j"        d$i |           ,|j#        $                    dtJ          j&        ||
fi           }d	|v rIt          | t:                    sJ |d	         }|'                                }tQ          ||
d
          |d	<   n|}|	                     tS          d%||||d|           t          | |j                  rt7          |	|fi |S t1          | t8                    rtU          |	fi |S t1          | t:          tV          f          rtY          |	fi |S | j-        j.        dk    s7t          | d          s'J d| j-        j.         dt_          |                        ta          |	| j-        fi |S | |j        j        |j1        u rtC          j"        d$i |S t          | |j2        |j3        |j4        f          rC|j        j5        6                    | |           t=          |j        |            to          || fi |S tq          j9        |j        j                  rtu          |j        j        |j;                  s$|j        j        d ty                      D             v r)t=          |j        |            t{          || | j>        fi |S tq          j9        |j        j                  rtu          |j        j        |j?                  s$|j        j        d ty                      D             v r#t=          |j        |            t          || fi |S |j        j        dk    r2|j        jA        dk    r"t=          |j        |            tC          | fi |S | Xt          | |j?                  rC|j        j        dk    r3|j        jA        dk    r#t=          |j        |            t          || fi |S t          | t                    r|j        j        |jC        t          tJ          j&        |jE        jF        |jG        tJ          jH        |jI        jJ        jK        |jI        jL        jM        |jI        jL        jN        t          |jO        dt                    t          |jO        dt                    |jQ        fv s|j        jA        dk    r5|j        j        dv r't=          |j        |            tC          j"        | fi |S t          | |jR        j        jS                  r$ddlTmU} t=          |j        |             ||fi |S t          | t                    r|j        j        |j        jW        |j        jI        jX        |jR        j        jY        |jR        j        jZ        |jR        j        j[        dgt;          t          j]                              z   v r't=          |j        |            tC          j"        | fi |S t          | t          t          t          f          rm|j        j        t          u s3|j        j        t          u s |j        jA        dk    r7|j        j        dk    r't=          |j        |            tC          j"        | fi |S t          | t                    s|j        j        dv r't=          |j        |            tC          j"        | fi |S t          ddt          |            d |j        jA         d!|j        j         d"g #           d S )&Nr   )mutation_type_clsr   	set_statec              3   @   K   | ]}t          |t                    V  d S r  )r  r  r  s     r   r<  z'handle_traced_output.<locals>.<genexpr>$  s=       3 3 
1c3 3 3 3 3 3r   c                 6    g | ]}t          j        |          S r   r  r  s     r   r\  z(handle_traced_output.<locals>.<listcomp>'  s$    CCC!(++CCCr   r.  )kindtargetr  r  r   Fr  r{  ztorch.return_types_fieldsz	expected z. == torch.return_types or named tuple but got c                 "    g | ]\  }}|j         S r   )current_streamr:  r5  device_interfaces      r   r\  z(handle_traced_output.<locals>.<listcomp>j  s0       A 	'  r   c                 "    g | ]\  }}|j         S r   )rw  r  s      r   r\  z(handle_traced_output.<locals>.<listcomp>s  s0       A 	  r   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   )ctorch._functorch.vmaptorch._subclasses.fake_tensortorch._utilsr  r  r  r+  rH  
_track_objr|   r   rr  r  r   r  rG  	Generatorr  set_rng_stater   _DisableFuncTorchrn  _is_in_bad_forkr   ro   rp  r  r   rl  rm  rt   r;  r  r   r  r  rq  operatorgetitemr  rH   r  r   r&   r   r%  r   rU  r   manual_seedr
   SymFloatr  current_tracertrack_produced_symintsr   r7  r8  r  rp  r2   r   rs  rw  r   r  r  sym_intr  _utils_element_sizeseedmodrH  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  ro  r  r  r   r  sizesunpackedr  r  proxy_ir   	options_ir   s                   r   r  r    s	       ((((-.. {
'E=-
 
 		))3*> 	* 	
 	
 	
 

!:..i
J&+55uz(1583EFF 6: :::+EJ,=>>>
UX777:
 :::(777	uz	*	* ]
s 3 3$13 3 3 0 0 ]
 DC]CCCE--W---	ME4=	1	1 X
%*m444.. $	 $	FAs{$+<<G<<     ,33(#+	 4   w&& &mT:::::$X.F 'I*7#1U+ + +Ih''
 !(I % #-%&)	 
 $     mUZ00 	T  %;;7;;;M5)) 	T 55W555MD.#9:: 		T44G444 '26JJJ=)44 KJ DM3>  D  Dnr  tA  oB  oB  D  D KJ 5
 &h0GSS7SSS		%*"3u7H"H"H&77w777	MEL%.%-#P	Q	Q ^

	 77uMMM%*m444um??w???
)**Z
uz(%,77Z
 
	  #C#E#E   
 
 	%*m444e]M4HTTGTTT
)**Q
uz(%+66Q
 
	  #C#E#E   
 
 	%*m444UM==W===		g	%	%%*-=*H*H%*m44499999!}ek22 	"J//JM]**%*m444UM==W===	M3	'	' =

ML&JL!>(@(@E%z8<<E%'7BB $
	
 	
( JM]**uz/@N/R/R 	%*m444&}@@@@@	M5>#6#A	B	B #
,,,,,,%*m444!!%337333	M4	(	( 

H5H0N<N7N;
 38::
;
;<		< 		< 	%*m444&}@@@@@	MC#5	6	6 

^++:
**JM]**uz/@F/J/J%*m444&}@@@@@	M5	)	) 	
UZ->BV-V-V%*m444&}@@@@@4u7=+A+Auuuubgblbsuuo		
 	
 	
 	
 	
 	
r   c                     t          |           t          j        t          j        j        t          j        j        j        t          j        j        j	        fv st          |           rd S t          |           S r  )rU  r   r  rg  rh  r  r  r   ri  rj  r(   r  s    r   r^  r^    sd    E{{%0+<	  
 
'u	-	-. tE{{r   c                    |                      |          }t          |t          j        j        j                  r|j        |j        u rx|r|}nnt          |t          j        j                  rt          j        j        }n=t          |t          j        j	                  rt          j        j	        }nt          j
        }||d<   |S )N
class_type)
specializer  r   r  r  r   r  rg  rh  r  r  )r  r*  r  r  specialized_propstensor_types         r   get_specialized_propsr    s    "--m<< 	=%"3"?"JKK6#r|33 	''KKux'9:: 	'(,KKux77 	'(/KK,K*5,'r   c                    t          ||j                  }t          |j        |           |j        j        dk    r |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   rr  r  r+  r  r  r  r  r  s         r   r  r    s     !==Mej-000
 z}%%
	 77uMMMNN(RVVWW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  rO  OBLIVIOUS_SIZEr  r   r   r   r  r    sg    .);;!!		0J	>	>,,		0K	?	?((c&:acc
 
 	
r   _DYNAMIC_SOURCES_DYNAMIC_SOURCES_CONFIG_HASHc                     t          t          j        j        j                  } t
          t          | k    rt
          S d t          j        j        j                            dd                              d          D             a| at
          S )Nc                     h | ]}||S r   r   r:  ss     r   	<setcomp>z&get_dynamic_sources.<locals>.<setcomp>&  s.       	  r    r  ,)	hashr   compilerr-   dynamic_sourcesr  r  replacesplitcurrent_hashs    r   get_dynamic_sourcesr&    s     -=>>L #(D(T(T &6>>sBGGMMcRR  
 $0 r   source_namec                     t                      }|D ]<}|| k    st          j        ||           rt                              d| |            dS =dS )NzA%s was marked dynamic due to dynamic source allowlist pattern: %sTF)r&  rx  matchr  r  )r'  r!  patterns      r   rM  rM  0  sl    )++O"  k!!RXg{%C%C!IIS  
 44 " 5r   r*  r   r  rE  c           
      8   |                                 }t          |          s|                                |                                }d g|z  }fdt	          |          D             }|                    t                     i }|D ]M\  }}	|	 }
|                    ||          ||
<   |                    |||
         z  t          |
                     Nng }t          | |t          j        t          |          t          |                              S )Nc                 &    g | ]}|         | fS r   r   )r:  r  	ex_strides     r   r\  z,record_automatic_dynamic.<locals>.<listcomp>G  s$    :::!IaL1"%:::r   )r  )sizer   stridedimru  sortr   r1  
setdefaultr<   r=   r;   make_tensorrl  )r*  r  rE  ex_sizer0  r/  pending
candidatesi_strideneg_ir  r-  s              @r   record_automatic_dynamicr9  =  s    ffhhG HHJJ	eegg#::::uSzz:::/000
& 	I 	IOHeA"x::F1I!!(WQZ"7QHHHH	I
 $
D%1%..%--PP  r   _UNBACKED_SOURCES_UNBACKED_SOURCES_CONFIG_HASHc                     t          t          j        j        j                  } t
          t          | k    rt
          S d t          j        j        j                            dd                              d          D             a| at
          S )Nc                     h | ]}||S r   r   r  s     r   r  z'get_unbacked_sources.<locals>.<setcomp>d  s.       	  r   r  r  r  )	r  r   r   r-   unbacked_sourcesr:  r;  r"  r#  r$  s    r   get_unbacked_sourcesr?  Z  s     ->??L $)F,)V)V   &7??RHHNNsSS  
 %1!r   c                     t                      }|D ]<}|| k    st          j        ||           rt                              d| |            dS =dS )NzC%s was marked unbacked due to unbacked source allowlist pattern: %sTF)r?  rx  r)  r  r  )r'  r>  r*  s      r   rN  rN  n  sm    +--#  k!!RXg{%C%C!IIU  
 44 " 5r   Fc           
        -./ | j         r<t          | t          j        j        j        j                  st          dddg            |                                }|j	        j
        j                            | d           }|r|j        nd }d }|                                 r't          |d          }	t!          | j        ||	|          }t%          |           r|st!          | |||d          }
i }t'          |                               |           \  }}|D ]7}t+          | |          }t          ||          }t!          ||||          ||<   8t-          |
j        |
j        |
j        |
j        ||
j        |
j        |          S |rt9          |          st;          t<          j        g|                                  z  t<          j!        g|                                  z  d g|                                  z  d g|                                  z  |||	          S d
dl"m#/ tI          /fd| %                                D                       r~t;          d | %                                D             t<          j!        g|                                  z  d g|                                  z  d g|                                  z  |||	          S tM          |||           }tO          |           }i --fd}d
dl(m)} |j	        j*        rG|j	        j*        D ]:}t          ||          r|j+        |k    r ||j         |j,        |j                   ;g }g }g }g }g }t[          |                                            D ]..t+          | dt]                                v }.t+          | dt]                                v }.t+          | dt]                                v }.t+          | dt]                                v }.t+          | dt]                                v }|/                    t+          | di                               .g                      ta          |                                          } |}	t          |	tb                    r|	2                                }	|sLt          |	tf                    r|	j4        tk          |	j4                                      | .di          .         rZtl          7                    d|           tp          g|                                  z  }!tr          |!.<   |tu          j;        |!          z  }tx          j=        o|>                    .          }"tx          j=        o|?                    .          }#t9          |          rtl          7                    d|           d}"t          |          rtl          7                    d|           d}"|"p|#}$-                    .          }|d }%d }&|rtx          jA        sd }&t          | d          rq.fd| jC        D             D                                }'|'jE        |'jF        t          d          }%nd
dl"mH}(  |(t          |'jE        |'jF                  d           }%nt          d          }%n|rt          d          }%n|s7|$r5t          d!d           |"rt          d          }%|#rt          d          }&nF|stx          j=        st          d!d           d }%d }&n#|\  }%})d }&| d". d#}*|)|j	        jK        jL        |*<   |/                    |%           |/                    |&           |st          |          rt<          jM        }+np|%'|s%|s# /| %                                .                   r|$rt                      }+n6t<          jO        }+n)|stx          jP        s|rt<          j        }+nt<          jQ        }+|&t<          jO        },nt<          j!        },|/                    |+           |/                    |,           t;          ||||||||$          S )%NzGEncountered strided NestedTensor in automatic dynamic dim determinationr  rX  r  rZ  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)rC  rD  rE  rF  rG  rH  rI  r   )is_nested_intc              3   Z   K   | ]%}t          |t                    o |           V  &d S r  )r  r
   )r:  r  rK  s     r   r<  z%_automatic_dynamic.<locals>.<genexpr>  s?      
L
La:a  9q)9)9%9
L
L
L
L
L
Lr   c                 h    g | ]/}t          |t                    rt          j        nt          j        0S r   )r  r
   r   r  r  r  s     r   r\  z&_automatic_dynamic.<locals>.<listcomp>  sB        '1F&;&;R
""AR  r   c                     | v r8ddl m} |          \  }} ||j        |j        z  d          }|p|}||f| <   d S ||f| <   d S )Nr   StrictMinMaxConstraintFvrr'  )%torch.fx.experimental.symbolic_shapesrP  rR  )	r0  constraint_ranger  rP  old_constraint_rangeold_namenew_constraint_rangenew_namedim2constraints	           r   update_dim2constraintz1_automatic_dynamic.<locals>.update_dim2constraint  s    .  TTTTTT-;C-@* (#9#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.  rI  rJ  _dynamo_dynamic_rangec                 *    g | ]}|j         k    |S r   )r0  )r:  drr  s     r   r\  z&_automatic_dynamic.<locals>.<listcomp>9  s'     ! ! !!!r   r&  rO  )lowerupperrQ  r  z.size()[])rC  rD  rE  rF  specialize_onrG  rH  rI  )Rr_  r  r   r`  r   ra  rb  r5   r  r+  tracing_contexttensor_to_contextr1  rI  rg  r@   _automatic_dynamicrZ  r(   rU  rj  r  r!   rC  rD  rE  rF  rH  rM  r    r   r  r0  INFER_STRIDErS  rK  rA  r.  r9  r9  r  r[  export_constraintst_idrT  ru  r@  r  r   rB   r6  rQ   r)  r  r  r  r:   r9   r;   	make_sizer-   r  is_size_dynamicis_stride_dynamicrN  allow_ignore_mark_dynamicr   rb  popminmaxr   rP  r*   r   r  source_name_to_debug_namerO  r  r  r  DUCK)0rE  r*  r   static_shapesrB  r  prior_policyrI  rG  r  outer_contextrJ  rr  r5  rs  inner_tensorru  r  rn  rZ  r[  r(  rC  rD  rE  rF  rh  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	dim_rangerP  name_dim_namedynamic_sizedynamic_striderY  r  rK  s0                                                @@@r   rk  rk  }  sz	    	{ 
:	5<!/<  
 	]M		
 	
 	
 	
 ;;==D9,>BB1dKKL<HR88d (
 48zz|| X 11.qwKWW$Q'' 

 
*r6=T
 
 

 77--a00q 	 	D"1d++L%fd33L#5b,$ $N4   ''5)9*;,?/'50=0a)	
 	
 	
 		
  	
.t44 	
&%,-7'45?"Vaeegg- $v// 0S
 
 
 	
 DCCCCC

L
L
L
L16688
L
L
LLL 
&    (45?"Vaeegg- $v// 0S
 
 
 	
 1T1== a55DN9 9 9 9 9  ?>>>>>	y# )6 	 	J*&899 $&&%%NJ$?   MOM15577^^ B/ B/!"g0#%%'
 '
 "
 wq*DceeLLLga)BCEEJJJ71.Lcee#T#TTWQ(@#%%HHHWQ(8"==AA!RHHIII
 "7v{{}}!E!Ek=11 	1%..00K 	O{K00	O$0[)**../E5zRRSTU 1 II;TBBB#quuww.I'IaL!4!>I!N!N!NN +T0A0Q0QRS0T0T 	 +V0A0S0STU0V0V 	! T"" 	*II>EEE%)"d## 	*II?FFF%)"2N6N
 $''**
"O $  )f&F  )$(!1566 O! ! ! !%&%<! ! !cee  !},1F*AE*R*R*R      +A*@*imTTT&++ + +
 '>&N&N&NOO' )"9E"J"J"J" 
)'8 
) A4HHH) N&=&M&M&MO+ P(?$(O(O(O%$ NV-L N#$EuMMM"&$(!!%/"OU $,,,,,HFKBI9(C000!!"3444 	+066 	+%8LL' (" ( }QVVXXa[)) ( ! 2CEE)1 	+f= 	+ 	+%,LL &?L('/NN'4N\***~...."#')-#+,O	 	 	 	r   )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                              d                                t!           j                  t                                t%                      5  t'           fd          }d d d            n# 1 swxY w Y   Yt          |t
                    rD|j        x}	;j        j                            t1          |	t3                                         t          |          rx|                                \  }
}|
D ]^}t7          ||          }t7           |          }t          |          }t9          ||t          |t          j                             _j        j        j         <   t?          |          r|j         r|!                                n|"                                }|#                                d|j$        z  |#                                |%                                dj        j&        <   n6|#                                |%                                dj        j&        <   |r|r'                                sotQ                    s`j        j                            t1          |                     j        j)        tU                                                             |S  S )N)rH  zwrap_to_fake %s %s %s %sc                  >    j                                        S )N)r   symbolic_context)r  r  )rE  r   r  r*  s   r   r)  z0wrap_to_fake_tensor_and_record.<locals>.<lambda>  s'    00!%5 1   r   )r   r  r  )r{   )r.  r/  values_sizevalues_stride)r.  r/  )+rU  r   r  rg  rh  r   r  r(   ru   rk  r@   r;  rJ  r  r  r  rl  shaper   rz   	item_memor+  r  r  r$   rA   rj  r  rd  ri  rj  r   	is_sparse_valuesvaluesr.  ndimr/  input_source_to_sizes_stridesr\  rJ   tracked_fakes_id_to_sourcer9  )rE  r*  r   r  r  rx  _reasoninner_context_namefake_esym_valrr  r5  rs  
fake_innerinnerru  r  r  s   ```              @r   rd  rd    s    	QEL%("4jAAAa&& 	B(++ 	B !!!!? "
 "
 "
w  	Q1!ROO fj11111!'-<=OP		&KKMM!'NNGG	
 	
 	
 &'' 	 	(       F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 6:.. ",,9I#**G%9&%A%ACSTT   )00 	0022HE1 
 
$VT22
4(()&$77.'(U\BB#3     :J	!3A6   	 *0)9NV^^%%%v}}F ,%{{}}!'? ?BI3F;;  --//? ?BI3F; 	G"	G'-'F'F'H'H	G 'v..	G
 I#**FF,<==   I0A7>>vFFFs   D99D= D=c                   f    e Zd ZdZd
dZedddefd            Zed             Zed	             Z	dS )r  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.
    r!  Nc                      t          d          )NzUse SourcelessBuilder.create()r  r  s    r   r$  zSourcelessBuilder.__init__   s    =>>>r   r*  r   c                 F    t                    }t          j                            |          }|r |           S t	          t
                    rS t	          t          j                  rt                    S t          j
                  rt          j                  S t                    rQt          j                  =t          j                  rd j        _         t          j                            S t                    rKt%          j                  r7 t          j        j                  j                  }t+          |d          S t-                    r t          j                            S t	          t0          j        t4          j        t4          j        j        j        f          rt?                    S t	          t           t@          j!        f          rt%                    S t	          tD          j#                  rtI                    S t	          tD          j%                  rt	          j        t           t@          j!        f          rwtM          j        j'        j(                  k    sJ t                               j                  }	 |)                     j'        j(                  S # tT          $ r Y nw xY wt	          t4          j+        j,        j-                  rt]                    S t	          t4          j/        j0        j1        t4          j/        j0        j2        f          rt                    S tg          j4                  rtg                    S tk          j6                  rtk                    S tn          j8        u rts                    S t	          tt          j;                  rty                    S t	          t4          j=        j>        j?        j@                  r!t          j        t                              S t	          t          t4          jB        jC                            r)t4          j=        j>        jD        E                              S t	          tD          jF                  rt                    S t                    rG fdt          t                              D             }t          |t                              S t	          t4          jK                  rIjL        jM         j        jN        v r1 j        jN        jL        jM                 }t          j         |          S t          d|jQ         d|jR         d| g t          jT                   d S )	NTr  c           	      b    g | ]+}t                               t          |                    ,S r   )r  r  r  )r:  r  r*  rE  s     r   r\  z,SourcelessBuilder.create.<locals>.<listcomp>I  sC        "((WUD-A-ABB  r   )r  z%Unexpected type in sourceless builderr  z3SourcelessBuilder.create does not know how to wrap r  )UrU  r  _type_handlersr1  r  r   r  _HAS_DEFAULT_FACTORY_CLASSr   r   r  r  rU  r1   rd  re  r+  rf  r   is_supported_new_methodr  r   rg   rK  rD  rE  r   rF  rG  rH  rI  r   abcABCMetar  r  r   r_  r  r  r   var_getattrr^  r2  graph_moduleGraphModuler   r~  r  r  LeafSpecr   r  r   r  rN  r  r   rx  ry  r   r  	variableslazyLazySymNodeFormatStringr/  rj  flex_attention_backwardhigher_order_ops&FlexAttentionBackwardHighOrderVariableGenericAliasr   rj   rp   r   r
   rr  r  r  r   r5   r   r   r.   
DYNAMO_BUG)r*  rE  
value_typefast_handlerr  
cls_obj_vtr+  r  s   ``      r   r  zSourcelessBuilder.create  s0   %[[
(7;;JGG 	+<E***e_-- I	5L{EFF F	5,U333(// D	5#*5111e__ B	5!<U!C!C!O.u55 C>B	;5;.u55e<<<e__ >	5!9!Q"
 "
 >	5 >+-en==enMMC"3	222#E** 8	5,;%e,,U333DIu0%(2E2ST
 
 6	5  &&&ck233 2	5+E222u677 0	5(///ue.//.	5 5>D#++>??	.	5 5>5>+BCCuLLLL*11"enEEJ!--b%.2IJJJ&   ux4@AA !	50777EK'0%+2E2NO
 
 	5 -U333+E22 	5$U+++.u55 	5%e,,,io%%)%000rz** 	5'...u}6;STT 	5#*3u::666tE$;$STTUU 	5=*;bb   u122 	5!%(((5!! 	5    -d5kk::  F &fUDDDDuel++	5
29#:::I+EJO<E")"e444;!,HHz/FHHZjZZ1%01		
 	
 	
 	
 	
 	
s   6K 
K$#K$c                 X    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11&U3333r   c                     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        j        <   d | t          j        j        j        <   dd}t4          j        D ]}|| |<   | S )Nc                      t          |          S r  )r   r*  rE  s     r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>e  s    ,<U,C,C r   c                 Z     t           fd|D             t                                S )Nc                 (    g | ]} |          S r   r   r:  r  r  r*  s     r   r\  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>g  #    ***qVVB]]***r   r  )r   r   r*  rE  r  s   ` r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>f  s:    +*****E***:J:L:L+
 +
 +
 r   c                      t           fd|                                D             t          |          t                                S )Nc                 D    i | ]\  }} |           |          S r   r   )r:  r  r  r  r*  s      r   
<dictcomp>zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<dictcomp>j  s3    DDDdaVVB]]FF2qMMDDDr   r  )r   r  rU  r   r  s   ` r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>i  sL    +<DDDDDekkmmDDDKK*,,,
 ,
 ,
 r   c                 Z     t           fd|D             t                                S )Nc                 (    g | ]} |          S r   r   r  s     r   r\  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>o  r  r   r  )r   r   r  s   ` r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>n  s:    <*****E***:J:L:L,
 ,
 ,
 r   c                 >     t           fd|D                       S )Nc                 (    g | ]} |          S r   r   r  s     r   r\  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>r  r  r   )r   r  s   ` r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>q  s,    M*****E***-
 -
 r   c                 >     t           fd|D                       S )Nc                 (    g | ]} |          S r   r   r  s     r   r\  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>u  r  r   )r   r  s   ` r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>t  s,    *****E***2
 2
 r   c                     t                      S r  )r   r  s     r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>z  s    4G4I4I r   c                      t          |          S r  )r   r  s     r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>{  s    7KE7R7R r   c                 <    t          |t                                S Nr  )r   r   r  s     r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>}  s"    ;Q!1!3!3<
 <
 <
 r   c                 <    t          |t                                S r  )r   r   r  s     r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s"    :%5%7%7   r   c                 <    t          |t                                S r  r   r   r  s     r   r)  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  "    7%5%7%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   r*  r   c                     |S r  r   r  s     r   passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthrough  s    Lr   )r*  r   )r  r  r_   r@  r  rm  rl  r   rp  rn  r9  r%   r&   r  r  r  r  r  rH  ru  rv  distributionsconstraints_Real	_Interval
Constraintr   all_subclasses)handlersr   r  rd  r  s       @r   make_type_handlersz$SourcelessBuilder.make_type_handlers`  s   ")& 	D 	DACCHQKK
 
 
 

 
 
 


 
 
 

 
 
 
 
  
  
  
 -5TN()#+D> #+D> "I"I%R%R!"*
 *
%&  	!-BC  	$067  	$0:;  	$0;<	 	 	 	 '5 	( 	(C'HSMMr   r1  )
r   r   r   r  r$  r  r   r  r  r  r   r   r   r  r    s        
 
? ? ? ? U
* U
o U
 U
 U
 \U
n 4 4 \4 : : \: : :r   r  c                   :    e Zd ZdZddZedddefd            ZdS )	"SourcelessUserDefinedObjectBuilderz
    SourceLessBuilder does not return a UserDefinedObjectVariable, but in some
    cases it might be ok to return UserDefinedObjects. In such case, use this
    builder.
    r!  Nc                      t          d          )Nz/Use SourcelessUserDefinedObjectBuilder.create()r  r  s    r   r$  z+SourcelessUserDefinedObjectBuilder.__init__  s    NOOOr   r*  r   c                 6   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   rg  r<  r   r   )r*  rE  r  s      r   r  z)SourcelessUserDefinedObjectBuilder.create  s    %[[
j.11 	V)%?O?Q?QRRRRux// 	V0%5%7%7    -UBRBTBTUUUUr   r1  )r   r   r   r  r$  r  r   r  r   r   r   r  r    sm         P P P P 	V* 	Vo 	V 	V 	V \	V 	V 	Vr   r  r  r  )F(e  r  r  rn  rz  r  r  rD  rN  r7  	itertoolsrL  r  r  r  rx  r  r  r  r{  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   rS  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  rm  DimListr   r   	dataclassr   r   rC  varsr  r=  r  r  r@  r>  rg  r<  r;  r<  r8  r9  r@  r  r  rf  re  r  r  r  r  r^  r  r  r  r  r/  r  r&  r  rM  r  r9  r:  r;  r?  rN  rk  rd  r  r  r  r  r   r   r   <module>r     s    & 


                            				 



       * * * * * * L L L L L L L L L L L L L L L L         ; ; ; ; ; ;            ) ( ( ( ( ( 9 9 9 9 9 9 < < < < < < * * * * * * R R R R R R R R R R A A A A A A A A 1 1 1 1 1 1 ? ? ? ? ? ? A A A A A A
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 J I I I I I I I ; ; ; ; ; ;        8 7 7 7 7 7 * * * * * * T T T T T T T T T T T T T T ? ? ? ? ? ? V V V V V V V V V V A A A A A A A A A A              ' & & & & &                                                           <! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !D                % $ $ $ $ $ 4 4 4 4 4 4 4 4	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                                                          ? > > > > > # # # # # # % % % % % %
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                               0         
 ) ( ( ( ( ( 4 4 4 4 4 4 $ $ $ $ $ $                                   
                               	BBB  E//////DDDDDD g!!N44'  
 " " "
	 	 	 	 	 	 	 	 99 99 99 99 99 99 99 99x< < < < <H < < <, &/Y / /Y--/// / / & & IcN    +.#%% s3x / / /
 "'!> $)HO$D !@" @" @" @" @" @" @" @"FD     (  & 26    $  p >B
 
 
 
, 26= = = =D >B   0@
 @
 @
F  :  (( ( (,

 

 

 (, (3s8$ + + +.2 hsm 2 2 2SX    (
3 
4 
 
 
 
'*/4|   2 )- 8CH% , , ,/3 x} 3 3 3c#h    (
C 
D 
 
 
 
  .3G GG G G GX IMh h hv&h37h h h hVh h h h h h h hV $5#G#G#I#I   V V V V V V V V V Vs   L   	L,+L,