
    9i                    R   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mZ ddl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# 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/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZBmCZC ddlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZM ddlNmOZOmPZP ddlQmRZR ddlSmTZTmUZU ddlVmWZW ddlXmYZY ddlZm[Z[m\Z\m]Z]m^Z^m_Z_ ddl`maZa ddlbmcZcmdZdmeZe ddlfmgZgmhZhmiZi ddljmkZkmlZlmmZmmnZnmoZo dd lpmqZq dd!lrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ dd"lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d#d$lmZmZmZmZmZmZ d#d%lmZ d#d&lmZmZ d#d'lmZmZmZmZmZ d#d(lmZmZmZmZmZmZ d#d)lmZmZmZmZmZ d#d*lmZmZmZmZmZmZmZmZmZmZmZmZmZ d#d+lmZmZ d#d,lmZ d#d-lmZ d#d.lmZmZmZmZmZmZmZmZmZ d#d/lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z mZmZmZmZ d#d0lmZmZmZ d#d1l	m
Z
 d#d2lmZmZ d#d3lmZ d#d4lmZmZmZ d#d5lmZmZmZmZmZmZ d#d6lmZmZmZmZ d#d7lm Z m!Z!m"Z" d#d8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l0Z1n# e2$ r dZ1Y nw xY werdd9l3m4Z4 dd:l5m6Z6  e
j7        e8          Z9ej:        ;                    e8d;          Z<e=Z>d< Z? G d= d>          Z@ejA         G d? d@                      ZB G dA dBeB          ZC eDdC  eEe	          F                                D                       ZGeDeH         eIdD<    eJ            ZKeJeH         eIdE<   ejL        jM        jN        ZOejL        jM        jP        ZQ G dF dG          ZRdH ZSdI ZT	 dmdJefdKZUdL ZV	 dmdMZW	 dndNZX	 dmdOZYdP ZZdQ Z[dR Z\dS Z]dT Z^da_eeJe`                  eIdU<   daaeeH         eIdV<   dJeJe`         fdWZbdXe`dJecfdYZddZd[d\e`d]eje        dJemfd^ZfdageeJe`                  eId_<   daheeH         eId`<   dJeJe`         fdaZidXe`dJecfdbZj	 dodJeKfddZkddedfee         dgecfdhZl G di dj          Zmemn                                em_o         G dk dl          ZpdS )paq  
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)CallableMutableMapping)Any
NamedTupleOptionalTYPE_CHECKINGUnion)SymInt)enable_python_dispatcher)get_external_object_by_indexregister_user_object)get_metrics_contextis_int_specialization_caseis_torch_symset_feature_use)TracingContext)
flat_apply)call_torchbind)is_opaque_typeis_opaque_value_type)HigherOrderOperator)
FakeTensoris_fakemaybe_get_fake_mode)is_sparse_any	safe_grad)justknobs_check)BackwardState)normalize_source_name)_DynamicScalar
DynamicInt)	_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)GuardBuilderinstall_guardmake_dupe_guard)auto_dynamic
auto_unsetFrameStateSizeEntryInferStrideprocess_automatic_dynamic)SideEffects)AttrProxySource
AttrSourceCallMethodItemSourceChainedSourceConstDictKeySourceConvertIntSourceDictGetItemSourceDictSubclassGetItemSourceDynamicScalarSource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NullContextVariablePreserveVersionContextVariable)ConstDictVariableDefaultDictVariableDictKeySetVariableFrozensetVariableMappingProxyVariableSetVariable)DeviceMeshVariablePlacementClassVariablePlacementVariableProcessGroupVariableWorldMetaClassVariable)BuiltinMethodVariableCollectionsNamedTupleFunction!CollectiveFunctionRewriteVariable'CreateTMADescriptorExperimentalVariable!CreateTMADescriptorStableVariableFunctoolsPartialVariableFunctoolsWrapsVariableSysFunctionVariableTracebackVariableTritonKernelVariableUserFunctionVariableUserMethodVariableWrapperUserFunctionVariable)"LocalMapWrappedHigherOrderVariable TorchHigherOrderOperatorVariable)ItertoolsVariable)LazyVariableTracker)	BaseListVariableListIteratorVariableListVariableNamedTupleVariableRangeVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradEngineVariableAutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableConstantLikeVariableDebuggingVariableDelayGraphBreakVariableGetAttrVariableGetSetDescriptorVariableLambdaVariableLoggingLoggerVariableMethodWrapperVariableNumpyDTypeVariableNumpyVariablePythonModuleVariableRandomClassVariableRandomVariableSavedTensorBoxTorchVersionVariableTypingVariableWeakRefVariable)FSDPManagedNNModuleVariable$UnspecializedBuiltinNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)OpaqueObjectClassVariableTorchScriptObjectVariableSDPAParamsVariable)EventVariableStreamContextVariableStreamVariable)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    R/var/www/icac/venv/lib/python3.11/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr   =  s    		%	%en&>&O	P	P " "q&!!" " " " " " " " " " " " " " " " " "s   AAAc                       e Zd ZdS )_missingN__name__
__module____qualname__     r   r   r   B  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<   d	 Z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                 >    t                               | ||           d S N)object__setattr__)selfnamevalues      r   r  zGraphArg.__setattr__j  s"    
 	4u-----r  c                 x    t          | j        t                    r|                                 }|J |S | j        S r  )
isinstancer  r1   )r  rs     r   examplezGraphArg.exampleq  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   Tensorr1   r   r
  r  s    r   __post_init__zGraphArg.__post_init__z  sP    dmU\22 	-)$-88DM4+,,,,,	- 	-,,r  codegenr   c                 &     || j                    d S r  r  r  r  s     r   reconstructzGraphArg.reconstruct  s    r  c                 "    d | _         d | _        d S r  )r  r  r  s    r   erasezGraphArg.erase  s    "&r  c                 6    | j         j        |j         j        k    S r  )r  r  )r  others     r   __eq__zGraphArg.__eq__  s    {5<#444r  r  r   )r   r  r  r]   __annotations__r	   r1   r   r
   boolr   _subclassesr
  r   r  r  r  r  propertyr  r  r   r"  r%  r  r  r   r  r  F  s         NNN M5</0000" %+7BCCCC It 26.555. . . ! ! X!- - -
   ' ' '5 5 5 5 5r  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   r0  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  r0  r   __classcell__r1  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>rH    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                                                       || _        || _        |j        | _        d S )NzRConsider SourcelessBuilder for ephemeral objects, usually objects created locally.zExpected active TracingContext)r   try_getr/  r0  r6  r  r  )r  r6  r  r1  s      r   r0  zVariableBuilder.__init__  sm    
 !!` "!! %''335U333K			r  c                 4   || j         j        j        v r| j         j        j        |         }t          | j        |j                  }|r|                     |           t          |t          j        j	                  r/t          |t                    r|                    | j                   |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                 t    t          |           pt          | t                    ot          |t                    S r  )r   r  r    r   )r  vts     r   _is_deduplicable_sym_variablez?VariableBuilder.__call__.<locals>._is_deduplicable_sym_variable  s5     U##Hz%'H'H2R112r  )r6  r7  side_effectsr>   r  install_guardsr  r   nnModuler   set_nn_module_stack_sourcevariable_tracker_cachelookup_wrap_can_lift_attrs_to_inputsru   track_object_existingadd)r  r  side_effect_result	dup_guard	cached_vtrQ  rR  s          r   __call__zVariableBuilder.__call__  s   DGN///!%!<U!C'5G5NOOI /##I...%11 
Kj"$A7 7 
K #==dkJJJ%%GN9@@TT	 	ZZ9BI	2 	2 	2 ..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  rQ  s     r   r[  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)rF  guardr  s     r   
<listcomp>z2VariableBuilder.install_guards.<locals>.<listcomp>  s'    @@@6$$U++@@@r  skipr   )re  NotImplementedErrorr=   )r  guardstmpr  s      @r   rT  zVariableBuilder.install_guards  sl    ""	@@@@@@@CC" 	 	 	44	s####	s   & 
44c                 @    |                      t          j                  S r  )_type_dispatch_implr3   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  rU  	Parameterr)  r   functional_tensorFunctionalTensorwrap_tensortuplelistrx   collectionsdequeSizewrap_listliker}   wrap_tuple_iteratorrz   wrap_range_iteratorslicerangewrap_slice_rangerf   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  )rr  rq  entriesresulttsfnr   s          r   rp  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  r  c                 ^    |                      t          j                   t          |          S r  )rT  r<   ID_MATCHr   r  r  s     r   r  z"VariableBuilder.wrap_regex_pattern3  s'    L1222#E***r  c                     |                      t          j                   t          j        | j        || j                  S Nr  )rT  r<   
TYPE_MATCHr   buildr6  r  r  s     r   r  zVariableBuilder.wrap_weakref8  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)r;   r  s     r   r  z%VariableBuilder.wrap_removable_handle<  s4    
 	Im	
 	
 	
 	
 	
 	
r  c                 n    |                      t          j                   t          |d| j                  S )N_torchdynamo_inliner  )rT  r<   r  r   r  r  s     r   r  z!VariableBuilder.wrap_jit_functionI  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rF  ks     r   rH  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>T  s.      FF1(3A66FFFFFFr  znon-const keys in mappingproxynon-const keys: c                 :    g | ]}t          j        |          |S r  r  r  s     r   rj  z6VariableBuilder.wrap_mapping_proxy.<locals>.<listcomp>Y  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   createrO   re  r   )r  vkey
source_keysource_value	res_valuer  s         r   build_key_valuez;VariableBuilder.wrap_mapping_proxy.<locals>.build_key_value`  sM    ")!,,CJ():):JGGL+21lCCI	>!r  c              3   6   K   | ]\  }} ||          V  d S r  r  )rF  r  r  r  s      r   rH  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>i  s3      EEtq!__Q**EEEEEEr  r  )rT  r<   r  MAPPING_KEYS_CHECKallr;   keysdictitemsr   r   r  r6  r7  rS  track_mutable)r  r  	all_constr  dict_vtr  r  s   `     @r   r  z"VariableBuilder.wrap_mapping_proxyO  s)   L3444 	L;<<<FFFFFFF	 	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 )Nr2   )comptimec                     t                      S r  )r   r  s     r   r5  z.VariableBuilder._id_dispatch.<locals>.<lambda>x  s    +;+=+= r  c                 n    t          t          fd| j        i|                     t          j                  S )Nr  )r   _dataclasses_fields_lambdar  rT  r<   CLOSURE_MATCHr  s     r   r5  z.VariableBuilder._id_dispatch.<locals>.<lambda>{  s=    N.% %;% )),*DEE% % r  c                     t                      S r  )r   r  s     r   r5  z.VariableBuilder._id_dispatch.<locals>.<lambda>  s    4H4J4J r  )	r  dataclassesfieldsr   __version__r  ry  rz  rE  )rr  r  r  r  r  r  r   s          r   _id_dispatchzVariableBuilder._id_dispatchp  s    
 	(''''' ==>"   J JK
  	# 	#FB%b5$-88CRRre # # "r!uu# r  c                 `   ;<= 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                    r #                    tH          j%                    fdtM          t%                              D             }tO          |t%                     j(                  } j)        j*        j+        ,                    |          S t[          t\          t^          j0        t^          j1        f          r] #                    tH          j2                   tg          d D                       <<s) j)        j*        j4        5                     j(                   < fd=t]          =fdtm          to                              D                       }t[          t^          j0                  r\tq           j(        d          }ts          |t%                     tu           j)        |          j;                   j(                  }n$ty          |t%                     j(                  } j)        j*        j+        =                    |          S t+          t,          j        j>                  r ?                              S t          jA                  r B                              S t+          t,          jC        jD                  r=t           j(                  } j)        j*        j+        ,                    |           |S t[          t                    rt          d D                       r t          ddddgt          jJ                    #                    tH          j2                    #                    tH          j%                   t                    ; fd tm          ;          D             }t          | j(                  } j)        j*        j+        ,                    |          S t[          t                    r\tg          d! D                       rC fd"D             } #                    tH          jN                   t          | j(                  S t+          t          jQ        t,          jR        t,          jS        jT        jU        f          r5 #                    tH          jN                   t           j(        #          S t          jX                  r5 #                    tH          jY                   t           j(                  S t+          t          j[                  r5 #                    tH          j2                   t           j(                  S t                    rt           j(                  S t                    rt           j(                  S t          jb                  rt          jc         j(                  S t+          t          je                  rtq           f                                d$          } tu           j)        |          jg                  }g }tq           f                                d%          }tm          jh                  D ]D\  }}|i                     tu           j)        t          ||                    |                     Ei }tq           f                                d&          }jk        l                                D ]j\  }}t          jA        |          s"t          d'd(| d)g t          jm                    tu           j)        t          ||                    |          ||<   kt           f                                p                    tH          j2                  |p                    tH          jq                  |p                    tH          j%                             t          |||          S t                    r5 #                    tH          jN                   t           j(                  S t          At+          t          jv                  r' w                    t          jx                            S t          jz                  rJt          sJ t[          t          j|                  rYt          j~        j                  r?t          tq           j(        d*          p                    tH          j                             nt          j                  r  #                    tH          j                   nt          j~                  r  #                    tH          j                   nOt                    r  #                    tH          jN                   n #                    tH          j2                   t	           j(                  S t          j                  r6 #                    tH          jN                   t           j(                  S t          j                  rt+          t          j                  ra #                    tH          j2                   tq           j(        d+          }t          |p                    tH          jN                             n #                    tH          jN                   t           j(                  S t          j                  rA #                    tH          j                   t          j         j)         j(                  S t[          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(        p                    tH          j2                  g} t+          |t(                    rtq           j(        d,          }!| i                    |!p                    tH          j%                             tm          |          D ]D\  }}|i                     tu           j)        t          |!|                    |                     Et          |    j)        j*        j+        ,                    t+           j(        t-          |          -                    S t+          t          j|                  rt[          t/          d.d           t,          j        j        j                  rt/          d/d0          d1k    rt/          j        d1d           k    rt          tq           f                                d*          p                    tH          j                             t3          t!          j        tq           j(        d.2                    d1          S t+          t,          jS        j                  r6 #                    tH          jN                   t7           j(                  S t,          j        j        j        j        u r2 #                    tH          j                   tA           fd3          S t+          |          rtC          j                  S t+          |          rtG          j                  S t                    rgt          j                  St          j                  rd4 j)        j*        _        t          j                                       j(                  S t          r/t+          t          j                  r                               S t+          tV                    rat,          j        j        u rt          d5d0d6g             #                    tH          j2                   t]          j         j(                  S t+          t,          j        j                  rr #                    tH          jN                   tq           j(        d7          }" tu           j)        |"          j                  }#tg          j         j)        |#          S t+          t,          j                  r #                    tH          j2                   tk           j(                  }$ j)        j*                            d8tn          |$fi           }%tq          |%j                   tu          |% j(        |$9          } j)        j*        j+        ,                    |          S t+          t,          jS        j                  r@ #                    tH          j2                   ty          j         j)         j(                  S t+          t,          jT        j        j                  r/ #                    tH          jN                   t                    S t+          t,          j                  r #                    tH          j2                   tk           j(                  }$ j)        j*                            d8tn          |$fi           }&tq          |&j                   t          |&|$ j(                  S t[          t          j                  rKt          j        d:d           5 #                    tH          j2                   t           j(                  S t          j                  r[ #                    tH          j2                   t           j(                  } j)        j*        j+        ,                    |          S t+          t,          j        j                  rP #                    tH          jN                   t           j(                   _(        t           j(                  S t+          t,          j                  r/ #                    tH          j                   t                    S t          j                  rt           j(                  S t          j                  r6 #                    tH          jN                   t           j(                  S t          j                  r6 #                    tH          j                   t           j(                  S t          j                  r6 #                    tH          jN                   t           j(                  S t          j                  r6 #                    tH          j                   t           j(                  S t)                    t          v rMt)                    t          vr6 #                    tH          j                   t           j(                  S t+          t                    rt+          t                    }'t           j(        |'          }(t)                     j)        j*        j        j        v r* j)        j*        j        j        t)                             })nc j)        j*        j                            j        |(t          j        ;          }* j)        j*        j                            |*j        |(<          }) j)        j*        j                            t          j        d=d> j                  t%          |)          |)|(          }+t          |(|)d?d d?|)@          |+j        j        dA<   |)j        j        },t+          |,t          j                  sJ |, dB             j)        j*        j        i                    t          |)|(d                      t          j         j)        |+|)          S t                    rt+          t,          j                  r j(        nt           j(                  }(j                                        rK j)        j*        j                            t          j        j                  |(t          j        C          }-n]t+          t,          j                  r$ j)        j*        j                                        }-nt          dDd0dEg t          jJ                    j)        j*        j                            t          j        d=d> j                  t%          |-          |-|(          }+t          |(|-d?d d?|-@          |+j        j        dA<   |-j        j        },t+          |,t          j                  sJ |, dB             j)        j*        j        i                    t          |-|(d                      t+          t,          j                  r|-n|-dFk    }.t          |+|.          S t+          ||f          r8 #                    tH          jN                   t          d d  j(                  S |	u rt          dFG          S |
u rt          dG          S |j        u rt                      S t+          t,          j        j        j                  rR #                    tH          jN                   t	          j        j        j        j        g j(        H          S t          j
                  r~t          j                  r  #                    tH          j                   n3t          j~                  r #                    tH          j                   t           j(                  S t          j        dId?          r7 #                    tH          j2                   t          dJ j(                  S t                    r7 #                    tH          j2                   t          dK j(                  S t          j        u rt           j(                  S t           j        u s"t           j        dLk    r't           j        u rt)           j(                  S t+                    rMt          j        dMd?          r7 #                    tH          j2                   t          dM j(                  S t          j        u r6 #                    tH          jN                   t/           j(                  S t^          j        u r6 #                    tH          jN                   t3           j(                  S t+          t          j                  rLt7          j                  r6 #                    tH          jN                   t7           j(                  S t;                    rot<          j        t<          j         fv rQ #                    tH          jN                   t3          tC          t<           j(                  j"                  S t+                    r^tG                    \  }/|/tq           j(        |/           _(        t          j$                                       j(                  S tJ          j&        u r5 #                    tH          jN                   tO           j(                  S t[          tJ          j&                  rstQ          j)                  r] #                    tH          j2                   tQ           j(                  } j)        j*        j+        =                    |           |S t+          t          j*        tV          j,        f          r^ #                    tH          j-                   t]           j(                  } j)        j*        j+        ,                    |           |S t+          t          j|                  rt+          j        t,          j        j>        t,          j/        j0        j1        f          rv tu           j)        tq           j(        d.                    j                  }0|0rt+          |0td                    s
J dN            tg          j        |0 j(                  S t+          t          j4                  rtk                    S t+          t          j6                  rto                    S tq          t%                    t$                    rFtq          tr                    r/ #                    tH          jN                   tu                    S tq          t%                    t$                    rt,          j/        j;        j<        t,          j        j=        t,          j        j>        fv r/t          j$                                       j(                  S t,          j        j?        u r: #                    tH          j                   t          jA         j)                  S tq          t,          j                  rMt,          j        ur?j        t,          j        j        u r't                    st           j(                  S t           j(                  s #                    tH          j                   t                    rt           j(                  S t           j(                  S t          j
        t%                              rddOl(mI}1mJ}2 t,          jK        jL        M                              r j)        j*        j                            t          j        d=d> j                  t%                     j(                  }3t           j(        d?d d?          |3j        j        dA<   t          j        |3 j(                  S t          t%                              rzt          t%                              r= #                    tH          jO                   t          j         j(                  S  #                    tH          j2                   nt          dP          s Q                              S t          jS         tu           j)         |2 j(                            T                                U                                                     t          jS         tu           j)         |1 j(                            V                                                     t,          jK        jL        W                     j)        j*        jX                  }4 j)        j*        j                            t          j        d=d> j                  t%                    |4 j(                  }3t           j(        d?d d?|4          |3j        j        dA<   t          j        |3|4 j(                  S t+          t\          t^          j1        f          rYt%                    jY        t\          jY        u r6 #                    tH          j2                    #                    tH          j%                    j)        j*        j4        5                     j(                    fdQ=t]          =fdRtm          to                              D                       }ty          |t+          t^          j1                  rt^          j1        nt\          t                       j(        S          }5d4|5_[        t          |5 j(        T          } j)        j*        j+        ,                    |          S t+          t(                    r׉ #                    tH          j2                    #                    tH          j%                    fdUt          t(          ^                                        D             }t          | j(        t                      V          }6t          |6 j(        W          } j)        j*        j+        ,                    |          S t+          t                    r։ #                    tH          j2                    #                    tH          j%                    fdXt          t          ^                                        D             }t          | j(        t                      V          }7t          |7 j(        Y          } j)        j*        j+        ,                    |          S t+          t          t          f          r #                    tH          j2                    #                    tH          j%                   t          t\          c                                        ;; fdZt          t          ^                    ;                    D             }t+          t                    rt          nt          }8 |8| j(        t                      V          }9t          |9 j(        [          } j)        j*        j+        ,                    |          S tq          t%                    t                    r[ #                    tH          j2                   t           j(                  } j)        j*        j+        ,                    |          S t                    rf #                    tH          j2                   t          j         j)         j(                  } j)        j*        j+        ,                    |          S t+          t                    rtg          d\ D                       r fd]D             }t           f                                p                    tH          j%                   f                                p                    tH          j                             t          | j(                  S t          d^d_d` D              dadbg           d S t          j                  r`ddcllmm}: jn        jn        j        |:jo        k    r p                    jq                  S jn        j        |:j        k    r{t          s                    dd j(        j        t          j                    p                    jq        t          j        t          t          d?e          f          g          S jn        j        |:jv        k    r\t          s                    dd j(        j        t          j                    p                    jq        t          j        h          S t'          dijn                    Q                              S )jNr   )
has_triton has_triton_experimental_host_tma%has_triton_tensor_descriptor_host_tmar2   )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  getattrrF   r  )rF  r  r  r  s     r   rj  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   rH  z(VariableBuilder._wrap.<locals>.<genexpr>  s.      JJq,7::JJJJJJr  c                     	                                 }rt          j        |          }|}n%t          ||           }t	          j        ||          }t          ||          }t	          j        ||          }||fS r  )re  r   r  rI   r   rK   )
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  rF  r  r  r  r  s       r   rH  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  rF  xs     r   rH  z(VariableBuilder._wrap.<locals>.<genexpr>0  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  rY   r  )rF  r  r  r  s      r   rj  z)VariableBuilder._wrap.<locals>.<listcomp>G  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)rc  r  BuiltinMethodTyper  r   r  _pytreeBUILTIN_TYPESr  s     r   rH  z(VariableBuilder._wrap.<locals>.<genexpr>O  si       	.
 	.
  aE33O8O 7 U[(66	.
 	.
 	.
 	.
 	.
 	.
r  c                 P    g | ]"}t                               j        |          #S r  SourcelessBuilderr  r6  rF  r  r  s     r   rj  z)VariableBuilder._wrap.<locals>.<listcomp>]  s,    IIIa&--dgq99IIIr  r  r  funcargskeywordsz,functools.partial() with non-literal keywordznon-literal keyword: z3functools.partial() expects literal/string keywords__func__dtypesaved_tensors)r  r  __self__r   r  apply)rG  c                      t          t          j        j        j        j                                       j         j        j        j	        
                                fi           S r  )r   r   _dynamoexternal_utilsFakeCompiledAutogradEngineexec_final_callbacksr:  r6  r7  rS  get_ca_final_callbacks_varr  s   r   r5  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  user_object_indexenter_resultr  dynamic_dim)hintr  [^a-zA-Z0-9]+rA  F)r  r  grapharg is not a basic Symbol.)r  z!Attempted to wrap unbacked SymIntz+Unbacked SymInt input is not supported yet.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  )re  rI   r   r  rL   )	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   rH  z(VariableBuilder._wrap.<locals>.<genexpr>  r  r  )r  mutation_typer  )r  r  c           	          g | ]Q}t          j        t                              |          t	                                          |                     RS r  )r   r  ry  __getitem__rO   re  rF  r  r  r  s     r   rj  z)VariableBuilder._wrap.<locals>.<listcomp>'  sg       
 	 $*%%eQ//():):A>>    r  )r  r&  )tuple_vtr  c           	          g | ]Q}t          j        t                              |          t	                                          |                     RS r  )r   r  rz  r(  rW   re  r)  s     r   rj  z)VariableBuilder._wrap.<locals>.<listcomp><  sg       
 	 $*$$UA..,T__->->BB    r  )list_vtr  c           	          g | ]Q}t          j        t                              |          t	                                          |                     RS r  )r   r  rz  r(  rY   re  )rF  r  Lr  s     r   rj  z)VariableBuilder._wrap.<locals>.<listcomp>M  sg       
 	 $*$$Q**:4??;L;LaPP    r  )set_vtr  c              3   >   K   | ]}t          j        |          V  d S r  r  r  s     r   rH  z(VariableBuilder._wrap.<locals>.<genexpr>c  s.      AAa#.q11AAAAAAr  c                 P    g | ]"}t                               j        |          #S r  r  r  s     r   rj  z)VariableBuilder._wrap.<locals>.<listcomp>i  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   rj  z)VariableBuilder._wrap.<locals>.<listcomp>r  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  r7  zUndefined dynamism (w  torch.utils._tritonr  r  r  
decoratorsr  r  triton.runtime.autotunerr  triton.runtime.jitr  $triton.tools.experimental_descriptorr  r  triton.tools.tensor_descriptorr  rs  getrc  r  rE  r  r   r  rU  	parameterUninitializedBufferUninitializedParameterr-   r3   nontraceable_tensor_subclasses__torch_dispatch__r.   rx  rq   rT  r<   SEQUENCE_LENGTHrw   r   r  r6  r7  rS  r\  rv   r  r{  defaultdictOrderedDictr  r  guard_on_key_orderr]  	enumerateri   rF   r   rL  r  r   r  rV  wrap_moduler   r  r  	overridesTorchFunctionModer   setanyr;   r4   SUPPORTABLErz  r   	frozensetr  r   enumEnumDispatchKey_C
_functorchTransformTyper   r   is_reorderable_logging_functionBUILTIN_MATCHloggingLoggerr   rt   rc   ro   rd   r   should_wrap_in_hopr  	functoolspartialre  r  r  r  rO   r  r  
USER_ERRORrK   r=   rh  DICT_KEYS_MATCHr   rs   r   r  genericr  asarrayr7   is_numpyr  
MethodTyperC  
isfunctionr  r  rD  CLASS_MATCHcallabler   is_numpy_dtyper   is_numpy_type_infoiinfor   r   can_rewriter  autogradfunctionFunctionMetar   FunctionCtxr  RuntimeErrorry  r   r   r  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_subgraphr   makecudaStreamContextr  r   Streamr   create_proxyr   r{   noder   _SDPAParamsr   pyfunctorchFuncTorchInterpreterr   Eventr   
contextlibnullcontextgetattr_staticr   r   is_matching_objectoptim	Optimizerr[   r   DispatchKeySetDISPATCH_KEY_SET_MATCHr   r   is_group_member_typer   is_process_groupr   is_device_meshEQUALS_MATCHr   is_placement_typer   is_placementrI  rJ  r   r    r!   rM   root_tracerdynamic_scalar_nodes	shape_envcreate_unspecified_symbolrealr$   DYNAMICcreate_symintnodecreate_graph_inputr  subr  r  metaexprsympySymboltracked_fakesr*   r   r   r
   rJ   has_hint$create_unspecified_symint_and_symbolintr  SymBoolcreate_unbacked_symintr   r   r  r   ampautocast_modeautocastr   device
fast_dtype_enabled_cache_enabledr   is_matching_clsr   rp   	tracebackclear_framesr   sysexc_infoversion_info	exceptionr   rn   wrapsr   
namedtupler   r  r   is_supported_builtin_methodrm   floatfromhexhexr   r   r   rY  randomRandomr   r   is_supported_random_obj
ModuleTyper6   DummyModuleMODULE_MATCHr   r  r  TreeSpecr   r   GetSetDescriptorTyper   MethodWrapperTyper   
issubclassBaseExceptionr   r  BackwardHookru  Buffer _unsafe_preserve_version_counterr   constructorr/   r   rR   r   r   r   r   r!  r"  _libraryfake_class_registrytracing_with_realr   CONSTANT_MATCHr   wrap_user_definedr   realize_all_typequalified_namer#  maybe_to_fake_obj	fake_mode__new__r   should_reconstruct_allr   r  __len__r   r   r   r   fromkeysr   r   r   rl   r   rg   r   r   torch.export.dynamic_shapesr3  r7  STATICwrap_symintvallogdebugr)   r%   AUTO)>r  r  r  r  r  r  r  r  r  r  r  r  type_dispatchid_dispatchr7  r  factory_sourcevarr  func_srcfunc_objr  args_sourcer  argr  keywords_sourcer  r  	dt_sourceactual_saved_tensorsr  rm  saved_tensors_sourcestream_source
stream_varindexstream_proxyevent_proxyis_intr  r  symsym_node_proxysym_expr
new_syminttracing_symint	attr_nameself_objr!  r"  proxyfake_script_objr  r*  r,  
set_vt_clsr/  r3  r.  r  r  s>   ``                                                         @@@r   rZ  zVariableBuilder._wrap  sD.   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
	
 	
 	
 	
 	
 	
 	
 	

 :<< 		::::::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 ''... }	1 <===    
 .d5kk::  F ($u++dk  F 7>.DDUFSSSED+"9;;RSTT p	1 7888JJEJJJJJI  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// m	1##E***(// k	1$$U+++u@AA i	1+E$+FFFCGN'==eSIIIJE3 e	1>>>>>>> BI>
 G*6     7888 <=== UA    &aLL	  E !t{;;;F7>.DDUFSSSE9%% E	1# 	.
 	.
 	.
 	.
 	.
 	+
 	+
 E	1 JIII5IIIE 5666$U4;????DIu0%(2E2ST
 
 t	1  5666eDK@@@@>uEE o	1  :;;;$U4;????w~.. j	1 7888(t{CCCC '' g	1,DK@@@@&& e	11EEEE/B5II c	15;4;OOOOy011 a	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 B	1 5666!{    ^
5"* = =^**2:e+<+<===!%(( x	1IIIeU-.. =%en55 !"4;
;;FF(6   
 '' =##L$<====#E** =##L$>????% =##L$9::::##L$;<<< t{;;;;'.. e	1 5666%eDK@@@@+E22 b	1%** ;##L$;<<<&t{G<<	i22<3HIIJJJJ##L$9:::'dkBBBB.:5AA Y	1 :;;;4;{   
 E5>2?@@ R	1 8999+{    u~6BCC L	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.//n
	1z400%.2I2V n
	1
 z2..'99$???? 4??,,j99DD .   
 #(N:dk*+U+U+U   	   ux9:: Z
	1 5666)%DDDD}+Fab b  :;;;!      566 I
	1,U];;;GHH G
	1,U-GHHHe__ E
	1!<U!C!C!O.u55 HCG@.u55HHdk I     		1Jubi00 		144U;;;233 }		1/???W l	     788838t{SSSSuz788 s		1 5666&t{H==M@-@@NNJ(/DDDu|,, n		1 7888(<<E7>66!=x L l/777 eDK5  C 7>.DDUCPPP 466 b		1 7888%,TWeT[IIIu/;PQQ _		1 5666/666u{++ \		1 7888(<<E'.55,	 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		!>>> 8999$U4;????~.. `	1z22F(f==F%yyDGN6KKK w~1Fr%yyQgn.HHJ! * 2 I  
 w~/AA! B   "W^7JJ'di88T

	 K  N 4<#'4 4 4N$Z0 y~Hh55  444   GN(//D&$0O0OPPP")$'>4HHH%   x	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   GN(//JPT0U0UVVV )==R

:QR?  #>>BBBY788 v	1 5666'{	    ...:BBBB...:BBBB&2224666uy6?@@ h	1 5666'L$N(	 {    *9%@@ ]	1u%% @##L$<====#E** @##L$>???/dkJJJJ#E+H%PP W	1 7888.t{    +511 R	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** I	1w/E(%0
 0
 I	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*
 
 |	1#?FF|	1  5666(t{CCCC w	1EemUY-G$G$G 5666"dk:::   $E** q	1?FFE9 $(i@@%e,,??dk @    fm## 5666&dk::::E6=)) e	1n.T/
 /
 e	1  7888#E$+>>>FGN'55eVDDDM  0-2KLMM [	1 9:::){  F GN'==eVLLLMu/00 S	1ZNUX_ek.A.JK6
 6
 S	1
4;
 C C  n H  
8_ E E  4   &{   
 u9:: z	1 ,E222u677 r	1
 )///UT** l	1z%/O/O l	1 56664U;;;UT** h	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$<===e$$ 0;   
 ,{    '6tE{{CC y	1       
 ~1CCEJJ 2EEF+S$)<<KK;	 F   /7KtUE/ /

+ 17;    d5kk** $'U44 
A''(CDDD4;#{    ''(?@@@@U$566  --e444 $/O!@!@!M!M  4466    $/TODG-F-Ft{-S-STT--//    $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   &u. .u<;u<c                     |                      t          j                   t          || j                  }t          j        t          |                    s|S | j        j	        j
                            ||          S r  )rT  r<   r  r   r  rD   "cls_supports_mutation_side_effectsrc  r6  r7  rS  r\  )r  r  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                 J    |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                    rot          d |D                       rV j        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  r  c              3   >   K   | ]}t          j        |          V  d S r  r  rF  items     r   rH  z0VariableBuilder.wrap_listlike.<locals>.<genexpr>  s.      HH$$/55HHHHHHr  c                 6    g | ]}t          j        |          S r  r   r  r   s     r   rj  z1VariableBuilder.wrap_listlike.<locals>.<listcomp>  s$    !R!R!RD"2"9$"?"?!R!R!Rr  c           	          g | ];\  }}t          j        |t                                          |                     <S r  )r   r  rO   re  )rF  r  r  r  s      r   rj  z1VariableBuilder.wrap_listlike.<locals>.<listcomp>  s[     
 
 

 4	  &$T__%6%6::  
 
 
r  r  r  rA  r  T	steal_arg)
target_clsr6  r  example_valuesubclass_typer  Fr  r  index_is_slicetensor_dictrk  r   )r	  r
  r  r  ):r;   r3   specialize_intrc  r   r}  rT  r<   r  r   r  rE  rv   ry  r  r  guard_sourceis_unspecialized_nn_moduler   rI  r6  r7  local_scoper?  r  rX   
local_namerj   rz  r  r  r  r  r  r  r  wrap_fx_proxy_clsr   r  rO   input_source_to_varrb   r  r\  r]  TENSOR_MATCHr1   r  rh  r=   r  realizer   cls_for_instancer{  r|  rS  r  )r  r  r  r7  maybe_gmr  tensor_list_proxylist_variablerm  r  tensor_variablesource_iri  r  rQ  r  s   `               r   r~  zVariableBuilder.wrap_listlike  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 (CCEE	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  )rL  r6  r_   re  r~   r)  s     r   rj  z7VariableBuilder.wrap_tuple_iterator.<locals>.<listcomp>  sg     
 
 
  WODG%?@Q@QST%U%UVV&ua00 
 
 
r  r  )rT  r<   TUPLE_ITERATOR_LENr  r   r   r  r6  r7  rS  r  )r  r  r7  r  s   ``  r   r  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  )rF  r  s     r   rj  z7VariableBuilder.wrap_range_iterator.<locals>.<listcomp>%  s$    JJJ!(++JJJr  r  )rT  r<   RANGE_ITERATOR_MATCHcopydeepcopyr   r  r6  r7  rS  r  )r  r  r  r  s       r   r  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         j                  S t          | j                  S )Nc           
          g | ]N} t          j        t                                          |                    t	          |                    OS r  )rL  r6  rF   re  r  )rF  r  r  r  s     r   rj  z4VariableBuilder.wrap_slice_range.<locals>.<listcomp>*  se     
 
 
  GODGZ0A0A1%E%EFFq!! 
 
 
r  )startstopstepr  )	rT  r<   r  r  r  r   r6  r  r   )r  r  r  s   `` r   r  z VariableBuilder.wrap_slice_range)  s    
 
 
 
 
 /	
 
 
 	L3444eU## 	< DDDD t{;;;;r  ri  c                 (   ddl m} t                              d| j        j        t          |                      |||           || j        j        j	        v r8| j        j        j	        |         }|j
        |j        j        j        d         d<   d S d S )Nr2   )mark_static_addressz Marking static input %s, id: %s)ri  r  _dynamo_static_input_type)r:  r)  static_inputs_logr  r  r  rE  r6  r7  rS  r+  r  r  r  )r  r  ri  r)  r  s        r   mark_static_inputz!VariableBuilder.mark_static_input6  s    444444.0@"U))	
 	
 	
 	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*                  rt)          |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                             | j$        j%        K                    || j                   tC          j"        tG          |                    s|S | j$        j%        j&        '                    ||          S t          |jC        t*          j        jM        jN        jO                  rB|                     t          j                   t          ||                                            S | j$        j%        P                    || j@        |                                            S )Nr2   )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)Q
eval_framer/  len__dict__r;   r   r4   r^  rv   rC  r  forwardr   r  rT  r<   r  rF   rJ  r5  r  r   rU  RNNGRULSTMr3   	allow_rnnstrrO  r  r   re  rD   r  rc  r6  r7  rS  r\  r5   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baserE   r  inline_inbuilt_nn_modulesrr   rf  named_parametersr  !og_module_named_parameters_fn_ptrr-  	TypeErrorr:   rz  r  named_buffersog_module_named_buffers_fn_ptr
nn_modulesr  r  rB  r1  install_free_tensorsr`   r   r=   rh  ra   r    add_fqn_info_for_inlined_modulesr  paralleldistributedDistributedDataParallelregister_attr_or_module)r  r  r/  r4  r  freezingrA  peb
new_sources              r   rJ  zVariableBuilder.wrap_moduleF  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;; p	 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 R	
 %!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GN;;E4;OOO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 rt          | j        j                  rFt
                              d| j        j                   |                     |t          j	                  S t          | j        j                  rFt
                              d| j        j                   |                     |t          j                  S t          j        st          || j                  rd }| j        j                                        s| j        j                                        rd}t%          | j        | j        j        t)          j        |          | 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 whitelistr8  '%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  )'rc  r  is_dynamic_sourcer  r  r  r  r  r$   r  is_unbacked_sourceSIZE_LIKE_UNBACKEDr3   r  r   r  "is_unspecialized_builtin_nn_moduler  rC   r6  rA   make_scalarrT  r\  r]  r<   r  r   r  specialize_floatr  wrap_symfloatr  r  rz  rM  r7  rS  r  )r  r  r_  r  s       r   r  zVariableBuilder.wrap_literal  sR   ;;# !122 L		BDKDTUUU''
8J'KKK!$+"233 W		CT[EUVVV''
8U'VVV(  T .eT[AA T%)N0SSUU;3NNPP5 ' .(+7>>37;3K3f3f3h3h	    ''!)(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   r6  r  r9   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           	      6   |                                  }|| j        j        j        vsJ t	          |          d u}t
          j        ra|s_t          |t          j	        j
                  s|r>|j                                        r%|                     |t                                 d}t
          j        o,t!          |          pt#          |          pt%          |          }|o0t
          j         p#t                      pt          j        j        j        }|s4|j                                        s|rU|j                                        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?        @                                o#t          |t          j?        jA        jB                  }|sM|                     t          jD        |t          |t                    r|nt          |                               t          |          r|r1|                     t6          j"                   |H                                d         d         }|dk    rt          d          |H                                d         }t          |          dk    r"|d         |jK        k    r|d         |jL        k    st          d          t          tu          | jN        d          O                    t6          jP                             t          tu          | jN        d          O                    t6          jQ                             nw|                     t6          jR                   |                     t6          j"                   t          t          |          O                    t6          jQ                             |H                                \  }}|D ]W}t          ||          }tu          | jN        |          }t          jV         t          | j        |          |                     X|| j        j        j         |<   d|
jX        jY        vsJ t          |          |
jX        jY        d<   |j[        jX        jY        d         }t          |          | j        j]        urt          d           t          ||d!|          }||
jX        jY        d"<   |S )$Nr*  Tr  guardedr  rA  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.r6  r  r  )r6  r  r  r  r  _base)r6  r  r  r  r   _local_tensorz7Expecting Dtensor inner tensor name to be _local_tensorr   r2   z;Expecting Dtensor flattening ctx to be _spec, requires_grad_specrequires_gradr  r  z(Wrapped Tensor must be this graph's fakeFr  r  )`re  r6  r7  rS  rk   r3   rI  r  r   rU  ru  r  r  r-  rr   rP  rS   rT   rV   r  prepare_freezingis_specialized_nn_moduleis_fsdp_modulerh  rU  r  rT  r<   r  rQ   r  r  r  infer_subclass_typer  r  	is_nestednestedr   nested_tensorNestedTensorr;   r   rC  capture_sparse_computer4   rO  r   r   r  wrap_to_fake_tensor_and_recordr  r  rc  cache_real_value_when_exportwrap_fx_proxy_is_viewrm  rF   r  rP   rU   NOT_NONE_MATCHrS  is_availabletensorDTensorr\  r]  rZ   r1   r.   __tensor_flatten__ro  r:  ro  rp  r=   r  rh  DTENSOR_SPEC_MATCHr  TENSOR_SUBCLASS_METADATA_MATCHr^   r  r   r  rL  r  r  rb   r  r   r  r9   r  )r  r  r  is_static_inputshould_install_free_tensormake_graph_attributeis_duplicate_tensoroptionsr  r  tensor_proxyr  
guard_type
is_dtensorinner_tensor_nameflattening_ctxattrsrA  attrinner_valueinner_sourcefake_tensor_valuer  s                          r   rx  zVariableBuilder.wrap_tensor!  s   "" DGN777771%88D ,	##	# 5%("455		# 	#  &2MMOO	# ""50E0G0G"HHH"O &,%@ &
!&)) >&v..>5f== 	#  /  
00 5$&&5}#4 	 & 	 99;;	?S	'66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&3355 
*5$+3;
 ;

  	 ! &f.?@@2*511  	 	 	 )// 4	  (##L$;<<< %*$<$<$>$>q$A!$D!$77&Q  
 "'!9!9!;!;A!> ''1,,&q)U[88&q)U-@@@ 'U   t{G44??$7    t{O<<GG$1     ##L$OPPP##L$;<<<*622==l>WXX   //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_excFrl  r  rA  r  r  r  r6  r  r  r  r	  r
  r  r  r  r  ))r  r  r  rZ   re  torch._numpyr  flags	writeable
ValueErrorr  nditerr   temp_restore_stack_try_convert_to_tensortorch._prims_commonr  rl  r;   rA  r   r  rL  r6  rz  r7  r  r  r  r  r  rc  r{  r  r   r  r  r  r  r  r  )r  r  r  r  readonlytensor_valuer  rX  r  r  r  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!r7  r  c                 x
   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!          |                                           s8|Pt$          j        j        j        r:|                     t.          j                   t3          j        || j                  S | j        j        }t7          | j        |t9          j        |          | j        j                                                  }tA          | j        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{          j        | j        ||fi |}|| j        j        j        | j        <   t!          |                                           s4t}          |                                 |dd d|          |j8        j?        d<   |S )Nr  r^  dynamo.automatic_dynamic_shapesTr   Fr  r  r  r  rA  r  r  r  r  )@rc  r  r  r6  r7  unspec_variable_mapr  r   r?  #force_unspec_int_unbacked_size_liker  r"   r  r  r*   r  rQ   re  r   r  r3   r  rT  r<   r  r   r  rC   rA   rd  r  r  r   r  rH   rH  automatic_dynamic_shapesscalarr?   r   $get_automatic_dynamic_shapes_mark_asrX   r7  r  assume_static_by_defaultr$   r  r  r\   r=   rh  r  r  r  r  r  r  r  r  r  bound_symbolsr   r  r  )r  r  r7  r  r  wrapped_valuer  frame_state_entrynormalized_source_namebase_sourcer  r  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+^+^+`+`	! ! ! &;4;;K%L%L"+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W=B"0:$+DGUMUUWUU
8B*495!$//"3"344 	*2!!#( #0+ + +EJOJ' r  c           
      f	   | j         | j        j        j        v r| j        j        j        | j                  S t	          | j        | j        j         t          j        |          | 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 )Nr^  z.pytorch/compiler:unspecialize_float_killswitchFr  )r  )r  	raw_valuerl  r  rA  r  r6  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  r6  r7  r  rC   r  rA   rd  r  r  r   r  r3   re  rQ   re  mathisnanisinf	_inductortriton
cudagraphsr   r  r  r?   rT  r<   r  r   r  r  float64rT  rU  is_gradtrackingtensorr  r\   r=   rh  r  rN   rz  r  r  r  r  rc  r{  r  r   rC  rX   AssertionErrorr  r  r  r   r  r  r|  r  ry   r  r  r*   sym_numr   rM  )r  r  r  r  r  r  r  r  r  r  r  s              r   rf  zVariableBuilder.wrap_symfloat	  s    9:::7>5di@@5GK+E22'+{'?'Z'Z'\'\	
 
 
 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 }|                                r|                                }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  Frl  r  rA  r  r  r  r  r  r  r  Tr  r  )#r  r6  r7  r  r   r  r  re  r\   r=   rh  r<   r  updaterz  r  r  r  r  rc  r{  r  r   rQ   rC  rX   r  is_python_constantas_python_constantr  r  r  r   r  r  )r  r  r  r  r  r  r  r  s           r   ry  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}   !%,,.. L * = = ? ? * 0 5 :? K=))))) -$.$'2CCCCC/9 C C C DCC
 +3!!#'-#0+ + +EJOJ' r  NN)?r   r  r  __doc__r]   r0  ra  r[  re  rT  classmethodrs  r\  cacherp  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  rZ  r  r	   ry  rz  rx   r   r~  r}   r  rz   r  r  r  r  r   r  r(  r-  rU  rV  rJ  r  rh  rx  r  r   r$   r)   r  rf  ry  r>  r?  s   @r   rL  rL    sr       ==    
	           1 1 1f
 
 
     ; ; [; _$ $ _ [$L+
 + + + +
I'"7 I I I I
 
 

 
 
H H HB _	c8.4oEFF	G   _ [4H1 H1 H1T 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     [ [ [ [ [z5 5 5nel    F F F F FP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  rL  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   r  r;   rc  r  r  r  rF   rK   r  r  r   )objr  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   ru  re   )r  r  s     r   _clone_inputr  
  sr    %&& ' uj))
	' +E22	
	'
 (..);; <
  &&ELr  r-  c                     | |||d|}|t          ddt          i|S t          ddt          i|}|                    |            |S )N)r6  r  r  r  r  r  )r  r   r   install_global)r6  r  r  r  r  kwargsr  s          r   r|  r|  
  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  )	rC  r   rT  DisableTorchFunctionSubclassr  r  tracerreal_value_cacher  r  s      r   r{  r{  
  s    	y  X2244 	 	8Dr|9 9EL)%*5	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 s   (AA"Ac                    |t          | ||||fi |}n@t          |t          j                  rt	          | ||||fi |}nt          ||||||           }t          |t          j        j        j        t          j        j        j	        f          r/|j
        j        dk    r|j        j                            |           |S )Nplaceholder)_wrap_fx_proxyr  r   r  _wrap_fx_preexisting_tensorhandle_traced_outputr  	variablesr   r   r  opr7  current_tracerrecord_tensor_or_symint_vt)r  r6  r  r  r  r  outs          r   r  r  )  s     E=-
 
CJ
 
 
M5<	0	0 

)E=-
 
CJ
 
 #2ug}j
 

 	'6'7	
 	

A JM]**
	 ;;C@@@Jr  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 )Nr2   InstructionTranslatorBasez1_wrap_fx_preexisting_tensor expected tensor, got rm  r  r  zplaceholder z* doesn't have 'example_value' in node.metar  r  r6  r  zN`tensor` needs to be a `FakeTensor`wrapped by this instance of Dynamo. Found: )symbolic_convertr  r  r   r  rc  r7  rm  r  r  r  r  r  r  +_disable_saved_tensors_hooks_during_tracingr   r  r{  rC  rT  r  r  r  r  r   r   rz  r  r9   construct_tensor_variable)r  r6  r  r  r  r  r  r  s           r   r  r  K  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 )Nr2   r  rm  r  T)allow_non_graph_fake)r  r  r  r7  rm  r  r  r  r   r  r  r  rh   r  )r  r6  r  r  r  r  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                  rt          |           r?|j        rt          j        s,t          dt          |           dg t          j                   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        u rt7          |j        j                  S |j        j        |j        j        u s|j        j        |j        j        u rt?          |           S tA          | |j!                  r2tE          d | D                       rd	 | D             }tG          |fi |S t          | tH          tJ          f          rtM          |j        |            g }	tO          |           D ]\  }
}|%|	(                    tS          j*        d'i |           ,|j+        ,                    d
tZ          j.        ||
fi           }d|v rIt          | tJ                    sJ |d         }|/                                }ta          ||
d          |d<   n|}|	(                    tc          d(||||d|           t          | |j!                  rtG          |	|fi |S tA          | tH                    rte          |	fi |S tA          | tJ          tf          f          rti          |	fi |S | j5        j6        dk    s7t%          | d          s'J d| j5        j6         dto          |                        tq          |	| j5        fi |S | |j        j        |j9        u rtS          j*        d'i |S t          | |j:        |j;        |j<        f          rI|j        j=        >                    | |           tM          |j        |            t          j*        ||| fi |S t          | |j@                  r|j        j        t          u s$|j        j        d t                      D             v rKtM          |j        |            d }|j        j        t          u r|j        jC        d         }t          || |fi |S t          | |jE                  r|j        j        t          u s$|j        j        d t                      D             v rKd }|j        j        t          u r|j        jC        d         }tM          |j        |            t          || |fi |S t          jH        |j        j                  rt          |j        j        |jE                  s$|j        j        d t                      D             v r$tM          |j        |            t          || d fi |S |j        j        dk    r2|j        jJ        dk    r"tM          |j        |            tS          | fi |S | Yt          | |jE                  rD|j        j        dk    r4|j        jJ        dk    r$tM          |j        |            t          || d fi |S t          | t                    r|j        j        |jL        t          tZ          j.        |jN        jO        |jP        tZ          jQ        |jR        jS        jT        |jR        jU        jV        |jR        jU        jW        t          |jX        dt                    t          |jX        dt                    |jZ        fv s |j        jJ        dk    r7|j        j        dk    r'tM          |j        |            tS          j*        | fi |S t          | |j[        j        j\                  r$ddl]m^} tM          |j        |             ||fi |S t          | t                    r|j        j        |j        j`        |j        jR        ja        |j[        j        jb        |j[        j        jc        |j[        j        jd        |j        je        |j        jf        |j        jg        |j        jh        |j        ji        dgtK          t          jk                              z   v r'tM          |j        |            tS          j*        | fi |S t          | t          t          t          f          rm|j        j        t          u s3|j        j        t          u s |j        jJ        dk    r7|j        j        d k    r'tM          |j        |            tS          j*        | fi |S t          | t                    s|j        j        d!v r'tM          |j        |            tS          j*        | fi |S t          d"d#t          |            d$|j        jJ         d%|j        j         d&g            d S ))Nr   z4Attempted to wrap sparse Tensor with VariableTrackerzBtorch.compile does not support sparse Tensors with VariableTrackerr  )mutation_type_clsr   	set_statec              3   @   K   | ]}t          |t                    V  d S r  )r  r  r  s     r   rH  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   rj  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rF  rA  device_interfaces      r   rj  z(handle_traced_output.<locals>.<listcomp>  0       A 	'  r  c                 "    g | ]\  }}|j         S r  r  r  s      r   rj  z(handle_traced_output.<locals>.<listcomp>$  r  r  c                 "    g | ]\  }}|j         S r  )r  r  s      r   rj  z(handle_traced_output.<locals>.<listcomp>0  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  )ptorch._functorch.vmaptorch._subclasses.fake_tensortorch._utilsr  r  r   rC  r3   ry  r;   rA  r4   rO  r  r7  rS  
_track_objr   r   r  r  r   r	  rT  	Generatorr  set_rng_stater   _DisableFuncTorchr}  _is_in_bad_forkr   rv   r}  r  r   ry  rz  r{   rI  r  r   r  r  r  operatorgetitemr!  rO   r  r   r,   r   r1  r  rc  r   manual_seedr
   SymFloatr  r  track_produced_symintsr   r  r   r8   r  r   r  r   rC  rD  r  r  r  sym_intr  _utils_element_sizeseedmodrU  vmap_validate_and_get_batch_sizepredispatch_vmap_increment_nesting_vmap_decrement_nestingrS  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_attention_get_cudnn_sdp_enabled_get_flash_sdp_enabled_get_mem_efficient_sdp_enabled_get_math_sdp_enabled_get_overrideable_sdp_enabledr   r  r  r   r   r   )r  r6  r  r  r  r  r   r  sizesunpackedr  r  proxy_ir  	options_ir  r   s                    r   r  r    s
       ((((-.. Z
 '' 			!'!>	 NM**`6)56	    (E=-
 
 		))3*> 	* 	
 	
 	
 

!:..}
J&+55uz(1583EFF 6: :::+EJ,=>>>
UX777:
 :::(777	uz	*	* q
s 3 3$13 3 3 0 0 q
 DC]CCCE--W---	ME4=	1	1 l
%*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J
 &h0GSS7SSS		%*"3u7H"H"H&77w777	MEL%.%-#P	Q	Q r

	 77uMMM%*m444%b%JJ'JJJ=%,//n
J!===		  #C#E#E   
 
 	%*m444: <<<JOA&Ee]EEEWEEE=%+..b
J!===		  #C#E#E   
 
 : <<<JOA&E%*m444UM5DDGDDD
)**V
uz(%+66V
 
	  #C#E#E   
 
 	%*m444UM4CC7CCC		g	%	%%*-=*H*H%*m44499999!}ek22 	"J//JM]**%*m444UM4CC7CCC	M3	'	' B

ML&JL!>(@(@E%z8<<E%'7BB $
	
 	
( JM]**uz/@L/P/P 	%*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;H+H+H3H*H2
 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  )rc  r   r  rU  ru  r)  r
  r   rv  rw  r.   r  s    r   rt  rt    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  rU  ru  r  r  )r  r6  r  r  specialized_propstensor_types         r   get_specialized_propsr6    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  r{   r  r  r7  r  r  r  r6  )r  r6  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 = )r3    automatic_dynamic_shapes_mark_asr$   r  rb  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  rF  ss     r   	<setcomp>z&get_dynamic_sources.<locals>.<setcomp>  s.       	  r   r  ,)	hashr   compilerr3   dynamic_sourcesr>  r?  replacesplitcurrent_hashs    r   get_dynamic_sourcesrN    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)rN  r  matchr  r  )rO  rI  patterns      r   r`  r`    sl    )++O"  k!!RXg{%C%C!IIS  
 44 " 5r  r6  r   r  rX  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  )rF  r  	ex_strides     r   rj  z,record_automatic_dynamic.<locals>.<listcomp>	  s$    :::!IaL1"%:::r  )r  )sizer   stridedimr  sortr#   r?  
setdefaultrB   rC   rA   make_tensorry  )r6  r  rX  ex_sizerX  rW  pending
candidatesi_strideneg_ir  rU  s              @r   record_automatic_dynamicra    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  rB  s     r   rD  z'get_unbacked_sources.<locals>.<setcomp>&  s.       	  r  rE  r  rF  )	rG  r   rH  r3   unbacked_sourcesrb  rc  rJ  rK  rL  s    r   get_unbacked_sourcesrg    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)rg  r  rQ  r  r  )rO  rf  rR  s      r   ra  ra  0  sm    +--#  k!!RXg{%C%C!IIU  
 44 " 5r  Fc           
      L  -./ | j         r<t          | t          j        j        j        j                  st          dddg            |j        }|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          |j                  } |}	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  rk  r  rm  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)rk  rl  rm  rn  ro  rp  rq  r   )is_nested_intc              3   Z   K   | ]%}t          |t                    o |           V  &d S r  )r  r
   )rF  rC  rs  s     r   rH  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  rB  s     r   rj  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vrr5  )%torch.fx.experimental.symbolic_shapesrx  rz  )	rX  constraint_ranger  rx  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)rV  r\  r]  _dynamo_dynamic_rangec                 *    g | ]}|j         k    |S r  )rX  )rF  drr  s     r   rj  z&_automatic_dynamic.<locals>.<listcomp>  s'     ! ! !!!r  r4  rw  )lowerupperry  r  z.size()[])rk  rl  rm  rn  specialize_onro  rp  rq  )Rru  r  r   rv  r   rw  rx  r;   r  r7  tracing_contexttensor_to_contextr?  rq  r}  rF   _automatic_dynamicrm  r.   rc  r  r  r'   rk  rl  rm  rn  rp  r`  r&   r$   r  rX  INFER_STRIDEr{  rs  rN  rV  ra  rE  r  r  export_constraintst_idr|  r  rM  r  r   rH   rH  rX   r7  r  r  r  r@   r?   rA   	make_sizer3   r  is_size_dynamicis_stride_dynamicra  allow_ignore_mark_dynamicr   r  popminmaxr%   rx  r0   r   r  source_name_to_debug_namerb  r  r  r  DUCK)0rX  r6  r  static_shapesrj  r  prior_policyrq  ro  r  outer_contextrr  r  rA  r  inner_tensorr  r  r  r  r  r6  rk  rl  rm  rn  r  marked_strict_unbackedmarked_unbackedmarked_dynamicmarked_weak_dynamicmarked_staticr  	mark_sizeautomatic_dynamic_sizeautomatic_dynamic_strideautomatic_dynamicconstraint_sizeconstraint_stride	dim_rangerx  name_dim_namedynamic_sizedynamic_strider  r  rs  s0                                                @@@r   r  r  ?  sn	    	{ 
:	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{!C!C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j        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)rp  zwrap_to_fake %s %s %s %sc                  >    j                                        S )N)r  symbolic_context)r  r  )rX  r  r  r6  s   r   r5  z0wrap_to_fake_tensor_and_record.<locals>.<lambda>v  s'    00!%5 1   r  )r  r  r  )r   )rV  rW  values_sizevalues_stride)rV  rW  )+rc  r   r  rU  ru  r   r  r.   r|   r  rF   rG  rr  r  r  r  ry  shaper   r   	item_memor7  r  r  r*   rG   r  r  rz  r  r  r   	is_sparse_valuesvaluesrV  ndimrW  input_source_to_sizes_stridesrr  rQ   tracked_fakes_id_to_sourcerE  )rX  r6  r  r  r  r  _reasoninner_context_namefake_esym_valr  rA  r  
fake_innerinnerr  r  r  s   ```              @r   rz  rz  J  s    	QEL%("4jAAAa&& 	B(++ 	B !!!!? "
 "
 "
w  	Q1!ROO fj11111!'-<=OP		&K!'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   
D,,D03D0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   r0  zSourcelessBuilder.__init__  s    =>>>r  r6  r   c                 2    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                  rt                    S te          j3                  rte                    S ti          j5                  rti                    S tl          j7        u rtq                    S t	          tr          j:                  rtw                    S t	          t4          j<        j=        j>        j?                  r!t          j        t                              S t	          t          t4          jA        jB                            r)t4          j<        j=        jC        D                              S t	          tD          jE        tD          jF        f          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  )rF  r  r6  r  s     r   rj  z,SourcelessBuilder.create.<locals>.<listcomp>	  sC        "((WUD-A-ABB  r  )r  z%Unexpected type in sourceless builderr0  z3SourcelessBuilder.create does not know how to wrap r  )Urc  r   _type_handlersr?  r  r   r  _HAS_DEFAULT_FACTORY_CLASSr   r   r  r  rf  r7   rt  ru  r7  rv  r   is_supported_new_methodr	  r   rn   rY  rQ  rR  r   rS  rT  rU  rV  r   abcABCMetar  r  r   rc  r  r  r   var_getattrrl  rD  graph_moduleGraphModuler   r  r  r  r   r  r   r  r\  r  r   r  r  r   r  r  lazyLazySymNodeFormatStringrA  rz  flex_attention_backwardhigher_order_ops&FlexAttentionBackwardHighOrderVariableGenericAlias	UnionTyper   rq   rw   r   r
   r  r  r  r   r;   r  r  r4   
DYNAMO_BUG)r6  r  
value_typefast_handlerr  
cls_obj_vtr7  r  s   ``      r   r  zSourcelessBuilder.create  s#   %[[
(7;;JGG 	+<E***e_-- G	5L{EFF D	5,U333(// B	5#*5111e__ @	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** 6	5,;%e,,U333DIu0%(2E2ST
 
 4	5  &&&ck233 0	5+E222u677 .	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u{2;<< 	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    2EODEE 	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   r6  r  s     r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>%  s    ,<U,C,C r  c                 Z     t           fd|D             t                                S )Nc                 (    g | ]} |          S r  r  rF  r  r  r6  s     r   rj  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>'  #    ***qVVB]]***r  r&  )r   r   r6  r  r  s   ` r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>&  s:    +*****E***:J:L:L+
 +
 +
 r  c                      t           fd|                                D             t          |          t                                S )Nc                 D    i | ]\  }} |           |          S r  r  )rF  r  r  r  r6  s      r   
<dictcomp>zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<dictcomp>*  s3    DDDdaVVB]]FF2qMMDDDr  r  )r   r  rc  r   r  s   ` r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>)  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   rj  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>/  r  r  r  )r   r   r  s   ` r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>.  s:    <*****E***:J:L:L,
 ,
 ,
 r  c                 >     t           fd|D                       S )Nc                 (    g | ]} |          S r  r  r  s     r   rj  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>2  r  r  )r   r  s   ` r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>1  s,    M*****E***-
 -
 r  c                 >     t           fd|D                       S )Nc                 (    g | ]} |          S r  r  r  s     r   rj  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>5  r  r  )r   r  s   ` r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>4  s,    *****E***2
 2
 r  c                     t                      S r  )r   r  s     r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>:  s    4G4I4I r  c                      t          |          S r  )r   r  s     r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>;  s    7KE7R7R r  c                 <    t          |t                                S Nr  )r   r   r  s     r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>=  s"    ;Q!1!3!3<
 <
 <
 r  c                 <    t          |t                                S r  )r   r   r  s     r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>A  s"    :%5%7%7   r  c                 <    t          |t                                S r  r   r   r  s     r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>G  "    7%5%7%7   r  c                 <    t          |t                                S r  r  r  s     r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>L  r  r  c                 <    t          |t                                S r  r  r  s     r   r5  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>Q  r  r  r6  r   c                     |S r  r  r  s     r   passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthroughV  s    Lr  )r6  r   )r   r  rf   rM  r  rz  ry  r   r}  r{  rG  r+   r,   r  r  r  r  r  rU  r  r  distributionsconstraints_Real	_Interval
Constraintr   all_subclasses)handlersr   r  rr  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  r=  )
r   r  r  r  r0  r  r   r  r  r  r  r  r   r   r     s        
 
? ? ? ? S
* S
o S
 S
 S
 \S
j 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   r0  z+SourcelessUserDefinedObjectBuilder.__init__h  s    NOOOr  r6  r   c                 6   t          |          }t          |t                    rt          |t	                                S t          |t          j        j                  rt          |t	                                S t          |t	                                S r  )rc  r  r   r   r   r  r   rU  rV  r   r   )r6  r  r  s      r   r  z)SourcelessUserDefinedObjectBuilder.createk  s    %[[
j.11 	V)%?O?Q?QRRRRux// 	V0%5%7%7    -UBRBTBTUUUUr  r=  )r   r  r  r  r0  r  r   r  r  r  r   r	  r	  a  sm         P P P P 	V* 	Vo 	V 	V 	V \	V 	V 	Vr  r	  r  r  )F(q  r  r  r{  r  r!  r  rQ  r\  rC  	itertoolsrY  r  r  r  r  r  r  r  r  collections.abcr   r   typingr   r   r   r   r	   r  r   r
   torch._dispatch.pythonr   #torch._dynamo.graph_bytecode_inputsr   r   torch._dynamo.utilsr   r   r   r   torch._guardsr   "torch._higher_order_ops.flat_applyr   !torch._higher_order_ops.torchbindr   torch._library.opaque_objectr   r   
torch._opsr   r  r   r   r   torch._subclasses.meta_utilsr   r   torch._utils_internalr   %torch.fx.experimental._backward_stater   torch.fx.experimental._dynamismr   torch.fx.experimental.sym_noder    r!   r{  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_rangesr0   torch.utils.weakr1   r  r3   r4   r5   r6   r7   r  r8   excr9   r:   r;   rm  r<   r=   r>   pgor?   r@   rA   rB   rC   rS  rD   r  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`   ra   r  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   r  r   r   r   r   r   r   builtinr   constantr   r   ctx_managerr   r   r   r   r   dictsr   r   r   r   r   r   rS  r   r   r   r   r   	functionsr   r   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   	nn_moduler   r   r   	optimizerr   script_objectr   r   r!  r   streamsr   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,  rz  DimListr   r   	dataclassr  r,  rP  varsr  rI  r  r'  rM  rJ  rU  rV  rM  rN  rJ  rK  rL  r  r  r|  r{  r  r  r  r  rt  r6  r  r  r>  rA  r?  rN  r(  r`  r  ra  rb  rc  rg  ra  r  rz  r   r  r  r	  r  r  r   <module>r:     s@    & 


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



       4 4 4 4 4 4 4 4 B B B B B B B B B B B B B B         ; ; ; ; ; ;                   ) ( ( ( ( ( 9 9 9 9 9 9 < < < < < < M M M M M M M M * * * * * * 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 E E E E E E E E
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 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 ? ? ? ? ? ? S S S S S S S S S S A A A A A A A A A A              ' & & & & &                                                             >! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !D                % $ $ $ $ $ 4 4 4 4 4 4 4 4                                                                              $ # # # # # % % % % % %
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                             .         
 ) ( ( ( ( ( O O O O O O O O $ $ $ $ $ $ I I I I I I I I I I                                   
                               	BBB  E//////DDDDDD g!!N44'  
 " " "
	 	 	 	 	 	 	 	 @5 @5 @5 @5 @5 @5 @5 @5F< < < < <H < < <, &/Y / /Y--/// / / & & IcN    +.#%% s3x / / /
 "'!> $)HO$D !H$ H$ H$ H$ H$ H$ H$ H$VH     (  & 26    $  p >B   F 26= = = =D >B   0_
 _
 _
D  :  (( ( (,

 

 

 (, (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f f f f f f f fR $5#G#G#I#I   V V V V V V V V V Vs   M 	M"!M"