
    ^j(                       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ZddlZddlmZmZ ddlmZ ddlmZmZmZmZmZmZm Z  ddl!Z!ddl"Z"ddl"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z) dd	l*m+Z+m,Z,m-Z-m.Z.m/Z/ dd
l0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z?m@Z@ ddlAmBZBmCZCmDZDmEZE ddlFmGZGmHZH ddlImJZJ ddlKmLZL ddlMmNZN ddlOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW ddlXmYZYmZZZ ddl[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZe ddlfmgZgmhZh ddlimjZj ddlkmlZl ddlmmnZnmoZo ddlpmqZq ddlrmsZs ddltmuZumvZvmwZwmxZxmyZy dd lzm{Z{ dd!l|m}Z}m~Z~mZ dd"lmZmZmZ dd#lmZmZmZmZmZ dd$lmZ dd%lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ dd&lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d'd(lmZmZmZmZmZmZmZ d'd)lmZ d'd*lmZ d'd+lmZmZmZmZmZmZmZ d'd,lmZmZmZ d'd-lmZ d'd.lmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d'd/lmZmZ d'd0lmZmZ d'd1l mZmZ d'd2lmZmZmZmZmZm	Z	m
Z
mZ d'd3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mZmZmZmZmZmZmZm Z m!Z! d'd4l"m#Z#m$Z$m%Z% d'd5l&m'Z' d'd6l(m)Z)m*Z* d'd7l+m,Z, d'd8l-m.Z.m/Z/m0Z0m1Z1 d'd9l2m3Z3m4Z4m5Z5 d'd:l6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< d'd;l"m=Z=m>Z>m?Z?m@Z@ d'd<lAmBZBmCZCmDZD d'd=lEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZU 	 ddlVZWerdd?lZm[Z[ dd@l\m]Z]  ej                  e_      Z`e"j                  j                  e_dA      Zc ej                  dB      ZdddClmeZe  eedD      Zf eedE      ZgehZidFejdGekfdHZl ej                  dIJ       G dK dL             Zn ej                  dIJ       G dM dN             Zo ej                  dIJ       G dO dP             Zpeneoz  epz  Zqeheq   ZrdQerdGesfdRZtdSedGerdz  fdTZudUeQdVerdWevdGeSfdXZwdSedYeVdz  dGeSfdZZxd[edGedz  fd\Zy G d] d^      Zzej                   G d_ d`             Z{ G da dbe{      Z| e}dc  e~e      j                         D              Ze}ev   eYdd<    e       Zeev   eYde<   e"j                  j                  j
                  Ze"j                  j                  j                  Z G df dg      ZdhedGefdiZd[edjeCdz  dGefdkZ	 	 ddldmdnedoedz  dpedz  dqedGefdrZdldmdnedoedGdfdsZ	 	 ddteef   dldmdnedoedz  dpedz  dqedGeffduZ	 ddteef   dldmdne"j                   j"                  dve"j$                  dpedz  dqedGeffdwZ	 	 ddteef   dldmdne"j                   j"                  doedz  dpedz  dqedGeffdxZdoedldmdne"j                   j"                  dqeesef   dpedz  dteef   dGefdyZd[egdGeeg   dz  fdzZdtedldmdoedpedz  dGeesef   f
d{Zdteef   dldmdne"j                   j"                  doedpedz  dqeesef   dGeffd|ZdGe^fd}Zdaeheesevdz  f      dz  eYd~<   daevdz  eYd<    ej<                  d      Zej@                  es   eYd<   desdGeesevdz  f   fdZdGeheesevdz  f      fdZddesdevdz  dGekfdZdldmdesde"j$                  dGefdZdaeheesevdz  f      dz  eYd<   daevdz  eYd<   dGeheesevdz  f      fdZddesdevdz  dGekfdZdaeev   dz  eYd<   daevdz  eYd<   dGeev   fdZd[evdGekfdZdedSedeWdz  decdz  deeef   dGeafdZdeRe#z  de"jF                  dGdfdZde`de!j^                  dGdfdZde`dGdfdZde`dYeVdGdfdZde`dGdfdZ	 	 ddedldmdSedekdekdeWdz  dGecfdZddddedldmdSedz  dekdedz  deWdz  dGefdZddddedldmdSedz  dekdedz  deWdz  dGefdZ G d d      Zejq                         e_         G d d      Zy# eX$ r dZWeeYd><   Y w xY w)aq  
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)
ModuleType)Anycast
NamedTupleNoReturnoverloadTYPE_CHECKINGUnion)SymInt)enable_python_dispatcher)CURRENT_STREAM_INDEXget_external_object_by_indexregister_user_object)get_metrics_contextis_int_specialization_caseis_torch_symnormalize_count_iterset_feature_use)TracingContext)
flat_apply)call_torchbind)is_opaque_reference_typeis_opaque_typeis_opaque_value_typeshould_hoist)
OpaqueBase)HigherOrderOperator
OpOverloadOpOverloadPacket)
FakeTensorFakeTensorModeis_fakemaybe_get_fake_mode)is_sparse_any	safe_grad)justknobs_check)BackwardState)normalize_source_name)DictSpecIntermediateSpecIntVarLeafSpec
ObjectSpecSeqSpec
ShapesSpec
TensorSpec)_DynamicScalar
DynamicInt)
_constrain_range_for_size_nested_int_aware_sort
DimDynamicRelaxedUnspecConstraintShapeEnvStatefulSymbolicContextSubclassSymbolicContextSymbolicContextSymIntSymbolicContextTrackedFake)immutable_dictimmutable_list)ExpandedWeight)
OrderedSet)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CurrentStreamSource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NNModuleSourceNonSerializableSetGetItemSourceNumpyTensorSourceOptimizerSourceRandomValueSourceSkipGuardSourceSourceSubclassAttrListSourceTupleIteratorGetItemSource"UnspecializedBuiltinNNModuleSourceUnspecializedNNModuleSourceUnspecializedParamBufferSource)"_extract_tensor_dictbuild_checkpoint_variablebuild_invoke_subgraph_variableclone_inputcommon_constant_types	dict_keys"enumerate_items_with_dict_positionget_fake_value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_pybind11_enum_memberis_torch_class	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   )AttributeMutationExistingAttributeMutationNewtypestrValueMutationExistingValueMutationNewVariableTrackerVariableTrackerMeta)BuiltinVariableConstantVariable)AutocastModeVariableCudagraphOverrideVariableDynamoConfigPatchVariableErrorOnGraphBreakVariableNullContextVariablePreserveVersionContextVariableRecordFunctionVariable)ConstDictVariableMappingProxyVariableSetVariable)WorldMetaClassVariable)BoundBuiltinMethodVariableCollectionsNamedTupleFunction!CollectiveFunctionRewriteVariable'CreateTMADescriptorExperimentalVariable!CreateTMADescriptorStableVariableFunctoolsPartialVariableGetSetDescriptorVariableMemberDescriptorVariableMethodWrapperVariableSysFunctionVariableTritonKernelVariableTritonSetAllocatorVariableUserFunctionVariableWrapperUserFunctionVariable)"LocalMapWrappedHigherOrderVariable TorchHigherOrderOperatorVariable)CountIteratorVariableItertoolsVariable)LazyConstantVariableLazyVariableTracker)BaseListVariableListIteratorVariableListVariableRangeVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradEngineVariableAutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableConstantLikeVariableDebuggingVariableDelayGraphBreakVariableGetAttrVariableIgnoredFunctionVariableLambdaVariableLoggingLoggerVariableNumpyDTypeVariableNumpyVariableObjectVariablePythonModuleVariableRandomClassVariableRandomVariableSavedTensorBoxStringFormatVariableTypingVariableWeakRefVariable)FSDPManagedNNModuleVariable$UnspecializedBuiltinNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)OpaqueObjectClassVariableTorchScriptObjectVariableSDPAParamsVariable)DictKeySetVariableFrozensetVariableOrderedSetClassVariableOrderedSetVariable)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)DefaultDictVariableFrozenDataClassVariableInspectVariableIntWrapperVariableKeyedJaggedTensorVariableMutableMappingVariableOrderedDictVariableSourcelessGraphModuleVariableUserDefinedClassVariableUserDefinedConstantVariableUserDefinedDictVariable!UserDefinedExceptionClassVariableUserDefinedListVariableUserDefinedObjectVariableUserDefinedSetVariableUserDefinedTupleVariablenp)	PyCodegenInstructionTranslatorBasecudagraph_static_inputsz%torch.fx.experimental.symbolic_shapes)TypeVarVTTypeAliasTtreturnc                     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)r  s    j/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr#  d  sC    		%	%enn&>&>&O&O	P "q&!" " "s   AA!T)frozenc                   8    e Zd ZU dZeed<   dZeed<   dZeed<   y)_LocalTokenz1Root token: a top-level function-argument access.nameF
is_varargsis_varkwN)	__name__
__module____qualname____doc__str__annotations__r(  boolr)       r"  r&  r&  i  s    ;
IJHdr2  r&  c                       e Zd ZU dZeed<   y)
_AttrTokenz Attribute access (``obj.name``).r'  N)r*  r+  r,  r-  r.  r/  r1  r2  r"  r4  r4  r  s
    *
Ir2  r4  c                   "    e Zd ZU dZeez  ed<   y)_SubscriptTokenu   Subscript access (``obj[key]``).

    Emitted for ``dict`` key lookups (matched against ``DictSpec`` entries).
    The key may be ``int`` or ``str`` — both are valid dict keys.
    keyN)r*  r+  r,  r-  intr.  r/  r1  r2  r"  r6  r6  y  s     
sNr2  r6  tokensc           	      X   g }| D ]  }|xt         d x\  } |j                  |       $ xt        d x\  } |j                  d|        H t        d x\  }|j                  d|d       k 	 t	        d|dt        |      j                          |rdj                  |      S d	S )
a  Format an access path as a Python source-like string for error messages.

    Examples:
        [_LocalToken("xs")]                              -> "xs"
        [_LocalToken("cfg"), _SubscriptToken("x")]       -> "cfg['x']"
        [_LocalToken("m"), _AttrToken("weight")]         -> "m.weight"
        [_SubscriptToken(0)]                             -> "[0]"
        [_AttrToken("weight")]                           -> ".weight"
    )r'  .r7  []z&_format_access_path: unexpected token z	 of type  z<empty path>)r&  appendr4  r6  RuntimeErrortyper*  join)r9  partstokr'  r7  s        r"  _format_access_pathrF    s     E ''T" (&&qZ( ' )qq\* *"<SG D#Cy1124  #2775>66r2  sourcec                    g }| }t        |t              st        |t              r|j                  }.t        |t              rUt        |j                  t
              r;|j                  t        |j                               |j                  j                  }t        |t              rQt        |j                  t        t        f      r1|j                  t        |j                               |j                  }t        |t              rMt        |j                        t        u r2|j                  t        |j                               |j                  }Qt        |t              r2|j                  t        |j                               |j                  }y|j                   sy|j                  t#        |j$                  |j&                  |j(                               |j+                          |S )a  Translate a dynamo ``Source`` chain into a flat ``_AccessPath``.

    Walks ``source.base`` from leaf to root, then reverses so the path
    reads root-first. The returned path always starts with a single
    ``_LocalToken`` (the input arg) followed by zero or more access
    tokens, each of which is either an ``_AttrToken`` (attribute
    access) or a ``_SubscriptToken`` (``dict[key]`` access with an
    ``int`` or ``str`` key).

    Returns ``None`` for sources that we know we can't represent them
    in shapes specs.
    N)r(  r)  )
isinstancern   ro   basera   rz   r@  r4  indexr8  r.  r6  re   rB  r[   memberis_inputr&  
local_namer(  r)  reverse)rG  pathcurs      r"  _source_to_access_pathrR    sX     "DCk*c>* ((C
 c,-*HH43
 KK
399-.((--Cc,-*SYYc
2SKK		23((Cc=)d399o.DKK		23((Cc:&KK
3::./((C<<KKCNNs~~U 	LLNKr2  current_spec	full_pathstart_indexc           	      @   	 ddt         dt        dt        dt        ffd}t	        |t                    D ]@  }|   }|  y| xt        d xB\    t        |t              s	 |||       | j                  j                  |j                        } Z xt        d xB\    t        |t              s	 |||       | j                  j                  |j                        }  t         d x\   t        |t              rt        |j                  t               s	 |||       |j                  dk  rt        d	      |j                  t        |       k  r| j                  |j                     } 3d} 7 	  ||| d
       t        | t"              s |t              | d      | S )a  Walk down a spec tree starting at ``current_spec``, consuming each
    token in ``full_path[start_index:]`` in order. Returns the leaf spec at
    the end of the walk, or ``None`` if a key/field along the way wasn't
    specified by the user. Raises on type-mismatch.

    ``full_path`` is the original access path (including any prefix already
    consumed by the caller before reaching ``current_spec``); ``start_index``
    is the offset in ``full_path`` where the walk begins.
    at_idxspecsuffixr  c           
          t        dt              dt        d |        dt        |      j                   |       S )Nz*shapes_spec walk: while processing source z, at z the spec is )rA  rF  rB  r*  )rW  rX  rY  rT  s      r"  _mismatch_errorz#_walk_spec.<locals>._mismatch_error  sR     8"9-0"9Wf#569 ::../x9
 	
r2  Nr1  r   z:dynamo should have normalized the index to be non-negativez+, but the source has further access past itz., but the source has no further access past it)r?  )r8  r,   r.  rA  rangelenr/   rI  r4  _fieldsgetr'  r+   r6  _entriesr7  r0   r.   )rS  rT  rU  r[  idxtokens    `    r"  
_walk_specrc    s     <>

+
58
	
 [#i.1 &# !%4)#|<<+3377

C  !%9)#|<<+4488C  !%9IIsB *#|<<99q=&T  99s<00#/#8#8#CL#'L   & A E&N lH- 	N<
 	

 r2  shapes_specc           	         ||j                   yt        |       }|rt        |d   t              sy|j                   }|d   }|j                  rt        |d   t
              s't        d|dt        |d         j                         |d   j                  }t        |      t        ur(t        d|dt        |      j                   d|d	      |j                   d|cxk  rt        |j                        k  sy yt        |j                  |   |d
      S |j                  rt        |d   t
              s't        d|dt        |d         j                         |d   j                  }t        |t              s(t        d|dt        |      j                   d|d	      |j                   ||j                   vryt        |j                   |   |d
      S |j"                  j%                  |j&                        }t        ||d      S )zLook up the LeafSpec at the access path derived from ``source`` in ``params``.
    Returns ``None`` if the source isn't covered.
    Nr   r   z3Expected _SubscriptToken after *args local at path z, got z6Unexpected non-int subscript for *args access at path z: ()rG   )rT  rU  z6Expected _SubscriptToken after **kwargs local at path z9Unexpected non-str subscript for **kwargs access at path )_paramsrR  rI  r&  r(  r6  rA  rB  r*  r7  r8  _varargsr]  rc  r)  r.  _varkw_named_argsr_  r'  )rG  rd  rP  paramsrootr7  rS  s          r"  lookup_spec_from_dynamo_sourcern  %  s    k119!&)Dz$q';7  F7D
 $q'?3E(&d1g!7!7 8:  1gkk9CH("T#Y//0#;  ??"1+Jc&//6J+J ,K&//#.$ANN}}
 $q'?3H(&d1g!7!7 8:  1gkk#s#K("T#Y//0#;  == Cv}}$<&--,!LL &,%7%7%;%;DII%FLldBBr2  valuec                 T   t        | t        j                        sy | j                  }|t        |t        j                        ry t        |t
        j                        ry t        |t              r|n
t        |      }t        |      ry t        j                  || j                  d       S N)rI  typesBuiltinMethodType__self__r   randomRandomrB  r   inspectgetattr_staticr*  )ro  method_selfowners      r"  bound_builtin_method_descriptorr{  _  s    eU445..K je6F6FG
 +v}}-%k48Kd;>OE
 e
 !!%>>r2  c                       e Zd Zy)_missingNr*  r+  r,  r1  r2  r"  r}  r}  }  s    r2  r}  c                   f   e Zd ZU edz  ed<   eed<   eed<   ej                  j                  j                  dz  ed<   dZeed<   dZej                  ej                  z  dz  ed<   d	ed
eddfdZedej                  ej                  z  ez  dz  fd       ZddZddZdefdZddZdedefdZy)GraphArgNrG  _examplepass_arg_as_tensorfake_tensorT	is_tensorexample_strong_refr'  ro  r  c                 2    t         j                  | ||       y rq  )object__setattr__)selfr'  ro  s      r"  r  zGraphArg.__setattr__  s    
 	4u-r2  c                     t        | j                  t              r| j                         }|t        d      |S | j                  S )Nz"TensorWeakRef expired unexpectedly)rI  r  rF   AssertionError)r  rs     r"  examplezGraphArg.example  s;    dmm]3Ay$%IJJH== r2  c                     t        | j                  t        j                        r;t	        | j                        | _        t        | j                        st        d      y y )Nz fake_tensor must be a FakeTensor)rI  r  r  TensorrF   r$   r  r  r  s    r"  __post_init__zGraphArg.__post_init__  sH    dmmU\\2)$--8DM4++,$%GHH - 3r2  c                 (     || j                          y rq  rG  r  codegens     r"  reconstructzGraphArg.reconstruct  s    r2  c                 f    | j                   t        d      | j                   j                  |      S )Nz8Expecting GraphArg to have source during python codegen.)rG  r  reconstruct_pycoder  s     r"  r  zGraphArg.reconstruct_pycode  s3    ;; J  {{--g66r2  c                      d | _         d | _        y rq  )r  r  r  s    r"  erasezGraphArg.erase  s    "&r2  otherc                     t        |t              sy| j                  |j                  d u S |j                  y| j                  j                  |j                  j                  k(  S )NF)rI  r  rG  r'  )r  r  s     r"  __eq__zGraphArg.__eq__  sT    %*;;<<4''||#;;##u||'8'888r2  r  Nr  r  r  N)r*  r+  r,  ru   r/  r   r0  r  _subclassesr  r"   r  r  r  r   r.  r  propertyr)   r  r  r  r  r  r  r  r1  r2  r"  r  r    s    TM M" ""..99D@@ It >Bu||3d:A. .C .D . !4}DtK ! !I7S 7'9F 9t 9r2  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)rG  r  r  r  r  )super__init__r)   )r  	__class__s    r"  r  zBackwardStateGraphArg.__init__  s&    "_$ 	 	
r2  c                 &   j                   j                  j                  st        d      j	                  fd       j                  dd       j                          j                  j                   j                  j                         y )Nz(backward_state_var must be set on outputc                  D     j                  t        j                  d      S )Nr)   )load_import_fromr)   r+  )r  s   r"  <lambda>z3BackwardStateGraphArg.reconstruct.<locals>.<lambda>  s    G,,]-E-EW r2  r   F)txoutputbackward_state_varr  add_push_nullcall_functiondup_topstorer  s    `r"  r  z!BackwardStateGraphArg.reconstruct  sk    zz  33 !KLLW	
 	a'gjj''::;r2  r  r  )r*  r+  r,  r  r  __classcell__r  s   @r"  r  r    s    
<r2  r  c              #      K   | ]8  \  }}|j                  d       s"t        j                  |      rt        |       : yw)_N)
startswithrw  isclassid).0r'  rL  s      r"  	<genexpr>r    s7      /f??3GOOF$; vJ/s   >A ITERTOOLS_TYPE_IDSITERTOOLS_POLYFILLED_TYPE_IDSc            
           e Zd ZdZ	 d5dddededdf fdZd	edefd
Z	d	edefdZ
dedefdZdefdZdedef   deeef   dz  fdZedeeedef   f   fd       Zeej*                  dedeeedef   f   fd              Zd	ej0                  e   ej2                  e   z  defdZd	ej:                  e   defdZd	e jB                  jD                  jF                  de$fdZ%d	ede&fdZ'd	edefdZ(eej*                  dee)ed egef   f   fd              Z*d	edefdZ+d	edefdZ,d	e-e.edf   e/e   e0e1f   defdZ2d	e3defdZ4d	e5defdZ6d	edefd Z7d	e8e9z  de:e;z  fd!Z<d	e jz                  d"eddfd#Z>d	e j~                  j                  defd$ZAd	edefd%ZBd	e)defd&ZCd	eDdefd'ZEeFd	e)d(ee)gef   defd)       ZGeFd	eDd(eeDgef   defd*       ZGeF	 d6d	e)eDz  ez  ez  d(ddefd+       ZG	 d6d	e)eDz  ez  ez  d(eegef   dz  defd,ZGd	e jz                  ddfd-ZHd	e jz                  defd.ZId	edefd/ZJ	 	 d7d	e)d0eKdz  d1eLdz  defd2ZMd	eDdefd3ZNd	edefd4ZO xZPS )8VariableBuilderz3Wrap a python value in a VariableTracker() instancer  r  rG  allow_lazy_constantr  Nc                     |t        d      t        j                         t        d      t        |           || _        || _        |j                  | _        || _        y )NzRConsider SourcelessBuilder for ephemeral objects, usually objects created locally.zExpected active TracingContext)	r  r   try_getr  r  r  rG  r'  r  )r  r  rG  r  r  s       r"  r  zVariableBuilder.__init__  se     > d  !!#+ !ABBKK	 $7 r2  ro  c                 x   t        j                         }	 | j                  |      | j                  j                  j
                  xj                  t        j                         |z
  z  c_        S # | j                  j                  j
                  xj                  t        j                         |z
  z  c_        w xY wrq  )timetime_ns
_call_implr  r  bytecode_tracing_timingsvariable_builder_call_ns)r  ro  _t0s      r"  __call__zVariableBuilder.__call__  sy    lln	??5)GGNN33LL$LDGGNN33LL$Ls   A/ /A
B9c                    | j                   j                  j                  j                  j	                  | j
                         || 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| j"                  st        |t$              s|S | j'                  |      }|j
                  | j
                  |_        dt(        dt*        dt,        fd}| j/                  |      s	 |||      r]|| j                   j                  j                  vr;t1        |      s0| j                   j                  j                  j3                  ||      }d| j
                  j4                  vr-|| j                   j                  j                  | j
                  <   |S )Nro  vtr  c                 `    t        |       xs t        | t              xr t        |t              S rq  )r   rI  r3   r   )ro  r  s     r"  _is_deduplicable_sym_variablezAVariableBuilder._call_impl.<locals>._is_deduplicable_sym_variable@  s,     U#Hz%'H2R12r2  JVP_NESTING)r  r  current_tracertraced_sourcesaddrG  side_effectsrS   install_guardsrI  r  nnModuler   set_nn_module_stack_sourcevariable_tracker_cacher_  r  r   _wrapr   r   r0  _can_lift_attrs_to_inputsr   track_object_existingr'  )r  ro  side_effect_result	dup_guard	cached_vtr  r  s          r"  r  zVariableBuilder._call_impl  s   %%4488EDGGNN///!%!<!<U!C'5G5N5NOI##I.%1j"$A7 #==dkkJ%%GGNN99==dkkJ	 ''z.0 ! ZZ99BI	2 	2/ 	2d 	2 ..r20;TWW^^8883E:,,BB5"MB  0 00ACDGGNN11$++>	r2  r  c                 N    t        |      t        t        t        t        t
        hv S rq  )rB  r   r   r  r   r   )r  r  s     r"  r  z)VariableBuilder._can_lift_attrs_to_inputs\  s'    Bx(% %
 
 	
r2  c                     | j                   S rq  r  r  s    r"  
get_sourcezVariableBuilder.get_sourcee  s    {{r2  guards.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   )r  
make_guardNotImplementedErrorrR   )r  r  rG  guardtmps        r"  r  zVariableBuilder.install_guardsh  s]    "	9?@6$$U+@C@ 	s##		 A" 		s   A =A A 	AAc                 @    | j                  t        j                        S rq  )_type_dispatch_implrH   trace_numpy)clss    r"  _type_dispatchzVariableBuilder._type_dispatchq  s    &&v'9'9::r2  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"                  | j$                  ft&        | j(                  ft*        | j,                  ft.        t0        f| j2                  ft        t4              | j6                  ft8        j:                  t8        j<                  f| j>                  ft@        jB                  | jD                  ft         jF                  jH                  jJ                  | jL                  ft         jN                  jP                  | jR                  ftT        jV                  | jX                  fg}|r1tZ        r+|j]                  tZ        j^                  | j`                  f       i }|D ]6  \  }}tc        |t              r|n|fD ]  }||v rte        d|       |||<    8 |S )Nz"Duplicate type dispatch entry for )3r  r  r  	Parameterr  r"   functional_tensorFunctionalTensorwrap_tensortuplelistr   collectionsdequeSizewrap_listlike	itertoolscountwrap_itertools_countr   wrap_tuple_iteratorr   wrap_range_iteratorslicer\  wrap_slice_ranger   wrap_literalrePatternMatchwrap_regex_patternweakrefReferenceTypewrap_weakrefutilshooksRemovableHandlewrap_removable_handlejitScriptFunctionwrap_jit_functionrr  MappingProxyTypewrap_mapping_proxyr  r@  ndarraywrap_numpy_ndarrayrI  r  )r  r  entriesresulttsfnr  s          r"  r  z#VariableBuilder._type_dispatch_implu  s    LLHH&&%%00%%77HH	  lK,=,=uzzJ!! __c667S445S445U^S112()3+;+;<jj"((#S%;%;<""C$4$45[[..0I0IJYY%%s'<'<=##S%;%;</
4 2NNBJJ(>(>?@  	FB%b%0Rre ;(+MaS)QRRq		 r2  c                 V    | j                  t        j                         t        |      S rq  )r  rQ   ID_MATCHr   r  ro  s     r"  r  z"VariableBuilder.wrap_regex_pattern  s#     	L112#E**r2  c                     | j                  t        j                         t        j                  | j
                  || j                        S Nr  )r  rQ   
TYPE_MATCHr   buildr  rG  r  s     r"  r  zVariableBuilder.wrap_weakref  s3    L334$$TWWeDKKHHr2  c                 "    t        dddg        y )Nz3Attempted to represent unregistered RemovableHandler?  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)rP   r  s     r"  r  z%VariableBuilder.wrap_removable_handle  s     	Im	
r2  c                    t        |d      s5t        ddt        |      j                   dg t        j
                         | j                  t        j                         t        |d| j                  t                     S )N_torchdynamo_inlinez.wrap_jit_function: missing _torchdynamo_inlineztype: zfDynamo expected a JIT function with a _torchdynamo_inline attribute, but the object does not have one.r  rG  mutation_type)r!  rP   rB  r*  rI   SUPPORTABLEr  rQ   r  r   rG  r   r  s     r"  r  z!VariableBuilder.wrap_jit_function  sw    u34H e!5!5 6746)556 	L334*!;;35	
 	
r2  c           
      t     j                  t        j                          j                  t        j                         t	        d |D              }|sEt        dd|j                         D cg c]  }t        j                  |      r| c} ddg       dt        dt        d	t        t        t        f   f 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rq  r   
is_literalr  ks     r"  r  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>  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  r.  vr  c                     t        j                  |       }| }t        j                         |      }t	        j                  ||j
                        }||fS Nr  )r   createre   r  r   r  )r.  r1  r7  
source_keysource_value	res_valuer  s         r"  build_key_valuez;VariableBuilder.wrap_mapping_proxy.<locals>.build_key_value  sM    "))!,CJ():JGL+221ltwwOI	>!r2  c              3   6   K   | ]  \  }} ||        y wrq  r1  )r  r.  r1  r9  s      r"  r  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>  s     Etq!_Q*Es   r  )r  rQ   r  MAPPING_KEYS_CHECKallrP   keysr   r,  r   r  r   dictitemsr   r   rG  r  r  r  track_mutable)r  ro  	all_constr.  r?  dict_vtr  r9  s   `      @r"  r  z"VariableBuilder.wrap_mapping_proxy  s   L334 	L;;<FFF	8*uzz|+j!K[KfKfghKiA+j*klO\		"s 	"s 	"u_o5U/V 	" Eu{{}EE $E$7%gdkkBww~~**88GG+ ,ks   .D5	D5c                     ddl m } |d ft        j                  d fg}i }|D ]E  \  }}t        |t        t
        f      r|n|fD ]"  }||v rt        d|       ||t        |      <   $ G |S )NrG   )comptimec                     t               S rq  )r   r  s     r"  r  z.VariableBuilder._id_dispatch.<locals>.<lambda>  s
    +;+= r2  c                 t    t        t        fd| j                  i| j                  t        j
                        S )NrG  )r   _dataclasses_fields_lambdarG  r  rQ   CLOSURE_MATCHr  s     r"  r  z.VariableBuilder._id_dispatch.<locals>.<lambda>  s5    N.%;;% )),*D*DE% r2  z Duplicate id dispatch entry for )rD  dataclassesfieldsrI  r  r  r  r  )r  rD  r  r  r  r  r  s          r"  _id_dispatchzVariableBuilder._id_dispatch  s    
 	( =>""

  	#FB%b5$-8Rre #;(+KA3)OPP "r!u#	# r2  c                 tt   HI ddl m}m}m} ddlm}m}m}  |       rddlm	} ddl
m}	 n G d d      }	 G d	 d
      }dsd}
dsd} G d d      }dsd} |       rddlm}
m}  |       rddlm}  |       rdd l}t%        |d      r|j&                  } j)                         j+                  t-                    }|	 |       S  j/                         j+                  t1                    }|	 |       S t3        t4        j6                        rt-              t4        j8                  j:                  j<                  t4        j8                  j:                  j>                  t@        fvrft-              tB        jD                  vrKt-              jF                  t4        j6                  jF                  u stI              r jK                        S t3        t4        jL                  jN                        r* jQ                  tR        jT                         tW              S tY              r jQ                  tR        jZ                         t]        t-                    D cg c]B  }t_        j`                  tc        |      te         jf                  |       jh                        D }}tk        | jf                  tm                     } to        jp                  t-                     jf                  |      } jh                  jr                  jt                  jw                  |      S ty        tz        t|        j~                  t|        j                  f      rJ jQ                  tR        j                         t        d D              HHs9 jh                  jr                  j                  j                   jf                         dt        dt        dt        dt        t        t        f   fH fdIt{        Ifdt              D              }ty        t|        j~                        rte         jf                  d      }t        |tm                jf                        }t         t         jh                  |      j                        | jf                        } jh                  jr                  jt                  jw                  |      S ty        t|        j                        rwt        |t|        j                  tm                jf                         }t        | jf                  !      } jh                  jr                  jt                  jw                  |      S t        | jf                  "      } jh                  jr                  jt                  j                  |      S t3        t4        j8                  j                        r j                        S t        j                        r j                        S t3        t4        j                  j                        rIt         jf                  "      } jh                  jr                  jt                  jw                  |       |S ty        t        t        f      rt        d# D              r t        d$d%d&d'gt        j                  (        jQ                  tR        j                          jQ                  tR        jZ                         t        }ty        t              rste         jf                  d)      }t        |j                  tR        j                                jh                  jr                  j                  j                  |       t        }t              }t        |      D cg c];  \  }}t_        j`                  |t         jf                  |       jh                        = }}} || jf                  "      } jh                  jr                  jt                  jw                  |      S ty        t              rut        d* D              rcD cg c]"  }t        ja                   jh                  |      $ }} jQ                  tR        j                         t        | jf                  "      S t3        t        j                  t4        j                  t4        j                  j                  j                  f      st              r6 jQ                  tR        jT                         t         jf                  "      S t        j                        r6 jQ                  tR        j                         t         jf                  "      S t              rlt        fd+t4        j                  jB                  j                  D              r6 jQ                  tR        jT                         t         jf                  "      S t3        t        j                        r6 jQ                  tR        j                         t         jf                  "      S t              rt         jf                  "      S t              rt         jf                  "      S t        j                         r!t        j                   jf                  "      S t3        t        j                        rte         j	                         d,      } t         jh                  |      j
                        }g } te         j	                         d-      }!t        j                        D ]<  \  }}"| j                   t         jh                  t        |!|            |"             > i }#te         j	                         d.      }$j                  j                         D ]g  \  }%}t        j                  |%      s#t        d/d0|% d1g t        j                  (        t         jh                  t        |$|%            |      |#|%<   i t         j	                         j                  tR        j                        |$j                  tR        j                        |!j                  tR        jZ                               tc        d2d       }&t        || |#|&3      S t              r7 jQ                  tR        jT                         t         jf                  "      S t         Ct3        t         j"                        r' j%                  t!        j&                              S t)        j*                        rat         st-        d4      ty        t.        j0                        r`t3        j4                  j6                        rt        te         jf                  d5      j                  tR        j8                               nt3        j:                        r! jQ                  tR        j<                         nt3        j4                        r! jQ                  tR        j8                         nJt              r  jQ                  tR        jT                         n jQ                  tR        j                         t?         jf                  "      S t)        j@                        r7 jQ                  tR        jT                         tC         jf                  "      S t)        jD                        rt3        t         jF                        r^ jQ                  tR        j                         te         jf                  d6      }'t        |'j                  tR        jT                               n jQ                  tR        jT                         tI         jf                  "      S tK        jL                        rM jQ                  tR        j8                         tK        j`                   jh                   jf                  "      S ty        t4        jN                  jP                  jR                        r8 jQ                  tR        j<                         tU         jf                  "      S t3        t4        jN                  jP                  jV                        r4d }(	 jX                  }(g }) jf                  j                  tR        j                        g}*t3        |(t              rte         jf                  d7      }+|*j                  |+j                  tR        jZ                               t        |(      D ]<  \  }}|)j                   t         jh                  t        |+|            |             > t        |*   jh                  jr                  jt                  jw                  t]         jf                  t_        |)      8            S t3        t.        j0                        rty        tc        d9d       t4        jN                  jP                  jR                        rtc        d:d;      d<k(  rtc        j`                  d<d       k(  rt        te         j	                         d5      j                  tR        j8                               tc        tU        j`                  te         jf                  d9=      "      d<t-              >      S t3        t4        j                  jd                        r7 jQ                  tR        jT                         tg         jf                  "      S t4        j                  jh                  jj                  jl                  u r/ jQ                  tR        j8                         to         fd?      S t3        |      rtq        jr                        S t3        |      rtu        jv                        S t3        |      r#ty        jz                  j|                        S t              r|t)        j~                        et)        j                        rd@ jh                  jr                  _        t)        j~                        j                   jf                  "      S t         r.t3        t         j                        r j                        S t3        t              rot4        j                  j                  u rt        dAd;dBg (        jQ                  tR        j                         t        j                   jf                  "      S t3        t4        j                  j                        r} jQ                  tR        jT                         te         jf                  dC      }, t         jh                  |,      j                        }-t        j`                   jh                  |-      S t3        t4        j                        r jQ                  tR        j                         t3         jf                  t              rt        }.nt         jf                        }. jh                  jr                  j                  dDt        |.fi       }/t        |/j                         t        |/ jf                  |.E      } jh                  jr                  jt                  jw                  |      S t3        t4        j                  j                        rK jQ                  tR        j                         t        j`                   jh                   jf                        S t3        t4        j                  j                  j                        r+ jQ                  tR        jT                         t              S t3        t4        j                        r jQ                  tR        j                         t         jf                        }. jh                  jr                  j                  dDt        |.fi       }0t        |0j                         t        |0|. jf                  "      S ty        t        j                        rOt3        j                  dFd       6 jQ                  tR        j                         t         jf                  "      S t        j                        rg jQ                  tR        j                         t         jf                  "      } jh                  jr                  jt                  jw                  |      S t3        t4        j                  j                        r\ jQ                  tR        jT                         t         jf                         _3        t         jf                  t                     S t3        t4        j                        r, jQ                  tR        j                         t              S t        j                        rt         jf                  "      S t        u r* jQ                  tR        jT                         t               S t1              t        v rJt1              t        vr8 jQ                  tR        j<                         t         jf                  "      S t3        t              r|t3        t              }1t         jf                  |1      }2t1               jh                  jr                  j                  j                  v r9 jh                  jr                  j                  j                  t1                 }3n jh                  jr                  j                  j                  j                  |2t        j                  G      }4 jh                  jr                  j                  j                  |4j                  |2H      }3t3        |3t              st-        dIt-        |3              jh                  jr                  j                  j                  t        j                   dJdK j                        t-        |3      |3|2"      }5t        |2|3dLd dL|3M      |5j                  j                  dN<   |3j                  j                  }6t3        |6t
        j                        st-        |6 dO       jh                  jr                  j                  j                  t        |3|2d              t        j`                   jh                  |5|3      S t              rt3        t4        j                        r jf                  nt         jf                        }2d }7j                  j                         re jh                  jr                  j                  j                  t        j                  j                        |2t        j                  P      }7nkt3        t4        j                         r1 jh                  jr                  j                  j#                         }7nt        dQd;dRg t        j                  (       |7t-        dS      t3        |7t              st-        dIt-        |7              jh                  jr                  j                  j                  t        j                   dJdK j                        t-        |7      |7|2"      }5t        |2|7dLd dL|7M      |5j                  j                  dN<   |7j                  j                  }6t3        |6t
        j                        st-        |6 dO       jh                  jr                  j                  j                  t        |7|2d              t3        t4        j                        r|7n|7dTk(  }8t        |5|8      S t3        |	|f      r9 jQ                  tR        jT                         t%        d d  jf                  "      S |
u rt'        dTU      S |u rt'        dU      S |j(                  u rt+               S |u rt-              S t3        t4        j.                  j0                  j2                        rt3        t4        j.                  j0                  j4                        r j7                        S  jQ                  tR        jT                         t9        j:                  j<                  j>                  j@                  g jf                  V      S tC        jD                        rt3        j:                        r! jQ                  tR        j<                         n7t3        j4                        r  jQ                  tR        j8                         tC         jf                  "      S t3        j                  dWdL      rB jQ                  tR        j                         tG        dX jf                  t                     S tI              rB jQ                  tR        j                         tG        dY jf                  t                     S tJ        jL                  u s)tJ        jN                  dZk\  r,tJ        jP                  u rtS         jf                  "      S tU              r[t3        j                  d[dL      rB jQ                  tR        j                         tG        d[ jf                  t                     S t|        jV                  u r7 jQ                  tR        jT                         tY         jf                  "      S t[              x}9 jQ                  tR        jT                         j`                  }: jf                  xr te         jf                  d9      };t        j                   jh                  |:|;      }<t]        |9|< jf                  "      S t_              rt`        jb                  t`        jd                  fv r] jQ                  tR        jT                         tc        tg        t`         jf                  "      jh                  t-              >      S tU              r_tk              \  }=|=te         jf                  |=       _3        t)        jl                        j                   jf                  "      S tn        jp                  u r6 jQ                  tR        jT                         ts         jf                  "      S ty        tn        jp                        rtu        jv                        ri jQ                  tR        j                         tu         jf                  "      } jh                  jr                  jt                  j                  |       |S t3        t.        jx                  tz        j|                  f      rj jQ                  tR        j~                         t         jf                  "      } jh                  jr                  jt                  jw                  |       |S t3        t.        j                        rt              S t3        t.        j                        rt              S t3        t.        j                        rɐt3        j                  t-        j`                        jh                        }9t3        |9t.        j                        st-        d\t-        |9              jf                  xr te         jf                  d9      };t        j                   jh                  j`                  |;      }<t        |9|<      S t        t-              t,              r=t        t              r+ jQ                  tR        jT                         t              S t        t-              t,              rt4        j                  j                  j                  t4        j8                  j                  t4        j8                  j                  fv r3t)        jl                        j                   jf                  "      S t4        jN                  j                  u rA jQ                  tR        j<                         t        j                   jh                        S t        t4        j6                        r\t4        j6                  urJjF                  t4        j6                  jF                  u r$t              st         jf                  "      S t         jf                        s  jQ                  tR        j<                         t3        t,              r3t        t        j                        rt         jf                  "      S t              rt         jf                  "      S t         jf                  "      }tc        d]d       xs d;}>|>j                  d^      sR jh                  jr                  jt                  vr0 jh                  jr                  jt                  jw                  |      S |S t-              t4        j                  j                  u r j7                        S t        jD                  t-                    rqdd_l3m\}?m]}@ t3        t4        j                  j                  j                        rj                  t4        j                  j                  j                        r̉ jh                  jr                  j                  j                  t        j                   dJdK j                        t-               jf                  "      }At         jf                  dLd dL      |Aj                  j                  dN<   t        j`                  |A jf                   jh                        S t        t-                    r" jQ                  tR        j                         n!t        t-                    rA jQ                  tR        j                          jQ                  tR        j                         nt%        d`      s j7                        S t_        j                   t         jh                   @ jf                              j                         j                                      t_        j                   t         jh                   |? jf                              j                                      t4        j                  j                  j                   jh                  jr                  j                        }Bt        t-                    rt        t-                    s}B}An/tB        j                  rt         jf                        s,t         jf                        st         jf                        r> jh                  jr                  j                   j                   jf                  "      S  jh                  jr                  j                  j                  t        j                   dJdK j                        t-              B jf                  "      }At         jf                  dLd dL|B      |Aj                  j                  dN<   t        j`                  AB jf                   jh                        S t3        tz        t|        j                  f      rt-              j                  tz        j                  u r| jQ                  tR        j                          jQ                  tR        jZ                          jh                  jr                  j                  j                   jf                         dt        dt        dt        dt        t        t        f   f fdaIt{        Ifdbt              D              }t3        t|        j                        }Ct        ||Crt|        j                  ntz        tm                jf                         }d@|_u        Crt        | jf                  !      }nt        | jf                  !      } jh                  jr                  jt                  jw                  |      S t3        t              r" jQ                  tR        j                          jQ                  tR        jZ                         t        t        j                              D cg c]S  }t_        j`                  t        j                  |      t         j	                         |       jh                        U }}tk        | jf                  tm                     }to        | jf                  c      } jh                  jr                  jt                  jw                  |      S t3        t              r$ jQ                  tR        j                          jQ                  tR        jZ                         t        t        j                              D cg c]S  }t_        j`                  t        j                  |      t         j	                         |       jh                        U }}t        | jf                  tm                     }Dt        |D jf                  d      } jh                  jr                  jt                  jw                  |      S t3        t        t        f      r jQ                  tR        j                          jQ                  tR        jZ                         t        tz        j                              }t        t        j                  |            D cg c]R  }t_        j`                  t        j                  ||      t         j	                         |       jh                        T }}t3        t              rt        }En.t3        t              st-        det-                     t        }E E| jf                  tm                     }Ft        |F jf                  f      } jh                  jr                  jt                  jw                  |      S t        t-              t              rg jQ                  tR        j                         t         jf                  "      } jh                  jr                  jt                  jw                  |      S t              rg jQ                  tR        j                         t         jf                  "      } jh                  jr                  jt                  jw                  |      S t3        t              rt        dg D              rD cg c]"  }t        ja                   jh                  |      $ }}t         j	                         j                  tR        jZ                         j	                         j                  tR        j                               t	        | jf                  "      S t        dhdiD %cg c]  }%t        j                  |%      r|% c}% djdkg(       y t        j                        rddllm}G j                  %j                  j,                  Gj                  k(  r j                  j                        S j                  j,                  Gj                  k(  rt        j                  dm jf                  j                  t        j                          j                  j                  t        j                  t        t        dLn      o      p      S j                  j,                  Gj                   k(  rmt        j                  dm jf                  j                  t        j                          j                  j                  t        j                  q      S t[        drj                         ty        t"              r7 jQ                  tR        j                         t%         jf                  "      S  j7                        S c c}w c c}}w c c}w # tZ        $ r Y )2w xY wc c}w c c}w c c}w c c}w c c}%w )tNr   )
has_triton has_triton_experimental_host_tma%has_triton_tensor_descriptor_host_tmarG   )CudagraphOverrideContextManagerDynamoConfigPatchProxy(ErrorOnGraphBreakDecoratorContextManager)	Autotuner)JITFunctionc                       e Zd Zy)*VariableBuilder._wrap.<locals>.JITFunctionNr~  r1  r2  r"  rT  rV        r2  rT  c                       e Zd Zy)(VariableBuilder._wrap.<locals>.AutotunerNr~  r1  r2  r"  rS  rY     rW  r2  rS  r  c                       y rq  r1  r1  r2  r"  create_1d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_1d_tma_descriptor$      r2  c                       y rq  r1  r1  r2  r"  create_2d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_2d_tma_descriptor'  r\  r2  c                       e Zd Zedd       Zy)/VariableBuilder._wrap.<locals>.TensorDescriptorNc                       y rq  r1  r1  r2  r"  from_tensorz;VariableBuilder._wrap.<locals>.TensorDescriptor.from_tensor+  s    r2  r  )r*  r+  r,  staticmethodrb  r1  r2  r"  TensorDescriptorr`  *  s     r2  rd  c                       y rq  r1  r1  r2  r"  set_allocatorz,VariableBuilder._wrap.<locals>.set_allocator/  r\  r2  )r[  r^  )rd  rf  rG  r  r&  )rG  tuple_vtc              3   F   K   | ]  }t        j                  |        y wrq  r+  r-  s     r"  r  z(VariableBuilder._wrap.<locals>.<genexpr>y  s     Jq,77:Jr/  ir.  r1  c                    	j                         }rt        j                  |      }|}n.t        ||       }t	        j                  ||	j
                        }t        ||      }t	        j                  ||	j
                        }||fS r3  )r  r   r5  r^   r   r  ra   )
rj  r.  r1  rJ  r7  r6  r7  r8  rA  r  s
           r"  r9  z.VariableBuilder._wrap.<locals>.build_key_value  s{     (*11!4C!"J!3D!!<J-44Q
twwOC0zB/66q,477S	I~%r2  c              3   :   K   | ]  \  }}} |||        y wrq  r1  r  rj  r.  r1  r9  s       r"  r  z(VariableBuilder._wrap.<locals>.<genexpr>  (      Aq!  1a(   default_factory)r'  rG  )rp  rB  rG  )user_clsr'  rG  )rB  rG  r  c              3   P   K   | ]  }t        |t        j                           y wrq  )rI  r  r  r  xs     r"  r  z(VariableBuilder._wrap.<locals>.<genexpr>  s     >1:a.>s   $&z$Attempted to wrap a set with tensorsz+Python set containing torch.Tensor elementszDynamo cannot trace sets of tensors. To get a stable ordering, Dynamo needs to convert the set into a list and the order might not be stable if the set contains tensors.z,Use a dictionary where the keys are tensors.r  _dictc              3      K   | ]p  }t        |      t        j                  u xr |j                  d k(  xs> |t        j
                  j                  j                  v xs t        |t        t        f       r yw)r  N)rB  rr  rs  r+  r  r  _pytreeBUILTIN_TYPESrI  r    r!   rs  s     r"  r  z(VariableBuilder._wrap.<locals>.<genexpr>  sr      .
  aE333O8O > U[[((666> 1z+;<=>.
s   A6A8c              3   &   K   | ]  }|u  
 y wrq  r1  )r  r  ro  s     r"  r  z(VariableBuilder._wrap.<locals>.<genexpr>  s      %
ERK%
s   funcargskeywordsz,functools.partial() with non-literal keywordznon-literal keyword: z3functools.partial() expects literal/string keywords
cache_hash)original_cache_hashz)numpy must be available for numpy tracing__func__dtypesaved_tensors)rG  r  rt  r*  r?  apply)rL  py_typec                     t        t        j                  j                  j                  j
                        j                   j                   j                  j                  j                  j                         gi       S rq  )r   r  _dynamoexternal_utilsFakeCompiledAutogradEngineexec_final_callbacksr  r  r  r  get_ca_final_callbacks_varr  s   r"  r  z'VariableBuilder._wrap.<locals>.<lambda>  sZ    ,MM00KK``-GGWW^^00KKMN r2  Tz9Attempted to wrap torch._higher_order_ops.invoke_subgraphzJDirectly using invoke_subgraph is not supported. Use nested_compile_regionstreamr  )rG  user_object_indexenter_result)rG  dynamic_dim)hintrG  Expected SymInt, got [^a-zA-Z0-9]+r  F)r  r  grapharg is not a basic Symbol.)r  z!Attempted to wrap unbacked SymIntz+Unbacked SymInt input is not supported yet.z*new_symint must not be None after wrappingr   )rank)target_valuesrG  __script_if_tracing_wrapper__original_fn__wrapped__)      r%  $expected WrapperDescriptorType, got r+  )ztorch.torch_)FlattenScriptObjectSourceScriptObjectQualifiedNameSource__obj_flatten__c                     j                         }t        ||       }t        j                  ||j                        }t        ||      }t        j                  ||j                        }||fS r3  )r  r^   r   r5  r  rb   )	rj  r.  r1  rJ  r6  r7  r7  r8  r  s	           r"  r9  z.VariableBuilder._wrap.<locals>.build_key_value  sc     (/a8
)00J477K8zJ/66q,477S	I~%r2  c              3   :   K   | ]  \  }}} |||        y wrq  r1  rm  s       r"  r  z(VariableBuilder._wrap.<locals>.<genexpr>  rn  ro  )rh  rG  )list_vtrG  zExpected frozenset, got )set_vtrG  c              3   F   K   | ]  }t        j                  |        y wrq  r+  r-  s     r"  r  z(VariableBuilder._wrap.<locals>.<genexpr>k  s     Aa#..q1Ar/  znon-const keys in dict_keysr0  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 r  (  torch.utils._tritonrM  rN  rO  
decoratorsrP  rQ  rR  triton.runtime.autotunerrS  triton.runtime.jitrT  $triton.tools.experimental_descriptorr[  r^  triton.tools.tensor_descriptorrd  tritonr!  rf  r  r_  rB  rK  r  rI  r  r  r  	parameterUninitializedBufferUninitializedParameterrA   rH   nontraceable_tensor_subclasses__torch_dispatch__rC   r  profilerrecord_functionr  rQ   r  r   r   SEQUENCE_LENGTHr   r   r5  getattrr[   rG  r  r   r   r  
get_vt_clsr  r  r  r   r>  r  defaultdictOrderedDictr  r<  guard_on_key_orderr  r   r  r   r   r   r   r  rp  r  r@  r  wrap_moduler   r,  r   	overridesTorchFunctionModer   setrB   anyrP   rI   r(  r   rR   r  DICT_KEYS_MATCHr   r  	enumeraterp   	frozensetSourcelessBuilderEQUALS_MATCHr   enumEnumDispatchKey_C
_functorchTransformTyper   r  r   is_reorderable_logging_functionBUILTIN_MATCHcallabler  ignore_logging_functionsr   loggingLoggerr   r   r|   r   r}   r   should_wrap_in_hopr  	functoolspartialr  rz  r{  r@  re   r|  r?  
USER_ERRORra   r   r   r   r  genericr  asarrayrL   is_numpyr  rr  
MethodTyperw  
isfunctionr  rH  r  CLASS_MATCHr   is_numpy_dtyper   is_numpy_type_infoiinfor   r   can_rewriteautogradfunctionFunctionMetar   FunctionCtxr  rA  r   r   rt  r   _ImperativeEnginer   r  r  _exec_final_callbacks_stubr   r   changesr   error_on_graph_breakr   fwdbwd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`   r   r   create_proxyr   r   noder   _SDPAParamsr   pyfunctorchFuncTorchInterpreterr   Eventr   
contextlibnullcontextrx  r   r  is_matching_objectoptim	Optimizerrr   r   r   DispatchKeySetDISPATCH_KEY_SET_MATCHr   r   is_group_member_typer   r  r  r   r3   r4   rc   root_tracerdynamic_scalar_nodes	shape_envcreate_unspecified_symbolrealr7   DYNAMICcreate_symintnoder   create_graph_inputr  subr'  r  metaexprsympySymboltracked_fakesr>   r   r   r_   has_hint$create_unspecified_symint_and_symbolr8  r  SymBoolcreate_unbacked_symintr   r   rb  r   r   ampautocast_modeautocast_UnmanagedAutocastwrap_user_definedr   device
fast_dtype_enabled_cache_enabledr   is_matching_clsr   r   sysexc_infoversion_info	exceptionr   r   
namedtupler   r{  r   r   floatfromhexhexr   r*  r   lookupru  rv  r   r   is_supported_random_objr   rK   DummyModuleMODULE_MATCHr   GetSetDescriptorTyper   MemberDescriptorTyper   MethodWrapperTypeWrapperDescriptorTyper   
issubclassBaseExceptionr  r  r	  BackwardHookr  Buffer _unsafe_preserve_version_counterr   constructorrD   r   rh   r  r   r   r  	Generatorr   r  r  _libraryfake_class_registryFakeScriptObjectreal_objtracing_with_realr   CONSTANT_MATCHr   FAKE_SCRIPT_TYPE_MATCHOPAQUE_OBJ_GUARD_FN_MATCHrealize_all_typequalified_namer  maybe_to_fake_obj	fake_moder   install_free_tensorsri   rj   rl   register_attr_or_module__new__should_reconstruct_allr
  r\  __len____getitem__rm   r   r  fromkeysr  r   r  r   r  r   r   r  torch.export.dynamic_shapesr  r  STATICwrap_symintvallogdebugr=   r8   AUTOr  r   )Jr  ro  rM  rN  rO  rP  rQ  rR  rS  rT  r[  r^  rd  rf  
triton_modtype_dispatchid_dispatchr'  r  rh  r  factory_sourcerB  varset_var_clsinternal_dict_sourceLrj  r1  r?  func_srcfunc_objr{  args_sourceargr|  keywords_sourcer.  r~  	dt_sourceactual_saved_tensorsr  r  saved_tensors_sourcestream_source
stream_varrK  stream_proxyevent_proxyis_intrG  r  symsym_node_proxysym_expr
new_syminttracing_symint
descriptorry  
obj_sourceobj_vt	attr_namemodr  r  proxyfake_script_objis_ordered_dictr  
set_vt_clsr  r  rA  r9  sJ   ``                                                                      @@r"  r  zVariableBuilder._wrap
  s*   	
 	
	
 	
 <:6  			 	
	 ,- 12G<'z?3 * 8 8 ++-11$u+>$ u-- '')--bi8"tU++ uell+U ""66""99	 U6#H#HH U..%,,2Q2QQ07''..eU^^;;< 5 56)%00 < <= .d5k:-  $**E4(%dkk48ww-F - %{{35H
 F-88eE{{!F
 77>>..DDUFSSED+"9"9;;R;RST 7 78JEJJI " 1155dkkB&&&#&&78&  A%H F
 e[445!+DKK9J!K+"7"9;;
 -$LODGG^$L--% $;; ww~~22HHPVWW{667+(44"7"9;;	 -UGDKKXww~~22HHPVWW*;;
 77>>..<<UFKKuxx/##E**((/$$U++u@@A+E$++FCGGNN''==eSIJEC,->>>BI>
 G*66  7 78 < <=%KeZ('1$++w'G$(33L4P4PQ 11556JK0 UA &aL Aq $**:4;;JwwE  !t{{;F77>>..DDUFSSE9%# .
 .
 +
" DIIa&--dggq9IEI 9 9:$U4;;??YY))588+>+>+L+LM
 %U+ 5 56,U4;;GG>>uE  : :;$U4;;??e_ %
"'--"6"6"O"O%
 "
  5 56*5EE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 #*%t"D+$>Q  u 5 56!{{  ^
5"** =**2::e+<==!!%($%PQQ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*E U  uxx99: 5 56)%DD}}++FFaab  : :;!  56,U]];;GH,U-G-GHH>?,UYY		BB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$++':;,,UDKK@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${{79 
 u334 C CD)%00#88?)%DDj  5 56*,,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 
 "$/(+@d)MNN "WW^^77JJ'dii8T
	 K N 4<#'4N$$Z0 yy~~Hh5$z1H%IJJGGNN((//D&$0OP"))$''>4HH%  eU\\2 %dkk2 
 Jzz""$GGNN,,QQEJJOO,$.$6$6 R   eU]]3!%!9!9!P!P!RJ " C "$Q> 1 = =>	 !$%QRRj&1$'<T*=M<N%OPP!WW^^77JJ'dii8Z 	 K N 4<#-4N$$Z0 "++Hh5$z1H%IJJGGNN((//JPT0UV )=
:QR?  #>>BBY78 5 56'{{	  ..:BB..:BB&222466m#-e44uyy66??@%!8!8!K!KL--e44##L$9$9:+((,,	#  ;;  *99%@u%##L$<$<=##E*##L$>$>?/dkkJJ##E+H%P 7 78.{{79	  +51 7 78.{{79	  cll"'ES]],B&uT[[AA#E*w/E/E(%0
  7 78.%{{79	  k,,, 5 560t{{KK;EBBjO 5 56..KLDKK)LJ$**477KLF-j&UUEemmUYY-G$G 5 56"dkk:U 
 $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99: ,E22u99:+E22u667
 !//U^^0DennUJj%*E*EF$:4
;K:LM  LDKK)LJ$**477ENNJOF(V<<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$<$<=%&:eTYY+G/;; 
 e$0;; 
 .{{F %t4:C>>"67 ; ;;77>>66LLv  M%[EHH... ))%00&66tE{C  %!C!C!T!TU ~~11CCEJ22EEFF+S$))<K;;	 F  /7KK/


+ 177;;ww	  $DK0##L$?$?@)$u+6
 ##L$G$GH##L$J$JKU$56 --e44 $//O!@!M 446 $//TODGG-Ft{{-ST--/ $nn@@RR((%O $DK0d5k9R"',,%dkk2*4;;79$++Fww~~==499T[[ >  
 22EEFF+S$))<K#;;	 F  /7KK#/


+ -33{{77	  ut[%<%<=>U##t||3  7 78 < <= GGNN--11$++>
&
&
&#&
&78
&  A%H F
 )0G0GHO'5D+11$35{{	G .2G*,UGDKKX074;; 77>>..DDUFSSu% 7 78 < <= u}}U34  $**%%eQ/():A>wwF  %{{35H
 .F 77>>..DDUFSSt$ 7 78 < <= t||E23  $**$$UA.,T__->BwwF  #{{35G
 -UGDKKXF77>>..DDUFSSY/0 7 78 < <=T]]5)*A t||A/  $**$$Q*:4??;LaPwwF  %%(
!%3(+CDK=)QRR.
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,U4;;GF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E6" 7 78!%<<))%00y!-^6 Jx   r0(F N 0hsb   "ACh A Ch'ChCCh IACh!NACh&S%ACh+\'Ch0^5Ch5_Ch5h
ChhChc                 .   ddl m} | j                  t        j                         t        j                  |      r!t        |t        | j                              }nkt        ||      rHt        |      t        vr7| j                  t        j                         t        || j                        }nt        || j                        }t        j                   t        |            s|S | j"                  j$                  j&                  j)                  ||      S )Nr   )_CONSTANT_BASE_TYPESr  )user_definedry  r  rQ   r  r  r  rt   rG  rI  rB  r   CONSTANT_SUBCLASS_MATCHr	  r  rY   "cls_supports_mutation_side_effectsr  r  r  r  )r  ro  ry  r  s       r"  r  z!VariableBuilder.wrap_user_defined  s    6L334--e4
 %U?4;;3OPFu23U#88 D DE0t{{KF.uT[[IF==d5kJMww~~**@@OOr2  c                 n   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]?  \  }}t'        j                  |t)        | j+                         |      | j,                        A }}}| j,                  j.                  j0                  j3                  d      }t5        | j                  t6              r| j                  j8                  t;        |      v r| j                  }t5        |t<              st?        dt        |             | j,                  j.                  j@                  jC                  tE        jF                  dd| jH                        t        |      ||      }d	|jJ                  jL                  d
<   tO        tP        | j,                  ||d |      }g }	t%        |jR                        D ]  \  }}
t)        ||d      }|
| j,                  j.                  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,                  j.                  jt                  jw                  ||      S |S c c}w c c}}w )Nro  c              3   F   K   | ]  }t        j                  |        y wrq  r+  )r  items     r"  r  z0VariableBuilder.wrap_listlike.<locals>.<genexpr>  s     H$$//5Hr/  rg  r  z!Expected list for steal_arg, got r  r  r  T	steal_arg)
target_clsr  rt  example_valuesubclass_typerG  FrJ  rK  index_is_slicetensor_dictr  r   )r  r  r  r  )<rH   specialize_intrB  r  r  r  rQ   r?  r   r5  r  r   r  r<  rG  guard_sourceis_unspecialized_nn_moduler   r  r   re   r  r  r  local_scoper_  rI  rn   rN  r   r  r  r  r  r  r  r'  r  r  wrap_fx_proxy_clsr   r?  input_source_to_varr{   rt  r  r  TENSOR_MATCHrF   r@  r  rR   r  realizer   cls_for_instancer  r  r  r@  )r  ro  r  rj  r  maybe_gmrG  tensor_list_proxylist_variabler  tensor_variablesource_ir  r  r  r  s                   r"  r  zVariableBuilder.wrap_listlike  sx      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
 
 77>>--11&9KK
kk$$(;H(EE [[FeT*$'He%VWW $ : : 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} "S
s   .P,AP1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  )r  rQ   TUPLE_ITERATOR_LENr\  r   r  r  rw   r  r   r   rG  r  r  r@  )r  ro  rj  r  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  )r  rQ   RANGE_ITERATOR_MATCHcopydeepcopyr   r5  r   rG  r  r  r  r@  )r  ro  r1  r?  r  s        r"  r  z#VariableBuilder.wrap_range_iterator7	  s    L==> 15e0D(
+,##A&(
 (
 &eDKK@ww~~**88GG	(
s   Bc                    t        |      \  }}t        j                  |      rt        j                  |      s| j                  |      S | j	                  t
        j                         t        t        j                  |      t        j                  |      | j                        }| j                  j                  j                  j                  ||      S r  )r   r   r,  r  r  rQ   COUNT_ITERATOR_MATCHr   r5  rG  r  r  r  r@  )r  ro  current_itemstepr  s        r"  r  z$VariableBuilder.wrap_itertools_countA	  s    1%8d''5 ++D1))%00L==>&##L1##D);;

 ww~~**88GGr2  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stopr  r  )r  r  r[   r  r  r  rQ   r  rI  r  r   rG  r   )r  ro  r.  r?  s       r"  r  z VariableBuilder.wrap_slice_rangeQ	  s    
 /	
  GODGGZ0A1%EFq!
 
 	L334eU# DD t{{;;
s   AB4r  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 )NrG   )mark_static_addressz Marking static input %s, id: %s)r  r  _dynamo_static_input_type)r  r  static_inputs_logrS  rG  r'  r  r  r  r  r  rt  r  r  )r  ro  r  r  rY  s        r"  mark_static_inputz!VariableBuilder.mark_static_input^	  s    4.0@0@"U)	
 	E/ DGGNN///''..--e4C // IINN./JK 0r2  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.                  j0                  u r(t	        dt3        |      dg t        j4                         t7        |t*        j8                  j:                  t*        j8                  j<                  t*        j8                  j>                  f      r9t@        jB                  s)t	        dt3        |      ddgt        jD                         tG        |dd
      rtG        |dd
      st	        dddg        | j                  t        j                          tI        || jK                               }tM        jN                  t)        |            s|S | jP                  jR                  jT                  jW                  ||      S tY        jZ                  || jP                  j\                        r1t7        |t*        j^                  j`                  jb                  jd                        r*|jg                         }ti        | j                        | _        tk               }tm        |jn                        rI|jn                  jp                  tr        u r-	 |jo                         D ]  \  }}| ju                  ||        	 tm        |j~                        rI|j~                  jp                  t        u r-	 |j                         D ]  \  }}	| ju                  |	|        	 |r-|| jP                  jR                  j                  | j                  <   |j                  j                  d      r|j                  j                  d      rtG        |j                  dd
      r| j                  }
| jP                  jR                  j\                  rt@        j                  rt        | j                        }
t        ||
      }t        |
j                  t        j                                n| j                  }
| jP                  jR                  j\                  rt@        j                  rt        | j                        }
t        ||
      }t        |
j                  t        j                                | jP                  jR                  j                  || j                         tM        jN                  t)        |            s|S | jP                  jR                  jT                  jW                  ||      S t        |j                  t*        j8                  j                  j                  j                        r:| j                  t        j                          t        || jK                               S | jP                  jR                  j                  || j                  | jK                               S # tv        $ r?}ty        t)        |      | jP                  t{        |j|                               Y d }~fd }~ww xY w# tv        $ r?}ty        t)        |      | jP                  t{        |j|                               Y d }~Sd }~ww xY w) NrG   )OptimizedModuler   zUninitialized nn.Modulez6Attempted to trace an uninitialized nn.Module of type r;  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: rg  )rG  msg	_orig_modz+torch.jit.script/freeze modules unsupportedzDynamo does not support tracing into torch.jit.script or torch.jit.freeze modules because they execute in the TorchScript runtime, not Python. Replace the ScriptModule submodule with the original eager nn.Module.z#Attempted to wrap RNN, GRU, or LSTMz*Dynamo does not support RNN, GRU, or LSTM.zgSet torch._dynamo.config.allow_rnn=True to enable experimental support for RNN, GRU, and LSTM in Dynamo_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)S
eval_framer  r]  __dict__rP   r   rI   r  r   rw  rx  forwardr   rG  r  rQ   r  r[   r  r  rB  r  r  _scriptRecursiveScriptModuler.  FUNDAMENTALrI  r  RNNGRULSTMrH   	allow_rnnr(  r  r   r  rY   r|  r  r  r  r  rJ   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baserZ   r   r  named_parametersr  !og_module_named_parameters_fn_ptrr  	TypeErrorrO   r  r{  named_buffersog_module_named_buffers_fn_ptr
nn_modulesr'  r+  r  r  rG  rx   r   rR   r  ry   r    add_fqn_info_for_inlined_modulesr3  paralleldistributedDistributedDataParallelrH  )r  ro  r  r  r  freezingr  peb
new_sources              r"  r  zVariableBuilder.wrap_modulep	  s   0u~~!#1TU\]bUcTddef&11U	 %)%%emm5KUS
 ,,MM#=t /;;bcfbgghi 
  7 78$T[[+>DK##EOO44;%))++AAAEE
,&22
 uuxx||UXX\\588==IJ$$=E
H}&22	 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:,.H //0**337XXR % 6 6 8 B1..q.AB ,,-''004RRR % 3 3 5 B1..q.AB
  8=))$))4   ++,MN((334PQ*A5I![[
ww~~,,0K0K!CDKK!PJ=eJWj33L4K4KLM![[
ww~~,,0K0K!<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		( :  c ! R,T!WdggDLQQR ! R,T!WdggDLQQRs0   7+[ +\ 	\4\		\	]4]]c                 
   t        |      t        u rt        j                  dt	        | j
                  t        j                        }|@| j                  t        j                         t        j                  || j
                        S t        |t              rm||k7  r(t        d| j
                  j                   d| d|       | j                  t        j                         t        j                  || j
                        S t        |t        t        j                   f      r;| j#                  |t$        j&                        }|j(                  }t+        ||       |S t        d| j
                  j                   d|d      t-        | j
                  j                        rKt.        j1                  d	| j
                  j                         | j#                  |t$        j2                        S t5        |      rLt.        j1                  d
| j
                  j                  |       | j#                  |t$        j2                        S t7        | j
                  j                        rKt.        j1                  d| j
                  j                         | j#                  |t$        j&                        S t        j8                  s6t;        || j
                        rd }| j
                  j<                  j?                         s$| j
                  j<                  jA                         rd}tC        | jD                  | j
                  j                  tG        jH                  |      | j
                  j<                  jA                                | j                  tK        jL                  t        jN                  |             t        j                  || j
                        S | jQ                  || jR                        S | jQ                  |      S t        |      tT        u rdt        |tT              stW        dt        |             t        jX                  s| jQ                  || jZ                        S | jQ                  |      S t        |      t\        t^        fv r>t        |t\        t^        f      stW        dt        |             | jQ                  |      S | j                  t        j                         t        j                  || j
                        }t        |t`        tb        f      r0| jD                  jd                  jf                  ji                  ||      S |S )Nro  rG  zshapes_spec declares  as static with value 
, but got r  zshapes_spec for : unexpected value z  (expected int, IntVar, or None)z*%s marked dynamic via dynamic-sources listz4%s marked dynamic via dynamic-values list (value=%s)z,%s marked unbacked via unbacked-sources lista  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_hintzExpected float, got zExpected bool or str, got )5rB  r8  rH   _shapes_specrn  rG  r  rQ   r?  r   r5  rI  
ValueErrorr'  r-   r  r   rP  r7   UNBACKEDsym_num_wire_spec_slotis_dynamic_sourcerR  rS  r  is_dynamic_valueis_unbacked_sourcer  r   r  "is_unspecialized_builtin_nn_moduler  rX   r  rV   make_scalarr  r  r  _wrap_lazy_constant_wrap_symint_for_lazyr(  r  specialize_float_wrap_symfloat_for_lazyr0  r.  r  r  r  r  r@  )r  ro  int_specr  sym_valr  s         r"  r   zVariableBuilder.wrap_literal
  s6    ;#"".9KK!4!4 #''(C(CD+22t{{SS#.((3DKK4D4D3E F**2:eWF  ''(C(CD+22t{{SS65<<*@A!--ej>Q>Q-RF$nnG#Hg6!M$*4;;+;+;*<<O#,&FH 
 !!1!12		@$++BRBR ''
8J8J'KK&		JKK$$
 ''
8J8J'KK!$++"2"23		BDKKDTDT ''
8K8K'LL(( .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//t7Q7QRR++E22%[E!eU+$';DK=%IJJ**//t7S7STT++E22%[T3K'edC[1$'A$u+%OPP++E22 ; ;<%,,5MF%$-ww~~22@@OOMr2  c                 $    | j                  |      S rq  )rP  r  s     r"  r  z%VariableBuilder._wrap_symint_for_lazy
  s    &&r2  c                 $    | j                  |      S rq  )wrap_symfloatr  s     r"  r  z'VariableBuilder._wrap_symfloat_for_lazy
  s    !!%((r2  wrap_fnc                      y rq  r1  r  ro  r  s      r"  r  z#VariableBuilder._wrap_lazy_constant
      
 r2  c                      y rq  r1  r  s      r"  r  z#VariableBuilder._wrap_lazy_constant
  r  r2  c                      y rq  r1  r  s      r"  r  z#VariableBuilder._wrap_lazy_constant
  r  r2  c                     | j                   sJ| ||      S | j                  t        j                         t	        j
                  || j                        S t        j
                  || j                        S )zCWrap a primitive constant, deferring guard installation if allowed.r  r  )r  r  rQ   r?  r   r5  rG  r   r  s      r"  r  z#VariableBuilder._wrap_lazy_constant
  s_     ''"u~% ; ;<#**t{{KK#**5EEr2  c                 v    t        |      r.t        |      | j                  j                  u rt	        dd      y y )Nz*Cannot wrap a Tensor that has already beenz"wrapped by this instance of Dynamo)r$   r%   r  rF  rN   r  s     r"   assert_not_wrapped_by_this_graphz0VariableBuilder.assert_not_wrapped_by_this_graph
  s;    5>1%8DGG<M<MM*<4  N>r2  c           	         | j                         }|| j                  j                  j                  v rt	        d      t        |      d u}t        t        d z  t        |t        j                              }|d u}|s_|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r0 t%               xs$ t        j.                  j                  j0                  }|s{|s6|j                  j3                         s|r]|j                  j5                         sC| j7                  |       | j                  j                  j9                  || j:                  |      S t        |      dk(  rb| j=                  t>        j@                         | j7                  |       | j                  j                  j9                  || j:                  |      S tC        |      rX| j7                  |       | j                  j                  j9                  |tE        jF                  dd| j:                        |      S || j                  j                  jH                  v }|r#| j                  j                  jH                  |   S i }	tK        |      }
|
| j=                  t>        jL                         t        |      dk(  r| j=                  t>        j@                         | j7                  |       t        |t        jN                        rS|jP                  rGt        |t        jR                  jT                  jV                  jX                        st[        dd	d
g        t        |t        jN                        rPt]        |      rE| j                  j^                  rt        j`                  st[        dd	dg tb        jd                         tg        |      rti        |      u|jj                  ti        |      jj                  k7  rSti        |      }|tm        |jj                        nd}t[        dd|jj                   d| dg tb        jn                         tq        || j                  d||      }| j                  j                  jr                  ju                  tE        jF                  dd| j:                        tw        |      ||      }ty        | j                  ||       t{        d+| j                  |||
|d|	}| j                  j                  j                  j}                  ||       |j                         r-tq        |j                  | j                  t        |d      d       t>        j                  }t        |t              rt        |      rt>        j                  }t        j                  j                         xr. t        |t        j                  j                  j                        }|sA| j=                  t        j                  |t        |t              r|n
t        |                   t        |      r|rO| j=                  t>        jL                         |j                         d   }|ddgk7  rt        d      |j                         d   }t        |      dk(  rf|d   |j                  j                  k(  rJ|d   |j                  j                  k(  r.|d   |j                  j                  k(  r|d   |j                  k(  st        d       t        t        | j                  d!      j                  t>        j                               t        t        | j                  d"      j                  t>        j                               no| j=                  t>        j                         | j=                  t>        jL                         t        t        |      j                  t>        j                               |j                         \  }}|D ]  }t        ||      }tw        |      }t        |t        j                  j                  j                        rtw        |j                        }t        |t        jN                        sBt        |      s7t        tw        |      j                  d#tw        |      j                   d$      t        | j                  |      }t        j                   t        | j                  |      |              || j                  j                  jH                  |<   d%|j                  j                  v rt	        d&      t        |      |j                  j                  d%<   |j                  j                  j                  d'   }t        |      | j                  j                  urt        d(      t        ||d)|      }||j                  j                  d*<   |S ),Nz)Tensor is already tracked in side effectsr  Tr  guardedr  r  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 TensorsNonez.dtype mismatch between tensor and its gradientztensor dtype: z; grad dtype: zmInconsistent dtype between tensor and its gradient. This can happen in FSDP and crashes meta tensor creation.)r  r  rG  tensor_spec)r  rt  r  r  rG  _base)r  rG  r  r~  r   _local_tensordevice_meshzDExpecting DTensor inner attrs to be ['_local_tensor', 'device_mesh']r      rG   r  z\Expecting DTensor flattening ctx to be (placements, tensor_meta, shard_order, requires_grad)_specrequires_gradz found in tensor attrs of z[.__tensor_flatten__(). Only tensors and reference-type opaques are allowed in tensor attrs.r  z4tensor_dict already exists in tensor_proxy node metar  z(Wrapped Tensor must be this graph's fakeFr  r1  )pr  r  r  r  r  r   r   r2   rn  rH   r  rI  r  r  r  r  r  r  r   rG  ri   rj   rl   r  prepare_freezingis_specialized_nn_moduleis_fsdp_moduler  rH  r'  r  rQ   r  rg   r  r  r  infer_subclass_typer  r  	is_nestednestedr  nested_tensorNestedTensorrP   r&   r  capture_sparse_computerI   SPARSE_TENSORr#  r'   r  r.  r(  wrap_to_fake_tensor_and_recordr  r  rB  cache_real_value_when_exportwrap_fx_proxyr  _is_viewr  r[   r  rf   rk   NOT_NONE_MATCHr  is_availabletensorDTensorr  r  rq   rF   rC   __tensor_flatten__rA  r]  r  
placementstensor_metashard_orderr   rR   rG  r  DTENSOR_SPEC_MATCHr  TENSOR_SUBCLASS_METADATA_MATCHrv   r  r:  r;  r<  r=  r   r*  r   rB  r  r  r  r{   rt  r%   rF  rN   r  )r  ro  rG  is_static_input_tensor_spec	_has_specshould_install_free_tensormake_graph_attributeis_duplicate_tensoroptionsr  safe_grad_valgrad_strr  tensor_proxyr  
guard_type
is_dtensorinner_attrsflattening_ctxattrsr  attrinner_value
inner_typeinner_sourcefake_tensor_valuer  s                               r"  r  zVariableBuilder.wrap_tensor
  s   " DGGNN/// !LMM1%8D *663F3FG
 !,	 #5%(("4"45v22MMO ""50E0G"H"O &,%@%@ &
!&) >&v.>5f= 	#  /  
!#Lu}}';';'L'L 	 &$$==?CW++::< 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8)778	 % % ,y/555%e,M3@3Ls=../RXHH(^H:NL6)556" 7dggf,
 ww~~11DDFF#S$))4K	 E 
 	%TWWlEB' 
ww''
 
 	##99%Q>> +77!&'2	 "..
fj).Fv.N%44J&&335 
*5$$++33;

  !! &f.?@ *51	 )/ ##L$;$;<#668;?M"BB&^  "'!9!9!;A!>'1,&q)U[[-C-CC&q)U[[-D-DD&q)U[[-D-DD&q)U-@-@@&v  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 "+.
NN66GG "&k&:&:!;J!2:>&,5588R;//0 1++   *$++t<#//:ODGG\:;G)0 6E**62L--222 !WXX0DU0K}- ,1166;;OL019J9JJ*+UVVFE52CD-5z*r2  c           	         t         t        d      t        |t         j                        st        dt	        |             t        | j                               }ddlm} |j                  j                   }|r	 d|j                  _
        d }t        j                         5  	 |j!                  |      }|rddlm}  ||      }d d d        |t        d      t-        j.                   t1        | j2                  |      |             t5        || j2                  d|      }| j2                  j6                  j8                  j;                  t=        j>                  dd| j@                        t	        |      ||      }	tC        | j2                  |	|       d|i}
tE        dtF        | j2                  |	|d d|
}|| j2                  j6                  jH                  |<   |jJ                  jL                  jN                  d   }tQ        ||d|d|      }||	jL                  jN                  d<   | jR                  |_)        |S # t        $ rJ t        |j                  t         j                        s"t        dt	        |j                               d 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)Nz'numpy must be available to wrap ndarrayzExpected np.ndarray, got r   )_utilTzExpected np.nditer base, got )clone_preserve_stridesz)failed to convert numpy.ndarray to TensorzHException encountered when attempting to convert numpy.ndarray to Tensor)r   r!  r"  r#  from_excz)Failed to convert numpy ndarray to tensorFr  r  rG  r  r  r  rG  )r  r  rt  r  r  r  r  r  r  r  r  r1  )*r  r  rI  r  rB  rq   r  torch._numpyr.  flags	writeabler  rJ  nditerr   temp_restore_stack_try_convert_to_tensortorch._prims_commonr/  r  rP   r.  r   rB  r  r  r  r  r  r  r  r  r'  r  r  r   r  rt  r  r  r  rG  )r  ro  rG  r.  readonlytensor_valuer/  r  r  rt  r  numpy_ndarray_variabler  s                r"  r  z"VariableBuilder.wrap_numpy_ndarray  s   : !JKK%, #<T%[M!JKK"4??#45&{{,,, (,% 0CCE 	$;;EBJ#9,#GL	   !LMM 	''(H(H(VW6ww	
 **==FF#S$))4	 > 
 	%TWWe\BV$!2 "
+ww'"
 "
 6L**62.4499>>O #%+
 '/


# )-%%%W    "%**bii8(7UZZ8H7IJ  9  ' GJ j 	 	sC   <H; #K%!J;AJJ	J>J93K9J>>KKr  r!  c                    t        |      t        urt        dt        |             | j                  | j                  j
                  j                  v r-| j                  j
                  j                  | j                     S | j                  j
                  j                  }d }t        j                         j                  ra|j                         }t        |       | j                  j
                  j                  j                  t        || j                   d              n^t#        | j%                               s|dt&        j(                  j*                  j,                  r@| j/                  t0        j2                         t5        j6                  || j                         S | j                   j                  }t9        | j                  |t;        j<                  |      | j                   j>                  jA                               }tC        | j                   j                        }| j                   }	tE        |	tF              r|	jI                         }	||}
n	t*        jJ                  r)|jL                  tN        u rtQ        dd       tS               }
ntE        |	tT              r6|	jV                  *tY        |	jV                        j                  |ddi      d   st*        jZ                  s't\        j_                  d|       t`        jb                  }
nS|jL                  tN        u rtQ        dd       | j/                  t0        j2                         t5        j6                  |	      S t*        jd                  r||jf                  nd }|ji                  || j                   |
|
      }tE        |tj              st        dt        |             | j                  j
                  j                  j                  t        || j                   |             nut#        | j%                               st        d| j%                                | j/                  t0        j2                         t5        j6                  || j                         S tE        | j%                         tl              rt        d      to        | j%                         jq                  t0        jr                               d| j%                         i}| j                  j
                  jt                  jw                  ty        jz                  dd| j                        t        |      || j%                               }|j|                  j~                  }tE        |t        j                        st        | d      || j                  j
                  jt                  j                  |<   t        j6                  | j                  ||fi |}|| j                  j
                  j                  | j                  <   t#        | j%                               s6t        | j%                         |dd d|      |j|                  j                  d<   |S )NzExpected exact int type, got r  r  dynamo.automatic_dynamic_shapesTr   F=marking %s as dynamic (from assume_static_by_default = False)r~  )rG  r  excluded_valuer  zExpected constant source, got z6RandomValueSource is not supported for symint wrappingrG  r  r  r  r  r2  r  )FrB  r8  r  r'  r  r  unspec_variable_mapr	  r   r_  #force_unspec_int_unbacked_size_liker  r5   r  r@  r>   rG  rg   r  r  r  rH   r  r  rQ   r?  r   r5  rX   rV   r  r  r  r*   rI  r]   r  automatic_dynamic_shapesscalarrT   r   $get_automatic_dynamic_shapes_mark_asrn   r  r>  assume_static_by_defaultsymbolic_shape_loginfor7   r  !automatic_dynamic_exclusion_guardexcluded_scalarr  r   rs   rR   r  r  r  r  r  r  r  r  r  r  bound_symbolsr   r  r  )r  ro  r  r!  r	  frame_state_entrywrapped_valuer'  normalized_source_namebase_sourcer  rJ  r  rt  rl  
unspec_vars                   r"  rP  zVariableBuilder.wrap_symint?  s    ;c! #@e!NOO99:::77>>55dii@@GGNN,,	8<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"''S )00 %++|;#$EuM##L$?$?@'..U;; ;;%1 "11 	  &JJ{{'.	 K M mV4$'<T-=P<Q%RSSGGNN((//M4;;@ &doo&78$4T__5F4GH   ; ;<#**t{{KKdoo'):; H  	doo'22<3J3JKLT__./**==FF#S$))4??$	 > 
 !%%**(ELL1 H:-D!EFF=B""00:$++DGGUMUWU
8B**4995!$//"34*2!#( #0+EJJOOJ' r2  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tM        d      tO        | j                         jQ                  t6        jR                               tU        | j                               }||d}tW        || j                  d|      }| j                  j                  jX                  j[                  t]        j^                  d	d
| j                         ta        |      ||      }tc        | j                  ||       te        tf        f| j                  ||d d|}tI        |tf              stM        dta        |             || j                  j                  j                  | j                   <   | j                  jh                  r=tI        | j                         tj              stM        d| d| j                                d }	|jl                  jn                  jp                  d   }ts        |      stM        dta        |             |}	|	jt                  | j                  jt                  urtM        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 )Nr  z.pytorch/compiler:unspecialize_float_killswitchFr  )r  z8RandomValueSource is not supported for symfloat wrapping)rG  	raw_valuer1  r  r  r  r  rt  r  r  z*Expected UnspecializedPythonVariable, got =Dynamo attempts to add additional input during export: value=	, source=r  (Expected fake tensor example_value, got fake mode (^) from fake tensor metadata doesn't match mode({self.tx.fake_mode}) from InstructionTranslatorTr2  r  call_methodr  tensorify_float_attempt)	overwrite)Er'  r  r  rA  rX   rG  rV   r  r  r  r  r  rH   r  rg   r  mathisnanisinf	_inductorr  
cudagraphsr(   rF  rD  rT   r  rQ   r?  r   r5  r  float64r  r  is_gradtrackingtensorrI  rs   r  rR   r  r  rd   r  r  r  r  r  rB  r  r  r   r  rn   rt  r  r  r$   rF  r  r  r  r   r  r@  r>   r  r   r  )r  ro  rL  rM  rG  r  r  rt  rP  r,  r  s              r"  r  zVariableBuilder.wrap_symfloat  se    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'):; J  	doo'22<3J3JKL #4??#45#%8 7dggv
 **==FF#S$))4	 > 
 	%TWWe]C&'
ww'
 

 *&AB <T*=M<NO  9C**499577>>*T__->"L OP]^ghlhwhwhygz{  !"((--22?C}% :4;N:OP  *&&dgg.?.?? /99: ;C C   '/OO#),'



# GG'DGGNN'' #J<4
 	$$++K		4;;PT,UV!!";TT!Rr2  c                 J   | 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 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t5        dt'        |             |}|jB                  | j                  jB                  urt5        d|jB                   d      tE        | j                         |d|d|      |j<                  j>                  d<   |S )NrG  rR  Fr1  r  r  r  rS  rT  rU  r  rV  rW  rX  Tr2  r  )#r'  r  r  rA  r  r  rI  r  rs   rR   r  rQ   r  updater  r  r  r  r  rB  r  r  r   rg   r  rn   r  is_python_constantas_python_constantrt  r  r  r$   rF  r  )r  ro  rM  r  r  rt  rP  r,  s           r"  r  z,VariableBuilder.wrap_unspecialized_primitivei  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=)$>tM?R>ST  !. **$''2C2CC$!"3"="=!> ?G G 
 +3!#'-#0+EJJOOJ' r2  )Trq  NN)Qr*  r+  r,  r-  ru   r0  r  r  r   r  r  r  r  r   r   r>  r.  r  classmethodr  r  cacher  r  r  r  r   r  r  r  r   r  r  r  r	  r
  r	   r  r   r  r  r8  rK  r  r  r   r  r  r   r   r  r   r  r   r  r  r  r\  r   r   r  r  r  r  r  r  r   r  r(  r  r
   r  r  r  r  r7   r=   rP  r  r  r  r  s   @r"  r  r    s   = %)	7'7 7 "	7
 
7*f  > >? >@
O 
 
F hsCx&8 T#s(^d=R  ;tFHS#X,>$>? ; ; __(d (tFHSRUXDV<V7W (  (T+ZZ_rxx}4+	+I'"7"7"< I I
[[&&66
	

s 
/J 
"H H HB __	c8.4oEFF	G  6U13 U1? U1n$Ps P P.r5c?DI|ZOPr	rh	H 	HO 	HH HO HH# H/ H <eem <8U <u|| D T $h h_ hTk& k_ kZ'3 '? ')U ) )  3%01 
	   5'?23 
	   U{T!C'  
	  <@FU{T!C'F 3%01D8F 
	Fell t l l/ l\	Y& Y& Y&| '+04	MM t#M '-	M
 
M^Y5 Y_ YvB# B/ Br2  r  objc           	         d }t        | t              r| j                  }n"t        dd|  dt	        |        d|  dg        |t        d      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  z,dataclasses.fields requires a non-None value__dataclass_fields__r  )rI  r  ro  rP   rB  r  rI  rJ  rG  r[   ra   r'  r@  r   )rj  ro  r?  fieldrG  base_srcs         r"  rG  rG    s    E#01		.C5 1$s)=>seCmn		
 }KLLE##E* F::!#**.DEH&x<F.uVDEF r2  rF  c                     t        | t        j                        rIt        | t              s9t        j                  |       rt        |       |u s| j                  st        |       } | S rq  )rI  r  r  r"   _is_functional_tensorr%   r  r~   )ro  rF  s     r"  _clone_inputrq    sQ    %& uj) ++E2'.);  &ELr2  r  r  rt  r  r  r  c                     | |||d|}|t        ddt        i|S t        ddt        i|}|j                  |        |S )NrS  r  r1  )r  r   r   install_global)r  rt  r  r  r  kwargsr  s          r"  r  r    sd     &&	
 F  ENEfEE #U.JUfUb!r2  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rq  )	r  r  r  DisableTorchFunctionSubclassrq  rF  tracerreal_value_cacher  )r  rt  r  s      r"  r  r    sb     
yy XX224 	8Dr||9ELL))%**5	 		 	 	s   8A--A6r  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_proxyrI  r  r  _wrap_fx_preexisting_tensorhandle_traced_outputr  	variablesr   r   r  opr  r  record_proxyable_vt)r  r  rt  r  r  r  outs          r"  r  r  +  s     )E=-
CJ
 
M5<<	0)E=-
CJ
 #2ug}j

 	''66''77	
 JJMM]*
		  44S9Jr2  r  c                    ddl m} t        |t        j                        st        dt        |             t        ||      st        dt        |             d|v r-|d   (|j                  j                  j                  |d          |j                  j                  dk(  r'd|j                  j                  vrJt        d| d	      d|j                  j                  v r#t        |j                  j                  d          t        j                  j                  j                         5  t!        |      |j"                  u rnt%        |||       |j&                  r^t        j(                  j+                         5  t-        ||j"                        |j.                  j0                  |j                  <   d d d        d
| t2        t4        fv i}d|vrt        d      |d   t        d      |d   |d<   t7        |fd|i|}|j8                  j                  dk7  r%t!        |      |j"                  urt;        d|       d d d        t=        | |||||      S # 1 sw Y   xY w# 1 sw Y   %xY w)NrG   r  z1_wrap_fx_preexisting_tensor expected tensor, got (Expected InstructionTranslatorBase, got r  rz  r  zplaceholder z* doesn't have 'example_value' in node.metar  rG  z"source must be provided in optionsz"source must not be None in optionsr  r  zN`tensor` needs to be a `FakeTensor`wrapped by this instance of Dynamo. Found: )symbolic_convertr  rI  r  r  r  rB  r  r  rd  r  r  r  r  r  +_disable_saved_tensors_hooks_during_tracingr%   rF  r  r  r  rv  rq  rw  rx  r   r   r  r  rN   construct_tensor_variable)r  r  rt  r  r  r  r  rt  s           r"  r|  r|  S  sY    =fell+?V~N
 	
 b34GRzRSS7wx0<
		 12 zz}}%%**//1 ug%OP  ejjoo- EJJOOO$D#EGG 
			H	H	J %v&",,6(UF;yy XX::< @LAELL11%**= Z"$@ABF w&$%IJJx ($%IJJ&x0F83FLrLVLF==''r||;*>>DXG E%N %Bv}g ; % %s&   /AI&?8I7BI&I#	I&&I/c                    ddl m} t        ||      st        dt	        |             d|v r-|d   (|j
                  j                  j                  |d          d|j                  j                  v r#t        |j                  j                  d          t        j                  j                  j                         5  t        |j                  |d      }d d d        t        ||||||       S # 1 sw Y   xY w)NrG   r  r  r  r  T)allow_non_graph_fake)r  r  rI  r  rB  r  r  rd  r  r  r  r  r  r  r   r}  )r  r  rt  r  r  r  r  s          r"  r{  r{    s     =b34GRzRSS7wx0<
		 12%**//)

 @ACC 
			H	H	J R 'uzz2DQ	R  
 R Rs   >C//C8c                    dd l }dd l}dd l}t        | |j                        rt        |       rW|j                  rt        j                  s;d| j                   d| j                   }t        d|dg t        j                         t        |||| ||      }t        |t              st!        dt#        |             |j$                  j&                  j)                  ||t*               |S t-        |j.                  j0                  d	      ra|j.                  j0                  j2                  d
k(  r>t        |j.                  j0                  j4                  |j6                  j8                        s,|j.                  j0                  |j:                  j<                  u rOt#        |j.                  j0                        t>        u rt!        d      tA        |j.                  j0                        S |j.                  j0                  |j6                  jB                  u s,|j.                  j0                  |jD                  jF                  u rtI        |       S tK        | |jL                        r@tO        d | D              r.| D 	cg c]  }	tQ        jR                  |	       }
}	tU        |
fi |S t        | tV        tX        f      rt[        |j.                  |        g }t]        |       D ]  \  }}|%|j_                  tQ        jR                  d)i |       -|j`                  jc                  dtd        jf                  ||fi       }d|v rNt        | tX              st!        dt#        |              |d   }|ji                         }tk        ||d      |d<   n|}|j_                  tm        d*||||d|        t        | |jL                        rtU        ||fi |S tK        | tV              rto        |fi |S tK        | tX        tp        f      rts        |fi |S tu        |       st!        dt#        |              to        ||jw                  dty                           } t{        j|                  t#        |             | fd|i|S | "|j.                  j0                  |j~                  u rtQ        jR                  d)i |S t        | |j                  |j                  |j                  f      rT|j$                  j                  j                  | |       t[        |j.                  |        t        jR                  ||| fi |S t        | |j                        r|j.                  j0                  t        u s=|j.                  j0                  t               D cg c]  \  }}|j                   c}}v r[t[        |j.                  |        d }|j.                  j0                  t        u r|j.                  j                  d   }t        || |fi |S t        | |j                        r|j.                  j0                  t        u s=|j.                  j0                  t               D cg c]  \  }}|j                   c}}v r[d }|j.                  j0                  t        u r|j.                  j                  d   }t[        |j.                  |        t        || |fi |S t        j                  |j.                  j0                        r*t        |j.                  j0                  |j                        s=|j.                  j0                  t               D cg c]  \  }}|j                   c}}v r$t[        |j.                  |        t        || d fi |S |j.                  j0                  dk(  r;|j.                  j                  dk(  r"t[        |j.                  |        tQ        | fi |S | lt        | |j                        rV|j.                  j0                  dk(  r=|j.                  j                  dk(  r$t[        |j.                  |        t        || d fi |S t        | t              rv|j.                  j0                  |j                  |j                  |j                  t        td        jf                  |j                  j                  |j                  td        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.                  j0                  dk(  r,t[        |j.                  |        tQ        jR                  | fi |S t        | |j                  jD                  j                        r%ddlfmg} t[        |j.                  |         ||fi |S t        | t              rr|j.                  j0                  |j6                  j                  |j6                  j                  j                  |j                  jD                  j                  |j                  jD                  j                  |j                  jD                  j                  |j6                  j                  |j6                  j                  |j6                  j                  |j6                  j                  |j6                  j                  |j6                  j                  d gtY        t        j                               z   v r,t[        |j.                  |        tQ        jR                  | fi |S t        | t        t        t        f      r|j.                  j0                  t        u sN|j.                  j0                  t        u s2|j.                  j                  dk(  rE|j.                  j0                  d!k(  r,t[        |j.                  |        tQ        jR                  | fi |S t        | t              s|j.                  j0                  d"v r,t[        |j.                  |        tQ        jR                  | fi |S t        | |j                  j                  j                        rt        jR                  || |#      S t        t#        |             rt        t#        |             rt        jR                  | | |#      S |j                  j                  j                  |j$                  j                   |       }t        jR                  |||#      S t        d$d%t        |        d&|j.                  j                   d'|j.                  j0                   d(g        y c c}	w c c}}w c c}}w c c}}w )+Nr   zsparse tensor with layout=z, shape=z4Attempted to wrap sparse Tensor with VariableTrackerzBtorch.compile does not support sparse Tensors with VariableTrackerr  zExpected VariableTracker, got )mutation_type_clsr*  	set_statez&proxy.node.target must not be a stringc              3   <   K   | ]  }t        |t                y wrq  )rI  r8  rs  s     r"  r  z'handle_traced_output.<locals>.<genexpr>  s      3 
1c3s   r  )kindtargetr{  rt  rG  z#Expected list for source path, got Fr  )r  r  rt  r  z)expected namedtuple or structseq but got r'  r'  rh  queryrY  record_eventget_rankget_world_size
bit_lengthr   r   
is_integerr  )r*  	__round__r4  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 outputrq  r1  )torch._functorch.vmaptorch._subclasses.fake_tensortorch._utilsrI  r  r&   r  rH   r	  layoutshaperP   rI   r
  r  r   r  rB  r  r  
_track_objr   r!  r  r  r*  rt  r  r9  ru  set_rng_stater.  r   _DisableFuncTorchr  _is_in_bad_forkr  r   r  r<  r   r5  r   r  r  r   r  r@  rw  r  operatorgetitemr  re   r  r   r@   r   r   r_  r   r  r  manual_seedr   SymFloatr  r  track_produced_symintsr   r  r   rM   current_streamr{  r   r  r   rw  r  r3  r  r8  sym_intsym_maxsym_minr  _utils_element_sizeseedrs  r  vmap_validate_and_get_batch_sizepredispatch_vmap_increment_nesting_vmap_decrement_nestingr  r}  _constrain_as_sizebackends
SDPAParamssdpar   r0   _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_enabled_is_autocast_availabler   r=  r(  r   r   r:  r;  r<  r   r   r   rE  rF  r   )r  r  rt  r  r  r  r  r!  rY  rt  sizesunpackedrj  rQ  proxy_irG  	options_irh  r  device_interfacerK  r   ru  s                          r"  r}  r}    sB    !(-. '		!>!> 3=3G3G2HQ^QdQdPefGN`8)778	 (E=-
 #/ #A$s)!MNN
		))3*> 	* 	
 


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

!!"c) !IJJ+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:,A$}BUAVW  %X.F 'I*7#',+Ih' !(I % #-%&) $
C+	X mUZZ0  %;7;;M5) 5W55MD.#9:4G44 /$?]@S?TU  %%kk/;K;MNH L+66tM7JK!  
 
	%**"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MM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HH++
 388:
;<	<" 	%**m4&&}@@@	MC#5	6

^+::
*JJMM]*uzz/@/@F/J%**m4&&}@@@	M5	)UZZ->->BV-V%**m4&&}@@@	M5>>#E#E#V#V	W )//
 	

 
]+	,] 34,33 
  ..<<NNII
 )//
 	
 	4*7=+A*B&Wabgblblbsbsatuo		
i D`s   5v;w w<wc                 &   t        |       t        j                  t        j                  j                  t        j
                  j                  j                  t        j
                  j                  j                  fv st        |       ry t        |       S rq  )rB  r  r  r  r  r  r  r"   r  r  rC   r~  s    r"  r  r    sj    E{%%00++<<	 
 
'u	-$ E{r2  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)
specializerI  r  r  r  r"   rF  r  r  r6  r  )r  r  r  r  specialized_propstensor_types         r"  get_specialized_propsr     s     #--m< 	=%"3"3"?"?"J"JK##r||3'Kuxx'9'9:((,,Kuxx7((//K,,K*5,'r2  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.
    rz  )
rq  rF  r   r  r  r  r  r  rd  r  )r  r  rt  r  r  r  s         r"  r  r    sv     !=Mejj-0
 zz}}%
		  77uMNN(RVWe'w''r2  c                      t         j                  dk(  rt        j                  S t         j                  dk(  rt        j                  S t        dt         j                         )Ndynamicunbackedz+invalid automatic_dynamic_shapes_mark_as = )rH    automatic_dynamic_shapes_mark_asr7   r  r  r  r1  r2  r"  rE  rE  5  sT    ..);!!!		0	0J	>"""9&:a:a9bc
 	
r2  _DYNAMIC_SOURCES_DYNAMIC_SOURCES_CONFIG_HASHz^(.+):(\d+)$_DIM_SUFFIX_REentryc                     t         j                  |       }|r+|j                  d      t        |j                  d            fS | dfS )zParse a source list entry into (pattern, dim).

    Entries may end with an optional ``:N`` suffix where ``N`` is a literal
    non-negative integer (the dim portion is not part of the name regex).
    r   rG   N)r  matchgroupr8  )r  ms     r"  _parse_source_entryr  J  s@     	U#Awwqz3qwwqz?**$;r2  c                  X   t        t        j                  j                  j                        } t
        t        | k(  rt
        S t        j                  j                  j                  j                  dd      j                  d      D cg c]  }|rt        |       c}a| at
        S c c}w N r?  ,)
hashr  compilerrH   dynamic_sourcesr  r  replacesplitr  current_hashss     r"  get_dynamic_sourcesr  V  s     --==>L #(D(T
 &&66>>sBGMMcR 	A
 $0    B'source_namedimc                     t               }|D ]e  \  }}|| k(  st        j                  ||       s"||||k(  s,||n| d| }t        j	                  d| |       t
        j                  d| |        y y)a  Check whether ``source_name`` is in the dynamic-sources list.

    If ``dim`` is None, returns True if any entry matches the source
    name (regardless of any per-dim qualifier). This is the right semantics for
    callers that ask "is this source dynamic at all?" (e.g. the static-shapes
    early return, or non-tensor int sources which have no dim).

    If ``dim`` is given, returns True only when a matching entry either has no
    dim qualifier ("all dims dynamic") or its dim qualifier equals ``dim``.
    :z6%s was marked dynamic due to dynamic-sources entry: %sTF)r  r  r  rR  rS  rG  rH  )r  r  r  patternpat_dimprettys         r"  r  r  j  s     *+O+ k!RXXg{%C{goC$+OG9AgY9O		L
 #''L
  r2  r'  r  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 )Nr<  )sizer&   strider  r\  sortr6   r_  
setdefaultrW   rX   rV   make_tensorr  )r  r'  r  ex_size	ex_strider  r  rj  pending
candidatesi_strideneg_is               r"  record_automatic_dynamicr    s     ffhGHHJ	eeg#/4Sz:!IaL1"%::/0
& 	IOHeA"x:F1I!!(WQZ"7QH	I $
''gfF  ;s   C1_UNBACKED_SOURCES_UNBACKED_SOURCES_CONFIG_HASHc                  X   t        t        j                  j                  j                        } t
        t        | k(  rt
        S t        j                  j                  j                  j                  dd      j                  d      D cg c]  }|rt        |       c}a| at
        S c c}w r  )
r  r  r  rH   unbacked_sourcesr  r  r  r  r  r  s     r"  get_unbacked_sourcesr     s     -->>?L $)F,)V  
 &&77??RHNNsS 	A
 %1!r  c                     t               }|D ]R  \  }}|| k(  st        j                  ||       s"||||k(  s,t        j	                  d| ||        y| d|         y y)zCheck whether ``source_name`` is in the unbacked-sources list.

    See :func:`is_dynamic_source` for the ``dim`` argument semantics.
    z8%s was marked unbacked due to unbacked-sources entry: %sr  TF)r   r  r  rR  rS  )r  r  r  r  r  s        r"  r  r    s    
 ,-, k!RXXg{%C{goC		N&G
  8?iq	4J
  r2  _DYNAMIC_VALUES_DYNAMIC_VALUES_CONFIG_HASHc                  X   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t        |       c}a| at
        S c c}w r  )
r  r  r  rH   dynamic_valuesr  r  r  r  r8  r  s     r"  get_dynamic_valuesr    s     --<<=L"'Bl'R &&55==c2FLLSQ 	AO
 #/r  c                 b    t               }|syt        | t              rt        d|  d      | |v S )zEReturn True if ``value`` matches an entry in the dynamic-values list.Fzis_dynamic_value got a bool (z); callers must pass an int)r  rI  r0  r  )ro  r  s     r"  r  r    sA    ')N%+E72MN
 	
 N""r2  r  view_base_context#shape_env_to_source_to_symbol_cachec           	      *   |Rt        |      | j                         k7  r6t        dt        |       d|j                   d| j                          d      g }t        j
                  g| j                         z  }t        | j                               D ]  }| |j                  t        j                         %||   }t        |t              rJ| j                  |      }	|	|k7  rt        d| d| d|	       |j                  t        j                         t        |t        j                        r |j                  t        j                         | |j                  t        j                         t        d| d	|d
       t        |||||      S )NzTensorSpec has z dims but tensor z has z dimszshapes_spec declares dim r  r  zshapes_spec dim r  z (expected LeafIntSpec))dynamic_sizesdynamic_stridesr  tensor_sourcer	  )r]  r  r  r'  r7   INFER_STRIDEr\  r@  rO  rI  r8  r  r  r   r  r:   )
r  rG  r  r  r	  r  r  rj  dim_specactual_sizes
             r"  "_symbolic_context_from_shapes_specr    s    3{#3quuw#>c+.//@ N557)5"
 	
 M!../!%%'9O1557^   !2!23"1~H(C(ffQi(*$3A36L#*J{m=  $$Z%6%67Hell3$$Z%8%89!$$Z%6%67 &qc)<XL I- . %. ##'+,O r2  rX  size_symc                    ddl m} |j                  j                  }t	        | |      r| j
                  }|j                  j                  }| j                  | j                  |j                  |<   ||j                  vrw||j                  |<   | j                  "t        j                  || j                  k\         | j                  "t        j                  || j                  k         t        |       y|j                  |   }|j                  t!        j"                  ||      d| j$                   d       yt	        | t        j&                        r| j                  j                  }|j(                  }t!        j"                  |j                  j                  |      }	|j+                  |j                        rt-        ||	       y|j.                  j1                  ||	f       yt3        dt5        |       j6                         )aI  Wire an IntVar or SymInt spec leaf into the real shape env.

    A spec leaf may be:
      - IntVar:  bare spec variable. Records
        ``_spec_symbol_to_compile_symbol[A.sympy_sym] = u_new`` so future bare/derived
        uses can resolve A; emits a runtime eq-check on repeat occurrences
        (dedup).
      - SymInt:  derived expression (e.g. ``A * 2 + 1``) backed by the spec
        ShapeEnv. Emits
        ``torch._check(u_new == expr.xreplace(_spec_symbol_to_compile_symbol))``, or
        defers to ``_shape_spec_pending_assumptions`` if any free spec symbol isn't
        bound yet (drained on the next bare-IntVar binding).

    ``_spec_symbol_to_compile_symbol`` only ever holds IntVar sympy.Symbol entries.

    ``size_sym`` is the freshly allocated unbacked SymInt for this leaf's
    input (tensor dim or scalar arg).
    r   )r-   NzIntVar(z) dedup eq-checkz0_wire_spec_slot: expected IntVar or SymInt, got )"torch.fx.experimental.dynamic_specr-   r  r	  rI  	sympy_symr  optimization_hintvar_to_hint_override_spec_symbol_to_compile_symbolminr  _checkmax%_drain_shape_spec_pending_assumptionsguard_or_defer_runtime_assertr  Eqr'  r   free_symbolsissubset_emit_pending_bool_shape_spec_pending_assumptionsr@  r  rB  r*  )
rX  r  _IntVarr	  spec_symcompile_exprexisting_expr	spec_exprfreedeferred_bools
             r"  r  r  &  s   , E''I$  >>}})) !!-;?;Q;QI**<89CCCAMI44X> xx#X12xx#X121)<%DDXNM33}5$))$45 
D%,,	'IINN	%%!3!3Y?==AABy-855<<dM=RS>tDz?R?R>ST
 	
r2  r	  	bool_exprc                 ^    |j                  | j                        }| j                  |d       y)zSubstitute spec symbols and defer the resulting boolean as a runtime
    assert. ``bool_expr`` is a sympy boolean (e.g. ``Eq``, ``Gt``) whose free
    spec symbols must already be present in ``_spec_symbol_to_compile_symbol``.zshapes_spec deferred checkN)xreplacer  r  )r	  r*  substituteds      r"  r!  r!  j  s+     $$Y%M%MNK++K9UVr2  c                     | j                   }|sy| j                  j                         }g }|D ]6  \  }}|j                  |      rt	        | |       $|j                  ||f       8 || j                   dd y)ul  Re-scan pending derived/assumption checks; emit any whose deps are now bound.

    TODO: optimize with an inverted index (sym → pending entries) if the
    pending list grows large. Inductor uses this pattern in
    ``graph.py:ras_by_symbol``. Spec wiring typically has < 10 entries so
    the linear scan here is fine; revisit if profiling shows otherwise.
    N)r"  r  r=  r   r!  r@  )r	  r  
subst_keyskeepr(  r*  s         r"  r  r  r  sz     77G99>>@JD" +i==$y)4KKy)*	+
 48I--a0r2  c                     |j                   D ]?  }|j                  j                  }| j                  j	                  |j
                  |f       A y)znAppend each ShapesSpec.assumptions SymBool to the pending list.
    Called BEFORE any input is processed.
    N)_assumptionsr  r  r"  r@  r  )r	  rd  ar*  s       r"  _wire_spec_assumptionsr4    sH     %% 
FFKK	1188##Y/	

r2  c           	        	 | j                   }|sy| j                  j                         }dt        dt        fd	g }t               }|D ]R  \  }}||z
  }|st        d| d      ||z  }t        	fd|D              }|j                  d 	|       d	| d
       T t        dt        |       dt        	fd|D               ddj                  |      z         )zVerify all pending spec assumptions/derived-dim checks have been
    emitted (i.e. every spec IntVar referenced by a derived expression or
    user assumption has been bound by some bare-IntVar input slot).
    Nr  r  c                 B    t        j                  ddt        |             S )Nz#\d+r?  )r  r  r.  )r  s    r"  _prettyz&_finalize_spec_wiring.<locals>._pretty  s    vvgr3q6**r2  z<_finalize_spec_wiring: pending entry has all symbols bound (zP); _drain_shape_spec_pending_assumptions should have removed it before finalize.c              3   .   K   | ]  } |        y wrq  r1  r  r  r7  s     r"  r  z(_finalize_spec_wiring.<locals>.<genexpr>  s     ;awqz;   z  - z  (unbound: rg  zshapes_spec: z. pending check(s) reference unbound IntVar(s) c              3   .   K   | ]  } |        y wrq  r1  r9  s     r"  r  z(_finalize_spec_wiring.<locals>.<genexpr>  s     <1GAJ<r:  z. Every IntVar used in a derived expression or assumption must also appear as a bare-IntVar slot somewhere in the spec. Offending checks:

)r"  r  r=  r  r.  r  rA  sortedr@  r  r]  rC  )
r	  r  r/  linesall_unboundr(  r*  missingmissing_namesr7  s
            @r"  _finalize_spec_wiringrB    s   
 77G99>>@J+6 +c +
 E%(UK" 
Ni#; 34 
 	w;7;;tGI./|M?!LM
N 
E
| $<<<= >F	G ))E
		 r2  static_shapes
outer_onlyc                   345 | j                   rGt        | t        j                  j                  j
                  j                        st        dddg        |j                  }|j                  j                  j                  j                  | d       }|r|j                  ni }d }	| j                         r$t        |d      }
t!        | j"                  ||
|      }	t%        |       rQ|sNt!        | |||d      }t        |t&              st)        dt+        |             i }t+        |       j-                  |       \  }}|D ]l  }t/        | |      xxt        j0                  d	 x"\   } t        ||      }t!        ||||      ||<   E  xt2        d	 x\    U }t)        d
t+        |              t5        |j6                  |j8                  |j:                  |j<                  |	|j>                  |j                  |t        | t        j                  j                  j
                  j                         	      S ddl m!4m"5 tG        5fd| jI                         D              rdtJ        dtL        f4fd}t'        | jI                         D cg c]
  } ||       c}tL        jN                  g| jQ                         z  d g| jQ                         z  d g| jQ                         z  |	||      S tR        jT                  |rtW        |      svt'        tL        jX                  g| jQ                         z  tL        jN                  g| jQ                         z  d g| jQ                         z  d g| jQ                         z  |	||      S t[        |||       }t]        |       }i 3dt^        dddt`        dd f3fd}ddl1m2} |j                  jf                  `|j                  jf                  D ]G  }t        ||      r|jh                  |k(  s  ||jP                  |jj                  |j                         I tR        jT                  tm        | |||	|      S g }g }g }g }g }to        | jQ                               D ]  }|t/        | dd	      v } |t/        | dd	      v }!|t/        | dd	      v }"|"rtp        js                  d|       |t/        | dd	      v xs |t/        | dd	      v }#|t/        | dd	      v }$|ju                  t/        | d i       j                  |g              tw        |j                        }%|}
t        |
tx              r|
j{                         }
|"sFt        |
t|              r|
j~                  zt        |
j~                        j                  |%|d!i      |   rPt        j                  d"|       t        g| jQ                         z  }&t        |&|<   |t        j                  |&#      z  }tR        j                  xr |j                  |      }'tR        j                  xr |j                  |      }(tW        ||      rt        j                  d$||       d}'t        | jI                  |            r)t        j                  d%||| jI                  |             d}'t        ||      rt        j                  d&||       d}'|'xs |(})3j                  |      }|d }*d }+|"rtR        j                  sd }+t        | d'      r| j                  D ,cg c]  },|,jP                  |k(  s|, c},j                         }-|-j                  |-j                  t        d!(      }*ndd)l mS}.  |.t        |-j                  |-j                  *      d!+      }*nt        d!(      }*n| rt        d!(      }*n|$s+|)r)t        d,d       |'rt        d(      }*|(rbt        d(      }+nU|$stR        j                  st        d,d!       d }*d }+n2|\  }*}/d }+| d-| d.}0|/|j                  j                  j                  |0<   |ju                  |*       |ju                  |+       |!st        ||      rtL        j                  }1n|*|"s|#s 5| jI                         |         r|)rt               }1nltL        j                  }1n[|stR        j                  s|$rtL        jX                  }1n6tR        j                  stp        js                  d/|       tL        j                  }1|+tL        j                  }2ntL        jN                  }2|ju                  |1       |ju                  |2        t'        ||||||	||t/        | d0d       t/        | d1d       |j                  2      S c c}w c c},w )3NzGEncountered strided NestedTensor in automatic dynamic dim determinationr?  r  r  r  T)rD  z&Expected StatefulSymbolicContext, got r1  z#expected Tensor or OpaqueBase, got )	r  r  constraint_sizesconstraint_stridesr  r  r	  inner_contextstrack_outer_size_strider   )has_guarding_hintis_nested_intc              3   T   K   | ]  }t        |t              xr	  |        ! y wrq  )rI  r   )r  r  rK  s     r"  r  z%_automatic_dynamic.<locals>.<genexpr>
  s(     
La:a 9q)9%99
Ls   %(r  r  c                     t        | t              st        j                  S  |       st        j                  S t        j
                  S rq  )rI  r   r7   rO  r  r  )r  rJ  s    r"  _classify_symintz,_automatic_dynamic.<locals>._classify_symint  s9    a(!((($Q'!***%%%r2  )r  r  rF  rG  r  r  r	  r  constraint_rangeStrictMinMaxConstraintr'  c                     | v r=ddl m} |    \  }} ||j                  |j                  z  d      }|xs |}||f| <   y ||f| <   y )Nr   rP  Fvrr  )%torch.fx.experimental.symbolic_shapesrP  rT  )	r  rO  r'  rP  old_constraint_rangeold_namenew_constraint_rangenew_namedim2constraints	           r"  update_dim2constraintz1_automatic_dynamic.<locals>.update_dim2constraint8  sm     . T-;C-@* (#9#&&)=)@)@@$   '4H"6"@N3"2D"8N3r2  )_RelaxedConstraint_dynamo_strict_unbacked_indices_dynamo_unbacked_indices_dynamo_dynamic_indicesz)marking %s as dynamic (from mark_dynamic)_dynamo_weak_dynamic_indices"_dynamo_propagated_dynamic_indices_dynamo_static_indices_specialize_onFz#automatic dynamic %s marked dynamic)r  z1%s dim %d marked dynamic via dynamic-sources listz;%s dim %d marked dynamic via dynamic-values list (value=%s)z3%s dim %d marked unbacked via unbacked-sources list_dynamo_dynamic_ranger  rR  )lowerupperrS  r>  z.size()[r>  r?  _dynamo_shape_ids_dynamo_unbacked_bounds)r  r  rF  rG  specialize_onr  r  r	  	shape_idsunbacked_boundsexcluded_sizes)^r  rI  r  r  r  r  r  rP   r'  r  tracing_contexttensor_to_contextr_  r	  r  r[   _automatic_dynamicr  rC   r:   r  rB  r  r  r  r   r;   r  r  rF  rG  r  rU  rJ  rK  r  r  r   r7   r  r  rH   r  r  rO  r  r  r8  r.  rN  r\  export_constraintst_idrO  r  r\  rG  rH  r@  r*   r]   r  rn   r  r>  rR  rS  rU   rT   rV   	make_sizerC  is_size_dynamicis_stride_dynamicr  r  allow_ignore_mark_dynamicr!  rd  popr  r  r8   rP  rE   r   r	  source_name_to_debug_namer  rE  r  rF  DUCKrl  )6r  r  rG  rC  rD  r  r'  prior_policyr	  r  rO  outer_contextrH  r'  r  r(  r)  r+  
unexpectedrN  r  rL  rq  r[  r\  r  r  r  rF  rG  ri  rj  marked_strict_unbackedmarked_unbackedmarked_dynamicmarked_weak_dynamicmarked_staticrN  	mark_sizeautomatic_dynamic_sizeautomatic_dynamic_strideautomatic_dynamicconstraint_sizeconstraint_stridedr	dim_rangerP  name_dim_namedynamic_sizedynamic_striderZ  rJ  rK  s6                                                      @@@r"  ro  ro    s	    	{{:	5<<!!//<< 	]M		
 ;;D99,,>>BB1dKL<H88b (
 15zz| 1.qwwKW$Q'
*r6=T
 -)@A 8m9L8MN 
 7--a0q 	D!T"2U\\^2#-fd#;L+=#R},N4( 3
 "Z\ "(=d:>N=OP 	 ''55)99*;;,??/'550=0a0a)(25<<))77DD) %
 	
  W

L1668
LL	& 	&
 	& '89A1+A.A'445?"Vaeeg- $v// 0S
 	
" "}=Nt=T&%,,-7'445?"Vaeeg- $v// 0S
 	
 1T1= a5DN99$<9DG9	9$ ?	yy##/))66 	J*&89$&%NNJ$?$?		 &1/
 	
 MOM1557^ U/!"ga1RTV&W!Wwq*DbIIga)BBGG##$OQUV7-r$
 
 G'!A2FF 	 WQ(@"EE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 	! T1%III4QRS%)"AFF1I&IIMq		 &*"dA&IIKTSTU%)"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q9%..L'"QVVXa[)
 !CE)11f==%,,L 22"''S &??L('//N'44N\*~.kU/n ##')-#+,O!0$7#<dC(77 Q BB!s   	e1=e6e6)parent_contextr  r  r  c                P   t        j                         }	 t        | |||||      |j                  j                  xj
                  t        j                         |z
  z  c_        S # |j                  j                  xj
                  t        j                         |z
  z  c_        w xY w)N)rG  r  r  r  )r  r  $_wrap_to_fake_tensor_and_record_implr  r  !wrap_to_fake_tensor_and_record_ns)r  r  rG  r  r  r  r  s          r"  r  r    s     ,,.C
3)#
 			**LLLLNS 	
L		**LLLLNS 	
Ls   A% %A B%c          
      H    t               t        j                  t        j                  j                  t
        fv s&t         t        j                        st               rt        d      t         |      \  }}|st         ||      nBt        t              st        dt                     j                  }|j                  |   t        j                  dj                   t#         j$                        t                      t'               5  j(                  t        d      t+         fd      }	d d d        |nt-        	j/                               D ]R  }
||
   }|t        |t0              r|	j3                  |
      }t        |t        j4                        sGt7        ||       T vt        	t
              rf|	j8                  x}Xt        t:              rj<                  }nt?              }j@                  jB                  jE                  tG        ||             t        	      rf|	jI                         \  }}|D ]N  }tK        |	|      }tK         |      }t        |      }tM        ||t        |t        j                               P j@                  jN                  jP                   <   tS        |	      r|	jT                  r|	jW                         n|	jY                         }|	j3                         d	|	jZ                  z  |j3                         |j]                         d
j@                  j^                  <   n8|	j3                         |	j]                         dj@                  j^                  <   |r~|rja                         sltc              saj@                  jB                  jE                  tG        |	             j@                  jd                  tg                  jE                         |	S  S # 1 sw Y   xY w)Nz+source must not be None for tensor wrapping)r  )r  z,Expected AttrSource for parent context, got zwrap_to_fake %s %s %s %sztx.fake_mode must not be Nonec                  @    j                   j                         S )N)rG  symbolic_context)rF  rb  )r  rG  r  r  s   r"  r  z6_wrap_to_fake_tensor_and_record_impl.<locals>.<lambda>`  s$    00!%5 1  r2  )rG  r  r  )r   )r  r  values_sizevalues_stride)r  r  )4rB  r  r  r  r  r"   rI  rC   r  r   ro  r[   rL  rH  rR  rS  r'  r  r  r   rF  r   r\  r  r8  r  r   r  	item_memord   rJ  r\   r  r  r@  r>   r  r  r  rm  rn  r&   	is_sparse_valuesvaluesndimr  input_source_to_sizes_stridesr  rg   tracked_fakes_id_to_sourcer  )r  r  rG  r  r  r  rC  _reasoninner_context_namefake_edim_ir  r  r  item_sourcer'  r  r(  
fake_innerinnerr+  r  r  s   ```                   @r"  r  r  &  s    	QELL%(("4"4jAAa&(+> !NOO!? "
w 12v}+  fj1$B4<.Q  "(-<<=OP		&KK!''NG	
 &' 		||#$%DEE(F		 "vzz|, 4&u-#z(C'@!;;u-!(ELL9(34 6:.",,,9 &"34$kk26:II##**G[2BC )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c		 		s   !)PP!c            
          e Zd ZdZddZeedddeee	      ee
e	e	f      z  eee	df      z  eee	      z  defd	              Zeedddee	   defd
              Zeedddee	df   defd              Zeedddeez  ez  ez  defd              Zeeddde	defd              Zeddde	defd       Zededefd       Zede
eede	gef   f   fd       Zy)r  a  
    Like builder, but stateless and does not require a source. Useful for simple type->VT objects, or objects
    that are being created/evaporated during inlining (ex: consider a locally made list of tensors we then iterate over
    .), such a list should not show up as an artifact from inputs, nor in reconstruction, nor in the graph. However,
    there may be reasons to represent it as a ListVariable internally.

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

    NOTE - This class is very new! It will have some rough edges, but it was created to stem the bleeding of giant
    if/else type->VariableTracker trees that were cropping up all over dynamo.
    r  Nc                     t        d      )NzUse SourcelessBuilder.create()r  r  s    r"  r  zSourcelessBuilder.__init__  s    =>>r2  r  r  ro  .c                      y rq  r1  r  ro  s     r"  r5  zSourcelessBuilder.create  s     r2  c                      y rq  r1  r  s     r"  r5  zSourcelessBuilder.create  s    SVr2  c                      y rq  r1  r  s     r"  r5  zSourcelessBuilder.create  s     r2  c                      y rq  r1  r  s     r"  r5  zSourcelessBuilder.create  s     r2  c                      y rq  r1  r  s     r"  r5  zSourcelessBuilder.create  s    PSr2  c           
      D   t        |      }t        j                  j                  |      }|r	 || |      S t	        |t
              r|S t        t        |            r=t	        |t        j                        s#t        |      st        j                  |||       S t        t        |            rVt        j                  j                  j!                  | j"                  j$                  |      }t        j                  |||       S t	        |t&        j(                        rt+        |      S t-        j.                  |      rt-        j                  |      S t1        |      rVt3        j4                  |      At3        j6                  |      rd| j"                  _         t3        j4                  |      |      S t1        |      r[t;        j<                  |      rF t3        j4                  |j>                        |j>                        }tA        |dt        |            S tC        |      r t3        jD                  |      |      S t	        |t        j                  t        jF                  t        jH                  jJ                  jL                  f      st        |      rt+        |      S t	        |t         tN        jP                  f      r?tS        t        |      t               rtS        |tT              rtW        |      S t;        |      S t	        |tX        jZ                        rt]        j^                  t        |j>                        |j`                        }t	        |tX        jb                        ste        dt        |             tg        |t        j                  | |j>                              S t	        |tX        jh                        rFt	        |j>                  t         tN        jP                  f      rtk        |j>                  |jl                  j`                        |k7  r/te        d|jl                  j`                   d|j>                         t        j                  | |j>                        }	 |jo                  | |jl                  j`                        S | j"                  jr                  jt                  j                  tw        |j>                              }|bt        jx                  jz                  j}                  |jl                  |      S t	        |t        j~                  j                  j                        rt        |      S t	        |t        j                  j                  t        j                  j                  j                  f      rt+        |      S t	        |t        j                  t        j                  f      rt        |      S t	        |t        jx                  jz                  j                  j                        r	 t-        j                  t        |            S t	        |t        t        j                  j                              r3t        jx                  jz                  j                  j                  |      S t	        |tX        j                  tX        j                  t        j                  f      rt        |      S t        |      rzt        t        |            D 	cg c]"  }	t        j                  | tk        ||	            $ }
}	t        |
t                     } t        j                  t        |            ||	      S t	        |t        j                        ro|j                  j                  | j"                  j                  v rC| j"                  j                  |j                  j                     }t        j                  | |      S t	        |t              r9d
D cg c]"  }t        j                  | tk        ||            $ }}t        ||       S t        |t              rt        |      S t        d|j                   d|j                   d| g t        j                         y # tp        $ r Y Gw xY w# t        jx                  j                  j                  t        j~                  j                  j                  j                  f$ r= t        j                  |j                  j                         |j                  gi       cY S w xY wc c}	w c c}w )Nr4  TrI  r  r  zClassmethod lookup mismatch: z on r  )rh  r  z%Unexpected type in sourceless builderr;  z3SourcelessBuilder.create does not know how to wrap r  )wrB  r  _type_handlersr_  rI  r   r   r  r  r   r   r5  r   r  r:  r;  rE  r  rF  rI  _HAS_DEFAULT_FACTORY_CLASSr  r   r,  r  rL   r  r  r  r  is_supported_new_methodrt  r   r   r+  r  r  r  r  abcABCMetar3  r4  r  rr  r1  rw  rx  r*  r2  r  r   r  r  r  var_getattrr  r  id_to_variabler  r  r~  UserMethodVariabler  graph_moduleGraphModuler  	importlib	machinery
ModuleSpecr  rw  TreeSpecr  r  r  r   lazyLazySymNodeFormatStringr.  exc	UserErrorr  symbolic_shapesGuardOnDataDependentSymNoder   fmt_varrf  sym_node_varr  flex_attention_backwardhigher_order_ops&FlexAttentionBackwardHighOrderVariableGenericAlias	UnionTypetyping_UnionGenericAliasr   r   r   r   r   r  r  r   r  r  rK  r   r  r   r   r  r   rP   r+  r,  rI   
DYNAMO_BUG)r  ro  
value_typefast_handlerru  rj  ro  
cls_obj_vtrq  r'  r  rh  rt  r.  r?  s                  r"  r5  zSourcelessBuilder.create  s   %[
(77;;JGE**e_-L e-udii0+E2,33E5RHH%d5k2#nn@@RR		##UO -33  {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	4;GG#E*,;%%e,U33YY))588+>+>+L+LM
 %U+,U33ckk23$u+t,E=1Q8??+E22u667 //U^^0DennUJj%*E*EF$:4
;K:LM  )-44RH  u//0%..4*=>5>>5>>+B+BCuL(78O8O7PPTUZUcUcTde  /55b%..I
%11"enn6M6MNN
 //>>BB2ennCUV% ==22EE  uxx44@@A077I''22EKK4G4G4P4PQ
 -U33

BHH56'..u}}66;;SST'..s5z:: tE$;$;$S$STU==**;;bb  "" ))

 "%((5! .d5k: "((WUD-ABF  %V;K;MNHC+66tE{C  uell+

299#:#::II++EJJOO<E"))"e44u% 3 "((WUA->?E  !++E6"!%((;!,,-Qz/F/F.GHMj\Z1%001		
M + . !!++%%55QQ  ,22MM446''( 	4s1   +%a4 b ''d('d4	b ?b Bddc                     t        j                  |       st        dt        |              t        j                  |       S )NzExpected literal value, got r~  )r   r,  r  rB  r5  r~  s    r"  wrap_constant_literalz'SourcelessBuilder.wrap_constant_literalw  s8    **51 #?U}!MNN&&U33r2  c                     t         j                  i } t        D ]  }d | |<   
 fd| t        <   fd| t        <   fd| t
        <   fd| t        <   fd| t        <   fd| t        j                  <   | t
           | t        j                  <   | t
           | t        <   | t           | t        <   fd| t        j                  <   d	 | t        j                   <   d
 | t        j"                  <   d | t$        j&                  <   d | t(        j*                  <   d | t        j,                  <   d | t        j.                  <   d | t        j0                  j2                  j4                  <   d | t        j6                  j8                  j:                  <   d | t        j6                  j8                  j<                  <   d | t        j6                  j8                  j>                  <   dddt@        dt@        fd}tB        jD                  D ]  }|| |<   	 | S )Nc                     t        |      S rq  r   r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    ,<U,C r2  c           	      b    t        |D cg c]  } | |       c}t                     S c c}w Nr  )r   r   r  ro  rt  r5  s      r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s)    +$)*qVB]*:J:L+
 *   ,c           	      b    t        |D cg c]  } | |       c}t                     S c c}w r  )r   r   r  s      r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s*    1C$)*qVB]*:J:L2
 *r  c                     t        |j                         D ci c]  \  }} | |       | |       c}}t        |      t                     S c c}}w r  )r   r?  rB  r   r  ro  r.  r1  r5  s       r"  r  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"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s)    <$)*qVB]*:J:L,
 *r  c           	      N    t        |D cg c]  } | |       c}      S c c}w rq  )r   r  s      r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s#    M$)*qVB]*-
 *   "c           	      N    t        |D cg c]  } | |       c}      S c c}w rq  )r   r  s      r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s#    $)*qVB]*2
 *r  c                     t        t        |j                         D ci c]  \  }} | |       | |       c}}t        t	                           S c c}}w r  )r   r   r?  r>  r   r  s       r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  sJ    =Q:?++-H$!QAr1-H.0>
 Hs   Ac                     t        |      S rq  )r   r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>      6u= r2  c                     t        |      S rq  )r   r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r  r2  c                 ,    t        |t                     S r  r  r   r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    8Q!1!39
 r2  c                     t               S rq  )r   r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s
    4G4I r2  c                     t        |      S rq  )r   r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    7KE7R r2  c                 ,    t        |t                     S r  )r   r   r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    ;Q!1!3<
 r2  c                 ,    t        |t                     S r  )r   r   r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    :%5%7 r2  c                 ,    t        |t                     S r  r  r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>      7%5%7 r2  c                 ,    t        |t                     S r  r  r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r  r2  c                 ,    t        |t                     S r  r  r  s     r"  r  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r  r2  r  r  ro  r  c                     |S rq  r1  r  s     r"  passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthrough  s    Lr2  )#r  r5  r   r  rB   r>  r  r  r  r  r  r  r?   r@   rr  r  r/  r0  rw  r  ru  rv  r   r  r  r  r  distributionsconstraints_Real	_Interval
Constraintr  r   all_subclasses)handlersr  r  r  r5  s       @r"  make_type_handlersz$SourcelessBuilder.make_type_handlers}  s    #))  	 ' 	DACHQK	D
 




 
 -5TN(()#+D> #+D> ,
''( > 	++, > 	++,'
""# #J%R!!"*
%%& 	!!--BBC 	$$00667 	$$00::; 	$$00;;<	7 	 	a 	 '55 	(C'HSM	(r2  r  )r*  r+  r,  r-  r  r
   rc  rB  r  r   r>  r  r  r   r5  r   r   r0  r8  r(  r.  r   r   r  r  r   r  r1  r2  r"  r  r    s   
? 'CH~
tCH~

uS#X
  tCy/ 
   V.VtCyV\V  V'05c3h	   '04s
U0BS0H	   S.SsSS  SV
. V
s V
 V
 V
p 4V 4 4 4
 Sh3S9?JKK! S Sr2  r  c                   6    e Zd ZdZd	dZeddde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__  s    NOOr2  r  r  ro  c                     t        |      }t        |t              rt        |t	                     S t        |t        j                  j                        rt        |t	                     S t        |t	                     S r  )rB  r3  r   r  r   rI  r  r  r  r   r  )r  ro  r  s      r"  r5  z)SourcelessUserDefinedObjectBuilder.create  sa    %[
j.1)%?O?QRRuxx/0%5%7  -UBRBTUUr2  r  )	r*  r+  r,  r-  r  rc  r   r   r5  r1  r2  r"  r  r    s<    P 	V. 	Vs 	V 	V 	Vr2  r  rg  rq  )FN(  r-  r  r  r  r  rI  r  r  importlib.machineryr  rw  r  r  r\  r  ru  r  r#  r  rr  r  r  collections.abcr   r   r   r   r   r   r	   r
   r   r   r  r  r   torch._dispatch.pythonr   #torch._dynamo.graph_bytecode_inputsr   r   r   torch._dynamo.utilsr   r   r   r   r   torch._guardsr   "torch._higher_order_ops.flat_applyr   !torch._higher_order_ops.torchbindr   torch._library.opaque_objectr   r   r   r   torch._opaque_baser   
torch._opsr   r    r!   r  r"   r#   r$   r%   torch._subclasses.meta_utilsr&   r'   torch._utils_internalr(   %torch.fx.experimental._backward_stater)   torch.fx.experimental._dynamismr*   r  r+   r,   r-   r.   r/   r0   r1   r2   torch.fx.experimental.sym_noder3   r4   rU  r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   torch.fx.immutable_collectionsr?   r@    torch.nn.utils._expanded_weightsrA   torch.utils._ordered_setrB   torch.utils._python_dispatchrC   rD   torch.utils._sympy.value_rangesrE   torch.utils.weakrF   r?  rH   rI   rJ   rK   rL   r  rM   r  rN   rO   rP   r  rQ   rR   rS   pgorT   rU   rV   rW   rX   r  rY   rG  rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r  r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ  r   r   r   r   r   r   r   builtinr   constantr   ctx_managerr   r   r   r   r   r   r   dictsr   r   r   r  r   	functionsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   iterr   r   r  r   r   listsr   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   setsr   r   r   r   streamsr   r   r   r  r   r   r   r   r   r   r   r   r   r   torch_functionr   r   r   rz  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  numpyr  ModuleNotFoundErrorr/  torch._dynamo.codegenr  torch._dynamo.symbolic_convertr  	getLoggerr*  rR  r  getArtifactLoggerr  rG  r  r  r  r  DimListr  r0  r#  	dataclassr&  r4  r6  _AccessToken_AccessPathr.  rF  rR  r8  rc  rn  r{  r}  r  r  r  varsr?  r  r  r  r  r  r  r  r  r  r  rG  rq  rB  r  r  r  r  Proxyr  r|  r{  r>  r}  r  r  r  rE  r  r  r  compiler  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  Exprr!  r  r4  rB  ro  r  r  r  r  r  r  r1  r2  r"  <module>r-     s  &               	 
     4  R R R    ; 
  ) 9 <  * H H  B 1 ? A	 	 	 F   J ; / 8 * T T ? S S A A  '" " " " " " " " "F# # # # # # # # #H   % &   H G /     ; ; ;	 	 	 	 	           .  
 ) ( O O $ $   J I I       
        (
 //HH g!NN44'  'W&&'NO  
 m$CL
"V " "
 d#  $ d#  $ d#  $ Z'/9< 7 7 7646 4kD.@ 4nH"HH H 	HV7C7C!+d!27C7Ct?3 ?3: ?<	 	 P9 P9 P9f<H <. &/ /Y--// & IcN  +.% s3x /
 "'!>!> $)HHOO$D$D !p* p*fU O    2 (= # * !%!%	# : $;	
  2
#
,/
@C
	
z !%!%$[!$#$ $ :	$
 $;$ $ $Z "&I[!I#I 88>>I LL	I
 $;I I Ib !%!%"[!"#" 88>>" :	"
 $;" " "LZ
Z
#Z
 88>>Z
 #s(^	Z

 $;Z
 [!Z
 Z
zq T!Wt^ :#  $;	
 
#s(^2([!(#( 88>>( 	(
 $;( #s(^( (8
j 
 9= $uS#*_-.5 <+/ cDj /","**_"=

3 =	s 	uS#*_'= 	T%S4Z"89 (3 S4Z 4 <#+.38<<D :> 4c3:o./$6 =,0 sTz 0d5cDj#9: (C cDj D & $(SD '*. S4Z .CH $	#C 	#D 	#,
,, d", '-	,
 *.c3h, ,^A

6/A
llA
 
A
HW( Wuzz Wd W8X 8$ 8*
h 
Z 
D 
'X '$ 'b %)K
K#K K 	K
 K d"K Kj
 "&%)


#
 TM	

 
 $J
 d"
 	
> "&%)G
G#G TM	G
 G $JG d"G 	GTa aH	 $5#G#G#I   V VY\  B
s   3f+ +f>=f>