
    sg                    h   U 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mZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlm Z m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+m,Z, d d	l-m.Z.m/Z/ d d
l0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC ddlDmEZEmFZFmGZGmHZH ddlImJZJ ddlKmLZLmMZM ddlNmOZOmPZPmQZQ ddlRmSZS ddlTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZh ddlHmiZimjZjmkZkmlZl ddlmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZ ddlmZmZmZmZ ddlmZmZ ddlmZmZmZmZmZmZ ddlmZmZmZmZmZmZ ddlmZmZmZmZmZ dd lmZmZmZmZmZmZ dd!lmZ dd"lmZ dd#lmZ dd$lmZmZmZmZmZmZmZmZmZ dd%lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ dd&lmZmZmZ dd'lmZ dd(lmZ dd)lmZ dd*lmZmZmZmZmZ dd+lmZmZ dd,lmZmZmZ dd-lmZmZmZmZmZmZmZ 	 d dlZerd d.lmZ  ej                  e      Zej                  j                  ed/      ZeZd0 Z G d1 d2      Zej                   G d3 d4             Z G d5 d6e      Zej                   G d7 d8             Z  ed9  ee      j                         D              Zee   ed:<    e       Zee   ed;<    G d< d=      Z	d> Z
	 dKd?efd@Z	 dKdAZej                   G dB dC             Z	 dLd?e:fdDZddEdFeef   dGefdHZ G dI dJ      Zej%                         e_        y# e$ r dZY Mw xY w)M    N)AnyCallableDict	FrozenSetListMutableMapping
NamedTupleOptionalSetTYPE_CHECKINGUnion)SymInt)GuardSourceTracingContext)call_torchbind)HigherOrderOperator)
_EventBase_StreamBase)
FakeTensoris_fakemaybe_get_fake_mode)is_sparse_any	safe_grad)justknobs_check)BackwardState)_constrain_range_for_size
DimDynamicRelaxedUnspecConstraintStatefulSymbolicContextSubclassSymbolicContextSymbolicContext)immutable_dictimmutable_list)is_traceable_wrapper_subclass)ValueRanges)TensorWeakRef   )configmutation_guardreplay_recordtrace_rules) get_registered_device_interfaces)InternalTorchDynamoErrorunimplemented)GuardBuilderinstall_guardmake_dupe_guard)SideEffects)AttrProxySource
AttrSourceCallMethodItemSourceConstantSourceConstDictKeySourceConvertIntSourceFloatTensorSourceGetItemSource
GradSourceis_cell_contentsis_constant_sourceis_from_defaultsis_from_optimizer_sourceLocalSourceNumpyTensorSourceOptimizerSourceRandomValueSourceSourceSubclassAttrListSourceTupleIteratorGetItemSource)is_callable_allowedis_numpyis_numpy_dtypeis_numpy_type_info)_extract_tensor_dictbuild_checkpoint_variableclone_inputcommon_constant_typesget_fake_valueget_locals_to_stealget_static_address_typeis_frozen_dataclassis_function_or_wrapperis_lru_cache_wrapped_functionis_namedtupleis_parameter_freezing	is_typingis_utils_checkpointis_wrapper_or_member_descriptoristypeodict_valuesproxy_args_kwargs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   )MutableLocaltypestrVariableTrackerVariableTrackerMeta)ConstantVariableEnumVariable)AutocastModeVariableEventVariableNullContextVariablePreserveVersionContextVariableStreamContextVariableStreamVariable)ConstDictVariableCustomizedDictVariableDefaultDictVariableHFPretrainedConfigVariablePythonSysModulesVariableSetVariable)DeviceMeshVariablePlacementClassVariablePlacementVariableProcessGroupVariableWorldMetaClassVariable)!CollectiveFunctionRewriteVariableFunctoolsPartialVariableTritonKernelVariableUserFunctionVariableUserMethodVariableWrapperUserFunctionVariable) TorchHigherOrderOperatorVariable)ItertoolsVariable)LazyVariableTracker)	BaseListVariableListVariableNamedTupleVariableRangeVariableRestrictedListSubclassVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradEngineVariableAutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableDebuggingVariableDelayGraphBreakVariableGetAttrVariableGetSetDescriptorVariableInspectSignatureVariableLambdaVariableLoggingLoggerVariableMethodWrapperVariableNumpyDTypeVariableNumpyTypeInfoVariableNumpyVariablePythonModuleVariableRandomClassVariableRandomVariableRegexPatternVariableSavedTensorBoxTorchVersionVariableTypingVariable)FSDPManagedNNModuleVariable$UnspecializedBuiltinNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)TorchScriptObjectVariableSDPAParamsVariable)NumpyNdarrayVariableSymNodeVariableTensorSubclassVariableTensorVariableUnspecializedPythonVariable)TorchCtxManagerClassVariableTorchInGraphFunctionVariable)build_torch_function_fnTensorWithTFOverrideVariableTorchFunctionModeVariable)FrozenDataClassVariableKeyedJaggedTensorVariableMutableMappingVariableSourcelessGraphModuleVariableUserDefinedClassVariableUserDefinedObjectVariableWeakRefVariable)InstructionTranslatorcudagraph_static_inputsc                     t        j                         5  t        j                  dd       t        | d      cd d d        S # 1 sw Y   y xY w)NignorezThe .grad attribute of a Tensorgrad)warningscatch_warningsfilterwarningshasattr)ts    R/var/www/html/venv/lib/python3.12/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr      s>    		 	 	" "*KLq&!" " "s   "AA
c                       e Zd Zy)_missingN__name__
__module____qualname__     r   r   r      s    r   r   c                       e Zd ZU eed<   eeej                  f   ed<   e	ed<   e
ej                  j                  j                     ed<   dZe	ed<   dZe
ej                      ed<   ed	        Zd
 Zd Zd Zd Zy)GraphArgsource_examplepass_arg_as_tensorfake_tensorT	is_tensorNexample_strong_refc                 z    t        | j                  t              r| j                         }|J |S | j                  S N)
isinstancer   r&   )selfrs     r   examplezGraphArg.example  s4    dmm]3A= =H== r   c                     t        | j                  t        j                        r2t	        | j                        | _        t        | j                        sJ y y r   )r   r   torchTensorr&   r   r   r   s    r   __post_init__zGraphArg.__post_init__&  s=    dmmU\\2)$--8DM4++,,, 3r   c                 :    | j                   j                  |       y r   )r   reconstructr   codegens     r   r   zGraphArg.reconstruct+  s    (r   c                      d | _         d | _        y r   )r   r   r   s    r   erasezGraphArg.erase.  s    "&r   c                 l    | j                   j                         |j                   j                         k(  S r   )r   namer   others     r   __eq__zGraphArg.__eq__2  s'    {{!U\\%6%6%888r   )r   r   r   rD   __annotations__r   r&   r   r   boolr
   _subclassesr   r   r   r   r   propertyr   r   r   r   r   r   r   r   r   r      s    N M5<</00" %++77BBCC It 26.5! !-
)'9r   r   c                   &     e Zd Zd fdZd Z xZS )BackwardStateGraphArgc                 >    t         |   d t               dd d       y )NF)r   r   r   r   r   )super__init__r   )r   	__class__s    r   r   zBackwardStateGraphArg.__init__7  s&    "_$ 	 	
r   c                    j                   j                  j                  sJ j                  fd       j	                  dd       j                          j                  j                   j                  j                         y )Nc                  D     j                  t        j                  d      S )Nr   )load_import_fromr   r   )r   s   r   <lambda>z3BackwardStateGraphArg.reconstruct.<locals>.<lambda>C  s    G,,]-E-EW r   r   F)txoutputbackward_state_varadd_push_nullcall_functiondup_topstorer   s    `r   r   z!BackwardStateGraphArg.reconstruct@  se    zz  3333W	
 	a'gjj''::;r   returnN)r   r   r   r   r   __classcell__r   s   @r   r   r   6  s    
<r   r   c                   J    e Zd ZU ee   ed<   eee      ed<   eee      ed<   y)FrameStateSizeEntryscalarsizestrideN)r   r   r   r
   intr   r   r   r   r   r  r  J  s*    SM
49
T#Yr   r  c              #      K   | ]8  \  }}|j                  d       s"t        j                  |      rt        |       : yw)_N)
startswithinspectisclassid).0r   members      r   	<genexpr>r  S  s7      /f??3GOOF$; vJ/s   >A ITERTOOLS_TYPE_IDSITERTOOLS_POLYFILLED_TYPE_IDSc                   f    e Zd ZdZdeddf fdZd Zd Ze e	j                  d      d               Zd	 Zd
 Zd Ze e	j                  d      d               Zdej$                  fdZdej*                  fdZd Zd Ze e	j                  d      deeed egef   f   fd              Zd ZdefdZ de!e"e#e$e%f   fdZ&de'fdZ(de!e)e*f   fdZ+de,jZ                  de.fdZ/de,j`                  jb                  fdZ2d Z3de,jZ                  fdZ4de,jZ                  fdZ5d Z6d Z7d  Z8d! Z9 xZ:S )"VariableBuilderz3Wrap a python value in a VariableTracker() instancer   r  Nc                     |J d       t        j                         J d       t        |           || _        || _        |j                         | _        y )NzRConsider SourcelessBuilder for ephemeral objects, usually objects created locally.zExpected active TracingContext)r   try_getr   r   r   r   r   )r   r   r   r   s      r   r   zVariableBuilder.__init___  s^     	`_	`%%'3U5UU3KKM	r   c                    || j                   j                  j                  v rX| j                   j                  j                  |   }t        | j                  |j                        }|r| j                  |       |S | j                   j                  j                  j                  || j                        }|r|S | j                  |      }| j                  |_        | j                  |      r]|| j                   j                  j                  vr;t        |      s0| j                   j                  j                  j                  ||      }| j                   j                  j                  j                  || j                  |       |S r   )r   r   side_effectsr1   r   install_guardsvariable_tracker_cachelookup_wrap_can_lift_attrs_to_inputsrY   track_object_existingadd)r   valueside_effect_result	dup_guard	cached_vtvts         r   __call__zVariableBuilder.__call__m  s   DGGNN///!%!<!<U!C'5G5N5NOI##I.%%GGNN99@@T	ZZKK	**2.TWW^^8883E:,,BB5"MB--11%bI	r   c                 D    t        |      t        t        t        t        hv S r   )typer   r   r   r   )r   r)  s     r   r"  z)VariableBuilder._can_lift_attrs_to_inputs  s$    Bx(% 	
 
 	
r   c                  
    ddhS )Nr   rd   r   r   r   r   _common_constantsz!VariableBuilder._common_constants  s     		
 		
r   c                     | j                   S r   r   r   s    r   
get_sourcezVariableBuilder.get_source  s    {{r   c                     | j                         }t        |t              s!|j                         t        j
                  k(  ry t        |D cg c]  }|j                  |       c}ddi i S c c}w )Nskiprd   )r1  r   r6   guard_sourcer   CONSTANTr0   
make_guard)r   guardsr   guards       r   r  zVariableBuilder.install_guards  s`    "v~.""$(<(<<fEU))%0ENAN	 Fs   A-c                     t        |t              sJ | j                  |_        | j                  j                  j
                  j                  ||      S r   )r   rg   r   r   r   r  track_mutable)r   r%  vars      r   set_source_and_track_mutablez,VariableBuilder.set_source_and_track_mutable  s>    #///[[
ww~~**88DDr   c           
         t         j                  t         j                  j                  t         j                  j
                  t         j                  j                  j                  f| j                  ft        t        t        t        j                  t         j                  f| j                  ft         | j"                  ft$        t&        f| j(                  ft        t*              | j,                  ft.        j0                  | j2                  ft4        j6                  | j8                  ft         j:                  j<                  j>                  | j@                  ft         jB                  jD                  | jF                  fg	}tH        jJ                  r1tL        r+|jO                  tL        jP                  | jR                  f       i }|D ]*  \  }}tU        |t              r|n|fD ]  }||vsJ |||<    , |S r   )+r   r   nn	Parameterr   r   functional_tensorFunctionalTensorwrap_tensortuplelistr[   collectionsdequeSizewrap_listliker_   wrap_tuple_iteratorslicerangewrap_slice_rangerN   wrap_literalrePatternwrap_regex_patternweakrefReferenceTypewrap_weakrefutilshooksRemovableHandlewrap_removable_handlejitScriptFunctionwrap_jit_functionr(   trace_numpynpappendndarraywrap_numpy_ndarrayr   )clsentriesresulttsfnr   s         r   _type_dispatchzVariableBuilder._type_dispatch  s    LLHH&&%%00%%77HH	  lK,=,=uzzJ!! S445U^S112()3+;+;<ZZ//0""C$4$45[[..0I0IJYY%%s'<'<=)
. "NNBJJ(>(>?@ 	FB%b%0Rre &q		
 r   r%  c                 V    | j                  t        j                         t        |      S r   )r  r/   ID_MATCHr   r   r%  s     r   rP  z"VariableBuilder.wrap_regex_pattern  s!    L112#E**r   c                 n    | j                  t        j                         t        || j                        S Nr0  )r  r/   
TYPE_MATCHr   r   rh  s     r   rS  zVariableBuilder.wrap_weakref  s'    L334uT[[99r   c                     t        d       y )Nz"unregistered hook removable handle)r.   rh  s     r   rW  z%VariableBuilder.wrap_removable_handle  s    
 	:;r   c                 p    | j                  t        j                         t        |d| j                        S )N_torchdynamo_inliner0  )r  r/   rk  r   r   rh  s     r   rZ  z!VariableBuilder.wrap_jit_function  s/    L334*(
 	
r   c                 
   ddl m } t        j                  d f|d ft        j                  d ft
        j                  d fg}i }|D ]9  \  }}t        |t        t        f      r|n|fD ]  }||vsJ ||t        |      <    ; |S )Nr'   )comptimec                     t        t        j                  fd| j                  i| j	                  t
        j                        S Nr   )r   r   creater   r  r/   CLOSURE_MATCHrh  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>  s;    N,33%;;% )),*D*DE% r   c                     t               S r   )r   rh  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>  s
    +;+= r   c                 t    t        t        fd| j                  i| j                  t        j
                        S rr  )r   _dataclasses_fields_lambdar   r  r/   FUNCTION_MATCHrh  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>  s5    N.%;;% )),*E*EF% r   c                     t               S r   )r   rh  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>  s
    4H4J r   )rp  r  	signaturedataclassesfieldsr   __version__r   rC  rD  r  )r`  rp  ra  rb  rc  rd  r   s          r   _id_dispatchzVariableBuilder._id_dispatch  s    
 	( !! =>""  JK%
*  	#FB%b5$-8Rre #& "r!u#	#
 r   c                 E   '( ddl m}  |       rddlm} ddlm} n G d d      } G d d      } j                         j                  t        |            }|	 | |      S  j                         j                  t        |            }|	 | |      S t        |      rt        j                  |d	|      }t        |      st        |t         j"                        r j%                  |      S t'        |      r j)                  |      S |t*        j,                  j.                  j0                  u r j3                  t4        j6                          j8                  j:                  j<                  j?                   j@                  jC                                tE        |jG                               D 	ci c]Y  \  }\  }}	tI        jJ                  |      tM        |	tO         jQ                         tS         jQ                         |            
      [ }
}}}	tU        |
t        |            S |tV        jX                  u r5 j3                  t4        jZ                         t]         j@                  
      S t_        j`                  t        |            rv j3                  t4        jb                         t_        jd                   |      }
 j@                  |
_          j8                  j:                  jf                  ji                  ||
      S t        |tj        tl        jn                  tl        jp                  f      r j3                  t4        jr                         tu        d |jw                         D              ''r  j3                  t4        jx                         nG j8                  j:                  j<                  j?                   j@                  jC                                ' fd(tk        (fdtE        |jG                               D              }
t        |tl        jn                        r]t{         j@                  d      }t}        |
t        |       t         j8                  |      |j                         j@                        }
n!tU        |
t        |       j@                  
      }
 j                  ||
      S t        |t*        j                  j                        r j                  |      S tI        j                  |      r j                  |      S t        |t*        j                  j                        rIt        | j@                  
      } j8                  j:                  jf                  ji                  ||       |S t        |t              rId |D        r@ j3                  t4        j                         tI        jJ                  | j@                        S t        |t        j                        r6 j3                  t4        j                         t        | j@                        S t        j                  |      r6 j3                  t4        j                         t        | j@                  
      S t        |t        j                        r6 j3                  t4        jZ                         t        | j@                  
      S t        |      rt         j@                  
      S t        |t        j                        rt{         jQ                         d      } t         j8                  |      |j                        }g }t{         jQ                         d      }tE        |j                        D ]:  \  }}|j                   t         j8                  tO        ||            |             < i }t{         jQ                         d      }|j                  jG                         D ]N  \  }}	tI        j                  |      st        d        t         j8                  tO        ||            |	      ||<   P t         jQ                         j                  t4        jb                        |j                  t4        j                        |j                  t4        jr                               t        |||      S t        |      r6 j3                  t4        j                         t        | j@                  
      S t        >t        |t        j                        r$ j                  t        j                  |            S t        |      rYt        sJ  j3                  t        |      rt4        jZ                  nt4        jb                         t        | j@                  
      S t        |      r6 j3                  t4        j                         t        | j@                  
      S t        |      rt        |t        j                        r^ j3                  t4        jb                         t{         j@                  d      }t        |j                  t4        j                               n j3                  t4        j                         t        | j@                  
      S t        j                  |      rK j3                  t4        jZ                         t        jJ                   j8                  | j@                  
      S t        |t*        j                  j                  j                        r6 j3                  t4        jZ                         t        | j@                  
      S t        |t*        j                  j                  j                        r.d }	 |j                  }g } j@                  j                  t4        jb                        g}t        |t              rt{         j@                  d      }|j                  |j                  t4        jr                               tE        |      D ]:  \  }}	|j                   t         j8                  tO        ||            |	             < t        |   j8                  j:                  jf                  ji                  |t        | j@                  t        |                  S t        |t        j                        rt        t        |dd       t*        j                  j                  j                        rt        |dd      dk(  rr|t        |j                   dd       k(  rW j3                  t4        jZ                         t        t        |j                   t{         j@                  d      
      d      S t        |t*        j                  j                        r7 j3                  t4        j                         t	        | j@                  
      S |t*        j
                  j                  j                  j                  u r. j3                  t4        jZ                         t         fd      S t        |      rqt        j                  |      Zt        |      rd j8                  j:                  _        t        j                  |      j                  | j@                  
      S t        r-t        |t        j                        r j!                  |      S t#        j$                  |      r+ j3                  t4        jb                         t#        |      S t        |t&              rR j3                  t4        jb                  t4        j(                         t+        j,                  | j@                  
      S t        |t*        j.                  j0                        r} j3                  t4        j                         t{         j@                  d       } t         j8                  |      |j2                        }t5        jJ                   j8                  |      S t        |t6              rĉ j3                  t4        j                          j8                  j:                  j9                  d!t*        j.                  j:                  d"|j<                  |j>                  |j@                  d#      }tC        |jD                  |       tG        |||jH                   j@                  
      S t        |t*        j                  jJ                        rK j3                  t4        jb                         tM        jJ                   j8                  | j@                        S t        |tN              r҉ j3                  t4        j                         t*        j
                  j,                  jQ                  |        j8                  j:                  j9                  d!t*        j
                  j,                  jR                  t        |      fi       }tC        |jD                  |       tU        || j@                  
      S t        |t*        j                  jV                        r*|t         j"                  v rtY        | j@                  
      S t        |tZ        j\                        rMt        j                  |d$d       6 j3                  t4        jb                         t_         j@                  
      S ta        j$                  |      rg j3                  t4        jb                         ta        | j@                  
      }
 j8                  j:                  jf                  ji                  ||
      S t        |t*        jb                  jd                        rR j3                  t4        j                         tg         j@                         _         ti        | j@                  
      S tk        jl                  |      rtk        | j@                  
      S to        jp                  |      r7 j3                  t4        j                         to        | j@                  
      S ts        jt                  |      r8 j3                  t4        jv                         ts        | j@                  
      S ty        jz                  |      r7 j3                  t4        j                         ty        | j@                  
      S t}        j~                  |      r8 j3                  t4        jv                         t}        | j@                  
      S t        |      t        v rIt        |      t        vr7 j3                  t4        jZ                         t        | j@                  
      S t        |t*        j                        r t         j@                        }|jD                  j                         rk|jD                  j                         } j8                  j:                  j                  j                  t        |      |t        j                  %      }n0 j8                  j:                  j                  j                         } j8                  j:                  j                  j                  t        j                  d&d' jB                        t        |      |
      } t        ||d(d d(|)      | jD                  j                  d*<   tC        | jD                  |        j8                  j:                  j                  j?                  |jD                  j                          j8                  j:                  j                  j                  t        ||d              t        | |d+k(        S t        |||f      r9 j3                  t4        j                         t        |d d  j@                  
      S t        |t*        j                  j                  j                        rg j3                  t4        j                         t        |jH                  |j                  |j                  |j                  g j@                  ,      S t        j                  |      r7 j3                  t4        jZ                         t        | j@                  
      S t        j                  |d-d(      r8 j3                  t4        jb                         t        |d. j@                  
      S t        |      r8 j3                  t4        jb                         t        |d/ j@                  
      S t        |      r_t        |      \  }}!|!t{         j@                  |!       _         t        j                  |      j                  | j@                  
      S |t        j                  u r6 j3                  t4        j                         t         j@                  
      S t        |t        j                        rt        j                  |      rj j3                  t4        jb                         t        | j@                  
      }
 j8                  j:                  jf                  j                  ||
       |
S t        |t        j                  t        j                  f      ri j3                  t4        jZ                         t        | j@                  
      }
 j8                  j:                  jf                  ji                  ||
       |
S t        |t        j                        rt        |j                   t*        j                  j                  t*        j,                  j.                  j                  f      r t         j8                  t{         j@                  d      
      |j                         }"|"rt        |"t              sJ d0        j3                  t4        jZ                         t        |j                  |" j@                  
      S t        |t        j                        rt        |      S t        |t        j                        rt        |      S t        t        |      t              r$|t*        j,                  j                  j                  t*        j                  j                  t*        j                  j                  fv r3t        j                  |      j                  | j@                  
      S |t*        j                  j                  u r@ j3                  t4        jZ                         t        j                   j8                        S  j3                  t4        j                         t        | j@                  
      S t        j                  t        |            r j3                  t4        jr                          j                  |t        t        t        |            D cg c]1  }t	        jJ                  ||   tO         j@                  |            3 c}t        |      t{         j@                  d1      2            S t        j                  t        |            rd3d4l m}#m}$ t*        j                  j                  j                  |      r j8                  j:                  j                  j                  t        j                  d&d' jB                        t        |       j@                  
      }%t         j@                  |d(d d(|      |%jD                  j                  d*<   t        jJ                  |%| j@                  
      S t        |d5      s j                  |      S t	        j                   t         j8                   |$ j@                              |j                         j                                      t	        j                   t         j8                   |# j@                              |j!                                      t*        j                  j                  j#                   j8                  j:                  j$                  |      }& j8                  j:                  j                  j                  t        j                  d&d' jB                        t        |       j@                  
      }%t         j@                  |d(d d(|&      |%jD                  j                  d*<   t        jJ                  |%|& j@                  
      S t        t        |      t&              r7 j3                  t4        jb                         t)        | j@                  
      S t+        |      r| j3                  t4        jb                         t-        jJ                   j8                  | j@                  
      }
 j8                  j:                  jf                  ji                  ||
      S  j                  |      S c c}	}}w # t        $ r Y Uw xY wc c}w )6Nr   )
has_triton)	Autotuner)JITFunctionc                       e Zd Zy)*VariableBuilder._wrap.<locals>.JITFunctionNr   r   r   r   r  r        r   r  c                       e Zd Zy)(VariableBuilder._wrap.<locals>.AutotunerNr   r   r   r   r  r    r  r   r  rn  r0  c              3   F   K   | ]  }t        j                  |        y wr   ri   
is_literal)r  ks     r   r  z(VariableBuilder._wrap.<locals>.<genexpr>Q  s     Qq,77:Q   !c                     rt        j                  |      }|}n0t        j                         |       }t	        j                  ||      }t        j                         |      }t	        j                  ||      }||fS r   )ri   rs  r7   r1  r   r:   )	ir  vkey
source_keysource_valuer%  	all_constr   s	          r   build_key_valuez.VariableBuilder._wrap.<locals>.build_key_valuek  so    *11!4C!"J!3DOO4Eq!IJ-44Q
CC,T__->
K+221lCEz!r   c              3   >   K   | ]  \  }\  }} |||        y wr   r   )r  r  r  r  r  s       r   r  z(VariableBuilder._wrap.<locals>.<genexpr>x  s'      -6QA1a(s   default_factory)r  r   c              3   F   K   | ]  }t        j                  |        y wr   r  r  xs     r   r  z(VariableBuilder._wrap.<locals>.<genexpr>  s!      +
/0''*+
r  r%  r   funcargskeywordsz*functools.partial with non-literal keyworddtypesaved_tensors)r   r  __self__r    apply)r  c                     t        t        j                  j                  j                  j
                        j                   j                   j                  j                  j                  j                         fi       S r   )r   r   _dynamoexternal_utilsFakeCompiledAutogradEngineexec_final_callbacksr   r   r   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O r   Tstreamr   r   )	stream_iddevice_indexdevice_typeenter_result)dynamic_dim[^a-zA-Z0-9]+r  F)r   r   graphargrd   )target_valuesr   __script_if_tracing_wrapper__original_fn__wrapped__z"Failed to produce a valid self objr   )user_clsuser_cls_sourcer'   )FlattenScriptObjectSourceScriptObjectQualifiedNameSource__obj_flatten__(  torch.utils._tritonr  triton.runtime.autotunerr  triton.runtime.jitr  re  getr,  r~  r  rS   r  getattr_staticr$   rZ   r(   traceable_tensor_subclassesrB  rU   rH  r   rT  _pytreeSUPPORTED_NODESr  r/   DICT_VERSIONr   r   guard_on_key_orderr$  r   r   	enumerateitemsri   rs  r   r:   r1  r7   rq   sysmodulesrx  ru   rr   is_matching_cls_hfrk  wrapr  r#  dictrE  defaultdictOrderedDictSEQUENCE_LENGTHallkeysDICT_CONST_KEYSr4   rs   r  r  r<  r   r>  Modulewrap_moduler  rM  	overridesTorchFunctionModer   	frozensetrg  enumEnumrj   r   is_reorderable_logging_functionBUILTIN_MATCHloggingLoggerr   rX   rL   	functoolspartialr  r  r]  r  r.   r0   r6  	DICT_KEYSr}   rW   r   r\  genericr_  asarrayrH   callabler   rI   r   rJ   iinfor   r|   can_rewriteautogradfunctionFunctionMetar   FunctionCtxr  RuntimeErrorrC  r   r   types
MethodTypegetattrr  r   _C_ImperativeEnginer   r  r  r  _exec_final_callbacks_stubr   r+   lookup_callablerG   !has_user_defined_allowed_in_graphcreate_with_sourcenumberwrap_unspecialized_primitivert   is_matching_objectr   
NAME_MATCHr   makecudaStreamContextr  ro   r   create_proxyStreamr  r  r  r]   noderp   device_SDPAParamsr   r   store_user_object_weakrefget_user_object_from_idrl   _TensorMetar   
contextlibnullcontextrm   r   optim	OptimizerrB   r   r{   is_group_member_typerz   is_process_grouprw   is_device_meshEQUALS_MATCHrx   is_placement_typery   is_placementr  r  r   SymBoolr8   has_hintrequire_hint	shape_env$create_unspecified_symint_and_symbolr  r   DYNAMICcreate_unbacked_symintroot_tracercreate_graph_inputrN  subr   metabound_symbolsexprtracked_fakesTrackedFaker   r~   ampautocast_modeautocastrk   
fast_dtype_enabled_cache_enabledr   is_matching_clsr   rT   rb   r   randomRandomr   r   is_supported_random_objr:  
ModuleTyper*   DummyModuler   TreeSpecrg   r   __func__GetSetDescriptorTyper   MethodWrapperTyper   
issubclassrU  BackwardHookr?  Buffer _unsafe_preserve_version_counterrn   constructorr   r   rK  lenr   r   r  r  _libraryfake_class_registrytracing_with_realr   wrap_user_definedrealize_all_typequalified_namer  maybe_to_fake_obj	fake_moder   r   rR   r   ))r   r%  r  r  r  type_dispatchid_dispatchr  r  r  rb  factory_sourcer;  func_srcfunc_objr  args_sourceargr  keywords_source	dt_sourceactual_saved_tensorsr  r7  saved_tensors_sourcestream_source
stream_varstream_proxyevent_proxy
new_source
value_hint
new_symintsym_node_proxy	attr_nameself_objr  r  proxyfake_script_objr  r  s)   `                                      @@r   r!  zVariableBuilder._wrap  s   2<:6   ++-11$u+>$ u-- '')--bi8"tU++ "%(**52GOE )/66554
 ##E**5!%%e,,ekk))999  9 9: GGNN--11$++2B2B2DE "+5;;=!9  Av1 !''*,E()+=doo>OQR+S- F  %VT%[99ckk! ; ;<+4;;??#66tE{C 7 78+00u=F KKFM77>>..DDUFSSED+"9"9;;R;RST < <= QEJJLQQI ##L$@$@A$ 1155dkk6F6F6HI"  :CEKKM:R F e[445!+DKK9J!K,K$LODGG^$L--%  ;; +64;t{{S44UFCCuxx/##E**((/$$U++u@@A+E$++FCGGNN''==eSIJE9% +
49+

  5 56#**t{{KKtyy) 5 56eDKK@@>>uE  : :;$U4;;??w~~. ; ;<(t{{CC ',DKK@@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OoGG]?A> !,,\-D-DE**<+A+AB&&|'C'CD
 ,HdHEEu 5 56!{{  ^
5"** =**2::e+<==e_I2E? ++!,,
 !t{{;;E" 5 56%eDKK@@&%*##L$;$;<&t{{G<	i22<3H3HIJ##L$9$9:(t{{CC.::5A ; ;<4;;{{ 
 E5>>22??@ ; ;<+{{  u~~66BBC#' ',':':$ Mkk,,\-D-DEFF.6'1$++'O$(33L4P4PQ &&:; DAq!(( GG]3G%K 6"77>>..DD/;;"0"?  ue../z40%..2I2I2V2V z2.'9$??  ; ;<"(NN:dkk*+U 	  uxx99: 5 56)%DD}}++FFaab  ; ;<!  e_!<!<U!C!O"5)CG@..u5HHdkk I   Jubii044U;;'::5A 7 78-e4423 7 79P9PQ388t{{SSuzz778 5 56&t{{H=M@-@NJ(//DD{+ 5 5677>>66

!!!&$)$6$6#(#4#4		L l//7!{{	   4 46 7 78%,,TWWeT[[IIz* 5 56MM99%@''..55##;;E	K k..6 {{  uehh223;;;)%DD5*001&&undCK 7 78&dkk::&99%@ 7 78.uT[[IF77>>..DDUFSSu{{445 5 56)$++6DK$U4;;??#88?)%DD!2259 5 56'dkkBB..u5 9 9:%eDKK@@#55e< 5 56)%DD++E2 9 9:${{ 
 uI++5	!>> ; ;<$U4;;??u}}- *$++6Jzz""$"ZZ446
 GGNN,,QQJ"$.$6$6 R   "WW^^55LLN
!WW^^77JJ'dii8Z ! K N 4<#-4N$$Z0 n11:>GGNN((,,Z__-A-ABGGNN((//J
D9 #a  Y78 5 56'{{	  uyy66??@ 5 56'LL$$NN((	 {{  *99%@ ; ;</dkkJJ##E+H%P 7 78.t{{  +51 7 78.umDKKXX#E*?FE9 $(i@%%e,??dkk @   fmm# 5 56&dkk::E6==)n.T.T/
  7 78#E$++>FGGNN''55eVDM  0 0-2K2KLM ; ;<){{F GGNN''==eVLMu//0ZNNUXX__ekk.A.A.J.JK6

4;;
 CnnH 
/! 434   ; ;<%{{ 
 u99: ,E22u667
 )//UT*!!..""  #))%0CC$++ D   GGG##L$?$?@5AA$''JJ  5 56+{{  ,;;DKH < <=44.
 "'s5z!2	  ,22"'(=a3P "%[$.t{{K$H	  '66tE{C 
 ~~11CCEJ22EEFF+S$))<K;; F  /7KKtUE/


+ 177;;  5"34--e44  ++V)H)UVKKM002  ++P)B4;;)OP))+ $nn@@RR((%O GGNN..AA'dii8U{{ B E +3UE4+EJJOOJ' -33{{ 
 U^4 7 78)%DD ' 7 78,33DGGU4;;WF77>>..DDUFSS))%00sh   ^
s'   5ABKBK$ z!6BK4K$	BK1K0BK1c                    | j                  t        j                         t        || j                        }t        j                  t        |            s|S | j                  j                  j                  j                  ||      S rj  )r  r/   rk  r   r   r2   "cls_supports_mutation_side_effectsr,  r   r   r  r#  r   r%  rb  s      r   r3  z!VariableBuilder.wrap_user_defined  s^    L334*5E==d5kJMww~~**@@OOr   c                    t         j                  rPt        |      t        j                  u r5| j                  t        j                         t        j                  |      S | j                  t        j                         |D ]  }||u st        d        t        |t              rt        d |D              rs| j                  j!                         j#                         rK| j                  t        j                         t%        |D cg c]  }t        j                  |       c}      S t'        |      D cg c]4  \  }}t)        j                  |t+        | j-                         |            6 }}}| j.                  j0                  j2                  j5                  d      }t7        | j                  t8              r| j                  j:                  t=        |      v r| j                  }t7        |t>              sJ | j.                  j0                  j@                  jC                  tE        jF                  dd| jH                        t        |      |      }d|jJ                  jL                  d	<   tO        tP        | j.                  ||d |
      }g }	t'        |jR                        D ]  \  }}
t+        ||d      }|
| j.                  j0                  jT                  |<   tW        ||         |
jX                  jJ                  jL                  d<   t[        j\                  t        j^                  ta        ||               }|	jc                  |je                  |              tg        |	ddi ti        ||dd d      }||jJ                  jL                  d<    tk        jl                  |      |to                     }t        |t>              r| jq                  ||      S |S c c}w c c}}w )Nr%  z-list elements are pointing to the list itselfc              3   F   K   | ]  }t        j                  |        y wr   r  )r  items     r   r  z0VariableBuilder.wrap_listlike.<locals>.<genexpr>  s     H$$//5Hr  r0  r   r  r  T	steal_arg)
target_clsr   rN  example_valuesubclass_typer   Fbaseindexindex_is_slicetensor_dictr3  rd   )r   r   r   r  mutable_local)9r(   specialize_intr,  r   rG  r  r/   CONSTANT_MATCHri   rs  r  r.   rZ   rC  r  r   r4  is_unspecialized_nn_moduler   r  r   r:   r1  r   r   local_scoper  r   r@   
local_namerP   rD  r  r  rN  r  r   r  r  wrap_fx_proxy_clsr   r  input_source_to_varrK   rN  r  r  TENSOR_MATCHr&   r]  r6  r0   r   r   cls_for_instancere   r<  )r   r%  rV  r  r   maybe_gmr   tensor_list_proxylist_variabler7  tensor_variablesource_ir8  r  rb  s                  r   rH  zVariableBuilder.wrap_listlike  sK     T%[EJJ%> ; ;<#**77 	L889 	ODu}MN	O 5% H%HH((*EEG ; ;< E!RD"2"9"9$"?!RSS %U+

 4	  &&$T__%6:
 
 77>>--11&9KK
kk$$(;H(EE [[FeT*** $ : : M M'dii8$u+f !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9!2259,.
 %44UFCCI "S
s   	O:9O$c                 h   | j                  t        j                         t        t	        |            D cg c]@  } t        | j                  t        | j                         |            t        ||            B }}t        |t               | j                        }| j                  ||      S c c}w )N)ra  r   )r  r/   TUPLE_ITERATOR_LENrK  ra   r  r   rF   r1  r`   r   re   r   r<  )r   r%  r  r   rb  s        r   rI  z#VariableBuilder.wrap_tuple_iterator  s    L;;<
 -e45	
  WODGG%?@QST%UV&ua0
 
 ',.
 00??
s   AB/c                 \   dD cg c]@  } t        | j                  t        | j                         |            t	        ||            B }}| j                  t        j                         t        |t              rt        || j                        S t        || j                        S c c}w )N)startstopstepr0  )r  r   r4   r1  r  r  r/   rk  r   rJ  r   r   r   )r   r%  r  r  s       r   rL  z VariableBuilder.wrap_slice_range  s    
 /	
  GODGGZ0A1%EFq!
 
 	L334eU# t{{;; t{{;;
s   AB)r8  c                    ddl m} t        j                  d| j                  j                         t        |              |||       || j                  j                  j                  v rT| j                  j                  j                  |   }|j                  |j                  j                  j                  d   d<   y y )Nr'   )mark_static_addressz Marking static input %s, id: %s)r8  r_  _dynamo_static_input_type)
decoratorsrw  static_inputs_logdebugr   r   r  r   r   r  ry  rN  r  r  )r   r%  r8  rw  r;  s        r   mark_static_inputz!VariableBuilder.mark_static_input  s    4.0@0@0BBuI	
 	E/ DGGNN///''..--e4C // IINN.+ 0r   c                 b	   ddl m} t        |j                        dk(  rt	        dt        |              t        ||      rt        j                  |j                  dd      rt        | j                        S | j                  t        j                         t        | j                  d      | _        | j!                  |j"                        S t%        |t&        j(                  j*                  t&        j(                  j,                  t&        j(                  j.                  f      rt0        j2                  st	        d	       t5        |d
d      rt5        |dd      sJ d       | j                  t        j                         t7        || j9                               }t;        j<                  t?        |            s|S | j@                  jB                  jD                  jG                  ||      S tI        jJ                  || j@                  jL                        rt%        |t&        jN                  jP                  jR                  jT                        r*|jW                         }tY        | j                        | _        | j                  t        j                         t&        jZ                  j0                  j\                  rt_               }|ja                         D ]  }| jc                  ||        |je                         D ]  }| jc                  ||        |r-|| j@                  jB                  jf                  | jh                  <   |jj                  jm                  d      st5        |jn                  dd      rtq        || j                        }nts        || j                        }t;        j<                  t?        |            s|S | j@                  jB                  jD                  jG                  ||      S tu        |jn                  t&        j(                  jv                  jx                  jz                        r:| j                  t        j                         ts        || j9                               S | j@                  jB                  j}                  || jh                  | j9                               S )Nr'   )OptimizedModuler   zuninitialized nn.Module: _torchdynamo_disableFr0  	_orig_modz5TorchDynamo purposely graph breaks on RNN, GRU, LSTMs_is_fsdp_managed_module_fsdp_use_orig_paramsz3Dynamo only supports FSDP with use_orig_params=Truerx  )z	torch.nn.z	torch.ao._dynamo_marked_static)?
eval_framer  r/  __dict__r.   rf   rZ   r  r  forwardr   r   r  r/   rk  r4   r  r  r   r   r>  RNNGRULSTMr(   	allow_rnnr  r   r1  r2   rQ  r,  r   r   r  r#  r)   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baser3   r  inline_inbuilt_nn_modulesrV   
parametersr}  buffers
nn_modulesr   r   r  r   r   r   r*  paralleldistributedDistributedDataParallelregister_attr_or_module)r   r%  r  rb  freezingpbs          r   r  zVariableBuilder.wrap_module%  so   0u~~!#5gen5EFG%)%%emm5KUS
 /dkkBB 7 78$T[[+>DK##EOO44 uuxx||UXX\\588==IJ$$QR53U; . EDE   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: 7 78}}##==02))+ >A**1H*=>  >A**1H*=>  <ADGGNN--dii8**+EF'!8%K >eDKKX6uT[[QAA$u+N77>>..DDUFSSOOUXX..::RR
  7 780t?PQQ77>>99		( :  r   c                    t         j                  s@t        |      t        u r.t	        j
                         j                  s| j                  j                         j                         r| j                  j                         j                         so| j                  j                         j                         sGt        | j                        s2t        | j                        st        d      sR|| j                         v r@| j!                  t"        j$                         t'        j(                  || j                        S | j+                  |      S t         j,                  s"t        |      t.        u r| j1                  |      S | j!                  t"        j$                         t'        j(                  || j                        }t3        |t4        t6        f      r| j9                  ||      S |S )Nz5pytorch/dynamo:enable_unspecialize_zero_one_plain_intr  )r(   rb  r,  r  r   r  #force_unspec_int_unbacked_size_liker   r4  is_localis_specialized_nn_module"is_unspecialized_builtin_nn_moduler>   r<   r   r.  r  r/   rc  ri   rs  wrap_symintspecialize_floatfloatwrap_symfloatr   rD  setr<  rR  s      r   rM  zVariableBuilder.wrap_literal  sb   $$e); "%%'KKKK,,.779 ;;++-FFH;;++-PPR#DKK0#DKK0 (O !7!7!99 ##L$?$?@'..U4;;OO''..((T%[E-A%%e,, ; ;<%,,5MF%$-88GGMr   c                 v    t        |      r.t        |      | j                  j                  u rt	        dd      y y )Nz*Cannot wrap a Tensor that has already beenz"wrapped by this instance of Dynamo)r   r   r   r8  r-   rh  s     r    assert_not_wrapped_by_this_graphz0VariableBuilder.assert_not_wrapped_by_this_graph  s;    5>1%8DGG<M<MM*<4  N>r   c           	      d   | j                         }|| j                  j                  j                  vsJ t	        |      d u}t
        j                  rc|sat        |t        j                  j                        s |r;|j                         j                         r| j                  |t                      d}|xr t
        j                   xs
 t               }|j                         j                         s|ra|j                         j!                         sC| j#                  |       | j                  j                  j%                  || j&                  |      S t)        |      rX| j#                  |       | j                  j                  j%                  |t+        j,                  dd| j&                        |      S t/        |      t
        j0                  v rt/        |      }nt/        |      t        j2                  t        j                  j                  t        j4                  j6                  j8                  t        j4                  j:                  j<                  fv st?        |      sJ t/        |             d }|| j                  j                  j@                  v }|r#| j                  j                  j@                  |   S t	        |      dk(  r| jC                  tD        jF                         | j#                  |       | j                  j                  jH                  jK                  t+        j,                  dd| j&                        t/        |      |      }i }t/        |      t
        j0                  v rCtM        | j                  || jN                        |d<   | jC                  tD        jP                         t        |t        j2                        rO|jR                  rCt        |t        jT                  jV                  jX                  jZ                        st]        d       t        |t        j2                        r<t_        |      r1| j                  j`                  rt
        jb                  st]        d	       te        |      r8tg        |      -|jh                  tg        |      jh                  k7  rt]        d
       tk        d| j                  ||||d|}	tD        jl                  }
t        |tn              rtq        |      rtD        jr                  }
| jC                  tu        jv                  |
t        |tx              r|n
t{        |                   t?        |      r| jC                  tD        j|                         | jC                  tD        jP                         t        t        |      j                  tD        j                               |j                         \  }}|D ]S  }t        ||      }t        | jN                  |      }t        j                   t        | j                  |      |             U |	| j                  j                  j@                  |<   d|j                  j                  vsJ t        |      |j                  j                  d<   |	j                  j                  j                  d   }t        |      | j                  j                  urt        d      t        ||d|      }||j                  j                  d<   | j                  j                  j                  |       |	S )Nrx  Tr0  r  r  guardedtorch_function_fn3torch.compile does not support strided NestedTensorz-torch.compile does not support sparse TensorszInconsistent dtype between tensor and its gradient. This can happen in FSDP and crashes meta tensor creation. This is potentially a workaround. Fixing it correctly requires some design around FSDP + torch.compile.)r   rN  rY  rZ  r   rT  r_  rY  z(Wrapped Tensor must be this graph's fakeFr  r   )Rr1  r   r   r  rQ   r(   r  r   r   r>  r?  r4  rd  r}  rV   r  is_fsdp_moduler  r  r   r=   rN  r  r,  r  r   r   r   r   r@  rA  r$   rh  r  r/   rg  r  r  r   r   rk  	is_nestednested	_internalnested_tensorNestedTensorr.   r   r  capture_sparse_computer   r   r  wrap_fx_proxyri  r;   r?   NOT_NONE_MATCHr  r  rA   r&   TENSOR_SUBCLASS_METADATA_MATCHr0   rE   r6  r  __tensor_flatten__r  r4   r   r4  r  r  r  rK   rN  r   r8  r-   r   add_symbol_bindings)r   r%  r   is_static_inputmake_graph_attributerZ  is_duplicate_tensortensor_proxyoptionsrn  
guard_typeattrsr  attrinner_valueinner_sourcefake_tensor_valuer  s                     r   rB  zVariableBuilder.wrap_tensor  s   " DGGNN777771%8D ,,#5%(("4"45 v224OOQ ""50E0G"H"O.  
000K4I4K 	
 !::<@T%%'66811%877>>99tyy :   f%11%877>>99'dii8 :   ;&<<<$ !KM;""!!--88!!33DD	# 
 /u5C
 8<E{C 6 !M %(J(JJ77>>55f=="5)Y6 5 56 	--e4 ww~~11DDFF#S$))4d5k& E 
 ;&<<<+B,G'(  7 78 uell+uell&<&<&J&J&W&WXOP uell+e$WW^^6+H+H
 IJ % % ,y/555D ( 
ww'
 
 "..
fj).Fv.N%44J "&*;< &u-		
 )/ K KL 7 78&v.99,:S:ST //1HE1 %eT2)$++t<#//:ODGG\:;G 6E**62L$5$5$:$::::0DU0K}- ,1166;;OL019J9JJ*+UVVFE52CD-5z***84r   c                    t         J t        |t         j                        sJ t        | j	                               }ddlm} |j                  j                   }|r	 d|j                  _        	 |j                  |      }|rddlm}  ||      }t%        j&                   t)        | j*                  |                   | j*                  j,                  j.                  j1                  t3        j4                  dd| j6                        t9        |      |      }d|i}	t;        dt<        | j*                  ||d	|	}
|
| j*                  j,                  j>                  |<   |
j@                  jB                  jD                  d
   }tG        ||d|d|      }||jB                  jD                  d<   |
S # t        $ r* t        |j                  t         j                        sJ Y qw xY w# t        $ r}t!        t#        |             Y d }~vd }~ww xY w)Nr   )_utilT)clone_preserve_stridesr  r  r0  r   rX  r   rN  rY  rY  r   r   r   r   r  r   )$r\  r   r^  rA   r1  torch._numpyr  flags	writeable
ValueErrorr\  nditer_try_convert_to_tensortorch._prims_commonr  NotImplementedErrorr.   strr   r4  r  r   r   r  r  rN  r  r   r,  rg  r   rh  rN  r  r  r   )r   r%  r   r  readonlytensor_valuer  erN  r  numpy_ndarray_variablerY  r  s                r   r_  z"VariableBuilder.wrap_numpy_ndarrayq  s   ~~%,,,"4??#45&{{,,,9(,%	" 77>LF5lC 	''(H(H(VW**==FF#S$))4d<6HQW > 
 V$!2 "
+ww&	"

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


#%%_  9 "%**bii8889 # 	"#a&!!	"s*   F. 0!G$ ./G! G!$	H-HHc                     t        |      t        u sJ  j                   j                  j                  j
                  v r- j                  j                  j
                   j                     S  j                  j                  j                  }t        j                         j                  r|j                         }t        |        j                  j                  j                  j                  |j                  j                          j                  j                  j                   j#                  t%        | j&                  d              nt)         j+                               s]t,        j.                  j0                  j2                  r@ j5                  t6        j8                         t;        j<                  | j&                        S  j&                  j                          fd} j                  j>                  x}, ||        j                  j                  j@                     }n}|jB                  (tE        d |d       }||jF                  jH                  <   nI|jB                  D ]  } ||jH                              j                  j                  j@                     }t0        jJ                  r|jL                  t0        jN                  stP        jR                  }n5 j5                  t6        j8                         t;        j<                  |      S |jU                  | j&                  |      } j                  j                  j                  j                  |j                  j                          j                  j                  j                   j#                  t%        | j&                  d              n[t)         j+                               sJ  j5                  t6        j8                         t;        j<                  | j&                        S tW         j+                         tX              rJ t[         j+                         j]                  t6        j^                               d j+                         i}	 j                  j                  j`                  jc                  te        jf                  dd j                        t        |       j+                         	      }
ti        |
j                  |       tk        |
|fi |	}| j                  j                  j
                   j                  <   t)         j+                               s j                  jl                  r=tW         j+                         tn              stq        d
| d j+                                |jr                  j                  jt                  d   }tw         j+                         |dd d|      |
j                  jt                  d<   |S )Nr  c                    j                   j                  j                  vrt        | d d       }nj                   j                  j                     }|j                  | k7  rjt
        j                  d| |j                         j                  j                         j                         rt
        j                  d d       d |_        |j                   j                  j                  <   y )N)r	  r
  r  z%automatic dynamic int %s val %s != %sz%sz is converted to a symbolic integer. It is an attribute of a user defined nn module class. If you wish to keep it static, you can mark the nn module class as `torch._dynamo.mark_static`.)r   r   frame_stater  r	  logr|  r   r4  rd  info)r%  frame_state_entryr   r   s     r   update_frame_statez7VariableBuilder.wrap_symint.<locals>.update_frame_state  s    tww~~999
 )<$4)% )-(B(B4(H%(//58		C !-44	  ;;335PPRHH $'+f -_ %_ 48)03D**40r   r
  r	  r  rT  )r   r  r   r  r  r0  =Dynamo attempts to add additional input during export: value=	, source=rY  Fr  r  )<r,  r  r   r   r   unspec_variable_mapr  r   r  r  r  r   r  r$  r  r  r  r]  r  r   r=   r1  r   r  r(   rb  r  r/   rc  ri   rs  distributed_stater  
all_statesr  local_stateinput_sizesautomatic_dynamic_shapesr	  assume_static_by_defaultr   r  r  r   rC   r0   r6  rk  r  r  rN  r  r]   r   r  r@   AssertionErrorrN  r  r   )r   r%  r  wrapped_valuer  str  	sub_stater  r  rN  
unspec_varrY  r   s   `            @r   r  zVariableBuilder.wrap_symint  sy   E{c!!!99:::77>>55dii@@GGNN,,	CC%<<>M%m4GGNN((,,]-?-?-D-DEGGNN((//M4;;= $DOO$56}}##22 ##L$?$?@'..U4;;OO;;##%DE< gg///8"5)$(GGNN$>$>t$D!&$7eD%! 49**40 "$ DI&y'<'<T'BCD$(GGNN$>$>t$D! //4E4L4L4T44(00 ##L$?$?@'..U;;%JJ{{' K M
 GGNN((,,]-?-?-D-DEGGNN((//M4;;= &doo&7888 ; ;<#**t{{KKdoo/1BCCCdoo'22<3J3JKLT__./**==FF#S$))4??$ > 
 	%**m4$UMEWE
8B**4995!$//"34ww~~j1BK&P$STaSbbklpl{l{l}k~  ',,1166GM*2!#( #0+EJJOOJ' r   c           
         | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S t        j
                  j                  j                  s.t        | j                               st        j                  |      r@| j                  t        j                         t        j                   || j"                        S t	        j$                  |t        j&                        }t)        | j                         t*              rJ t-        | j                         j/                  t        j0                               t3        | j                               |d}| j                  j                  j4                  j7                  t9        j:                  dd| j                         t=        |      | j                               }t?        t@        f| j                  ||d|}t)        |t@              sJ || j                  j                  j                  | j                   <   | j                  jB                  r=t)        | j                         tD              stG        d| d	| j                                d }|jH                  jJ                  jL                  d
   }tO        |      sJ |}|jP                  | j                  jP                  u sJ d|jP                   d       tS        | j                         |d|d|      |jJ                  jL                  d<   tU        | j                   | j                  j                  jV                  ddgtY        |gi              }| j                  j                  jZ                  j]                  t_        |j`                  | j"                  d              |S )Nr  )r  )r   	raw_valuer  r  r0  r   rN  rY  r  r  rY  fake mode (^) from fake tensor metadata doesn't match mode({self.tx.fake_mode}) from InstructionTranslatorTFr  r  call_methodrV  )1r   r   r   r  r   r  r(   r  r=   r1  mathisnanr  r/   rc  ri   rs  r   tensorfloat64r   rC   r0   r6  rk  r9   r  r  rN  r  r,  rg  r   r  r@   r  rN  r  r  r   r8  r   r  r  r\   r  r]  r  sym_num)	r   r%  r  r  rN  r  r  rY  r   s	            r   r  zVariableBuilder.wrap_symfloat8  s    99:::77>>55dii@@
 MM  11!$//"34zz%  ; ;<#**t{{KK U%--@ doo/1BCCCdoo'22<3J3JKL /t/@APUV **==FF#S$))4??$ > 
 ''
ww'	

 

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


# GG'DGGNN'' #J<4
 	$$++K		4;;PT,UVr   c                    | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S t	        j
                  |      }t        | j                         t              s6t        | j                         j                  t        j                               d| j                         i}|j                  d|i       | j                  j                  j                  j                  t!        j"                  dd| j                         t%        |      | j                               }t'        t(        f| j                  ||d|}|| j                  j                  j                  | j                   <   t+        | j                               s| j                  j,                  r=t        | j                         t.              st1        d| d| j                                d }t        |t2              r|j4                  }n#|j6                  j8                  j:                  d	   }t=        |      sJ |}|j>                  | j                  j>                  u sJ d
|j>                   d       tA        | j                         |d|d|      |j8                  j:                  d<   |S )Nr   r  r  r  r0  r  r  r  rY  r  r  TFr  r  )!r   r   r   r  r   r  r   r1  rC   r0   r6  r/   rk  updater  r  rN  r  r,  rg  r   r=   r  r@   r  ri   r%  rN  r  r  r   r8  r   )r   r%  r  r  rN  r  r  rY  s           r   r  z,VariableBuilder.wrap_unspecialized_primitive  sL   99:::77>>55dii@@U+$//+->?$//+66|7N7NOPT__./U+,**==FF#S$))4??$ > 
 ''
ww'	

 

 9C**4995!$//"34ww~~j1BK&P$STaSbbklpl{l{l}k~  !%*&67 * 0 0 * 0 0 5 5 : :? K=))) -$..$''2C2CC /99: ;C CC
 +3!#'-#0+EJJOOJ' r   );r   r   r   __doc__rD   r   r*  r"  staticmethodr  	lru_cacher.  r1  r  r<  classmethodre  rN  rO  rP  rQ  rR  rS  rW  rZ  r   r  r   r   rg   r~  r!  r3  r   rC  rD  r[   r	   rH  r_   rI  rJ  rK  rL  r   r   r   r}  r>  r  r  rM  r  rB  r_  r  r  r  r  r  s   @r   r  r  \  s   =" " 
	"0
 Y

  

E
 Y"  "H+

 +
:'"7"7 :<
 Y 	c8.4oEFF	G    DG
1RPs PZ5lJ)N#O Zx@ @<eE5L&9 <0u|| 0D 0 ` `D"Hell } }~;&zHTgR4r   r  c                    t        | t              r| j                  }n+t        | t              r| j                  }nt        d|         g }t        j                        D ]V  }d }| j                  r*t        t        | j                  d      |j                        }|j                  t        ||             X t        |      S )Nz)Dataclass fields handling fails for type __dataclass_fields__r0  )r   r   r%  rr   r  r.   r{  r|  r   r:   r4   r   r]  r   )objr%  r  fieldr   s        r   rw  rw    s    #01			C/	0A#GHE##E* F::"3::'=>

F 	.uVDEF r   r  c                     | |||d|}|t        ddt        i|S t        ddt        i|}|j                  |        |S )N)r   rN  rY  rZ  rX  r   )rg  r   r   install_global)r   rN  rY  rZ  r  kwargsrb  s          r   r  r    sb     &&	
 F  ENEfEE"U.JUfUb!r   c                    ddl m} t        |      sJ d|v r-|d   (j                  j                  j                  |d          d|j                  j                  vsJ |j                  j                  d           |}fd}t        j                  j                  j                         5  |t        |j                  d      }nt        |      j                  u rnt        |t        j                        rj                   rPt        j"                  j%                         5   ||      |j&                  j(                  |j                  <   d d d        d| t*        t,        fv i}	d	|v r|d	   J |d	   |	d	<   t/        |fd
i|	}t        |t        j                        r>|j0                  j2                  dk7  r%t        |      j                  urt5        d|       d d d        t        |t        j                        r(t        |t        j6                  j8                        }
t        |t        j6                  j:                        } ||      }t=        |j                  |       | j?                  |      }t        |t        j@                  jB                  jD                        ri|j                  j                  u rQ|r|nt        j                  }|
rt        j6                  j8                  n|rt        j6                  j:                  n||d<   |j                  |        | |fi |S tG        |j                  jH                  d      re|j                  jH                  jJ                  dk(  rBt        |j                  jH                  jL                  t        j"                  jN                        s1|j                  jH                  t        jP                  jR                  k(  rtU        |j                  jH                        S |j                  jH                  t        j"                  jV                  k(  s1|j                  jH                  t        jX                  jZ                  k(  rt]        |      S t_        |t        j`                        r@tc        d |D              r.|D cg c]  }te        jf                  |       }}ti        |fi |S t        |tj        tl        f      rt=        |j                  |       g }to        |      D ]  \  }}|%|jq                  te        jf                  d'i |       -|j&                  js                  dtt        jv                  ||fi       }d	|v r'|d	   }|jy                         }t{        ||d      |d	<   n|}|jq                  t}        d(| ||d|        t        |t        j`                        rti        ||fi |S t_        |tj              rt        |fi |S t_        |tl        t        f      rt        |fdt               i|S |j                  j                  dk(  s6tG        |d      s*J d|j                  j                   dt3        |              t        ||j                  fi |S |&|j                  jH                  t        j                  u rte        jf                  d'i |S t        |t        j                  t        j                  t        j                  f      r#t=        |j                  |       t        ||fi |S t        j                  |j                  jH                        r$t        |j                  jH                  t              s=|j                  jH                  t               D cg c]  \  }}|j                   c}}v r.t=        |j                  |       t        |||j0                  fi |S t        j                  |j                  jH                        r$t        |j                  jH                  t              s=|j                  jH                  t               D cg c]  \  }}|j                   c}}v r#t=        |j                  |       t        ||fi |S |j                  jH                  dk(  r;|j                  j                  dk(  r"t=        |j                  |       te        |fi |S |et        |t              rU|j                  jH                  dk(  r<|j                  j                  dk(  r#t=        |j                  |       t        ||fi |S t        |t              r=|j                  jH                  t        j                  t        tt        jv                  t        j                  j                  t        j                  tt        j                  t        j                  j                  j                  t        t        j                  dt              t        t        j                  dt              t        j                  f
v s1|j                  j                  dk(  rD|j                  jH                  d v r,t=        |j                  |       te        jf                  |fi |S t        |t        j                  jX                  j                        r%d!d"lemf} t=        |j                  |        ||fi |S t        |t              r|j                  jH                  t        j"                  j                  t        j                  jX                  j                  t        j                  jX                  j                  t        j                  jX                  j                  fv r,t=        |j                  |       te        jf                  |fi |S t        |t        t        t        f      rH|j                  jH                  t        u r,t=        |j                  |       te        jf                  |fi |S t        d#t        |       d$|j                  j                   d$|j                  jH                   z   d%&       y # 1 sw Y   xY w# 1 sw Y   
xY wc c}w c c}}w c c}}w ))Nr'   )InstructionTranslatorBaser7  rY  c                     t        | t        j                        rSt        | t              sCt        j                  |       rt        |       j                  u s| j                  st        |       } | S r   )	r   r   r   r   _is_functional_tensorr   r8  r  rM   )r%  r   s    r   _clone_inputz'wrap_fx_proxy_cls.<locals>._clone_input5  sV    eU\\* 5*- //6+E2bllB?? $E*r   T)allow_non_graph_faker   r   r   r  zU`example_value` needs to be a `FakeTensor`wrapped by this instance of Dynamo. Found: 
class_typer   	set_statec              3   <   K   | ]  }t        |t                y wr   )r   r  r  s     r   r  z$wrap_fx_proxy_cls.<locals>.<genexpr>  s      3 
1c3s   r   )kindtargetr  r  Fr[  r  ra  ztorch.return_types_fieldsz	expected z. == torch.return_types or named tuple but got queryr  record_eventget_rankget_world_size)
bit_lengthrd   r   ztorch.* op returned non-Tensor  unsupported_operator)	case_namer   r   )psymbolic_convertr  r   r   r7  r  r  r  r   r  rT  +_disable_saved_tensors_hooks_during_tracingrO   r   r8  r   r  r  DisableTorchFunctionSubclasstracerreal_value_cacher   r   wrap_to_fake_tensor_and_recordr  r,  r-   r>  r?  r,  r]   
specializer   r   r   r   r  r   r  	Generatorr!  set_rng_stater   _DisableFuncTorchr  _is_in_bad_forkr   rZ   rG  r  ri   rs  r   rC  rD  r  r]  r  operatorgetitemcopyr:   rg  r   r#   r   re   r   r   r   manual_seedr   SymFloatr  r   r  r  r*  r   r,   current_streamrp   r   Eventrl   opr  sym_intr  _utils_element_sizeseedmod
_functorchvmap_validate_and_get_batch_sizer  r   _constrain_as_sizebackends
SDPAParamssdpar   r    _are_functorch_transforms_activeis_flash_attention_availablecan_use_flash_attentioncan_use_efficient_attentionr  r   r.   rf   )rX  r   rN  rY  rZ  r  r  initial_example_valuer	  r  is_parameter	is_bufferspecialized_propstensor_typer  sizesunpackedr  valproxy_ir   	options_ir  device_interfacer   s    `                       r   rg  rg  (  s#
    =b34447wx0<
		 12%**//1Xejjooo6V5WX1)$ 
			H	H	J )  +5::rPTUM !/2<<?u||4yy XX::< @L%AELL11%**= Z"$@ABF w&78+<+HHH&x0F8:"$(.M }ell3$$))V3$]32<<G*>>K_N M)V -.!-1C1CD}ehhoo>	
 %]3%**m4&11-@ }e&7&7&C&C&N&NO''2<<7+8-ellK   ""  XX__  l+ 	()%+7++

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

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

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

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

))*z%**:K:KZ/X			#C#EA 	 
 	%**m4UM=W==			g	%%**--=*H%**m4999!}j1JJ/JJMM]*%**m4UM=W==	M3	'

MMLL&&JJLL!!>>E%%z8<E%%'7B $$
	
$ JJMM]*

!!^3 	%**m4&&}@@@	M5>>#6#6#A#A	B,%**m4!%3733	M4	(UZZ->->11883377	C . 	%**m4&&}@@@=3t"45JJ/%**m4&&}@@@-'(%**--%**:K:K9LMN,	
M !) )h Dxs8   -A8q*%*qBq*q7q< rq'	"q**q4c                   X    e Zd ZU eeef   ed<   eed<   ee	   ed<   de
fdZdedefdZy)	r  faker   symbolic_contextr  c                 `    t        | j                  | j                  j                         f      S r   )hashrH  r   r   r   s    r   __hash__zTrackedFake.__hash__-	  s#    TYY 0 0 2344r   r   c                     t        |t              rO| j                  |j                  u xr5 | j                  j	                         |j                  j	                         k(  S y)NF)r   r  rH  r   r   r   s     r   r   zTrackedFake.__eq__0	  sF    e[)99

*Xt{{/?/?/AU\\EVEVEX/XXr   N)r   r   r   r   r   r   r   rD   r
   r!   r  rL  objectr   r   r   r   r   r  r  &	  sA    

F"
##N//5# 5F t r   r  c           
      6  ./0 | j                   rCt        | t        j                  j                  j
                  j                        st        d       |j                         0j                  j                  j                  j                  | d       }|r|j                  nd }d }| j                         r$t        |d      }t!        | j"                  ||      }t%        |       r|st!        | ||d      }	i }
t'        |       j)                  |       \  }}|D ]+  }t+        | |      }t        ||      }t!        |||      |
|<   - t-        |	j.                  |	j0                  |	j2                  |	j4                  ||	j6                  |	j                  |
      S |rvt9        t:        j<                  g| j?                         z  t:        j@                  g| j?                         z  d g| j?                         z  d g| j?                         z  |||      S ddl!m"/ tG        /fd	| jI                         D              rt9        | jI                         D cg c]2  }t        |tJ              rt:        jL                  nt:        j<                  4 c}t:        j@                  g| j?                         z  d g| j?                         z  d g| j?                         z  |||      S 0fd
}jN                  x}OtQ        |       s| jS                         nd} || jI                         |       j                  jT                  0   }n|jV                  tY        | jI                         d | jS                               }t[        | jI                               |j\                  j^                  0<   t[        | jS                               |j\                  j`                  0<   nk|jV                  D ]C  }0|j^                  v s0|j`                  v s! ||j^                  0   |j`                  0          E j                  jT                  0   }tc        |       }i ..fd}j                  jd                  rSj                  jd                  D ]:  }|jf                  |k(  s ||j>                  |jh                  |j                         < g }g }g }g }tk        | j?                               D ]%  }|t+        | dtm                     v }|t+        | dtm                     v }|t+        | dtm                     v } |t+        | dtm                     v }!tn        jp                  xr! |jH                  d u xs |jH                  |   d u }"tn        jp                  xr1 |jH                  d uxr! |jR                  d u xs |jR                  |   d u }#|"xs |#}$|jH                  r6|r4tr        ju                  d0       d |jH                  |<   d |jR                  |<   .j                  |      }|d }%d }&|rtn        jv                  sd }&ty        | d      r| jz                  D 'cg c]  }'|'j>                  |k(  s|' c}'j}                         }(|(j~                  |(j                  t        d      }%nddl!mB})  |)t        |(j~                  |(j                        d      }%net        d      }%nX|!s|$r|"rt        d      }%|#rDt        d      }&n7d }%d }&n2|\  }%}*d }&0 d| d}+|*j                  j                  j                  |+<   |j                  |%       |j                  |&       |rt:        j                  },ne|%|s| s /| jI                         |         rt:        jL                  },n5|stn        j                  s|!rt:        j<                  },nt:        j                  },|&t:        jL                  }-nt:        j@                  }-|j                  |,       |j                  |-       ( t9        |||||||      S c c}w c c}'w )Nr  _baseT)
outer_only)dynamic_sizesdynamic_stridesconstraint_sizesconstraint_stridesview_base_contexttensor_source#shape_env_to_source_to_symbol_cacheinner_contexts)rR  rS  rT  rU  rV  rW  rX  r   )is_nested_intc              3   T   K   | ]  }t        |t              xr	  |        ! y wr   )r   r   )r  srZ  s     r   r  z%_automatic_dynamic.<locals>.<genexpr>w	  s(     
La:a 9q)9%99
Ls   %(c                 N   d }d }j                   j                  vr/t        d d d       }t        |       |_        t        |      |_        n@j                   j                     }|j                  t        |       t        |j                        k7  r:t        j                  dt        |       |j                         d |_        d |_        nd}t        |j                        D ]O  \  }}|3| |   |k7  r+t        j                  d|| |   |       d |j                  |<   |xs |j                  |   d u }Q |sTt        |j
                        D ]<  \  }}|	||   |k7  st        j                  d|||   |       d |j
                  |<   > |j                   j                  <   y )Nz!automatic dynamic %s dim %s != %sFz&automatic dynamic %s size(%s) %s != %sz(automatic dynamic %s stride(%s) %s != %s)
r   r  r  rD  r
  r  r/  r  r|  r  )	r
  r  r  r  has_size_changedr  dimr   r   s	          r   r  z._automatic_dynamic.<locals>.update_frame_state	  s     ryy,,, !4D$ E%)$Z"'+F|$ "		 5 5d ; %%1t9$5$:$: ;; II;D	)..	 .2%*/3%, (-$"+,=,B,B"C 3?tAw#~II H $ ! $Q # 9=-2215,Q0A0F0Fq0IT0Q ): ,&/0A0H0H&I 	CFAs"6!93C #		$N$($%$*1I$'!" ?C 1 8 8 ;	C '8		d#r   r   r  c                     | v r=ddl m} |    \  }} ||j                  |j                  z  d      }|xs |}||f| <   y ||f| <   y )Nr   StrictMinMaxConstraintFvr	warn_only)%torch.fx.experimental.symbolic_shapesrb  rd  )	r_  constraint_ranger   rb  old_constraint_rangeold_namenew_constraint_rangenew_namedim2constraints	           r   update_dim2constraintz1_automatic_dynamic.<locals>.update_dim2constraint	  sk    . T-;C-@* (#9#&&)=)@)@@$   '4H"6"@N3"2D"8N3r   _dynamo_unbacked_indices_dynamo_dynamic_indices_dynamo_weak_dynamic_indices_dynamo_static_indicesz#automatic dynamic %s marked dynamic_dynamo_dynamic_rangeF)re  ra  )lowerupperrc  z.size()[])Jr  r   r   r  r  r  r  r.   r   r   tracing_contexttensor_to_contextr  rX  _is_viewr4   _automatic_dynamicrP  r$   r,  r  r  r    rR  rS  rT  rU  rW  r   r   STATICr_  INFER_STRIDErf  rZ  anyr
  r   r  r  r   r  r  r  r  rD  r  r  input_stridesr  export_constraintst_idrg  rK  r  r(   r  r  r|  allow_ignore_mark_dynamicr   rr  popminmaxr   rb  r%   r  source_name_to_debug_namer]  SIZE_LIKE_UNBACKEDr  DUCK)1r  r   r   static_shapesrQ  prior_policyrX  rV  base_sourceouter_contextrY  r  r  r  inner_tensorr  r\  r  r  r  r  r  r  rm  
constraintrR  rS  rT  rU  r  marked_unbackedmarked_dynamicmarked_weak_dynamicmarked_staticautomatic_dynamic_sizeautomatic_dynamic_strideautomatic_dynamicconstraint_sizeconstraint_stridedr	dim_rangerb  name_dim_namedynamic_sizedynamic_striderl  rZ  r   s1    `                                            @@@r   ry  ry  8	  sm    	{{:	5<<!!//<< 	KL;;=D99,,>>BB1dKL<H88d (
 48zz| 1.qwwKW$Q'
*r6=T

 7--a0q 	D"1d+L%fd3L#5b,$N4 	 ''55)99*;;,??/'550=0a0a)	
 		
 &%,,-7'445?"Vaeeg- $v// 0S
 	
 D

L1668
LL&  '1F&;
""ARARR (445?"Vaeeg- $v// 0S
 	
G8R """+#0#31668V,II11$7		/$qxxz
 ,0>""4(-1!((*-=$$T*  	Iy,,,9P9P1P"))$/1H1H1N	 II11$7 a5DN9  
yy##))66 	J$&%NNJ$?$?	 MO1557^ _/wq*DceLLga)BCEJJ71.Lce#TTWQ(@#%HH "(!@!@ "
""d*O.?.D.DQ.G4.O 	
 $*#B#B $
""$. !((D0W4E4L4LQ4OSW4W 	! 3N6N !!nII;TB(,""1%*.$$Q'
 $''*
"O $f&F&F$(!156%&%<%<!!!!ce  !}},1F*AE*R +A*immT&++
 '>&NO"'8)&=&MO+(?$(O%"&$(!%/"OU $xs!,HFKBII99(C0!!"34%88L'"QVVXa[)
 &--Lf==%,,L%??L('//N'44N\*~._/B ##')-+,O Yf!s   7`9``)parent_contextr   r   c          
          t               t        j                  t        j                  j                  t
        fv s&t         t        j                        st               rۉJ t         |      \  }}|st         |      n-t        t              sJ j                  }|j                  |   t        j                  dj                         t!         j"                        t                      t%         fd      }Wt        |t
              rG|j&                  x}	9j(                  j*                  j-                  t/        |	t1                           t        |      rf|j3                         \  }
}|
D ]N  }t5        ||      }t5         |      }t        |      }t7        ||t        |t        j                               P j(                  j8                  j:                   <   t=        |      r|j>                  r|jA                         n|jC                         }|jE                         d|jF                  z  |jE                         |jI                         dj(                  jJ                  <   n8|jE                         |jI                         dj(                  jJ                  <   |r~|rjM                         sltO              saj(                  j*                  j-                  t/        |             j(                  jP                  tS                  j-                         |S  S )N)rW  zwrap_to_fake %s %s %s %sc                  @    j                   j                         S )N)r   rI  )r8  from_tensor)r  r   rI  r   s   r   r   z0wrap_to_fake_tensor_and_record.<locals>.<lambda>
  s$    BLL,,!1 -  r   )r   r   r  )rd   )r
  r  values_sizevalues_stride)r
  r  )*r,  r   r   r>  r?  r   r   r$   r^   ry  r4   r  rY  r  r|  r   rC  shaperc   	item_memor   r  r]  r  r5   r  r  r  rv  rw  r   	is_sparse_valuesvaluesr
  ndimr  input_source_to_sizes_stridesr  r=   tracked_fakes_id_to_sourcer  )r  r   r   r   r  r  reasoninner_context_namefake_esym_valr  r  r  
fake_innerinnerr  r  rI  s   ```              @r   r  r  q
  s    	QELL%(("4"4jAAa&(+!!! > !
v 1!RO fj111!'-<<=OP		&KKM!''NG	
 %
 6:.",,,9II##**G%9&%ACST )0002HE1 
$VT2
4()&$7.'(U\\B#3	
 :J		!!33A6  *0)9)9V^^%v}}F ,%{{}!'?BII33F;  --/?BII33F; "v'F'F'H&v.II##**FF,<= II00A7>>vFr   c                   R    e Zd ZdZd
dZedddefd       Zed        Zed	        Z	y)SourcelessBuildera  
    Like builder, but stateless and does not require a source. Useful for simple type->VT objects, or objects
    that are being created/evaporated during inlining (ex: consider a locally made list of tensors we then iterate over
    .), such a list should not show up as an artifact from inputs, nor in reconstruction, nor in the graph. However,
    there may be reasons to represent it as a ListVariable internally.

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

    NOTE - This class is very new! It will have some rough edges, but it was created to stem the bleeding of giant
    if/else type->VariableTracker trees that were cropping up all over dynamo.
    r  Nc                     t        d      )NzUse SourcelessBuilder.create())r  r   s    r   r   zSourcelessBuilder.__init__
  s    =>>r   r   r   c                     t        |      }t        j                  j                  |      }|r	 || |      S t	        |t
              r|S t	        |t        j                        rt        |      S t        j                  |      rt        j                  |      S t        |      rLt        j                  |      7t        |      rd| j                   _         t        j                  |      |      S t%        |      r t        j&                  |      |      S t	        |t(        j*                        rt-        |      S t	        |t         t.        j0                  f      rt3        |      S t	        |t4        j6                        rt9        |      S t	        |t:        j<                  j>                  j@                        rtC        |      S t	        |t:        jD                  jF                  jH                  t:        jD                  jF                  jJ                  f      rt        |      S tM        jN                  |      rtM        |      S tQ        jR                  |      rtQ        |      S t	        |tT        jV                        rtY        |      S t	        |t:        jZ                  j\                  j^                  j`                        rt        j                  tc        |            S te        d|jf                   d|jh                          y )NTz&Unexpected type in sourceless builder .)5r,  r  _type_handlersr  r   rg   r{  _HAS_DEFAULT_FACTORY_CLASSr   ri   r  rs  r  r+   r  rG   r   r  rS   r   r  r  rj   abcABCMetar   r  r)  r   r   r  graph_moduleGraphModuler   rT  r  r&  LeafSpecry   r
  rw   r  rN  rO  r   r  	variableslazyLazySymNodeFormatStringr  r.   r   r   )r   r%  
value_typefast_handlers       r   rs  zSourcelessBuilder.create
  s9   %[
(77;;JGE**e_-L{EEF,U33((/#**511e_!<!<U!C!O"5)>B		;5;..u5e<<#E*,;%%e,U33tyy)&&ckk23+E22u667(//uxx44@@A077EKK''00%++2E2E2N2NO
 -U33++E2$U++..u5%e,,rzz*'..u}}66;;SST#**3u:664Z5J5J4K1ZMdMdLef	
r   c                 \    t        j                  |       sJ t        j                  |       S )NrT  )ri   r  rs  rT  s    r   wrap_constant_literalz'SourcelessBuilder.wrap_constant_literal  s'    **5111&&U33r   c                     t         j                  i } t        D ]  }d | |<   
 fd| t        <   fd| t        <   fd| t
        <   fd| t        <   fd| t        j                  <   | t           | t        j                  <   | t           | t        <   | t
           | t        <   d | t        j                  <   d | t        j                   <   d	 | t        j"                  j$                  j&                  <   d
 | t        j"                  j$                  j(                  <   d | t        j"                  j$                  j*                  <   dd}t,        j.                  D ]  }|| |<   	 | S )Nc                     t        |      S r   )ri   r   r%  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    ,<U,C r   c           	      b    t        |D cg c]  } | |       c}t                     S c c}w Nr`  )rv   re   r   r%  r  rs  s      r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s'    +$)*qVB]*,.+
 *   ,c                     t        |j                         D ci c]  \  }} | |       | |       c}}t        |      t                     S c c}}w r  )rq   r  r,  re   )r   r%  r  r  rs  s       r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  sE    +<6;kkmDdaVB]F2qM)DK&.,
 Ds   A
c           	      b    t        |D cg c]  } | |       c}t                     S c c}w r  )r   re   r  s      r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>$  s'    <$)*qVB]*,.,
 *r  c           	      N    t        |D cg c]  } | |       c}      S c c}w r   )r   r  s      r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>'  s#    M$)*qVB]*-
 *   "c           	      N    t        |D cg c]  } | |       c}      S c c}w r   )r   r  s      r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>*  s#    $)*qVB]*2
 *r  c                     t               S r   )r   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>0  s
    4G4I r   c                     t        |      S r   )r   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>1  s    7KE7R r   c                 ,    t        |t                     S r  r   re   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>5      7
 r   c                 ,    t        |t                     S r  r  r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>:  r  r   c                 ,    t        |t                     S r  r  r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>?  r  r   c                     |S r   r   r  s     r   passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthroughC  s    Lr   )r   r   )r  rs  rN   r  r  rD  rC  r   rG  rE  r  r"   r#   r!  r"  r  r$  distributionsconstraints_Real	_Interval
Constraintrh   all_subclasses)handlersr   r  r`  rs  s       @r   make_type_handlersz$SourcelessBuilder.make_type_handlers  sO   "))& 	DACHQK	D




 
 -5TN(()#+D> #+D> "I%R!!"
 	++11	

 	++55	

 	++66	
	 '55 	(C'HSM	(r   r  )
r   r   r   r  r   r  rg   rs  r  r  r   r   r   r  r  
  sX    
? )
* )
o )
 )
V 4 4 1 1r   r  )NN)F(  r  rE  r  r{  r  r  r  	itertoolsr  r  r$  r!  rN  r  r  r   rQ  typingr   r   r   r   r   r   r	   r
   r   r   r   r   r   torch._guardsr   r   !torch._higher_order_ops.torchbindr   
torch._opsr   torch._streambaser   r   torch._subclasses.fake_tensorr   r   r   torch._subclasses.meta_utilsr   r   torch._utils_internalr   %torch.fx.experimental._backward_stater   rf  r   r   r   r   r    r!   torch.fx.immutable_collectionsr"   r#   torch.utils._python_dispatchr$   torch.utils._sympy.value_rangesr%   torch.utils.weakr&   r  r(   r)   r*   r+   rF  r,   excr-   r.   r7  r/   r0   r1   r  r2   r   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rT  rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   r\  re   rf   rg   rh   constantri   rj   ctx_managerrk   rl   rm   rn   ro   rp   dictsrq   rr   rs   rt   ru   rv   r  rw   rx   ry   rz   r{   	functionsr|   r}   r~   r   r   r   higher_order_opsr   iterr   r  r   listsr   r   r   r   r   r   r   r   r   miscr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	nn_moduler   r   r   	optimizerr   script_objectr   r7  r   r  r   r   r   r   r   r   r   torch_functionr   r   r   user_definedr   r   r   r   r   r   r   numpyr\  ModuleNotFoundErrortorch._dynamo.symbolic_convertr   	getLoggerr   r  _logginggetArtifactLoggerr{  DimListr   r   	dataclassr   r   r  r  varsr  r  r  r   r  r  r  rw  r  rg  r  ry  r   r  r  r  r  r   r   r   <module>r     s=               	 
         5 < * 5 R R A 1 ?  J F 7 * A A ? 9 A A &     ,       6 N M 4     ? # %
 
 
     0 
 ) 4 $  N 
  
 D g!NN44' 
 "	 	 99 99 99x<H <(       &/ /Y--// & IcN  +.% s3x /y yx3 & 26~ >By
|   $ .3uut	 IMav&a37aHs sl $5#G#G#I   [S  	Bs   N& &N10N1