
    i                       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Z1erdd9l3m4Z4 dd:l5m6Z6  e
jn                  e8      Z9ejt                  jw                  e8d;      Z<e=Z>d< Z? G d= d>      Z@ej                   G d? d@             ZB G dA dBeB      ZC eDdC  eEe	      j                         D              ZGeDeH   eIdD<    eJ       ZKeJeH   eIdE<   ej                  j                  j                  ZOej                  j                  j                  ZQ G dF dG      ZRdH ZSdI ZT	 dldJefdKZUdL ZV	 dldMZW	 dmdNZX	 dldO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j                  dJemfd^ZfdageeJe`      eId_<   daheeH   eId`<   dJeJe`   fdaZidXe`dJecfdbZj	 dndJeKfdcZkddddeee   dfecfdgZl G dh di      Zmemj                         em_o         G dj dk      Zpy# e2$ r dZ1Y 0w xY w)oaq  
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                  j                  t         j                  j                  j                        5  t        | d      cd d d        S # 1 sw Y   y xY w)Ngrad)torch_logginghide_warnings	_internalsafe_grad_filterhasattr)ts    Y/var/www/html/engine/venv/lib/python3.12/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr   =  sC    		%	%enn&>&>&O&O	P "q&!" " "s   AA!c                       e Zd Zy)_missingN__name__
__module____qualname__     r   r   r   B  s    r  r   c                       e Zd ZU eed<   eeej                  f   ed<   e	ed<   e
ej                  j                  j                     ed<   dZe	ed<   dZe
ej                      ed<   d	 Zed
        Zd ZddZd Zd Zy)GraphArgsource_examplepass_arg_as_tensorfake_tensorT	is_tensorNexample_strong_refc                 2    t         j                  | ||       y N)object__setattr__)selfnamevalues      r   r  zGraphArg.__setattr__j  s    
 	4u-r  c                 z    t        | j                  t              r| j                         }|J |S | j                  S r  )
isinstancer  r1   )r  rs     r   examplezGraphArg.exampleq  s4    dmm]3A= =H== r  c                     t        | j                  t        j                        r2t	        | j                        | _        t        | j                        sJ y y r  )r  r  r   Tensorr1   r   r
  r  s    r   __post_init__zGraphArg.__post_init__z  s=    dmmU\\2)$--8DM4++,,, 3r  c                 (     || j                          y r  r  r  codegens     r   reconstructzGraphArg.reconstruct  s    r  c                      d | _         d | _        y r  )r  r  r  s    r   erasezGraphArg.erase  s    "&r  c                 \    | j                   j                  |j                   j                  k(  S r  )r  r  )r  others     r   __eq__zGraphArg.__eq__  s!    {{5<<#4#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    N M5<</00" %++77BBCC It 26.5. ! !-
'5r  r  c                   (     e Zd Zd fdZddZ xZS )BackwardStateGraphArgc                 >    t         |   d t               dd d       y )NF)r  r  r	  r
  r  )super__init__r   )r  	__class__s    r   r/  zBackwardStateGraphArg.__init__  s&    "_$ 	 	
r  c                    j                   j                  j                  sJ j                  fd       j	                  dd       j                          j                  j                   j                  j                         y )Nc                  D     j                  t        j                  d      S )Nr   )load_import_fromr   r  )r  s   r   <lambda>z3BackwardStateGraphArg.reconstruct.<locals>.<lambda>  s    G,,]-E-EW r  r   F)txoutputbackward_state_varadd_push_nullcall_functiondup_topstorer  s    `r   r   z!BackwardStateGraphArg.reconstruct  se    zz  3333W	
 	a'gjj''::;r  returnNr&  )r   r  r  r/  r   __classcell__r0  s   @r   r,  r,    s    
<r  r,  c              #      K   | ]8  \  }}|j                  d       s"t        j                  |      rt        |       : yw)_N)
startswithinspectisclassid).0r  members      r   	<genexpr>rH    s7      /f??3GOOF$; vJ/s   >A ITERTOOLS_TYPE_IDSITERTOOLS_POLYFILLED_TYPE_IDSc                   L    e Zd ZdZdeddf fdZd Zd Zd Zd	 Z	e
d
        Ze
ej                  d               Zdej                   fdZdej&                  fdZd Zd Zd Ze
ej                  deeed egef   f   fd              Zd ZdefdZde e!e"e#e$f   fdZ%de&fdZ'de(fdZ)de e*e+f   fdZ,de-j\                  de/fdZ0de-jb                  jd                  fdZ3d Z4de-j\                  fdZ5de-j\                  fdZ6d Z7	 	 d%d e8e9   d!e8e:   fd"Z;d# Z<d$ Z= xZ>S )&VariableBuilderz3Wrap a python value in a VariableTracker() instancer  r=  Nc                     |J d       t        j                         J d       t        |           || _        || _        |j                  | _        y )NzRConsider SourcelessBuilder for ephemeral objects, usually objects created locally.zExpected active TracingContext)r   try_getr.  r/  r5  r  r  )r  r5  r  r0  s      r   r/  zVariableBuilder.__init__  s\    
 ! 	
`	
! %%'3U5UU3KK	r  c                    || j                   j                  j                  v r| j                   j                  j                  |   }t        | j                  |j                        }|r| j                  |       t        |t        j                  j                        r+t        |t              r|j                  | j                         |S | j                   j                  j                  j                  || j                        }|r|S | j                  |      }|j                  | j                  |_        d }| j                  |      s	 |||      r]|| j                   j                  j                  vr;t!        |      s0| j                   j                  j                  j#                  ||      }| j                   j                  j                  j%                  || j                  |       |S )Nc                 `    t        |       xs t        | t              xr t        |t              S r  )r   r  r    r   )r  vts     r   _is_deduplicable_sym_variablez?VariableBuilder.__call__.<locals>._is_deduplicable_sym_variable  s,     U#Hz%'H2R12r  )r5  r6  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__  sh   DGGNN///!%!<!<U!C'5G5N5NOI##I.%1j"$A7 #==dkkJ%%GGNN99@@T	ZZ99BI	2 ..r20;TWW^^8883E:,,BB5"MB--11%bI	r  c                 D    t        |      t        t        t        t        hv S r  )typer   r   r   r   )r  rQ  s     r   r[  z)VariableBuilder._can_lift_attrs_to_inputs  s$    Bx(% 	
 
 	
r  c                     | j                   S r  r  r  s    r   
get_sourcezVariableBuilder.get_source  s    {{r  c                     | j                         }	 |D cg c]  }|j                  |       }}t        |ddi i S c c}w # t        $ r Y y w xY w)Nskipr   )re  
make_guardNotImplementedErrorr=   )r  guardsr  guardtmps        r   rT  zVariableBuilder.install_guards  s]    "	9?@6$$U+@C@ 	s##		 A" 		s   A =A A 	AAc                 @    | j                  t        j                        S r  )_type_dispatch_implr3   trace_numpy)clss    r   _type_dispatchzVariableBuilder._type_dispatch  s    &&v'9'9::r  c                    t         j                  t         j                  j                  t         j                  j
                  t         j                  j                  j                  f| j                  ft        t        t        t        j                  t         j                  f| j                  ft         | j"                  ft$        | j&                  ft(        t*        f| j,                  ft        t.              | j0                  ft2        j4                  | j6                  ft8        j:                  | j<                  ft         j>                  j@                  jB                  | jD                  ft         jF                  jH                  | jJ                  ftL        jN                  | jP                  fg}|r1tR        r+|jU                  tR        jV                  | jX                  f       i }|D ]*  \  }}t[        |t              r|n|fD ]  }||vsJ |||<    , |S r  ).r   r  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  )rp  ro  entriesresulttsfnr   s          r   rn  z#VariableBuilder._type_dispatch_impl  s    LLHH&&%%00%%77HH	  lK,=,=uzzJ!! S445S445U^S112()3+;+;<ZZ//0""C$4$45[[..0I0IJYY%%s'<'<=##S%;%;<-
2 2NNBJJ(>(>?@ 	FB%b%0Rre &q		
 r  r  c                 V    | j                  t        j                         t        |      S r  )rT  r<   ID_MATCHr   r  r  s     r   r  z"VariableBuilder.wrap_regex_pattern3  s!    L112#E**r  c                     | j                  t        j                         t        j                  | j
                  || j                        S Nr  )rT  r<   
TYPE_MATCHr   buildr5  r  r  s     r   r  zVariableBuilder.wrap_weakref8  s3    L334$$TWWeDKKHHr  c                 "    t        dddg        y )Nz3Attempted to represent unregistered RemovableHandle zDynamo attempted to build a representation of a torch.utils.hooks.RemovableHandle, which is not supported. This happens because the RemovableHandle was created in another frame.gb_typecontextexplanationhints)r;   r  s     r   r  z%VariableBuilder.wrap_removable_handle<  s    
 	Im	
r  c                 p    | j                  t        j                         t        |d| j                        S )N_torchdynamo_inliner  )rT  r<   r  r   r  r  s     r   r  z!VariableBuilder.wrap_jit_functionI  s/    L334*(
 	
r  c           
      4     j                  t        j                          j                  t        j                         t	        d |D              }|sEt        dd|j                         D cg c]  }t        j                  |      r| c} ddg        fdt        fd|j                         D              }t        |d 	      }t        | j                  	      } j                  j                  j                   j#                  ||      S c c}w )
Nc              3   F   K   | ]  }t        j                  |        y wr  r   
is_literalrF  ks     r   rH  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>T  s     F1(33A6F   !znon-const keys in mappingproxynon-const keys: z1Dynamo expects mappingproxy keys to be constants.zFEnsure your mappingproxy keys are constants (e.g. int, float, strings)r  c                     t        j                  |       }| }t        j                         |      }t	        j                  ||      }||fS r  )r   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`  sG    "))!,CJ():JGL+221lCI	>!r  c              3   6   K   | ]  \  }} ||        y wr  r  )rF  r  r  r  s      r   rH  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>i  s     Etq!_Q*Es   r  )rT  r<   r  MAPPING_KEYS_CHECKallr;   keysr   r  dictitemsr   r   r  r5  r6  rS  track_mutable)r  r  	all_constr  r  dict_vtr  r  s   `      @r   r  z"VariableBuilder.wrap_mapping_proxyO  s    L334 	L;;<FFF	8*uzz|+j!K[KfKfghKiA+j*klO\		" Eu{{}EE $E$7%gdkkBww~~**88GG+ ,ks   .D	Dc                     ddl m } |d ft        j                  d ft        j                  d fg}i }|D ]9  \  }}t        |t        t        f      r|n|fD ]  }||vsJ ||t        |      <    ; |S )Nr2   )comptimec                     t               S r  )r   r  s     r   r4  z.VariableBuilder._id_dispatch.<locals>.<lambda>x  s
    +;+= r  c                 t    t        t        fd| j                  i| j                  t        j
                        S )Nr  )r   _dataclasses_fields_lambdar  rT  r<   CLOSURE_MATCHr  s     r   r4  z.VariableBuilder._id_dispatch.<locals>.<lambda>{  s5    N.%;;% )),*D*DE% r  c                     t               S r  )r   r  s     r   r4  z.VariableBuilder._id_dispatch.<locals>.<lambda>  s
    4H4J r  )	r  dataclassesfieldsr   __version__r  rw  rx  rE  )rp  r  r  r  r  r  r   s          r   _id_dispatchzVariableBuilder._id_dispatchp  s    
 	( =>""  JK
  	#FB%b5$-8Rre #& "r!u#	#
 r  c                 i   => ddl m}m}m} ddlm}m}  |       rddlm} ddl	m
} n G d d      } G d	 d
      }d }	d }
 G d d      } |       rddlm}	m}
  |       rddlm}  j!                         j#                  t%        |            }|	 | |      S  j'                         j#                  t)        |            }|	 | |      S t+        |t,        j.                        rt%        |      t,        j0                  j2                  j4                  t,        j0                  j2                  j6                  t8        fvrft%        |      t:        j<                  vrKt%        |      j>                  t,        j.                  j>                  u stA        |      r jC                  |      S tE        |      rĉ jG                  tH        jJ                         tM        t%        |            D cg c]7  }tO        jP                  tS        ||      tU         jV                  |            9 }}tY        |t%        |       jV                        } jZ                  j\                  j^                  ja                  ||      S tc        |td        tf        jh                  tf        jj                  f      r` jG                  tH        jl                         to        d |D              ==s9 jZ                  j\                  jp                  js                   jV                         = fd>te        >fdtu        tw        |            D              }tc        |tf        jh                        r]tU         jV                  d      }ty        |t%        |       t{         jZ                  |      |j|                         jV                        }n!t        |t%        |       jV                        } jZ                  j\                  j^                  j                  ||      S t+        |t,        j0                  j                        r j                  |      S t        j                  |      r j                  |      S t+        |t,        j                  j                        rIt        | jV                        } jZ                  j\                  j^                  ja                  ||       |S tc        |t              rt        d |D              r t        ddddgt        j                          jG                  tH        jl                          jG                  tH        jJ                         t        |      }tu        |      D cg c]0  \  }}tO        jP                  |t         jV                  |            2 }}}t        | jV                        } jZ                  j\                  j^                  ja                  ||      S tc        |t              ruto        d |D              rc|D cg c]"  }t        jQ                   jZ                  |      $ }} jG                  tH        j                         t        | jV                        S t+        |t        j                  t,        j                  t,        j                  j                  j                  f      r6 jG                  tH        j                         t        | jV                         S t        j                  |      r6 jG                  tH        j                         t        | jV                        S t+        |t        j                        r6 jG                  tH        jl                         t        | jV                        S t        |      rt         jV                        S t        |      rt         jV                        S t        j                  |      r t        j                   jV                        S t+        |t        j                        rtU         j                         d!      } t{         jZ                  |      |j                        }g }tU         j                         d"      }tu        |j                        D ]:  \  }}|j                   t{         jZ                  t        ||            |             < i }tU         j                         d#      }|j                  j                         D ]e  \  }}t        j                  |      s"t        d$d%| d&g t        j                          t{         jZ                  t        ||            |      ||<   g t         j                         j                  tH        jl                        |j                  tH        j                        |j                  tH        jJ                               t        |||      S t        |      r6 jG                  tH        j                         t        | jV                        S t        >t+        |t        j                        r$ j                  t        j                  |            S t        j                  |      rWt        sJ tc        |t         j                        r`t        j                  |j                        rt        tU         jV                  d'      j                  tH        j
                               nt        j                  |      r! jG                  tH        j                         nt        j                  |      r! jG                  tH        j
                         nKt        |      r  jG                  tH        j                         n jG                  tH        jl                         t        | jV                        S t        j                  |      r7 jG                  tH        j                         t        | jV                        S t        j                  |      rt+        |t        j                        r^ jG                  tH        jl                         tU         jV                  d(      }t        |j                  tH        j                               n jG                  tH        j                         t        | jV                        S t        j                   |      rM jG                  tH        j
                         t        jP                   jZ                  | jV                        S tc        |t,        j"                  j$                  j&                        r8 jG                  tH        j                         t)        | jV                        S t+        |t,        j"                  j$                  j*                        r2d } 	 |j,                  } g }! jV                  j                  tH        jl                        g}"t+        | t0              rtU         jV                  d)      }#|"j                  |#j                  tH        jJ                               tu        |       D ]:  \  }}|!j                   t{         jZ                  t        |#|            |             < t        |"   jZ                  j\                  j^                  ja                  |t3        | jV                  t5        |!      *            S t+        |t         j                        rtc        tS        |d+d       t,        j"                  j$                  j&                        rtS        |d,d-      d.k(  r|tS        |j6                  d.d       k(  rzt        tU         j                         d'      j                  tH        j
                               t9        t)        |j6                  tU         jV                  d+/            d.      S t+        |t,        j                  j:                        r7 jG                  tH        j                         t=        | jV                        S |t,        j>                  j@                  jB                  jD                  u r/ jG                  tH        j
                         tG         fd0      S t+        ||      rtI        |jJ                        S t+        ||      rtM        |jN                        S t        |      ryt        jP                  |      ct        jR                  |      rd1 jZ                  j\                  _        t        jP                  |      jW                  | jV                        S t        r-t+        |t        jX                        r j[                  |      S t+        |t\              ro|t,        j^                  j`                  u rt        d2d-d3g         jG                  tH        jl                         tc        jd                  | jV                        S t+        |t,        jf                  jh                        r} jG                  tH        j                         tU         jV                  d4      }$ t{         jZ                  |$      |jj                        }%tm        jP                   jZ                  |%      S t+        |t,        jn                        rǉ jG                  tH        jl                         tq        | jV                        }& jZ                  j\                  js                  d5tt        |&fi       }'tw        |'jx                  |       t{        |'| jV                  |&6      } jZ                  j\                  j^                  ja                  ||      S t+        |t,        j                  j|                        rK jG                  tH        jl                         t        jP                   jZ                  | jV                        S t+        |t,        j                  j                  j                        r+ jG                  tH        j                         t        |      S t+        |t,        j                        r jG                  tH        jl                         tq        | jV                        }& jZ                  j\                  js                  d5tt        |&fi       }(tw        |(jx                  |       t        |(||& jV                        S tc        |t        j                        rOt        j                  |d7d       6 jG                  tH        jl                         t         jV                        S t        j                  |      rg jG                  tH        jl                         t        | jV                        } jZ                  j\                  j^                  ja                  ||      S t+        |t,        j                  j                        rR jG                  tH        j                         t         jV                         _+        t        | jV                        S t+        |t,        j                        r, jG                  tH        j                         t        |      S t        j                  |      rt        | jV                        S t        j                  |      r7 jG                  tH        j                         t        | jV                        S t        j                  |      r8 jG                  tH        j                         t        | jV                        S t        j                  |      r7 jG                  tH        j                         t        | jV                        S t        j                  |      r8 jG                  tH        j                         t        | jV                        S t)        |      t        v rJt)        |      t        vr8 jG                  tH        j                         t        | jV                        S t+        |t              rMt+        |t              })t         jV                  |)      }*t)        |       jZ                  j\                  j                  j                  v r9 jZ                  j\                  j                  j                  t)        |         }+n jZ                  j\                  j                  j                  |j                  |*t        j                  8      }, jZ                  j\                  j                  j                  |,|j                  |*9      }+ jZ                  j\                  j                  j                  t        j                  d:d; j                        t%        |+      |+|*      }-t        |*|+d<d d<|+=      |-jx                  j                  d><   |+jx                  j                  }.t+        |.t        j                        s
J |. d?        jZ                  j\                  j                  j                  t        |+|*d              t        jP                   jZ                  |-|+      S t        |      r]t+        |t,        j                        r jV                  nt         jV                        }*|jx                  j                         re jZ                  j\                  j                  j                  t        |jx                  j                        |*t        j                  @      }/nkt+        |t,        j                        r1 jZ                  j\                  j                  j                         }/nt        dAd-dBg t        j                          jZ                  j\                  j                  j                  t        j                  d:d; j                        t%        /      |/|*      }-t        |*|/d<d d<|/=      |-jx                  j                  d><   |/jx                  j                  }.t+        |.t        j                        s
J |. d?        jZ                  j\                  j                  j                  t        |/|*d              t+        |t,        j                        r|/n|/dCk(  }0t        |-|0      S t+        |||f      r9 jG                  tH        j                         t        |d d  jV                        S ||	u rt        dCD      S ||
u rt        dD      S ||j                  u rt               S t+        |t,        j                  j
                  j                        rg jG                  tH        j                         t        |j                  |j                  |j                  |j                  g jV                  E      S t        j                  |      rt        j                  |      r! jG                  tH        j                         n7t        j                  |      r  jG                  tH        j
                         t        | jV                        S t        j                  |dFd<      r8 jG                  tH        jl                         t        |dG jV                        S t        |      r8 jG                  tH        jl                         t        |dH jV                        S |t         j"                  u rt%         jV                        S |t&        j(                  u s)t&        j*                  dIk\  r,|t&        j,                  u rt/        | jV                        S t1        |      rQt        j                  |dJd<      r8 jG                  tH        jl                         t        |dJ jV                        S |t        j2                  u r7 jG                  tH        j                         t5        | jV                        S |tf        j6                  u r7 jG                  tH        j                         t9        | jV                        S t+        |t         j:                        rNt=        j>                  |      r7 jG                  tH        j                         t=        | jV                        S tA        |      rx|tB        jD                  tB        jF                  fv rR jG                  tH        j                         t9        tI        tB         jV                        |jJ                        S t1        |      r^tM        |      \  }}1|1tU         jV                  |1       _+        t        jN                  |      jW                  | jV                        S |tP        jR                  u r6 jG                  tH        j                         tU         jV                        S tc        |tP        jR                        rtW        jX                  |      ri jG                  tH        jl                         tW        | jV                        } jZ                  j\                  j^                  j                  ||       |S t+        |t         jZ                  t\        j^                  f      rj jG                  tH        j`                         tc        | jV                        } jZ                  j\                  j^                  ja                  ||       |S t+        |t         j                        rt+        |j6                  t,        j0                  j                  t,        jd                  jf                  jh                  f      rz t{         jZ                  tU         jV                  d+            |j6                        }2|2rt+        |2tj              sJ dK       tm        |j                  |2 jV                        S t+        |t         jn                        rtq        |      S t+        |t         jr                        rtu        |      S tw        t%        |      t$              r=tw        |tx              r+ jG                  tH        j                         t{        |      S tw        t%        |      t$              r|t,        jd                  j|                  j~                  t,        j0                  j                  t,        j0                  j                  fv r2t        jN                  |      jW                  | jV                        S |t,        j"                  j                  u rA jG                  tH        j                         t        j                   jZ                        S tw        |t,        j.                        r\|t,        j.                  urJ|j>                  t,        j.                  j>                  u r$t        |      st        | jV                        S t         jV                        s  jG                  tH        j                         t        |      rt        | jV                        S t        | jV                        S t        j                  t%        |            r]ddLl+mL}3mM}4 t,        j                  j                  j                  |      r jZ                  j\                  j                  j                  t        j                  d:d; j                        t%        |      | jV                        }5t         jV                  |d<d d<|      |5jx                  j                  d><   t        jP                  |5| jV                        S t        t%        |            rxt        t%        |            rC jG                  tH        j                         t        jP                  || jV                        S  jG                  tH        jl                         n̐t        |dM      s j                  |      S tO        j                   t{         jZ                   |4 jV                              |j                         j                                      tO        j                   t{         jZ                   |3 jV                              |j                                      t,        j                  j                  j                   jZ                  j\                  j                  |      }6 jZ                  j\                  j                  j                  t        j                  d:d; j                        t%        |      |6 jV                        }5t         jV                  |d<d d<|6      |5jx                  j                  d><   t        jP                  |5|6 jV                        S t+        |td        tf        jj                  f      rkt%        |      j                  td        j                  u rC jG                  tH        jl                          jG                  tH        jJ                          jZ                  j\                  jp                  js                   jV                          fdN>te        >fdOtu        tw        |            D              }t        |t+        |tf        jj                        rtf        jj                  ntd        t                jV                  P      }7d1|7_]        t        ||7 jV                  Q      } jZ                  j\                  j^                  ja                  ||      S t+        |t0              r jG                  tH        jl                          jG                  tH        jJ                         t        t0        j                  |            D cg c]G  }tO        jP                  t0        j                  ||      t         j                         |            I }}t        | jV                  t               R      }8t        ||8 jV                  S      } jZ                  j\                  j^                  ja                  ||      S t+        |t              r jG                  tH        jl                          jG                  tH        jJ                         t        t        j                  |            D cg c]G  }tO        jP                  t        j                  ||      t         j                         |            I }}t        | jV                  t               R      }9t        ||9 jV                  T      } jZ                  j\                  j^                  ja                  ||      S t+        |t        t        f      rO jG                  tH        jl                          jG                  tH        jJ                         t        td        j                  |            }t        t        j                  |            D cg c]F  }tO        jP                  t        j                  ||      t         j                         |            H }}t+        |t              rt        nt        }: |:| jV                  t               R      };t        ||; jV                  U      } jZ                  j\                  j^                  ja                  ||      S tw        t%        |      t              rg jG                  tH        jl                         t        | jV                        } jZ                  j\                  j^                  ja                  ||      S t        |      r| jG                  tH        jl                         t        jP                   jZ                  | jV                        } jZ                  j\                  j^                  ja                  ||      S t+        |t              rto        dV |D              r|D cg c]"  }t        jQ                   jZ                  |      $ }}t         j                         j                  tH        jJ                         j                         j                  tH        j                               t        | jV                        S t        dWdX|D cg c]  }t        j                  |      r| c} dYdZg       y t        j                  |      rdd[lpmq}< |j                  %|j                  j$                  |<j                  k(  r j                  |j                        S |j                  j$                  |<j                  k(  rt        j                  d\ jV                  j                  t        j                          j                  |j                  t        j                  t        t        d<]      ^      _      S |j                  j$                  |<j                  k(  rmt        j                  d\ jV                  j                  t        j                          j                  |j                  t        j                  `      S t/        da|j                          j                  |      S c c}w c c}}w c c}w # t.        $ r Y &uw xY wc c}w c c}w c c}w c c}w c c}w )bNr   )
has_triton has_triton_experimental_host_tma%has_triton_tensor_descriptor_host_tmar2   )DynamoConfigPatchProxy(ErrorOnGraphBreakDecoratorContextManager)	Autotuner)JITFunctionc                       e Zd Zy)*VariableBuilder._wrap.<locals>.JITFunctionNr   r  r  r   r  r        r  r  c                       e Zd Zy)(VariableBuilder._wrap.<locals>.AutotunerNr   r  r  r   r  r    r  r  r  c                       y r  r  r  r  r   create_1d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_1d_tma_descriptor      r  c                       y r  r  r  r  r   create_2d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_2d_tma_descriptor  r  r  c                       e Zd Zed        Zy)/VariableBuilder._wrap.<locals>.TensorDescriptorc                       y r  r  r  r  r   from_tensorz;VariableBuilder._wrap.<locals>.TensorDescriptor.from_tensor  s    r  N)r   r  r  staticmethodr  r  r  r   TensorDescriptorr    s     r  r  )r  r  )r  r  )	tuple_clsr  c              3   F   K   | ]  }t        j                  |        y wr  r  r  s     r   rH  z(VariableBuilder._wrap.<locals>.<genexpr>  s     Jq,77:Jr  c                     	j                         }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  sm    (*11!4C!"J!3D!!<J-44Q
CC0zB/66q,G	I~%r  c              3   >   K   | ]  \  }\  }} |||        y wr  r  rF  r  r  r  r  s       r   rH  z(VariableBuilder._wrap.<locals>.<genexpr>  *      Av1  1a(   default_factory)r  r  )user_clsr  c              3   P   K   | ]  }t        |t        j                           y wr  )r  r   r  rF  xs     r   rH  z(VariableBuilder._wrap.<locals>.<genexpr>0  s     >1:a.>s   $&z$Attempted to wrap a set with tensorsz+Python set containing torch.Tensor elementszDynamo cannot trace sets of tensors. To get a stable ordering, Dynamo needs to convert the set into a list and the order might not be stable if the set contains tensors.z,Use a dictionary where the keys are tensors.r  c              3      K   | ]X  }t        |      t        j                  u xr |j                  d k(  xs& |t        j
                  j                  j                  v  Z yw)r   N)rc  r  BuiltinMethodTyper  r   r  _pytreeBUILTIN_TYPESr  s     r   rH  z(VariableBuilder._wrap.<locals>.<genexpr>O  s[      	.
  aE333O8O 7 U[[((6667	.
s   AA 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                  j                  j                         fi       S r  )r   r   _dynamoexternal_utilsFakeCompiledAutogradEngineexec_final_callbacksr9  r5  r6  rS  get_ca_final_callbacks_varr  s   r   r4  z'VariableBuilder._wrap.<locals>.<lambda>  sZ    ,MM00KK``-GGWW^^00KKMO r  Tz9Attempted to wrap torch._higher_order_ops.invoke_subgraphzJDirectly using invoke_subgraph is not supported. Use nested_compile_regionstreamr9  )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                     j                         }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  sU    (/a8
)00J?8zJ/66q,G	I~%r  c              3   >   K   | ]  \  }\  }} |||        y wr  r  r  s       r   rH  z(VariableBuilder._wrap.<locals>.<genexpr>  r  r  )r  mutation_typer  )r  r  )r  r  )tuple_vtr  )list_vtr  )set_vtr  c              3   F   K   | ]  }t        j                  |        y wr  r  r  s     r   rH  z(VariableBuilder._wrap.<locals>.<genexpr>c  s     Aa#..q1Ar  znon-const keys in dict_keysr  z.Dynamo expects dict_keys keys to be constants.zCEnsure your dict_keys keys are constants (e.g. int, float, strings))_DimHintTypez%s marked %s via IntWrapper	warn_only)
constraint)dynamismr  r&  zUndefined dynamism ({  torch.utils._tritonr  r  r  
decoratorsr  r  triton.runtime.autotunerr  triton.runtime.jitr  $triton.tools.experimental_descriptorr  r  triton.tools.tensor_descriptorr  rq  getrc  r  rE  r  r   r  rU  	parameterUninitializedBufferUninitializedParameterr-   r3   nontraceable_tensor_subclasses__torch_dispatch__r.   rv  rq   rT  r<   SEQUENCE_LENGTHrw   r   r  getattrrF   r  r   r5  r6  rS  r\  rv   r  ry  defaultdictOrderedDictr  r  guard_on_key_orderr]  	enumerateri   r   rL  r  r   r  rV  wrap_moduler   r  r  	overridesTorchFunctionModer   setanyr;   r4   SUPPORTABLErx  rY   r   	frozensetSourcelessBuilderr  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_rewriteautogradfunctionFunctionMetar   FunctionCtxr  RuntimeErrorrw  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  BackwardHookrs  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_definedrealize_all_typequalified_namer  maybe_to_fake_obj	fake_mode__new__r   should_reconstruct_allr   r  __len____getitem__r   r   rW   r   r   fromkeysr   r   r   rl   r   rg   r   r   torch.export.dynamic_shapesr"  r&  STATICwrap_symintvallogdebugr)   r%   AUTO)?r  r  r  r  r  r  r  r  r  r  r  r  type_dispatchid_dispatchr  r6  r  factory_sourcevarLr  r  r  func_srcfunc_objr  args_sourceargr  keywords_sourcer  	dt_sourceactual_saved_tensorsr  rj  saved_tensors_sourcestream_source
stream_varindexstream_proxyevent_proxyis_intr  rr  symsym_node_proxysym_expr
new_syminttracing_symint	attr_nameself_objr  r  proxyfake_script_objr  r  r  
set_vt_clsr   r"  r  r  s?   `                                                            @@r   rZ  zVariableBuilder._wrap  sj&   	
 	
	

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


+ 177;;  d5k*'U4''(C(CD4;;#{{  ''(?(?@U$56 --e44 $//O!@!M 446 $//TODGG-Ft{{-ST--/ $nn@@RR((%O GGNN..AA'dii8U{{	 B E +3UE4+EJJOOJ' -33{{  ut[%<%<=>U##t||3  7 78 < <= GGNN--11$++>&  !*+>u+E!F F
 ( "%)@)@A  ++35{{	G .2G*,UGDKKXF77>>..DDUFSSu% 7 78 < <= u}}U34
 	 $**%%eQ/():A>F  %t{{:O:QH .F 77>>..DDUFSSt$ 7 78 < <= t||E23
 	 $**$$UA.,T__->BF  #t{{:O:QG -UGDKKXF77>>..DDUFSSY/0 7 78 < <=T]]5)*A t||A/
 	 $**$$Q*:4??;LaPF  )35#(>DUJt{{:O:QF ,E&UF77>>..DDUFSSU^4 7 78+E$++FF77>>..DDUFSS ' 7 78,33DGGU4;;WF77>>..DDUFSSy)A5AA HMM!*11$''1=MMOO%001M1MNOO%001J1JK *%DD9.5/gaHXHcHcdeHf/g.hi P]	  2259@~~%)<)<@S@S)S''		22$$(<(<<		1KK$$&&
 ''II'//1#:U#K (   $$(9(99		1KK$$&&
 ''		J<N<N'OO"%88H#IJJ))%00w\, J^   v*"8 N 0hs_   (<CQ)5CQ'CQ/CQ$ t(ACQ5yACQ:~!ACQ?F"'CRICR	I,CR	Q$
CQ2Q1CQ2c                    | j                  t        j                         t        || j                        }t        j                  t        |            s|S | j                  j                  j                  j                  ||      S r  )rT  r<   r  r   r  rD   "cls_supports_mutation_side_effectsrc  r5  r6  rS  r\  )r  r  r  s      r   r  z!VariableBuilder.wrap_user_defined  s^    L334*5E==d5kJMww~~**@@OOr  c                 f   |D ]  }||u st        ddddg        t        j                  rPt        |      t        j
                  u r5| j                  t        j                         t        j                  |      S | j                  t        j                         t        |t              rt        d |D              ro| j                  j                   j#                         rK| j                  t        j                         t%        |D cg c]  }t        j                  |       c}      S t'        |      D cg c]4  \  }}t)        j                  |t+        | j-                         |            6 }}}| j.                  j0                  j2                  j5                  d	      }t7        | j                  t8              r| j                  j:                  t=        |      v r| j                  }t7        |t>              sJ | j.                  j0                  j@                  jC                  tE        jF                  d
d| jH                        t        |      ||      }d|jJ                  jL                  d<   tO        tP        | j.                  ||d |      }g }	t'        |jR                        D ]  \  }}
t+        ||d      }|
| j.                  j0                  jT                  |<   tW        ||         |
jX                  jJ                  jL                  d<   t[        j\                  t        j^                  ta        ||               }|	jc                  |je                  |              tg        |	ddi ti        ||dd d      }||jJ                  jL                  d<   |D ]  }|jk                            tm        jn                  |      || j                        }t        |t>        tp        jr                  f      r0| j.                  j0                  jt                  jw                  ||      S |S c c}w c c}}w )Nz-list elements are pointing to the list itselfr  z=Dynamo does not support lists whose items reference to itselfz!Avoid using self referential listr  r  c              3   F   K   | ]  }t        j                  |        y wr  r  )rF  items     r   rH  z0VariableBuilder.wrap_listlike.<locals>.<genexpr>  s     H$$//5Hr  r  r  r  rA  T	steal_arg)
target_clsr5  r  example_valuesubclass_typer  Fr  r  index_is_slicetensor_dictrg  r   )r	  r
  r  r  )<r;   r3   specialize_intrc  r   r{  rT  r<   r  r   r  r4  rv   rw  r  r  guard_sourceis_unspecialized_nn_moduler   r9  r   rO   re  r5  r6  local_scoper.  r  rX   
local_namerj   rx  r  r  r  r  r  rr  r  wrap_fx_proxy_clsr   r  input_source_to_varrb   r  rM  rN  TENSOR_MATCHr1   r  rh  r=   r  realizer   cls_for_instancery  rz  rS  r  )r  r  r  r  r6  maybe_gmr  tensor_list_proxylist_variablerj  tensor_variablesource_irk  r  rQ  r  s                   r   r|  zVariableBuilder.wrap_listlike  s    	Du}K _>?		   T%[EJJ%> ; ;<#**77 	L889 5% H%HH((CCE ; ;< E!RD"2"9"9$"?!RSS %U+

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

 :!2259&U%$ 1 12377>>..<<UFKKw "S
s   
P(;9P-c                    | j                  t        j                         t        t	        |            D cg c]@  } t        | j                  t        | j                         |            t        ||            B }}t        || j                        }| j                  j                  j                  j                  ||      S c c}w r  )rT  r<   TUPLE_ITERATOR_LENr  r   rL  r5  r_   re  r~   r   r  r6  rS  r  )r  r  r  r6  r  s        r   r}  z#VariableBuilder.wrap_tuple_iterator  s    L;;<
 -e45	
  WODGG%?@QST%UV&ua0
 
 'vdkkBww~~**88GG
s   ACc                 B   | j                  t        j                         t        j                  |      D cg c]  }t        j                  |       }}t        || j                        }| j                  j                  j                  j                  ||      S c c}w r  )rT  r<   RANGE_ITERATOR_MATCHcopydeepcopyr   r  r   r  r5  r6  rS  r  )r  r  r  r  r  s        r   r~  z#VariableBuilder.wrap_range_iterator!  sw    L==> 6:]]55IJ!((+JJ%eDKK@ww~~**88GG Ks   Bc                 r   dD cg c]@  } t        | j                  t        | j                         |            t	        ||            B }}| j                  t        j                         t        |t              r"t        || j                  | j                        S t        || j                        S c c}w )N)startstopstepr  )rL  r5  rF   re  r5  rT  r<   r  r  r  r   r  r   )r  r  r  r  s       r   r  z VariableBuilder.wrap_slice_range)  s    
 /	
  GODGGZ0A1%EFq!
 
 	L334eU# DD t{{;;
s   AB4rk  c                 x   ddl m} t        j                  d| j                  j
                  t        |              |||       || j                  j                  j                  v rT| j                  j                  j                  |   }|j                  |j                  j                  j                  d   d<   y y )Nr2   )mark_static_addressz Marking static input %s, id: %s)rk  r  _dynamo_static_input_type)r)  r  static_inputs_logr  r  r  rE  r5  r6  rS  r  r  rr  r  )r  r  rk  r  r  s        r   mark_static_inputz!VariableBuilder.mark_static_input6  s    4.0@0@"U)	
 	E/ DGGNN///''..--e4C// IINN./JK 0r  c                    ddl m} t        |j                        dk(  r7t	        dt        |      dt        |       dg t        j                  d       t        ||      rt        j                  |j                  d	d
      r<t        j                  |j                  dd       }t        | j                  d| d      S | j                  t        j                          t#        | j                  d      | _        | j%                  |j&                        S t)        |t*        j,                  j.                  t*        j,                  j0                  t*        j,                  j2                  f      r8t4        j6                  s(t	        dt9        |      dg t        j:                         t=        |dd
      rt=        |dd
      st	        dddg        | j                  t        j                          t?        || jA                               }tC        jD                  tG        |            s|S | jH                  jJ                  jL                  jO                  ||      S tQ        jR                  || jH                  jT                        rut)        |t*        jV                  jX                  jZ                  j\                        r*|j_                         }ta        | j                        | _        t*        jb                  j4                  jd                  rtg               }ti        |jj                        rI|jj                  jl                  tn        u r-	 |jk                         D ]  \  }}| jq                  ||        	 ti        |jz                        rI|jz                  jl                  t|        u r-	 |j{                         D ]  \  }}	| jq                  |	|        	 |r-|| jH                  jJ                  j~                  | j                  <   |j                  j                  d      r|j                  j                  d      rt=        |j                  dd
      r| j                  }
t4        jd                  rE| jH                  jJ                  jT                  rt4        j                  rt        | j                        }
t        ||
      }t        |
j                  t        j                                n| j                  }
t4        jd                  rE| jH                  jJ                  jT                  rt4        j                  rt        | j                        }
t        ||
      }t        |
j                  t        j                                | jH                  jJ                  j                  || j                         tC        jD                  tG        |            s|S | jH                  jJ                  jL                  jO                  ||      S t        |j                  t*        j,                  j                  j                  j                        r:| j                  t        j                          t        || jA                               S | jH                  jJ                  j                  || j                  | jA                               S # tr        $ r?}tu        tG        |      | jH                  tw        |jx                               Y d }~d }~ww xY w# tr        $ r?}tu        tG        |      | jH                  tw        |jx                               Y d }~sd }~ww xY w)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   rO  rv   rC  ry  forwardr   r  rT  r<   r  rF   r:  r!  r  r   rU  RNNGRULSTMr3   	allow_rnnstrr?  r5  r   re  rD   r  rc  r5  r6  rS  r\  r5   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baserE   r  inline_inbuilt_nn_modulesrr   rW  named_parametersr  !og_module_named_parameters_fn_ptrr  	TypeErrorr:   rx  r  named_buffersog_module_named_buffers_fn_ptr
nn_modulesr  r  rB  r0  install_free_tensorsr`   r   r=   rh  ra   r    add_fqn_info_for_inlined_modulesr  paralleldistributedDistributedDataParallelregister_attr_or_module)r  r  r  r   r  freezingrA  peb
new_sources              r   r:  zVariableBuilder.wrap_moduleF  sr   0u~~!#1TU\]bUcTddef&11U	 %)%%emm5KUS
 ,,MM#=t /;;bcfbgghi 
  7 78$T[[+>DK##EOO44 uuxx||UXX\\588==IJ$$=E
H6)556	 53U; 5"95A= U	"  7 780t?PQFAA$u+N77>>..DDUFSS00G
 %!6!6!C!C!N!NO(-dkk:}}##==02 U334..7789V$)$:$:$< FDAq 221H2EF U001++448VVV$)$7$7$9 FDAq 221H2EF
  <ADGGNN--dii8   ++,MN((334PQ*A5I![[
33--1L1L "DDKK!PJ=eJWj33L4K4KLM![[
33--1L1L "=T[[!IJ6uZPj33L4K4KLMGGNN;;E4;;OAA$u+N77>>..DDUFSSOOUXX..::RR
  7 780t?PQQ77>>99		( :  k % V0a$''QVVUUV % V0a$''QVVUUVs0   +Z2 !+[= 2	[:;4[55[:=	]4]  ]c                    t        |      t        u rt        | j                  j                        rKt
        j                  d| j                  j                         | j                  |t        j                        S t        | j                  j                        rKt
        j                  d| j                  j                         | j                  |t        j                        S t        j                  st        || j                        rd }| j                  j                  j!                         s$| j                  j                  j#                         rd}t%        | j&                  | j                  j                  t)        j*                  |      | j                  j                  j#                                | j-                  t/        j0                  t2        j4                  |             t7        j8                  || j                        S | j                  |      S t        j:                  s"t        |      t<        u r| j?                  |      S | j-                  t2        j@                         t7        j8                  || j                        }tC        |tD        tF        f      r0| j&                  jH                  jJ                  jM                  ||      S |S )N&%s marked dynamic via source whitelistr'  '%s marked unbacked via source whitelista  torch.compile considers integer attributes of the nn.Module to be static. If you are observing recompilation, you might want to make this integer dynamic using torch._dynamo.config.allow_unspec_int_on_nn_module = True, or convert this integer into a tensor.r  )recompile_hintr  )'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   r5  rA   make_scalarrT  rM  rN  r<   r  r   r  specialize_floatr  wrap_symfloatr  r  rx  r=  r6  rS  r  )r  r  rK  r  s       r   r  zVariableBuilder.wrap_literal  s   ;# !1!12		BDKKDTDTU''
8J8J'KK!$++"2"23		CT[[EUEUV''
8U8U'VV(( .eT[[A%)N00SSU;;33NNP5 ' .((+77>37;;3K3K3f3f3h	 ''!))(55n
 ,22t{{SS##E**((T%[E-A%%e,, ; ;<%,,5MF%$-ww~~22@@OOMr  c                 v    t        |      r.t        |      | j                  j                  u rt	        dd      y y )Nz*Cannot wrap a Tensor that has already beenz"wrapped by this instance of Dynamo)r   r   r5  r  r9   r  s     r    assert_not_wrapped_by_this_graphz0VariableBuilder.assert_not_wrapped_by_this_graph  s;    5>1%8DGG<M<MM*<4  N>r  c           	         | j                         }|| j                  j                  j                  vsJ t	        |      d u}t
        j                  r_|s]t        |t        j                  j                        s|r7|j                  j                         r| j                  |t                      d}t
        j                  xr% t!        |      xs t#        |      xs t%        |      }|xrC t
        j                   xs0 t               xs$ t        j&                  j
                  j(                  }|s6|j                  j+                         s|r]|j                  j-                         sC| j/                  |       | j                  j                  j1                  || j2                  |      S t	        |      dk(  rb| j5                  t6        j8                         | j/                  |       | j                  j                  j1                  || j2                  |      S t;        |      rX| j/                  |       | j                  j                  j1                  |t=        j>                  dd| j2                        |      S || j                  j                  j@                  v }|r#| j                  j                  j@                  |   S i }tC        |      }|| j5                  t6        jD                         t	        |      dk(  r| j5                  t6        j8                         | j/                  |       t        |t        jF                        rS|jH                  rGt        |t        jJ                  jL                  jN                  jP                        stS        ddd	g 
       t        |t        jF                        rPtU        |      rE| j                  jV                  rt
        jX                  stS        dddg tZ        j\                  
       t_        |      rota        |      d|jb                  ta        |      jb                  k7  rBtS        dd|jb                   dta        |      jb                   dg tZ        j\                  
       te        || j                  d|      }	| j                  j                  jf                  ji                  t=        j>                  dd| j2                        tk        |      |	|      }
tm        | j                  |
|       to        d#| j                  |
|	||d|}|jq                         r-te        |jr                  | j                  tu        |d      d       t6        jv                  }t        |tx              rt{        |      rt6        j|                  }t        j~                  j                         xr. t        |t        j~                  j                  j                        }|sA| j5                  t        j                  |t        |t              r|n
t        |                   t        |      r|r| j5                  t6        jD                         |j                         d   d   }|dk7  rt        d      |j                         d   }t        |      dk(  r$|d   |j                  k(  r|d   |j                  k(  st        d      t        tu        | j                  d      j                  t6        j                               t        tu        | j                  d      j                  t6        j                               no| j5                  t6        j                         | j5                  t6        jD                         t        t        |      j                  t6        j                               |j                         \  }}|D ]S  }t        ||      }tu        | j                  |      }t        j                   t        | j                  |      |             U || j                  j                  j@                  |<   d|
j                  j                  vsJ t        |      |
j                  j                  d<   |j                  j                  j                  d   }t        |      | j                  j                  urt        d       t        ||d!|      }||
j                  j                  d"<   |S )$Nr  Tr  guardedr  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.r5  r  r  )r5  r  r  r  r  _base)r5  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  r5  r6  rS  rk   r3   r5  r  r   rU  rs  r  r  r  rr   r<  rS   rT   rV   r  prepare_freezingis_specialized_nn_moduleis_fsdp_modulerT  rA  r  rT  r<   r  rQ   r  r  r  infer_subclass_typer  r  	is_nestednestedr   nested_tensorNestedTensorr;   r   r/  capture_sparse_computer4   r?  r   r   r  wrap_to_fake_tensor_and_recordr  r  rc  cache_real_value_when_exportwrap_fx_proxy_is_viewrY  rF   r  rP   rU   NOT_NONE_MATCHr?  is_availabletensorDTensorrM  rN  rZ   r1   r.   __tensor_flatten__r`  r&  r[  r\  r=   r  rh  DTENSOR_SPEC_MATCHr  TENSOR_SUBCLASS_METADATA_MATCHr^   r5  r   r  rL  rr  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   rv  zVariableBuilder.wrap_tensor!  s   " DGGNN777771%8D ,,#5%(("4"45 v22MMO ""50E0G"H"O &,%@%@ &
!&) >&v.>5f= 	#  /  
000 5$&5}}##44 	 &  99;?S''66811%877>>99tyy :   #5)Y6  5 5611%877>>99tyy :   f%11%877>>99'dii8 :   %(J(JJ77>>55f==+E2$ 7 78"5)Y6 5 56 	--e4 uell+uell&<&<&J&J&W&WX@Q	 uell+e$WW^^6+H+H
 9K6)556	 % % ,y/555H(^IeDTDZDZC[\L6)556" 7dggf
 ww~~11DDFF#S$))4K	 E 
 	%TWWlEB' 
ww''
 
 >> +77!&'2	 "..
fj).Fv.N%44J&&335 
*5$$++33;

  !! &f.?@ *51	 )/ ##L$;$;< %*$<$<$>q$A!$D!$7&Q 
 "'!9!9!;A!> '1,&q)U[[8&q)U-@-@@ 'U  t{{G4??$77 t{{O<GG$11 ##L$O$OP##L$;$;<*62==l>W>WX //1HE1 %eT2)$++t<#//:ODGG\:;G 6E**62L$5$5$:$::::0DU0K}- ,1166;;OL019J9JJ*+UVVFE52CD-5z*r  c           	          t         J t        |t         j                        sJ t        | j	                               }ddlm} |j                  j                   }|r	 d|j                  _        t        j                         5  	 |j                  |      }|rddlm}  ||      }d d d        t)        j*                   t-        | j.                  |                   t1        || j.                  d|	      }| j.                  j2                  j4                  j7                  t9        j:                  d
d| j<                        t?        |      ||      }	tA        | j.                  |	|       d|i}
tC        dtD        | j.                  |	|d|
}|| j.                  j2                  jF                  |<   |jH                  jJ                  jL                  d   }tO        ||d|d|      }||	jJ                  jL                  d<   | jP                  |_(        |S # t        $ r* t        |j                  t         j                        sJ Y w xY w# t"        $ r$}t%        dt'        |      dg |       Y d }~d }~ww xY w# 1 sw Y   xY w)Nr   )_utilT)clone_preserve_stridesz)failed to convert numpy.ndarray to TensorzHException encountered when attempting to convert numpy.ndarray to Tensor)r  r  r  r  from_excFrX  r  rA  r  r  r  r5  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  ri  r;   r-  r   r  rL  r5  rf  r6  r  r  r  r  r  rc  rg  r   r   r  r  rr  r  r  r  )r  r  r  r  readonlytensor_valuer  rD  r  r  ru  numpy_ndarray_variabler  s                r   r  z"VariableBuilder.wrap_numpy_ndarray)	  sH   ~~%,,,"4??#45&{{,,,9(,% 1CCE 	$;;EBJ#9,#GL	* 	''(H(H(VW6ww	
 **==FF#S$))4	 > 
 	%TWWe\BV$!2 "
+ww'	"

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


# )-%%%I  9 "%**bii8889 ' GJ j 	 	sB   H I3!I/I ?I 	I0I+%I3+I00I33I=r&  r  c                    t        |      t        u sJ | j                  | j                  j                  j
                  v r-| j                  j                  j
                  | j                     S | j                  j                  j                  }t        j                         j                  ra|j                         }t        |       | j                  j                  j                  j                  t        || j                  d              nt!        | j#                               sp|dt$        j&                  j(                  j*                  r@| j-                  t.        j0                         t3        j4                  || j                        S | j                  j                  }t7        | j                  |t9        j:                  |      | j                  j<                  j?                               }tA        | j                  j                        }| j                  }	tC        |	tD              r|	jG                         }	||}
nt(        jH                  r)|jJ                  tL        u rtO        dd       tQ               }
ntC        |	tR              r6|	jT                  *tW        |	jT                        j                  |ddi      d   st(        jX                  stZ        j\                  }
nS|jJ                  tL        u rtO        dd       | j-                  t.        j0                         t3        j4                  |      S |j_                  || j                  |
      }| j                  j                  j                  j                  t        || j                  |             n[t!        | j#                               sJ | j-                  t.        j0                         t3        j4                  || j                        S tC        | j#                         t`              rJ tc        | j#                         je                  t.        jf                               d	| j#                         i}| j                  j                  jh                  jk                  tm        jn                  d
d| j                        t        |      || j#                               }|jp                  jr                  }tC        |tt        jv                        s
J | d       || j                  j                  jh                  jx                  |<   t{        j4                  | j                  ||fi |}|| j                  j                  j
                  | j                  <   t!        | j#                               s6t}        | j#                         |dd d|      |jp                  j~                  d<   |S )Nr  rJ  dynamo.automatic_dynamic_shapesTr   Fr  r  r  r  rA  r  r  r  r  )@rc  r  r  r5  r6  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   rP  r  r  r   r  rH   r4  automatic_dynamic_shapesscalarr?   r   $get_automatic_dynamic_shapes_mark_asrX   r&  r  assume_static_by_defaultr$   r  r  r\   r=   rh  r  r  r  r  r  rr  r  r  r  bound_symbolsr   r  r  )r  r  r&  r  r  wrapped_valuer  frame_state_entrynormalized_source_namebase_sourcer  ru  r  r  
unspec_vars                  r   r  zVariableBuilder.wrap_symint{	  sN    E{c!!!99:::77>>55dii@@GGNN,,	CC%<<>M%m4GGNN((//M4;;= $DOO$56EMM$8$8$G$G
 ##L$?$?@'..U4;;OO;;##D 9#//6+/;;+C+C+^+^+`	! &;4;;;K;K%L"++K+}5)224#&//%,,< A4HBD;4((4--.223IAu:V 44(00 %++|;#$EuM##L$?$?@'..U;;%JJ{{' K M GGNN((//M4;;@ &doo&7888 ; ;<#**t{{KKdoo/1BCCCdoo'22<3J3JKLT__./**==FF#S$))4??$	 > 
 !%%**(ELL1WhZ?V3WW1=B""00:$++DGGUMUWU
8B**4995!$//"34*2!#( #0+EJJOOJ' r  c           
      
   | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S t	        | j                  | j
                  j                   t        j                  |      | j
                  j                  j                               }t        j                  j                  j                  st        | j                               st!        j"                  |      sqt!        j$                  |      s\t        j&                  j                  j(                  j*                  s.t-        dd      s"t        j.                  rR|j0                  t2        ur@| j5                  t6        j8                         t;        j<                  || j
                        S t        j>                  |t        j@                        }t        jB                  jD                  jG                  |      r@| j5                  t6        j8                         t;        j<                  || j
                        S tI        | j                         tJ              rJ tM        | j                         jO                  t6        jP                               tS        | j                               }||d}tU        || j                  d|      }| j                  j                  jV                  jY                  t[        j\                  dd	| j                         t_        |      ||
      }ta        | j                  ||       tc        td        f| j                  ||d|}tI        |td              sJ || j                  j                  j                  | j                   <   | j                  jf                  r=tI        | j                         th              stk        d| d| j                                d }	|jl                  jn                  jp                  d   }ts        |      sJ |}	|	jt                  | j                  jt                  u sJ d|	jt                   d       tw        | j                         |d|	d|      |jn                  jp                  d<   ty        | j                   | j                  j                  jz                  ddgt}        |gi              }
| j                  j                  j~                  j                  t        |
j                  | j
                  d              t               j                  ddd       |
S )NrJ  z.pytorch/compiler:unspecialize_float_killswitchFr  )r  )r  	raw_valuerX  r  rA  r  r5  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  r5  r6  r  rC   r  rA   rP  r  r  r   r  r3   rQ  rQ   re  mathisnanisinf	_inductortriton
cudagraphsr   r  r  r?   rT  r<   r  r   r  rl  float64rE  rF  is_gradtrackingtensorr  r\   r=   rh  r  rN   rf  r  r  r  r  rc  rg  r   r   r/  rX   AssertionErrorr  rr  r  r   r  r  rh  rq  ry   r  r  r*   sym_numr   r=  )r  r  r  r  r  ru  r  r  r  r  r  s              r   rR  zVariableBuilder.wrap_symfloat	  s!    99:::77>>55dii@@5GGKK++E2'+{{'?'?'Z'Z'\	
 MM  11!$//"34zz% zz%  %%,,77OQVW//%,,L@  ; ;<#**t{{KK U%--@
 8844]C ; ;<#**t{{KK doo/1BCCCdoo'22<3J3JKL #4??#45#%8 7dggv
 **==FF#S$))4	 > 
 	%TWWe]C&'
ww'	

 

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


# GG'DGGNN'' #J<4
 	$$++K		4;;PT,UV!!";TT!Rr  c                    | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S t	        j
                  |      }t        | j                         t              s6t        | j                         j                  t        j                               d| j                         i}|j                  d|i       t        || j                  d| j                               }| j                  j                  j                  j!                  t#        j$                  dd| j                         t'        |      || j                               }t)        | j                  ||       t+        t,        f| j                  ||d|}|| j                  j                  j                  | j                   <   t/        | j                               s| j                  j0                  r=t        | j                         t2              st5        d	| d
| j                                d }|j7                         r|j9                         }n#|j:                  j<                  j>                  d   }tA        |      sJ |}|jB                  | j                  jB                  u sJ d|jB                   d       tE        | j                         |d|d|      |j<                  j>                  d<   |S )Nr  r  FrX  r  rA  r  r  r  r  r  r  r  Tr  r  )#r  r5  r6  r  r   rl  r  re  r\   r=   rh  r<   r  updaterf  r  r  r  r  rc  rg  r   r   rQ   r/  rX   r  is_python_constantas_python_constantr  rr  r  r   r  r  )r  r  r  ru  r  r  r  r  s           r   rj  z,VariableBuilder.wrap_unspecialized_primitive~
  s   99:::77>>55dii@@U+$//+->?$//+66|7N7NOPT__./U+,6dggt?P
 **==FF#S$))4??$	 > 
 	%TWWe]C&'
ww'	

 

 9C**4995!$//"34ww~~j1BK&P$STaSbbklpl{l{l}k~  !%,,. * = = ? * 0 0 5 5 : :? K=))) -$..$''2C2CC /99: ;C CC
 +3!#'-#0+EJJOOJ' r  NN)?r   r  r  __doc__r]   r/  ra  r[  re  rT  classmethodrq  rM  cachern  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  rZ  r  r	   rw  rx  rx   r   r|  r}   r}  rz   r~  r  r  r  r   r  r(  r  rU  rV  r:  r  rT  rv  r  r   r$   r)   r  rR  rj  r>  r?  s   @r   rL  rL    s   =    
	 1f
 ; ; __$  $L+

 +
I'"7"7 I

HB __	c8.4oEFF	G  4H1T Ps Pv5lJ)N#O vp	H 	HH H<eE5L&9 <u|| D  [ [z5nell F FPP&j *.37	u :&u /0	unJX9r  rL  c           	      z   t        | t              r| j                  }n"t        dd|  dt	        |        d|  dg        g }t        j                        D ]X  }d }| j                  r,t        | j                  d      }t        ||j                        }|j                  t        ||             Z t        |      S )	Nzdataclass fields failurezobj: z; variable type: z$Dataclass fields handling fails for z*. Expected it to be a user-defined object.r  __dataclass_fields__r  )r  r   r  r;   rc  r  r  r  rF   rK   r  r  r   )objr  r  fieldr  base_srcs         r   r  r  
  s    #01		.C5 1$s)=>seCmn		
 E##E* F::!#**.DEH&x<F.uVDEF r  c                     t        | t        j                        rIt        | t              s9t        j                  |       rt        |       |u s| j                  st        |       } | S r  )r  r   r  r   _is_functional_tensorr   ra  re   )r  r  s     r   _clone_inputr  
  sQ    %& uj) ++E2'.);  &ELr  r=  c                     | |||d|}|t        ddt        i|S t        ddt        i|}|j                  |        |S )N)r5  r  r  r  r  r  )r   r   r   install_global)r5  r  r  r  ru  kwargsr  s          r   rh  rh  
  sb     &&	
 F  ENEfEE"U.JUfUb!r  c                     | j                   r_t        j                  j                         5  t	        || j
                        |j                  j                  |j                  <   d d d        y y # 1 sw Y   y xY wr  )	r/  r   rE  DisableTorchFunctionSubclassr  r  tracerreal_value_cacherr  r  s      r   rg  rg  
  s`    	yy XX224 	8Dr||9ELL))%**5	 		 	 	s   8A--A6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k7  r%|j                  j                  j                  |       |S )Nplaceholder)_wrap_fx_proxyr  r   r  _wrap_fx_preexisting_tensorhandle_traced_outputr  	variablesr   r   rr  opr6  current_tracerrecord_tensor_or_symint_vt)r  r5  r  r  r  ru  outs          r   r   r   )  s     E=-
CJ
 
M5<<	0)E=-
CJ
 #2ug}j

 	''66''77	
 JJMM]*
		  ;;C@Jr  c                 z   ddl m} t        |t        j                        sJ dt        |              t        ||      sJ d|v r-|d   (|j                  j                  j                  |d          |j                  j                  dk(  r#d|j                  j                  v sBJ d| d       d|j                  j                  vsJ |j                  j                  d           t        j                  j                  j                         5  t        |      |j                   u rnt#        |||       |j$                  r^t        j&                  j)                         5  t+        ||j                         |j,                  j.                  |j                  <   d d d        d	| t0        t2        fv i}d
|v r|d
   J |d
   |d
<   t5        |fd|i|}|j6                  j
                  dk7  r%t        |      |j                   urt9        d|       d d d        t;        | |||||      S # 1 sw Y   xY w# 1 sw Y   %xY w)Nr2   InstructionTranslatorBasez1_wrap_fx_preexisting_tensor expected tensor, got rj  r  r  zplaceholder z* doesn't have 'example_value' in node.metar  r  r5  r  zN`tensor` needs to be a `FakeTensor`wrapped by this instance of Dynamo. Found: )symbolic_convertr  r  r   r  rc  r6  rj  r  rr  r  r  r  r  +_disable_saved_tensors_hooks_during_tracingr   r  rg  r/  rE  r  r  r  r  r   r   rf  r  r9   construct_tensor_variable)r  r5  r  rl  r  ru  r  r  s           r   r  r  K  s9    =fell+ 
;DL>J+ b34447wx0<
		 12 zz}}%%**//1 	
5'!KL	
1 ejjoo5 	
zz/0	
5
 
			H	H	J  v&",,6(UF;yy XX::< @LAELL11%**= Z"$@ABF w&78+<+HHH&x0F83FLrLVLF==''r||;*>>DXG ; D %Bv}g 1    s&   AH18H%A7H1%H.	*H11H:c                    ddl m} t        ||      sJ d|v r-|d   (|j                  j                  j                  |d          d|j                  j                  vsJ |j                  j                  d           t        j                  j                  j                         5  t        |j                  |d      }d d d        t        ||||||       S # 1 sw Y   xY w)Nr2   r  rj  r  T)allow_non_graph_fake)r  r  r  r6  rj  r  rr  r  r   r  r  r  rh   r  )r  r5  r  r  r  ru  r  s          r   r  r    s     =b34447wx0<
		 12%**//1Xejjooo6V5WX1 
			H	H	J R 'uzz2DQ	R  r5'=* R Rs   %CCc                    dd l }dd l}dd l}t        | |j                        rt        |       rD|j                  rt        j                  s(t        dt        |       dg t        j                         t        |||| ||      }|j                  j                  j!                  ||t"               |S t%        |j&                  j(                  d      ra|j&                  j(                  j*                  dk(  r>t        |j&                  j(                  j,                  |j.                  j0                        s,|j&                  j(                  |j2                  j4                  u rt7        |j&                  j(                        S |j&                  j(                  |j.                  j8                  u s,|j&                  j(                  |j:                  j<                  u rt?        |       S tA        | |jB                        r@tE        d | D              r.| D cg c]  }tG        jH                  |       }	}tK        |	fi |S t        | tL        tN        f      rtQ        |j&                  |        g }
tS        |       D ]  \  }}|%|
jU                  tG        jH                  d#i |       -|jV                  jY                  d	tZ        j\                  ||fi 
      }d|v r9t        | tN              sJ |d   }|j_                         }ta        ||d      |d<   n|}|
jU                  tc        d$||||d|        t        | |jB                        rtK        |
|fi |S tA        | tL              rte        |
fi |S tA        | tN        tf        f      rti        |
fi |S | jj                  jl                  dk(  s6t%        | d      s*J d| jj                  jl                   dto        |               tq        |
| jj                  fi |S | "|j&                  j(                  |jr                  u rtG        jH                  d#i |S t        | |jt                  |jv                  |jx                  f      rT|j                  jz                  j}                  | |       tQ        |j&                  |        t        jH                  ||| fi |S t        | |j                        r|j&                  j(                  t        u s=|j&                  j(                  t               D cg c]  \  }}|j                   c}}v r[tQ        |j&                  |        d }|j&                  j(                  t        u r|j&                  j                  d   }t        || |fi |S t        | |j                        r|j&                  j(                  t        u s=|j&                  j(                  t               D cg c]  \  }}|j                   c}}v r[d }|j&                  j(                  t        u r|j&                  j                  d   }tQ        |j&                  |        t        || |fi |S t        j                  |j&                  j(                        r*t        |j&                  j(                  |j                        s=|j&                  j(                  t               D cg c]  \  }}|j                   c}}v r$tQ        |j&                  |        t        || d fi |S |j&                  j(                  dk(  r;|j&                  j                  dk(  r"tQ        |j&                  |        tG        | fi |S | lt        | |j                        rV|j&                  j(                  dk(  r=|j&                  j                  dk(  r$tQ        |j&                  |        t        || d fi |S t        | t              r`|j&                  j(                  |j                  t        tZ        j\                  |j                  j                  |j                  tZ        j                  |j                  j                  j                  |j                  j                  j                  |j                  j                  j                  t        |j                  dt              t        |j                  dt              |j                  fv s2|j&                  j                  dk(  rE|j&                  j(                  dk(  r,tQ        |j&                  |        tG        jH                  | fi |S t        | |j                  j:                  j                        r%ddl^m_} tQ        |j&                  |         ||fi |S t        | t              r]|j&                  j(                  |j.                  j                  |j.                  j                  j                  |j                  j:                  j                  |j                  j:                  j                  |j                  j:                  j                  |j.                  j                  |j.                  j                  |j.                  j                  |j.                  j                  |j.                  j                  dgtO        t        j                               z   v r,tQ        |j&                  |        tG        jH                  | fi |S t        | t        t        t        f      r|j&                  j(                  t        u sN|j&                  j(                  t        u s2|j&                  j                  dk(  rE|j&                  j(                  dk(  r,tQ        |j&                  |        tG        jH                  | fi |S t        | t              s|j&                  j(                  dv r,tQ        |j&                  |        tG        jH                  | fi |S t        ddt        |        d |j&                  j                   d!|j&                  j(                   d"g        y c c}w c c}}w c c}}w c c}}w )%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                y wr  )r  r  r  s     r   rH  z'handle_traced_output.<locals>.<genexpr>  s      3 
1c3s   r9  )kindtargetr  r  r  Fr  r  ztorch.return_types_fieldsz	expected z. == torch.return_types or named tuple but got queryr  record_eventget_rankget_world_size
bit_lengthr   r   
is_integerr  )r  	__round__ztorch.* op returned non-Tensorzexample_value type: z; op: z
; target: zUtorch.* ops that return a non-Tensor cannot be traced into the Dynamo FX graph outputr  r  )qtorch._functorch.vmaptorch._subclasses.fake_tensortorch._utilsr  r  r   r/  r3   re  r;   r-  r4   r?  r  r6  rS  
_track_objr   r   rr  r  r   r   rE  	Generatorr  set_rng_stater   _DisableFuncTorchrn  _is_in_bad_forkr   rv   r{  r  r   r  r   rw  rx  r{   r9  r  r  rq  operatorgetitemr  rO   r   r   r,   r   r0  r  rc  r   manual_seedr
   SymFloatr  r  track_produced_symintsr   rp  r   r8   current_streamr  r   rv  r   rC  rD  r  r  r  sym_intr5  _utils_element_sizeseedmodrF  vmap_validate_and_get_batch_sizepredispatch_vmap_increment_nesting_vmap_decrement_nestingr?  r   _constrain_as_sizebackends
SDPAParamssdpar   r(   _are_functorch_transforms_activeis_batchedtensoris_flash_attention_availablecan_use_flash_attentioncan_use_efficient_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  r5  r  ru  r  r  r   r  r  sizesunpackedr  r  proxy_ir  	options_irA  device_interfacer  r   s                       r   r  r    s	    (-. '		!>!>NM*`6)556	 (E=-
 			))3*> 	* 	
 


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

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

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

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

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

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

^+::
*JJMM]*uzz/@/@F/J%**m4&&}@@@	M5	)UZZ->->BV-V%**m4&&}@@@4*7=+A*B&Wabgblblbsbsatuo		
S DFs   p3 p8
p>5qc                 &   t        |       t        j                  t        j                  j                  t        j
                  j                  j                  t        j
                  j                  j                  fv st        |       ry t        |       S r  )rc  r   r  rU  rs  r)  r
  r   rt  ru  r.   r  s    r   r`  r`    sj    E{%%00++<<	 
 
'u	-$ E{r  c                    | j                  |      }t        |t        j                  j                  j
                        r|j                  |j                  u r|r|}nt        |t        j                  j                        rt        j                  j                  }nOt        |t        j                  j                        rt        j                  j                  }nt        j                  }||d<   |S )N
class_type)
specializer  r   r)  r
  r   r  rU  rs  r  r  )r  r5  r  r  specialized_propstensor_types         r   get_specialized_propsr    s    "--m< 	=%"3"3"?"?"J"JK##r||3'Kuxx'9'9:((,,Kuxx7((//K,,K*5,'r  c                 $   t        ||j                        }t        |j                  |       |j                  j                  dk7  r&|j
                  j                  j                  ||       |j                  t        | |||              | |fi |S )z
    Actually construct a tensor variable after all the pre-processing from
    wrapping a pre-existing or newly created tensor value.
    r  )
r  r  r{   rr  r  r6  r  r  r  r  )r  r5  r  r  r  ru  s         r   r  r    sv     !=Mejj-0
 zz}}%
		  77uMNN(RVWe'w''r  c                     t         j                  dk(  rt        j                  S t         j                  dk(  rt        j                  S t         j                  dk(  rt        j
                  S t        dt         j                         )Ndynamicunbacked	obliviousz+invalid automatic_dynamic_shapes_mark_as = )r3    automatic_dynamic_shapes_mark_asr$   r  rN  OBLIVIOUS_SIZEr  r  r  r   r  r    sn    ..);!!!		0	0J	>,,,		0	0K	?(((9&:a:a9bc
 	
r  _DYNAMIC_SOURCES_DYNAMIC_SOURCES_CONFIG_HASHc                  F   t        t        j                  j                  j                        } t
        t        | k(  rt
        S t        j                  j                  j                  j                  dd      j                  d      D ch c]  }|r| c}a| at
        S c c}w N r  ,)	hashr   compilerr3   dynamic_sourcesr#  r$  replacesplitcurrent_hashss     r   get_dynamic_sourcesr1    s     --==>L #(D(T
 &&66>>sBGMMcR 	

 $0    Bsource_namec                     t               }|D ]6  }|| k(  st        j                  ||       st        j	                  d| |        y y)NzA%s was marked dynamic due to dynamic source allowlist pattern: %sTF)r1  r  matchr  r  )r3  r+  patterns      r   rL  rL    sM    )+O" k!RXXg{%CIIS
  r  r5  r   r  rD  c           
         |j                         }t        |      s|j                         }|j                         }d g|z  }t	        |      D cg c]
  }||   | f }}|j                  t               i }	|D ]>  \  }
}| }|	j                  |
|
      ||<   |	j                  |
||   z  t        |             @ ng }t        | |t        j                  t        |      t        |                  S c c}w )N)r  )sizer   stridedimr  sortr#   r.  
setdefaultrB   rC   rA   make_tensorrw  )r5  r  rD  ex_size	ex_strider:  r9  r  pending
candidatesi_strideneg_is               r   record_automatic_dynamicrD    s     ffhGHHJ	eeg#/4Sz:!IaL1"%::/0
& 	IOHeA"x:F1I!!(WQZ"7QH	I
 $
D%11%.%-P  ;s   C1_UNBACKED_SOURCES_UNBACKED_SOURCES_CONFIG_HASHc                  F   t        t        j                  j                  j                        } t
        t        | k(  rt
        S t        j                  j                  j                  j                  dd      j                  d      D ch c]  }|r| c}a| at
        S c c}w r&  )	r)  r   r*  r3   unbacked_sourcesrE  rF  r,  r-  r.  s     r   get_unbacked_sourcesrI    s     -->>?L $)F,)V  
 &&77??RHNNsS 	

 %1!r2  c                     t               }|D ]6  }|| k(  st        j                  ||       st        j	                  d| |        y y)NzC%s was marked unbacked due to unbacked source allowlist pattern: %sTF)rI  r  r5  r  r  )r3  rH  r6  s      r   rM  rM  0  sN    +-# k!RXXg{%CIIU
  r  c           
      4  01 | j                   rGt        | t        j                  j                  j
                  j                        st        dddg        |j                  }|j                  j                  j                  j                  | d       }|r|j                  nd }d }| j                         r$t        |d      }	t!        | j"                  ||	|      }t%        |       r|st!        | |||d      }
i }t'        |       j)                  |       \  }}|D ]+  }t+        | |      }t        ||      }t!        ||||      ||<   - t-        |
j.                  |
j0                  |
j2                  |
j4                  ||
j6                  |
j                  |      S |rt9        |      svt;        t<        j>                  g| jA                         z  t<        jB                  g| jA                         z  d g| jA                         z  d g| jA                         z  |||	      S d
dl"m#1 tI        1fd| jK                         D              rt;        | jK                         D cg c]2  }t        |tL              rt<        jN                  nt<        j>                  4 c}t<        jB                  g| jA                         z  d g| jA                         z  d g| jA                         z  |||	      S tQ        |||       }tS        |       }i 00fd}d
dl*m+} |j                  jX                  r`|j                  jX                  D ]G  }t        ||      r|jZ                  |k(  s  ||j@                  |j\                  |j                         I g }g }g }g }g }t_        | jA                               D ]]  }|t+        | dta                     v }|t+        | dta                     v }|t+        | dta                     v }|t+        | dta                     v } |t+        | dta                     v }!|jc                  t+        | di       j                  |g              te        |j                        }"|}	t        |	tf              r|	ji                         }	|sFt        |	tj              r|	jl                  zto        |	jl                        j                  |"|di      |   rPtp        js                  d|       tt        g| jA                         z  }#tv        |#|<   |ty        jz                  |#      z  }t|        j~                  xr |j                  |      }$t|        j~                  xr |j                  |      }%t9        |      rtp        js                  d|       d}$t        |      rtp        js                  d|       d}$|$xs |%}&0j                  |      }|d }'d }(|rt|        j                  sd }(t        | d      r| j                  D )cg c]  })|)j@                  |k(  s|) c})j                         }*|*j                  |*j                  t        d      }'nd
dl"mJ}+  |+t        |*j                  |*j                        d      }'nt        d      }'n|rt        d      }'n|!s+|&r)t        dd       |$rt        d      }'|%rbt        d      }(nU|!st|        j~                  st        dd       d }'d }(n2|\  }'},d }(| d | d!}-|,|j                  j                  j                  |-<   |jc                  |'       |jc                  |(       |st        |      rt<        j                  }.nr|'|s| s 1| jK                         |         r|&rt               }.nFt<        jN                  }.n5|st|        j                  s|!rt<        j>                  }.nt<        j                  }.|(t<        jN                  }/nt<        jB                  }/|jc                  |.       |jc                  |/       ` t;        ||||||||"      S c c}w c c})w )#NzGEncountered strided NestedTensor in automatic dynamic dim determinationr  rW  r  rY  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)rM  rN  rO  rP  rQ  rR  rS  r   )is_nested_intc              3   T   K   | ]  }t        |t              xr	  |        ! y wr  )r  r
   )rF  r0  rU  s     r   rH  z%_automatic_dynamic.<locals>.<genexpr>  s(     
La:a 9q)9%99
Ls   %(c                     | v r=ddl m} |    \  }} ||j                  |j                  z  d      }|xs |}||f| <   y ||f| <   y )Nr   StrictMinMaxConstraintFvrr$  )%torch.fx.experimental.symbolic_shapesrY  r[  )	r:  constraint_ranger  rY  old_constraint_rangeold_namenew_constraint_rangenew_namedim2constraints	           r   update_dim2constraintz1_automatic_dynamic.<locals>.update_dim2constraint  sk    . T-;C-@* (#9#&&)=)@)@@$   '4H"6"@N3"2D"8N3r  )_RelaxedConstraint_dynamo_strict_unbacked_indices_dynamo_unbacked_indices_dynamo_dynamic_indices_dynamo_weak_dynamic_indices_dynamo_static_indices_specialize_onFz#automatic dynamic %s marked dynamic)r8  rH  rI  _dynamo_dynamic_ranger#  rX  )lowerupperrZ  r  z.size()[])rM  rN  rO  rP  specialize_onrQ  rR  rS  )Sra  r  r   rb  r   rc  rd  r;   r  r6  tracing_contexttensor_to_contextr.  rS  ri  rF   _automatic_dynamicrY  r.   rc  rn  r5  r'   rM  rN  rO  rP  rR  rL  r&   r$   r  r:  INFER_STRIDEr\  rU  r>  r8  r
   r  rD  rE  r  rd  export_constraintst_idr]  r  r=  r  r   rH   r4  rX   r&  r  r  r  r@   r?   rA   	make_sizer3   r  is_size_dynamicis_stride_dynamicrM  allow_ignore_mark_dynamicr   rk  popminmaxr%   rY  r0   r   r  source_name_to_debug_namerN  r  r  DUCK)2rD  r5  r  static_shapesrL  r  prior_policyrS  rQ  r  outer_contextrT  r{  rA  r|  inner_tensorr~  r0  r  ru  rc  rd  r%  rM  rN  rO  rP  ro  r  marked_strict_unbackedmarked_unbackedmarked_dynamicmarked_weak_dynamicmarked_staticr  	mark_sizeautomatic_dynamic_sizeautomatic_dynamic_strideautomatic_dynamicconstraint_sizeconstraint_stridedr	dim_rangerY  name_dim_namedynamic_sizedynamic_striderb  rU  s2                                                   @@r   rr  rr  ?  sv    	{{:	5<<!!//<< 	]M		
 ;;D99,,>>BB1dKL<H88d (
 48zz| 1.qwwKW$Q'
*r6=T

 7--a0q 	D"1d+L%fd3L#5b,$N4 	 ''55)99*;;,??/'550=0a0a)	
 		
 .t4&%,,-7'445?"Vaeeg- $v// 0S
 	
 D

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

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

    NOTE - This class is very new! It will have some rough edges, but it was created to stem the bleeding of giant
    if/else type->VariableTracker trees that were cropping up all over dynamo.
    r=  Nc                     t        d      )NzUse SourcelessBuilder.create()r  r  s    r   r/  zSourcelessBuilder.__init__  s    =>>r  r5  r   c           
         t        |      }t        j                  j                  |      }|r	 || |      S t	        |t
              r|S t	        |t        j                        rt        |      S t        j                  |      rt        j                  |      S t        |      rVt        j                  |      At        j                  |      rd| j                   _         t        j                  |      |      S t        |      rPt%        j&                  |      r; t        j                  |j(                        |j(                        }t+        |d      S t-        |      r t        j.                  |      |      S t	        |t0        j2                  t4        j6                  t4        j8                  j:                  j<                  f      rt?        |      S t	        |t         t@        jB                  f      rt%        |      S t	        |tD        jF                        rtI        |      S t	        |tD        jJ                        rt	        |j(                  t         t@        jB                  f      rvtM        |j(                  |jN                  jP                        |k(  sJ t        j                  | |j(                        }	 |jS                  | |jN                  jP                        S t	        |t4        jV                  jX                  jZ                        rt]        |      S t	        |t4        j^                  j`                  jb                        rt        |      S te        jf                  |      rte        |      S ti        jj                  |      rti        |      S |tl        jn                  u rtq        |      S t	        |tr        jt                        rtw        |      S t	        |t4        jx                  jz                  j|                  j~                        rt        j                  t        |            S t	        |t        t4        j                  j                              r3t4        jx                  jz                  j                  j                  |      S t	        |tD        j                  tD        j                  f      rt        |      S t        |      rUt        t        |            D cg c]"  }t        j                  | tM        ||            $ }}t        |t        |            S t	        |t4        j                        ro|j                  j                  | j                   j                  v rC| j                   j                  |j                  j                     }t        j                  | |      S t        d|j                   d|j                   d| g t        j                         y # tT        $ r Y Gw xY wc c}w )NTr  )r  z%Unexpected type in sourceless builderr  z3SourcelessBuilder.create does not know how to wrap r  )Urc  rA  _type_handlersr.  r  r   r  _HAS_DEFAULT_FACTORY_CLASSr   r   r  r  rW  r7   re  rf  r6  rg  r   is_supported_new_methodr   r   rn   rY  rB  rC  r   rD  rE  rF  rG  r   abcABCMetar  r  r   rT  r5  r  r   var_getattrri  r0  graph_moduleGraphModuler   r  r  r  r   r  r   r  rM  r  r   r  r  r   r  r  lazyLazySymNodeFormatStringr-  rk  flex_attention_backwardhigher_order_ops&FlexAttentionBackwardHighOrderVariableGenericAlias	UnionTyper   rq   rw   r   r
   rr  r  r  r   r;   r  r  r4   
DYNAMO_BUG)	r5  r  
value_typefast_handlerr  
cls_obj_vtr  r6  r  s	            r   r  zSourcelessBuilder.create  st   %[
(77;;JGE**e_-L{EEF,U33((/#**511e_!<!<U!C!O..u5>B		;5;..u5e<<e_!9!Q!Q"
 >+--enn=ennMC"3	22#E*,;%%e,U33DIIu00%((2E2E2S2ST
  &&ckk23+E22u667(//ue../ 5>>D#+++>? 5>>5>>+B+BCuLLL*11"ennEJ!--b%..2I2IJJ uxx44@@A077u{{22;;<,U33++E2$U++..u5%e,,ioo%)%00rzz*'..u}}66;;SST#**3u:66tE$;$;$S$STU==**;;bb   2 2EOODE!%((5! .d5k: "((WUD-ABF  &fUDDuell+

299#:#::II++EJJOO<E"))"e44;!,,-Qz/F/F.GHMj\Z1%001		
E ' .s   5%W 'W.	W+*W+c                 \    t        j                  |       sJ t        j                  |       S )Nr  )r   r  r  r  s    r   wrap_constant_literalz'SourcelessBuilder.wrap_constant_literal  s'    **5111&&U33r  c                  B   t         j                  i } t        D ]  }d | |<   
 fd| t        <   fd| t        <   fd| t
        <   fd| t        <   fd| t        j                  <   | t           | t        j                  <   | t           | t        <   | t
           | t        <   d | t        j                  <   d | t        j                   <   d	 | t        j"                  <   d
 | t        j$                  j&                  j(                  <   d | t        j*                  j,                  j.                  <   d | t        j*                  j,                  j0                  <   d | t        j*                  j,                  j2                  <   dd}t4        j6                  D ]  }|| |<   	 | S )Nc                     t        |      S r  )r   r5  r  s     r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>%  s    ,<U,C r  c           	      b    t        |D cg c]  } | |       c}t                     S c c}w N)r  )r   r   r5  r  r  r  s      r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>&  s)    +$)*qVB]*:J:L+
 *   ,c                     t        |j                         D ci c]  \  }} | |       | |       c}}t        |      t                     S c c}}w r  )r   r  rc  r   )r5  r  r  r  r  s       r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>)  sF    +<6;kkmDdaVB]F2qM)DK*,,
 Ds   A
c           	      b    t        |D cg c]  } | |       c}t                     S c c}w r  )r   r   r  s      r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>.  s)    <$)*qVB]*:J:L,
 *r  c           	      N    t        |D cg c]  } | |       c}      S c c}w r  )r   r  s      r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>1  s#    M$)*qVB]*-
 *   "c           	      N    t        |D cg c]  } | |       c}      S c c}w r  )r   r  s      r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>4  s#    $)*qVB]*2
 *r  c                     t               S r  )r   r  s     r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>:  s
    4G4I r  c                     t        |      S r  )r   r  s     r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>;  s    7KE7R r  c                 ,    t        |t                     S r  )r   r   r  s     r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>=  s    ;Q!1!3<
 r  c                 ,    t        |t                     S r  )r   r   r  s     r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>A  s    :%5%7 r  c                 ,    t        |t                     S r  r   r   r  s     r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>G      7%5%7 r  c                 ,    t        |t                     S r  r  r  s     r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>L  r  r  c                 ,    t        |t                     S r  r  r  s     r   r4  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>Q  r  r  c                     |S r  r  r  s     r   passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthroughV  s    Lr  )r5  r   )rA  r  rf   r=  r  rx  rw  r   r{  ry  r7  r+   r,   r  r  r  r  r}  rF  rt  ru  distributionsconstraints_Real	_Interval
Constraintr   all_subclasses)handlersr   r  rp  r  s       @r   make_type_handlersz$SourcelessBuilder.make_type_handlers   sy   "))& 	DACHQK	D




 
 -5TN(()#+D> #+D> "I%R!!"*
%%& 	!!--BBC 	$$00667 	$$00::; 	$$00;;<	 '55 	(C'HSM	(r  r<  )
r   r  r  r  r/  r  r   r  r  r  r  r  r   rA  rA    s\    
? S
* S
o S
 S
j 4 4 : :r  rA  c                   2    e Zd ZdZddZedddefd       Zy)	"SourcelessUserDefinedObjectBuilderz
    SourceLessBuilder does not return a UserDefinedObjectVariable, but in some
    cases it might be ok to return UserDefinedObjects. In such case, use this
    builder.
    r=  Nc                     t        d      )Nz/Use SourcelessUserDefinedObjectBuilder.create()r  r  s    r   r/  z+SourcelessUserDefinedObjectBuilder.__init__h  s    NOOr  r5  r   c                     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   )r5  r  r  s      r   r  z)SourcelessUserDefinedObjectBuilder.createk  sa    %[
j.1)%?O?QRRuxx/0%5%7  -UBRBTUUr  r<  )r   r  r  r  r/  r  r   r  r  r  r   r  r  a  s4    P 	V* 	Vo 	V 	Vr  r  r  r  )F(q  r  r  ry  rw  r  r  rB  rM  rC  	itertoolsrJ  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;   rj  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   r?  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   rl  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  rx  DimListr   r   	dataclassr  r,  r@  varsr  rI  r  r'  r=  rJ  rU  rV  r9  r:  r6  r7  rL  r  r  rh  rg  r   r  r  r  r`  r  r  r  r#  r-  r$  r1  r(  rL  r  rD  rE  rF  rI  rM  rr  rf  rA  r  r  r  r  r  r   <module>r     s  &              	 
    4 B B    ;  ) 9 < M * R R A 1 ? A E
 
 
 J ; 8 * T T ? S S A A  '       >! ! ! ! ! ! ! ! !D  % 4       $ %
 
 
      .  
 ) ( O O $ $ I I I       
       
 //DD g!NN44' 
 "
	 	 @5 @5 @5F<H <, &/ /Y--// & IcN  +.% s3x /
 "'!>!> $)HHOO$D$D !H$ H$VH (& 26$p >BF 26=D >B0_
D:((,

 (, (3s8$ +.2 hsm 2SX (
3 
4 
'*/4||2 )- 8CH% ,/3 x} 3c#h (
C 
D 
  .3GGX IMhv&h37hVf fR $5#G#G#I   V Vmq  	Bs   U9 9	VV