
    i                       U d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlmZmZ ddlmZ ddlmZmZmZmZmZmZmZ ddlZddl Z ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z& dd	l'm(Z(m)Z)m*Z*m+Z+ dd
l,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZAmBZB ddlCmDZD ddlEmFZF ddlGmHZH ddlImJZJmKZK ddlLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZU ddlVmWZWmXZX ddlYmZZZ ddl[m\Z\ ddl]m^Z^m_Z_ ddl`maZa ddlbmcZc ddldmeZemfZfmgZgmhZhmiZi ddljmkZk ddllmmZmmnZnmoZo dd lpmqZqmrZrmsZs dd!ltmuZumvZvmwZwmxZxmyZy dd"lzm{Z{ dd#l|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ dd$lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d%d&lmZmZmZmZmZmZ d%d'lmZ d%d(lmZmZ d%d)lmZmZmZmZmZ d%d*lmZmZmZmZmZmZmZmZ d%d+lmZmZmZmZmZ d%d,lmZmZmZmZmZmZmZmZmZmZmZmZmZ d%d-lmZmZ d%d.lmZ d%d/lmZmZ d%d0lmZmZmZmZmZmZmZmZmZ d%d1lmZmZm Z mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d%d2lmZmZmZ d%d3lmZ d%d4lmZmZ d%d5lmZ d%d6l m!Z!m"Z"m#Z# d%d7l$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d%d8l m+Z+m,Z,m-Z-m.Z. d%d9l/m0Z0m1Z1m2Z2 d%d:l3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA 	 ddlBZCerdd<lFmGZG dd=lHmIZImJZJ  e
j                  eL      ZMe j                  j                  eLd>      ZPdd?lmQZQ  eQd@      ZR eQdA      ZSeTZUdBeVdCeWfdDZX G dE dF      ZYej                   G dG dH             Z[ G dI dJe[      Z\ e]dK  e^e	      j                         D              Z`e]ea   eEdL<    eb       Zcebea   eEdM<   e j                  j                  j                  Zge j                  j                  j                  Zi G dN dO      ZjdPedCefdQZkdRedSe=dz  dCefdTZl	 	 ddUdVdWedXedz  dYemdz  dZedCefd[ZndUdVdWedXedCdfd\Zo	 	 dd]emeR   dUdVdWedXedz  dYemdz  dZedCeRfd^Zp	 dd]emeR   dUdVdWe j                  j                  d_e j                  dYemdz  dZedCeRfd`Zt	 	 dd]emeR   dUdVdWe j                  j                  dXedz  dYemdz  dZedCeRfdaZudXedUdVdWe j                  j                  dZevewef   dYemdz  d]emeR   dCefdbZxdReSdCemeS   dz  fdcZyd]edUdVdXedYemdz  dCevewef   f
ddZzd]emeR   dUdVdWe j                  j                  dXedYemdz  dZevewef   dCeRfdeZ{dCeOfdfZ|da}ebew   dz  eEdg<   da~eadz  eEdh<   dCebew   fdiZdjewdCeWfdkZdUdVdlewdme j                  dCewfdnZdaebew   dz  eEdo<   daeadz  eEdp<   dCebew   fdqZdjewdCeWfdrZ	 ddmedUdVdsedteWdueWdCeSfdvZddwdmedUdVdsedz  dxeWdyedz  dCefdzZddwdmedUdVdsedz  dxeWdyedz  dCefd{Z G d| d}      Zej                         e_         G d~ d      Zy# eD$ r dZCeeEd;<   Y w xY w)aq  
This module contains classes and utilities for building variable trackers in Dynamo.
Variable trackers are used to convert Python values into symbolic representations
that can be traced and transformed during graph capture.

The key classes are:

- VariableBuilder: Handles source-tracked objects that need guards and proper
  reconstruction in the output graph. Used for inputs, module attributes, etc.

- SourcelessBuilder: Handles ephemeral objects created during tracing that don't
  need source tracking or guards. Used for temporary lists, intermediate values, etc.

Variable trackers enable Dynamo to track the flow of values through the program,
maintain guards for dynamic properties, and reconstruct values in the output graph.
The builders in this module handle converting Python values into appropriate
VariableTracker instances based on their type and usage context.
    N)CallableMutableMapping)
ModuleType)Any
NamedTupleNoReturnOptionaloverloadTYPE_CHECKINGUnion)SymInt)enable_python_dispatcher)get_external_object_by_indexregister_user_object)get_metrics_contextis_int_specialization_caseis_torch_symset_feature_use)TracingContext)
flat_apply)call_torchbind)is_opaque_reference_typeis_opaque_typeis_opaque_value_typeshould_hoist)HigherOrderOperator
OpOverloadOpOverloadPacket)
FakeTensorFakeTensorModeis_fakemaybe_get_fake_mode)is_sparse_any	safe_grad)justknobs_check)BackwardState)normalize_source_name)_DynamicScalar
DynamicInt)	_constrain_range_for_size_nested_int_aware_sort
DimDynamicRelaxedUnspecConstraintStatefulSymbolicContextSubclassSymbolicContextSymbolicContextSymIntSymbolicContextTrackedFake)immutable_dictimmutable_list)ExpandedWeight)
OrderedSet)is_traceable_wrapper_subclass"is_traceable_wrapper_subclass_type)ValueRanges)TensorWeakRef   )configgraph_break_hintsmutation_guardreplay_recordtrace_rules) get_registered_device_interfaces)InternalTorchDynamoErrorraise_observed_exceptionunimplemented)GuardBuilderinstall_guardmake_dupe_guard)auto_dynamic
auto_unsetFrameStateSizeEntryInferStrideprocess_automatic_dynamic)SideEffects)AttrProxySource
AttrSourceCallMethodItemSourceChainedSourceConstDictKeySourceConvertIntSourceDictGetItemSourceDictSubclassGetItemSourceDynamicScalarSourceFloatTensorSourceGetItemSource
GradSourceis_constant_sourceis_from_closure_sourceis_from_global_sourceis_from_nonlocal_sourceis_from_optimizer_source&is_from_unspecialized_nn_module_sourceListGetItemSourceLocalSourceNonSerializableSetGetItemSourceNumpyTensorSourceOptimizerSourceRandomValueSourceSkipGuardSourceSourceSubclassAttrListSourceTupleIteratorGetItemSource"UnspecializedBuiltinNNModuleSourceUnspecializedNNModuleSource) _extract_tensor_dictbuild_checkpoint_variablebuild_invoke_subgraph_variableclone_inputcommon_constant_types	dict_keysget_fake_valueget_items_from_dictget_locals_to_stealget_static_address_typeis_frozen_dataclassis_functionis_function_or_wrapperis_invoke_subgraphis_lru_cache_wrapped_functionis_namedtupleis_parameter_freezing	is_typingis_utils_checkpointis_wrapper_or_member_descriptoristypenamedtuple_fieldsodict_valuesproxy_args_kwargsrange_iteratorset_example_valuetensor_always_has_static_shapetuple_iteratortuple_iterator_getitemtuple_iterator_len unwrap_with_attr_name_if_wrapperwrap_fake_exception   )AttributeMutationNewtypestrValueMutationExistingValueMutationNewVariableTrackerVariableTrackerMeta)BuiltinVariable)ConstantVariableEnumVariable)AutocastModeVariableDynamoConfigPatchVariableErrorOnGraphBreakVariableNullContextVariablePreserveVersionContextVariable)ConstDictVariableDefaultDictVariableDictKeySetVariableFrozensetVariableMappingProxyVariableOrderedSetClassVariableOrderedSetVariableSetVariable)DeviceMeshVariablePlacementClassVariablePlacementVariableProcessGroupVariableWorldMetaClassVariable)BuiltinMethodVariableCollectionsNamedTupleFunction!CollectiveFunctionRewriteVariable'CreateTMADescriptorExperimentalVariable!CreateTMADescriptorStableVariableFunctoolsPartialVariableFunctoolsWrapsVariableSysFunctionVariableTritonKernelVariableTritonSetAllocatorSkipVariableUserFunctionVariableUserMethodVariableWrapperUserFunctionVariable)"LocalMapWrappedHigherOrderVariable TorchHigherOrderOperatorVariable)ItertoolsVariable)LazyConstantVariableLazyVariableTracker)	BaseListVariableListIteratorVariableListVariableNamedTupleVariableRangeVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradEngineVariableAutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableConstantLikeVariableDebuggingVariableDelayGraphBreakVariableGetAttrVariableGetSetDescriptorVariableIgnoredFunctionVariableLambdaVariableLoggingLoggerVariableMethodWrapperVariableNumpyDTypeVariableNumpyVariableObjectVariablePythonModuleVariableRandomClassVariableRandomVariableSavedTensorBoxTorchVersionVariableTypingVariableWeakRefVariable)FSDPManagedNNModuleVariable$UnspecializedBuiltinNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)OpaqueObjectClassVariableTorchScriptObjectVariableSDPAParamsVariable)EventVariableStreamContextVariableStreamVariable)NumpyNdarrayVariable$supported_const_comparison_op_valuesSymNodeVariableTensorSubclassVariableTensorVariableUnspecializedPythonVariable)DispatchKeySetVariableFuncTorchInterpreterVariableTorchCtxManagerClassVariableTorchInGraphFunctionVariable)TensorWithTFOverrideVariable#torch_function_mode_stack_state_mgrTorchFunctionModeVariable)FrozenDataClassVariableInspectVariableIntWrapperVariableKeyedJaggedTensorVariableMutableMappingVariableSourcelessGraphModuleVariableUserDefinedClassVariableUserDefinedDictVariableUserDefinedEnumClassVariable!UserDefinedExceptionClassVariableUserDefinedListVariableUserDefinedObjectVariableUserDefinedSetVariableUserDefinedTupleVariablenp)	PyCodegen)InstructionTranslatorInstructionTranslatorBasecudagraph_static_inputs)TypeVarVTTypeAliasTtreturnc                     t         j                  j                  t         j                  j                  j                        5  t        | d      cd d d        S # 1 sw Y   y xY w)Ngrad)torch_logginghide_warnings	_internalsafe_grad_filterhasattr)r  s    p/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr  W  sC    		%	%enn&>&>&O&O	P "q&!" " "s   AA!c                       e Zd Zy)_missingN__name__
__module____qualname__     r  r  r  \  s    r  r  c                   Z   e Zd ZU edz  ed<   eed<   eed<   ej                  j                  j                  dz  ed<   dZeed<   dZej                  ej                  z  dz  ed<   d	ed
eddfdZedej                  ej                  z  ez  dz  fd       ZddZddZddZdedefdZy)GraphArgNsource_examplepass_arg_as_tensorfake_tensorT	is_tensorexample_strong_refnamevaluer	  c                 2    t         j                  | ||       y N)object__setattr__)selfr$  r%  s      r  r)  zGraphArg.__setattr__  s    
 	4u-r  c                 z    t        | j                  t              r| j                         }|J |S | j                  S r'  )
isinstancer  r:   )r*  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  r  Tensorr:   r!   r!  r*  s    r  __post_init__zGraphArg.__post_init__  s=    dmmU\\2)$--8DM4++,,, 3r  c                 (     || j                          y r'  r  r*  codegens     r  reconstructzGraphArg.reconstruct  s    r  c                      d | _         d | _        y r'  )r  r#  r1  s    r  erasezGraphArg.erase  s    "&r  otherc                     t        |t              sy| j                  |j                  d u S |j                  y| j                  j                  |j                  j                  k(  S )NF)r,  r  r  r$  )r*  r:  s     r  __eq__zGraphArg.__eq__  sT    %*;;<<4''||#;;##u||'8'888r  r	  Nr6  r  r	  N)r  r  r  rg   __annotations__r   boolr  _subclassesr!  r   r"  r#  r0  r   strr)  propertyr&   r.  r2  r7  r9  r(  r<  r  r  r  r  r  `  s    TM M" ""..99D@@ It >Bu||3d:A. .C .D . !4}DtK ! !-
'9F 9t 9r  r  c                   (     e Zd Zd fdZddZ xZS )BackwardStateGraphArgc                 >    t         |   d t               dd d       y )NF)r  r  r   r!  r"  )super__init__r&   )r*  	__class__s    r  rH  zBackwardStateGraphArg.__init__  s&    "_$ 	 	
r  c                    j                   j                  j                  sJ j                  fd       j	                  dd       j                          j                  j                   j                  j                         y )Nc                  D     j                  t        j                  d      S )Nr&   )load_import_fromr&   r  )r6  s   r  <lambda>z3BackwardStateGraphArg.reconstruct.<locals>.<lambda>  s    G,,]-E-EW r  r   F)txoutputbackward_state_varadd_push_nullcall_functiondup_topstorer5  s    `r  r7  z!BackwardStateGraphArg.reconstruct  se    zz  3333W	
 	a'gjj''::;r  r=  r>  )r  r  r  rH  r7  __classcell__rI  s   @r  rE  rE    s    
<r  rE  c              #      K   | ]8  \  }}|j                  d       s"t        j                  |      rt        |       : yw)_N)
startswithinspectisclassid).0r$  members      r  	<genexpr>r_    s7      /f??3GOOF$; vJ/s   >A ITERTOOLS_TYPE_IDSITERTOOLS_POLYFILLED_TYPE_IDSc            
           e Zd ZdZ	 d4dddededdf fdZd	edefd
Z	d	edefdZ
dedefdZdefdZdedef   deeef   dz  fdZedeeedef   f   fd       Zeej*                  dedeeedef   f   fd              Zd	ej0                  e   defdZd	ej8                  e   defdZd	ej@                  jB                  jD                  de#fdZ$d	ede%fdZ&d	edefdZ'eej*                  dee(ed egef   f   fd              Z)d	edefdZ*d	edefdZ+d	e,e-edf   e.e   e/e0f   defdZ1d	e2defdZ3d	e4defdZ5d	e6e7z  de8e9z  fd Z:d	ejv                  d!eddfd"Z<d	ejz                  j|                  defd#Z?d	edefd$Z@d	e(defd%ZAd	eBdefd&ZCeDd	e(d'ee(gef   defd(       ZEeDd	eBd'eeBgef   defd)       ZEeD	 d5d	e,e(eBeef   d'ddefd*       ZE	 d5d	e,e(eBeef   d'eFeegef      defd+ZEd	ejv                  ddfd,ZGd	ejv                  defd-ZHd	edefd.ZI	 	 d6d	e(d/eJdz  d0eKdz  defd1ZLd	eBdefd2ZMd	edefd3ZN xZOS )7VariableBuilderz3Wrap a python value in a VariableTracker() instancerN  r  r  allow_lazy_constantr	  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_getrG  rH  rN  r  r$  rd  )r*  rN  r  rd  rI  s       r  rH  zVariableBuilder.__init__  sf     ! 	
`	
! %%'3U5UU3KK	 $7 r  r%  c                 x   t        j                         }	 | j                  |      | j                  j                  j
                  xj                  t        j                         |z
  z  c_        S # | j                  j                  j
                  xj                  t        j                         |z
  z  c_        w xY wr'  )timetime_ns
_call_implrN  rO  bytecode_tracing_timingsvariable_builder_call_ns)r*  r%  _t0s      r  __call__zVariableBuilder.__call__  sy    lln	??5)GGNN33LL$LDGGNN33LL$Ls   A/ /A
B9c                 J   || j                   j                  j                  v r| j                   j                  j                  |   }t        | j                  |j                        }|r| j                  |       t        |t        j                  j                        r+t        |t              r|j                  | j                         |S | j                   j                  j                  j                  | j                        }|r| j                  st        |t              s|S | j!                  |      }|j                  | j                  |_        dt"        dt$        dt&        fd}| j)                  |      s	 |||      r]|| j                   j                  j                  vr;t+        |      s0| j                   j                  j                  j-                  ||      }d| j                  j.                  vr-|| j                   j                  j                  | j                  <   |S )Nr%  vtr	  c                 `    t        |       xs t        | t              xr t        |t              S r'  )r   r,  r(   r   )r%  rp  s     r  _is_deduplicable_sym_variablezAVariableBuilder._call_impl.<locals>._is_deduplicable_sym_variable  s,     U#Hz%'H2R12r  JVP_NESTING)rN  rO  side_effectsrG   r  install_guardsr,  r  nnModuler   set_nn_module_stack_sourcevariable_tracker_cachegetrd  r   _wrapr   r   r@  _can_lift_attrs_to_inputsr   track_object_existingr$  )r*  r%  side_effect_result	dup_guard	cached_vtrp  rr  s          r  rj  zVariableBuilder._call_impl  s   DGGNN///!%!<!<U!C'5G5N5NOI##I.%1j"$A7 #==dkkJ%%GGNN99==dkkJ	 ''z.0 ! ZZ99BI	2 	2/ 	2d 	2 ..r20;TWW^^8883E:,,BB5"MB  0 00ACDGGNN11$++>	r  rp  c                 N    t        |      t        t        t        t        t
        hv S r'  )typer   r   r   r   r   )r*  rp  s     r  r|  z)VariableBuilder._can_lift_attrs_to_inputs.  s'    Bx(% %
 
 	
r  c                     | j                   S r'  r4  r1  s    r  
get_sourcezVariableBuilder.get_source7  s    {{r  guards.c                     | j                         }	 |D cg c]  }|j                  |       }}t        |ddi i S c c}w # t        $ r Y y w xY w)Nskipr   )r  
make_guardNotImplementedErrorrF   )r*  r  r  guardtmps        r  ru  zVariableBuilder.install_guards:  s]    "	9?@6$$U+@C@ 	s##		 A" 		s   A =A A 	AAc                 @    | j                  t        j                        S r'  )_type_dispatch_implr<   trace_numpy)clss    r  _type_dispatchzVariableBuilder._type_dispatchC  s    &&v'9'9::r  r  c                    t         j                  t         j                  j                  t         j                  j
                  t         j                  j                  j                  f| j                  ft        t        t        t        j                  t         j                  f| j                  ft         | j"                  ft$        | j&                  ft(        t*        f| j,                  ft        t.              | j0                  ft2        j4                  | j6                  ft8        j:                  | j<                  ft         j>                  j@                  jB                  | jD                  ft         jF                  jH                  | jJ                  ftL        jN                  | jP                  fg}|r1tR        r+|jU                  tR        jV                  | jX                  f       i }|D ]*  \  }}t[        |t              r|n|fD ]  }||vsJ |||<    , |S r'  ).r  r0  rv  	ParameterrA  r   functional_tensorFunctionalTensorwrap_tensortuplelistr   collectionsdequeSizewrap_listliker   wrap_tuple_iteratorr   wrap_range_iteratorslicerangewrap_slice_rangerp   wrap_literalrePatternwrap_regex_patternweakrefReferenceTypewrap_weakrefutilshooksRemovableHandlewrap_removable_handlejitScriptFunctionwrap_jit_functiontypesMappingProxyTypewrap_mapping_proxyr   appendndarraywrap_numpy_ndarrayr,  )r  r  entriesresulttsfnr  s          r  r  z#VariableBuilder._type_dispatch_implG  s    LLHH&&%%00%%77HH	  lK,=,=uzzJ!! S445S445U^S112()3+;+;<ZZ//0""C$4$45[[..0I0IJYY%%s'<'<=##S%;%;<-
2 2NNBJJ(>(>?@  	FB%b%0Rre &q		
 r  c                 V    | j                  t        j                         t        |      S r'  )ru  rE   ID_MATCHr   r*  r%  s     r  r  z"VariableBuilder.wrap_regex_patternq  s!    L112#E**r  c                     | j                  t        j                         t        j                  | j
                  || j                        S Nr4  )ru  rE   
TYPE_MATCHr   buildrN  r  r  s     r  r  zVariableBuilder.wrap_weakrefv  s3    L334$$TWWeDKKHHr  c                 "    t        dddg        y )Nz3Attempted to represent unregistered RemovableHandle zDynamo attempted to build a representation of a torch.utils.hooks.RemovableHandle, which is not supported. This happens because the RemovableHandle was created in another frame.gb_typecontextexplanationhints)rD   r  s     r  r  z%VariableBuilder.wrap_removable_handlez  s     	Im	
r  c                 p    | j                  t        j                         t        |d| j                        S )N_torchdynamo_inliner4  )ru  rE   r  r   r  r  s     r  r  z!VariableBuilder.wrap_jit_function  s/    L334*(
 	
r  c           
      t     j                  t        j                          j                  t        j                         t	        d |D              }|sEt        dd|j                         D cg c]  }t        j                  |      r| c} ddg       dt        dt        d	t        t        t        f   f fd
t        fd|j                         D              }t        |d       }t        | j                         } j"                  j$                  j&                  j)                  ||      S c c}w )Nc              3   F   K   | ]  }t        j                  |        y wr'  r   
is_literalr]  ks     r  r_  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>  s     F1(33A6F   !znon-const keys in mappingproxynon-const keys: z1Dynamo expects mappingproxy keys to be constants.zFEnsure your mappingproxy keys are constants (e.g. int, float, strings)r  r  vr	  c                     t        j                  |       }| }t        j                         |      }t	        j                  ||      }||fS r'  )r   createrX   r  r   )r  r  key
source_keysource_value	res_valuer*  s         r  build_key_valuez;VariableBuilder.wrap_mapping_proxy.<locals>.build_key_value  sG    "))!,CJ():JGL+221lCI	>!r  c              3   6   K   | ]  \  }} ||        y wr'  r  )r]  r  r  r  s      r  r_  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>  s     Etq!_Q*Es   r4  )ru  rE   r  MAPPING_KEYS_CHECKallrD   keysr   r  r   r  r   dictitemsr   r   r  rN  rO  rt  track_mutable)r*  r%  	all_constr  r  dict_vtr  r  s   `      @r  r  z"VariableBuilder.wrap_mapping_proxy  s   L334 	L;;<FFF	8*uzz|+j!K[KfKfghKiA+j*klO\		"s 	"s 	"u_o5U/V 	" Eu{{}EE $E$7%gdkkBww~~**88GG- ,ks   .D5	D5c                     ddl m } |d ft        j                  d ft        j                  d fg}i }|D ]9  \  }}t        |t        t        f      r|n|fD ]  }||vsJ ||t        |      <    ; |S )Nr;   )comptimec                     t               S r'  )r   r  s     r  rM  z.VariableBuilder._id_dispatch.<locals>.<lambda>  s
    +;+= r  c                 t    t        t        fd| j                  i| j                  t        j
                        S )Nr  )r   _dataclasses_fields_lambdar  ru  rE   CLOSURE_MATCHr  s     r  rM  z.VariableBuilder._id_dispatch.<locals>.<lambda>  s5    N.%;;% )),*D*DE% r  c                     t               S r'  )r   r  s     r  rM  z.VariableBuilder._id_dispatch.<locals>.<lambda>  s
    4H4J r  )	r  dataclassesfieldsr  __version__r,  r  r  r\  )r  r  r  r  r  r  r  s          r  _id_dispatchzVariableBuilder._id_dispatch  s    
 	( =>""  JK
  	#FB%b5$-8Rre #& "r!u#	#
 r  c                 ^n   BC ddl m}m}m} ddlm}m}  |       rddlm} ddl	m
} n G d d      } G d	 d
      }dld}	dld}
 G d d      }dld} |       rddlm}	m}
  |       rddlm}  |       rdd l}t#        |d      r|j$                  } j'                         j)                  t+                    }|	 |       S  j-                         j)                  t/                    }|	 |       S t1        t2        j4                        rt+              t2        j6                  j8                  j:                  t2        j6                  j8                  j<                  t>        fvrft+              t@        jB                  vrKt+              jD                  t2        j4                  jD                  u stG              r jI                        S tK              r jM                  tN        jP                         tS        t+                    D cg c]7  }tU        jV                  tY        |      t[         j\                  |            9 }}t_        | j\                  ta                     }tc        |t+               j\                  |      } jd                  jf                  jh                  jk                  |      S tm        tn        tp        jr                  tp        jt                  f      r jM                  tN        jv                         ty        d D              BBs9 jd                  jf                  jz                  j}                   j\                         dt~        dt~        dt~        dt        t        t        f   fB fdCto        Cfdt        t                    D              }tm        tp        jr                        r]t[         j\                  d      }t        |t+               t         jd                  |      j                         j\                        }n!t        |t+               j\                        } jd                  jf                  jh                  j                  |      S t1        t2        j6                  j                        r j                        S t        j                        r j                        S t1        t2        j                  j                        rIt         j\                        } jd                  jf                  jh                  jk                  |       |S tm        t        t        f      rt        d  D              r t        d!d"d#d$gt        j                  %        jM                  tN        jv                          jM                  tN        jP                         t        }tm        t              rst[         j\                  d&      }t        |j                  tN        j                                jd                  jf                  jz                  j}                  |       t        }t              }t        |      D cg c]0  \  }}tU        jV                  |t         j\                  |            2 }}} || j\                        } jd                  jf                  jh                  jk                  |      S tm        t              ruty        d' D              rcD cg c]"  }t        jW                   jd                  |      $ }} jM                  tN        j                         t        | j\                        S t1        t        j                  t2        j                  t2        j                  j                  j                  f      r6 jM                  tN        j                         t         j\                  (      S t        j                        r6 jM                  tN        j                         t         j\                        S t              rlt        fd)t2        j                  j@                  j                  D              r6 jM                  tN        j                         t         j\                        S t1        t        j                        r6 jM                  tN        jv                         t         j\                        S t              rt         j\                        S t              rt         j\                        S t        j                        r t        j                   j\                        S t1        t        j                        rt[         j                         d*      } t         jd                  |      j                        }g }t[         j                         d+      }t        j                        D ]<  \  }} |j                   t         jd                  t        ||            |              > i }!t[         j                         d,      }"j                  j                         D ]g  \  }#}t        j                  |#      s#t        d-d.|# d/g t        j                  %        t         jd                  t        |"|#            |      |!|#<   i t         j                         j                  tN        jv                        |"j                  tN        j                        |j                  tN        jP                               tY        d0d       }$t        |||!|$1      S t              r7 jM                  tN        j                         t         j\                        S t        Ct1        t        j                        r' j                  t        j                              S t        j                        rWt        sJ tm        t        j                         r`t#        j$                  j&                        rt        t[         j\                  d2      j                  tN        j(                               nt#        j*                        r! jM                  tN        j,                         nt#        j$                        r! jM                  tN        j(                         nJt              r  jM                  tN        j                         n jM                  tN        jv                         t/         j\                        S t        j0                        r7 jM                  tN        j                         t3         j\                        S t        j4                        rt1        t        j6                        r^ jM                  tN        jv                         t[         j\                  d3      }%t        |%j                  tN        j                               n jM                  tN        j                         t9         j\                        S t;        j<                        rM jM                  tN        j(                         t;        jV                   jd                   j\                        S tm        t2        j>                  j@                  jB                        r8 jM                  tN        j,                         tE         j\                        S t1        t2        j>                  j@                  jF                        r4d }&	 jH                  }&g }' j\                  j                  tN        jv                        g}(t1        |&t              rt[         j\                  d4      })|(j                  |)j                  tN        jP                               t        |&      D ]<  \  }}|'j                   t         jd                  t        |)|            |             > t        |(   jd                  jf                  jh                  jk                  tM         j\                  tO        |'      5            S t1        t        j                         rtm        tY        d6d       t2        j>                  j@                  jB                        rtY        d7d8      d9k(  rtY        jP                  d9d       k(  rzt        t[         j                         d2      j                  tN        j(                               tS        tE        jP                  t[         j\                  d6:            d9      S t1        t2        j                  jT                        r7 jM                  tN        j                         tW         j\                        S t2        j                  jX                  jZ                  j\                  u r/ jM                  tN        j(                         t_         fd;      S t1        |      rta        jb                        S t1        |      rte        jf                        S t              r|t        jh                        et        jj                        rd< jd                  jf                  _        t        jh                        jo                   j\                        S t        r.t1        t        jp                        r js                        S t1        tt              rot2        jv                  jx                  u rt        d=d8d>g %        jM                  tN        jv                         t{        j|                   j\                        S t1        t2        j~                  j                        r} jM                  tN        j                         t[         j\                  d?      }* t         jd                  |*      j                        }+t        jV                   jd                  |+      S t1        t2        j                        rǉ jM                  tN        jv                         t         j\                        }, jd                  jf                  j                  d@t        |,fi       }-t        |-j                         t        |- j\                  |,A      } jd                  jf                  jh                  jk                  |      S t1        t2        j                  j                        rK jM                  tN        jv                         t        jV                   jd                   j\                        S t1        t2        j                  j                  j                        r+ jM                  tN        j                         t              S t1        t2        j                        r jM                  tN        jv                         t         j\                        }, jd                  jf                  j                  d@t        |,fi       }.t        |.j                         t        |.|, j\                        S tm        t        j                        rOt#        j                  dBd       6 jM                  tN        jv                         t         j\                        S t        j                        rg jM                  tN        jv                         t         j\                        } jd                  jf                  jh                  jk                  |      S t1        t2        j                  j                        rR jM                  tN        j                         t         j\                         _.        t         j\                        S t1        t2        j                        r, jM                  tN        j                         t              S t        j                        rt         j\                        S t        j                        r7 jM                  tN        j                         t         j\                        S t        j                        r7 jM                  tN        j                         t         j\                        S t        j                        r7 jM                  tN        j                         t         j\                        S t        j                        r7 jM                  tN        j                         t         j\                        S t        u r* jM                  tN        j                         t               S t/              t        v rJt/              t        vr8 jM                  tN        j,                         t         j\                        S t1        t              rNt1        t              }/t         j\                  |/      }0t/               jd                  jf                  j                  j                  v r9 jd                  jf                  j                  j                  t/                 }1n jd                  jf                  j                  j                  j                  |0t        j                  C      }2 jd                  jf                  j                  j                  |2j                  |0D      }1 jd                  jf                  j                  j                  t        j                  dEdF j                        t+        |1      |1|0      }3t        |0|1dGd dG|1H      |3j                  j                  dI<   |1j                  j                  }4t1        |4t        j                        s
J |4 dJ        jd                  jf                  j                   j                  t        |1|0d              t        jV                   jd                  |3|1      S t              rdt1        t2        j                        r j\                  nt         j\                        }0d }5j                  j                         re jd                  jf                  j                  j                  t        j                  j                        |0t        j                  K      }5nkt1        t2        j                        r1 jd                  jf                  j                  j                         }5nt        dLd8dMg t        j                  %       |5J  jd                  jf                  j                  j                  t        j                  dEdF j                        t+        |5      |5|0      }3t        |0|5dGd dG|5H      |3j                  j                  dI<   |5j                  j                  }4t1        |4t        j                        s
J |4 dJ        jd                  jf                  j                   j                  t        |5|0d              t1        t2        j                        r|5n|5dNk(  }6t        |3|6      S t1        ||f      r9 jM                  tN        j                         t        d d  j\                        S |	u rt        dNO      S |
u rt        dO      S |j                  u rt               S |u rt!              S t1        t2        j"                  j$                  j&                        rg jM                  tN        j                         t)        j*                  j,                  j.                  j0                  g j\                  P      S t3        j4                        rt#        j*                        r! jM                  tN        j,                         n7t#        j$                        r  jM                  tN        j(                         t3         j\                        S t#        j                  dQdG      r8 jM                  tN        jv                         t7        dR j\                        S t9              r8 jM                  tN        jv                         t7        dS j\                        S t:        j<                  u s)t:        j>                  dTk\  r,t:        j@                  u rtC         j\                        S tE              rQt#        j                  dUdG      r8 jM                  tN        jv                         t7        dU j\                        S t        jF                  u r7 jM                  tN        j                         tI         j\                        S tp        jJ                  u r7 jM                  tN        j                         tM         j\                        S t1        t        jN                        rNtQ        jR                        r7 jM                  tN        j                         tQ         j\                        S tU              rxtV        jX                  tV        jZ                  fv rR jM                  tN        j                         tS        t]        tV         j\                        j^                        S tE              r_ta              \  }7|7t[         j\                  |7       _.        t        jb                        jo                   j\                        S td        jf                  u r6 jM                  tN        j                         ti         j\                        S tm        td        jf                        rtk        jl                        ri jM                  tN        jv                         tk         j\                        } jd                  jf                  jh                  j                  |       |S t1        t        jn                  tp        jr                  f      rj jM                  tN        jt                         tw         j\                        } jd                  jf                  jh                  jk                  |       |S t1        t        j                         rt1        jP                  t2        j6                  j                  t2        jx                  jz                  j|                  f      ry t         jd                  t[         j\                  d6            jP                        }8|8rt1        |8t              sJ dV       t        j&                  |8 j\                        S t1        t        j                        rt              S t1        t        j                        rt              S t        t+              t*              r=t        t              r+ jM                  tN        j                         t              S t        t+              t*              rt2        jx                  j                  j                  t2        j6                  j                  t2        j6                  j                  fv r3t        jb                        jo                   j\                        S t2        j>                  j                  u rA jM                  tN        j,                         t        j                   jd                        S t        t2        j4                        r\t2        j4                  urJjD                  t2        j4                  jD                  u r$t              st         j\                        S t         j\                        s  jM                  tN        j,                         t              rt         j\                        S t1        t*              r3t        t        j                        rt         j\                        S t         j\                        S t        j4                  t+                    rddWl.mV}9mW}: t2        j                  j                  j                        r jd                  jf                  j                  j                  t        j                  dEdF j                        t+               j\                        };t         j\                  dGd dG      |;j                  j                  dI<   t        jV                  |; j\                        S t        t+                    r" jM                  tN        j                         n t        t+                    r@ jM                  tN        jv                          jM                  tN        j                         nt#        dX      s j                        S tU        j                   t         jd                   |: j\                              j                         j                                      tU        j                   t         jd                   |9 j\                              j                                      t2        j                  j                  j                   jd                  jf                  j                        }<t        t+                    rt        t+                    s};n jd                  jf                  j                  j                  t        j                  dEdF j                        t+              |< j\                        };t         j\                  dGd dG|<      |;j                  j                  dI<   t        jV                  |;|< j\                        S t1        tn        tp        jt                  f      rt+              j                  tn        j                  u rh jM                  tN        jv                          jM                  tN        jP                          jd                  jf                  jz                  j}                   j\                         dt~        dt~        dt~        dt        t        t        f   f fdYCto        CfdZt        t                    D              }t        |t1        tp        jt                        rtp        jt                  ntn        ta                j\                  [      }=d<|=_h        t        |= j\                  \      } jd                  jf                  jh                  jk                  |      S t1        t              r jM                  tN        jv                          jM                  tN        jP                         t        t        j                              D cg c]G  }tU        jV                  t        j                  |      t         j                         |            I }}t_        | j\                  ta                     }t        | j\                  ]      } jd                  jf                  jh                  jk                  |      S t1        t              r jM                  tN        jv                          jM                  tN        jP                         t        t        j                              D cg c]G  }tU        jV                  t        j                  |      t         j                         |            I }}t        | j\                  ta                     }>t        |> j\                  ^      } jd                  jf                  jh                  jk                  |      S t1        t        t        f      ra jM                  tN        jv                          jM                  tN        jP                         t        tn        j                              }t        t        j                  |            D cg c]F  }tU        jV                  t        j                  ||      t         j                         |            H }}t1        t              rt        }?nt1        t              sJ t        }? |?| j\                  ta                     }@t        |@ j\                  _      } jd                  jf                  jh                  jk                  |      S t        t+              t              rg jM                  tN        jv                         t         j\                        } jd                  jf                  jh                  jk                  |      S t              r| jM                  tN        jv                         t        jV                   jd                   j\                        } jd                  jf                  jh                  jk                  |      S t1        t              rty        d` D              rD cg c]"  }t        jW                   jd                  |      $ }}t         j                         j                  tN        jP                         j                         j                  tN        j                               t        | j\                        S t        dadbD #cg c]  }#t        j                  |#      r|# c}# dcddg%       y t        j                        rddelzm{}A j                  %j                  j*                  Aj                  k(  r j                  j                        S j                  j*                  Aj                  k(  rt         j                  df j\                  j                  t        j                          j                  j                  t        j                  t        t        dGg      h      i      S j                  j*                  Aj                  k(  rmt         j                  df j\                  j                  t        j                          j                  j                  t        j                  j      S tK        dkj                         tm        t
              r7 jM                  tN        jv                         t         j\                        S  j                        S c c}w c c}}w c c}w # tJ        $ r Y 'w xY wc c}w c c}w c c}w c c}w c c}#w )mNr   )
has_triton has_triton_experimental_host_tma%has_triton_tensor_descriptor_host_tmar;   )DynamoConfigPatchProxy(ErrorOnGraphBreakDecoratorContextManager)	Autotuner)JITFunctionc                       e Zd Zy)*VariableBuilder._wrap.<locals>.JITFunctionNr  r  r  r  r  r        r  r  c                       e Zd Zy)(VariableBuilder._wrap.<locals>.AutotunerNr  r  r  r  r  r    r  r  r  r	  c                       y r'  r  r  r  r  create_1d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_1d_tma_descriptor      r  c                       y r'  r  r  r  r  create_2d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_2d_tma_descriptor  r  r  c                       e Zd Zedd       Zy)/VariableBuilder._wrap.<locals>.TensorDescriptorNc                       y r'  r  r  r  r  from_tensorz;VariableBuilder._wrap.<locals>.TensorDescriptor.from_tensor  s    r  r=  )r  r  r  staticmethodr  r  r  r  TensorDescriptorr     s     r  r  c                       y r'  r  r  r  r  set_allocatorz,VariableBuilder._wrap.<locals>.set_allocator  r  r  )r  r  )r  r  r4  )r  mutation_type)	tuple_clsr  tuple_vtc              3   F   K   | ]  }t        j                  |        y wr'  r  r  s     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>9  s     Jq,77:Jr  ir  r  c                     	j                         }rt        j                  |      }|}n"t        ||       }t	        j                  ||      }t        ||      }t	        j                  ||      }||fS r'  )r  r   r  rR   r   rT   )
r  r  r  baser  r  r  r  r  r*  s
           r  r  z.VariableBuilder._wrap.<locals>.build_key_valueT  so     (*11!4C!"J!3D!!<J-44Q
CC0zB/66q,G	I~%r  c              3   >   K   | ]  \  }\  }} |||        y wr'  r  r]  r  r  r  r  s       r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>g  *      Av1  1a(   default_factory)r  r  )user_clsr  c              3   P   K   | ]  }t        |t        j                           y wr'  )r,  r  r0  r]  xs     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>  s     >1:a.>s   $&z$Attempted to wrap a set with tensorsz+Python set containing torch.Tensor elementszDynamo cannot trace sets of tensors. To get a stable ordering, Dynamo needs to convert the set into a list and the order might not be stable if the set contains tensors.z,Use a dictionary where the keys are tensors.r  _dictc              3      K   | ]p  }t        |      t        j                  u xr |j                  d k(  xs> |t        j
                  j                  j                  v xs t        |t        t        f       r yw)r  N)r  r  BuiltinMethodTyper  r  r  _pytreeBUILTIN_TYPESr,  r   r   r  s     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>  sr      .
  aE333O8O > U[[((666> 1z+;<=>.
s   A6A8r%  r  c              3   &   K   | ]  }|u  
 y wr'  r  )r]  r  r%  s     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>  s      %
ERK%
s   funcargskeywordsz,functools.partial() with non-literal keywordznon-literal keyword: z3functools.partial() expects literal/string keywords
cache_hash)original_cache_hash__func__dtypesaved_tensors)r  r%  __self__r  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_callbacksrR  rN  rO  rt  get_ca_final_callbacks_varr1  s   r  rM  z'VariableBuilder._wrap.<locals>.<lambda>s  sZ    ,MM00KK``-GGWW^^00KKMO r  Tz9Attempted to wrap torch._higher_order_ops.invoke_subgraphzJDirectly using invoke_subgraph is not supported. Use nested_compile_regionstreamrR  )r  user_object_indexenter_resultr  dynamic_dim)hintr  [^a-zA-Z0-9]+rX  F)r"  r#  grapharg is not a basic Symbol.)r2  z!Attempted to wrap unbacked SymIntz+Unbacked SymInt input is not supported yet.r   )rank)target_valuesr  __script_if_tracing_wrapper__original_fn__wrapped__)      r  z"Failed to produce a valid self obj)FlattenScriptObjectSourceScriptObjectQualifiedNameSource__obj_flatten__c                     j                         }t        ||       }t        j                  ||      }t	        ||      }t        j                  ||      }||fS r'  )r  rR   r   r  rU   )	r  r  r  r  r  r  r  r  r*  s	           r  r  z.VariableBuilder._wrap.<locals>.build_key_value  sW     (/a8
)00J?8zJ/66q,G	I~%r  c              3   >   K   | ]  \  }\  }} |||        y wr'  r  r  s       r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>  r  r  )r  r  r  )r  r  )r	  r  )list_vtr  )set_vtr  c              3   F   K   | ]  }t        j                  |        y wr'  r  r  s     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>  s     Aa#..q1Ar  znon-const keys in dict_keysr  z.Dynamo expects dict_keys keys to be constants.zCEnsure your dict_keys keys are constants (e.g. int, float, strings))_DimHintTypez%s marked %s via IntWrapper	warn_only)
constraint)dynamismr  rJ  zUndefined dynamism r=  (  torch.utils._tritonr  r  r  
decoratorsr  r  triton.runtime.autotunerr  triton.runtime.jitr  $triton.tools.experimental_descriptorr  r  triton.tools.tensor_descriptorr  tritonr  r  r  rz  r  r  r\  r,  r  r0  rv  	parameterUninitializedBufferUninitializedParameterr5   r<   nontraceable_tensor_subclasses__torch_dispatch__r7   r  r{   ru  rE   SEQUENCE_LENGTHr   r   r  getattrrO   r  r   r   r   rN  rO  rt  r}  r   r  r  defaultdictOrderedDictr  r  guard_on_key_orderaddr   r  r   	enumeraters   r   rc  r  r   r  rw  wrap_moduler   r  r  	overridesTorchFunctionModer   setr6   anyrD   r=   SUPPORTABLEr   rF   r  DICT_KEYS_MATCHr   r  rb   	frozensetSourcelessBuilderEQUALS_MATCHr   enumEnumDispatchKey_C
_functorchTransformTyper  r   r   is_reorderable_logging_functionBUILTIN_MATCHcallabler)  ignore_logging_functionsr   loggingLoggerr   r~   rm   ry   rn   r   should_wrap_in_hopr  	functoolspartialr  r  r  r  rX   r   r  
USER_ERRORrT   r   r}   r   r   genericr  asarrayr@   is_numpyr  
MethodTyperZ  
isfunctionr#  r  r[  CLASS_MATCHr   is_numpy_dtyper   is_numpy_type_infoiinfor   r   can_rewriteautogradfunctionFunctionMetar   FunctionCtxr%  RuntimeErrorr   r   r&  r   _ImperativeEnginer   r*  r+  _exec_final_callbacks_stubr   r   changesr   error_on_graph_breaklookup_callableis_callable_allowed!has_user_defined_allowed_in_graphcreate_with_sourcenumberwrap_unspecialized_primitiver   _higher_order_opsinvoke_subgraphr   makecudaStreamContextr.  r   Streamr   create_proxyr   r   noder   _SDPAParamsr   pyfunctorchFuncTorchInterpreterr   Eventr   
contextlibnullcontextgetattr_staticr   r   is_matching_objectoptim	Optimizerrd   r   DispatchKeySetDISPATCH_KEY_SET_MATCHr   r   is_group_member_typer   is_process_groupr   is_device_meshr   is_placement_typer   is_placementr   r`  ra  r   r(   r)   rV   root_tracerdynamic_scalar_nodes	shape_envcreate_unspecified_symbolrealr,   DYNAMICcreate_symintnodecreate_graph_inputr  subr$  r  metaexprsympySymboltracked_fakesr2   r   r   r   rS   has_hint$create_unspecified_symint_and_symbolintr3  SymBoolcreate_unbacked_symintr   r   r  r   r   ampautocast_modeautocastr   device
fast_dtype_enabled_cache_enabledr   is_matching_clsr   rz   sysexc_infoversion_info	exceptionr   rx   wrapsr   
namedtupler   r  r   is_supported_builtin_methodrw   floatfromhexhexr   r  r   lookuprandomRandomr   r   is_supported_random_objr   r?   DummyModuleMODULE_MATCHr   r  r  TreeSpecr   GetSetDescriptorTyper   MethodWrapperTyper   
issubclassBaseExceptionr   r  BackwardHookr  Buffer _unsafe_preserve_version_counterr   constructorr8   r   r[   r   r   r   r   r   r>  r?  _libraryfake_class_registrytracing_with_realr   CONSTANT_MATCHr   OPAQUE_OBJ_GUARD_FN_MATCHwrap_user_definedrealize_all_typequalified_namer@  maybe_to_fake_obj	fake_moder   __new__should_reconstruct_allr   r  __len____getitem__r   r`   r   r   fromkeysr   r   r   rv   r   rq   r   r   torch.export.dynamic_shapesrF  rJ  STATICwrap_symintvallogdebugr1   r-   AUTOr(  r   )Dr*  r%  r  r  r  r  r  r  r  r  r  r  r  
triton_modtype_dispatchid_dispatchr$  rO  r	  r  factory_sourcevarset_var_clsinternal_dict_sourceLr  r  r  func_srcfunc_objr  args_sourceargr   keywords_sourcer  r"  	dt_sourceactual_saved_tensorsr%  r  saved_tensors_sourcestream_source
stream_varindexstream_proxyevent_proxyis_intr  r  symsym_node_proxysym_expr
new_syminttracing_symint	attr_nameself_objr>  r?  proxyfake_script_objr  rC  
set_vt_clsrD  rF  r  r  sD   ``                                                                @@r  r{  zVariableBuilder._wrap  s(   	
 	
	

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

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


+ -33{{  ut[%<%<=>U##t||3  7 78 < <= GGNN--11$++>
&
&
&#&
&78
&   !*+>u+E!F F
 ( "%)@)@A  ++35{{
G .2G*,UGDKKXF77>>..DDUFSSu% 7 78 < <= u}}U34
 	 $**%%eQ/():A>F  %{{35H
 .F 77>>..DDUFSSt$ 7 78 < <= t||E23
 	 $**$$UA.,T__->BF  #{{35G
 -UGDKKXF77>>..DDUFSSY/0 7 78 < <=T]]5)*A t||A/
 	 $**$$Q*:4??;LaPF  %%(
!%333.
t{{:O:QF ,E&UF77>>..DDUFSSU^4 7 78+E$++FF77>>..DDUFSS ' 7 78,33DGGU4;;WF77>>..DDUFSSy)A5AA HMM!*11$''1=MMOO%001M1MNOO%001J1JK *%DD9.5/gaHXHcHcdeHf/g.hi P]	  2259@~~%)<)<@S@S)S''		22$$(<(<<		1KK$$&&
 ''II'//1#:U#K (   $$(9(99		1KK$$&&
 ''		J<N<N'OO"%88H#IJJE6" 7 78!%<<))%00K -J2 Jt   h.&B N 0hs_   <C[5)5C[:'C\ C\ }3AC\BAC\G)AC\ O<'C\%R*C\*SC\*\
C\\C\c                 z   | j                  t        j                         t        j                  |      r!t        |t        | j                              }nt        || j                        }t        j                  t        |            s|S | j                  j                  j                  j                  ||      S r  )ru  rE   r  r   r  rf   r  r   rM   "cls_supports_mutation_side_effectsr  rN  rO  rt  r}  )r*  r%  r  s      r  r  z!VariableBuilder.wrap_user_defined*  s    L334--e4
 %U?4;;3OPF.uT[[IF==d5kJMww~~**@@OOr  c                 .   t         j                  rPt        |      t        j                  u r5| j                  t        j                         t        j                  |      S | j                  t        j                         t        |t              rt        d |D              ro| j                  j                  j!                         rK| j                  t        j                         t#        |D cg c]  }t        j                  |       c}      S t%        |      D cg c]4  \  }}t'        j                  |t)        | j+                         |            6 }}}| j,                  j.                  j0                  j3                  d      }t5        | j                  t6              r| j                  j8                  t;        |      v r| j                  }t5        |t<              sJ | j,                  j.                  j>                  jA                  tC        jD                  dd| jF                        t        |      ||      }d|jH                  jJ                  d<   tM        tN        | j,                  ||d |	      }g }	t%        |jP                        D ]  \  }}
t)        ||d
      }|
| j,                  j.                  jR                  |<   tU        ||         |
jV                  jH                  jJ                  d<   tY        jZ                  t        j\                  t_        ||               }|	ja                  |jc                  |              te        |	ddi tg        ||d
d d
      }||jH                  jJ                  d<   |D ]  }|ji                            tk        jl                  |      || j                        }t        |t<        tn        jp                  f      r0| j,                  j.                  jr                  ju                  ||      S |S c c}w c c}}w )Nr%  c              3   F   K   | ]  }t        j                  |        y wr'  r  )r]  items     r  r_  z0VariableBuilder.wrap_listlike.<locals>.<genexpr>I  s     H$$//5Hr  r4  r*  r4  rX  T	steal_arg)
target_clsrN  r  example_valuesubclass_typer  Fr  r  index_is_slicetensor_dictr  r   )r   r!  r"  r5  );r<   specialize_intr  r  r  ru  rE   r  r   r  rX  r   r  r  r  guard_sourceis_unspecialized_nn_moduler   r^  r   rX   r  rN  rO  local_scoperz  r,  ra   
local_namert   r  r  r  r  r  r$  r  r  wrap_fx_proxy_clsr   r  input_source_to_varrl   r  rv  rw  TENSOR_MATCHr:   r  r  rF   r  realizer   cls_for_instancer  r  rt  r  )r*  r%  r  r  rO  maybe_gmr  tensor_list_proxylist_variabler  tensor_variablesource_ir  r5  rp  r  s                   r  r  zVariableBuilder.wrap_listlike9  s`      T%[EJJ%> ; ;<#**77 	L889 5% H%HH((CCE ; ;< E!RD"2"9"9$"?!RSS %U+

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

 :!2259&U%$ 1 12377>>..<<UFKKy "S
s   .P9Pc                    | j                  t        j                         t        t	        |            D cg c]@  } t        | j                  t        | j                         |            t        ||            B }}t        || j                        }| j                  j                  j                  j                  ||      S c c}w r  )ru  rE   TUPLE_ITERATOR_LENr  r   rc  rN  ri   r  r   r   r  rO  rt  r  )r*  r%  r  rO  r  s        r  r  z#VariableBuilder.wrap_tuple_iterator  s    L;;<
 -e45	
  WODGG%?@QST%UV&ua0
 
 'vdkkBww~~**88GG
s   ACc                 B   | j                  t        j                         t        j                  |      D cg c]  }t        j                  |       }}t        || j                        }| j                  j                  j                  j                  ||      S c c}w r  )ru  rE   RANGE_ITERATOR_MATCHcopydeepcopyr   r  r   r  rN  rO  rt  r  )r*  r%  r  r  r  s        r  r  z#VariableBuilder.wrap_range_iterator  sw    L==> 6:]]55IJ!((+JJ%eDKK@ww~~**88GG Ks   Bc                 r   dD cg c]@  } t        | j                  t        | j                         |            t	        ||            B }}| j                  t        j                         t        |t              r"t        || j                  | j                        S t        || j                        S c c}w )N)startstopstepr4  )rc  rN  rO   r  rY  ru  rE   r  r,  r  r   r  r   )r*  r%  r  r  s       r  r  z VariableBuilder.wrap_slice_range  s    
 /	
  GODGGZ0A1%EFq!
 
 	L334eU# DD t{{;;
s   AB4r  c                 x   ddl m} t        j                  d| j                  j
                  t        |              |||       || j                  j                  j                  v rT| j                  j                  j                  |   }|j                  |j                  j                  j                  d   d<   y y )Nr;   )mark_static_addressz Marking static input %s, id: %s)r  r"  _dynamo_static_input_type)rM  r=  static_inputs_logr  r  r$  r\  rN  rO  rt  r?  r  r  r  )r*  r%  r  r=  r  s        r  mark_static_inputz!VariableBuilder.mark_static_input  s    4.0@0@"U)	
 	E/ DGGNN///''..--e4C // IINN./JK 0r  c                    ddl m} t        |j                        dk(  r7t	        dt        |      dt        |       dg t        j                  d       t        ||      rt        j                  |j                  d	d
      r<t        j                  |j                  dd       }t        | j                  d| d      S | j                  t        j                          t#        | j                  d      | _        | j%                  |j&                        S t)        |t*        j,                  j.                  t*        j,                  j0                  t*        j,                  j2                  f      r9t4        j6                  s)t	        dt9        |      ddgt        j:                         t=        |dd
      rt=        |dd
      st	        dddg        | j                  t        j                          t?        || jA                               }tC        jD                  tG        |            s|S | jH                  jJ                  jL                  jO                  ||      S tQ        jR                  || jH                  jT                        rut)        |t*        jV                  jX                  jZ                  j\                        r*|j_                         }ta        | j                        | _        t*        jb                  j4                  jd                  rtg               }ti        |jj                        rI|jj                  jl                  tn        u r-	 |jk                         D ]  \  }}| jq                  ||        	 ti        |jz                        rI|jz                  jl                  t|        u r-	 |j{                         D ]  \  }}	| jq                  |	|        	 |r-|| jH                  jJ                  j~                  | j                  <   |j                  j                  d      r|j                  j                  d      rt=        |j                  dd
      r| j                  }
t4        jd                  rE| jH                  jJ                  jT                  rt4        j                  rt        | j                        }
t        ||
      }t        |
j                  t        j                                n| j                  }
t4        jd                  rE| jH                  jJ                  jT                  rt4        j                  rt        | j                        }
t        ||
      }t        |
j                  t        j                                | jH                  jJ                  j                  || j                         tC        jD                  tG        |            s|S | jH                  jJ                  jL                  jO                  ||      S t        |j                  t*        j,                  j                  j                  j                        r:| j                  t        j                          t        || jA                               S | jH                  jJ                  j                  || j                  | jA                               S # tr        $ r?}tu        tG        |      | jH                  tw        |jx                               Y d }~d }~ww xY w# tr        $ r?}tu        tG        |      | jH                  tw        |jx                               Y d }~sd }~ww xY w)Nr;   )OptimizedModuler   zUninitialized nn.Modulez6Attempted to trace an uninitialized nn.Module of type .z?Ensure your nn.Module instance has called `super().__init__()`.r  _torchdynamo_disableF_torchdynamo_disable_msgzHOptimized `nn.Module` is wrapped with `torch.compiler.disable` (reason: ))r  msg	_orig_modz#Attempted to wrap RNN, GRU, or LSTMz*Dynamo does not support RNN, GRU, or LSTM.zgSet torch._dynamo.config.allow_rnn=True to enable experimental support for RNN, GRU, and LSTM in Dynamo_is_fsdp_managed_module_fsdp_use_orig_paramszFSDP with use_orig_params=Falser  z3Dynamo only supports FSDP with use_orig_params=Truer4  r>  )r  )ztorch.nn.modulesz	torch.ao.ztorch.nn.modules.container_dynamo_marked_static)Q
eval_framerC  len__dict__rD   r   r=   rx  r   rZ  r  forwardr   r  ru  rE   r  rO   r_  rI  r,  r  rv  RNNGRULSTMr<   	allow_rnnrB  rd  rY  r   r  rM   r  r  rN  rO  rt  r}  r>   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baserN   r)  inline_inbuilt_nn_modulesr|   rq  named_parametersr#  !og_module_named_parameters_fn_ptrrA  	TypeErrorrC   r  r  named_buffersog_module_named_buffers_fn_ptr
nn_modulesr$  r  rY  rI  install_free_tensorsrj   r   rF   r  rk   r    add_fqn_info_for_inlined_modulesr  paralleldistributedDistributedDataParallelregister_attr_or_module)r*  r%  rC  rH  r  freezingrX  peb
new_sources              r  r_  zVariableBuilder.wrap_module  sy   0u~~!#1TU\]bUcTddef&11U	 %)%%emm5KUS
 ,,MM#=t /;;bcfbgghi 
  7 78$T[[+>DK##EOO44 uuxx||UXX\\588==IJ$$=E
H}&22	 53U; 5"95A= U	"  7 780t?PQFAA$u+N77>>..DDUFSS00G
 %!6!6!C!C!N!NO(-dkk:}}##==02 U334..7789V$)$:$:$< FDAq 221H2EF U001++448VVV$)$7$7$9 FDAq 221H2EF
  <ADGGNN--dii8   ++,MN((334PQ*A5I![[
33--1L1L "DDKK!PJ=eJWj33L4K4KLM![[
33--1L1L "=T[[!IJ6uZPj33L4K4KLMGGNN;;E4;;OAA$u+N77>>..DDUFSSOOUXX..::RR
  7 780t?PQQ77>>99		( :  o % V0a$''QVVUUV % V0a$''QVVUUVs0   +Z3 "+[> 3	[;<4[66[;>	]4]]c                    t        |      t        u r>t        |t              sJ t        | j                  j
                        rKt        j                  d| j                  j
                         | j                  |t        j                        S t        | j                  j
                        rKt        j                  d| j                  j
                         | j                  |t        j                        S t        j                  s6t        || j                        rd }| j                  j                   j#                         s$| j                  j                   j%                         rd}t'        | j(                  | j                  j
                  t+        j,                  |      | j                  j                   j%                                | j/                  t1        j2                  t4        j6                  |             t9        j:                  || j                        S | j=                  || j>                        S | j=                  |      S t        |      t@        u rOt        |t@              sJ t        jB                  s| j=                  || jD                        S | j=                  |      S t        |      tF        tH        fv r)t        |tF        tH        f      sJ | j=                  |      S | j/                  t4        jJ                         t9        j:                  || j                        }t        |tL        tN        f      r0| j(                  jP                  jR                  jU                  ||      S |S )N&%s marked dynamic via source whitelistrK  '%s marked unbacked via source whitelista  torch.compile considers integer attributes of the nn.Module to be static. If you are observing recompilation, you might want to make this integer dynamic using torch._dynamo.config.allow_unspec_int_on_nn_module = True, or convert this integer into a tensor.r%  )recompile_hintr  )+r  r  r,  is_dynamic_sourcer  r$  r  r  r  r,   r  is_unbacked_sourceUNBACKEDr<   r#  r   r$  "is_unspecialized_builtin_nn_moduler%  rL   rN  rJ   make_scalarru  rv  rw  rE   rh  r   r  _wrap_lazy_constant_wrap_symint_for_lazyr  specialize_float_wrap_symfloat_for_lazyr@  rB  r  r  rb  rO  rt  r  )r*  r%  rr  r  s       r  r  zVariableBuilder.wrap_literal  s   ;#eS))) !1!12		BDKKDTDTU''
8J8J'KK!$++"2"23		CT[[EUEUV''
8K8K'LL(( .eT[[A%)N00SSU;;33NNP5 ' .((+77>37;;3K3K3f3f3h	 ''!))(55n
 ,22t{{SS//t7Q7QRR++E22%[E!eU+++**//t7S7STT++E22%[T3K'edC[111++E22 ; ;<%,,5MF%$-ww~~22@@OOMr  c                 $    | j                  |      S r'  )r  r  s     r  ry  z%VariableBuilder._wrap_symint_for_lazy  s    &&r  c                 $    | j                  |      S r'  )wrap_symfloatr  s     r  r{  z'VariableBuilder._wrap_symfloat_for_lazy  s    !!%((r  wrap_fnc                      y r'  r  r*  r%  r  s      r  rx  z#VariableBuilder._wrap_lazy_constant      
 r  c                      y r'  r  r  s      r  rx  z#VariableBuilder._wrap_lazy_constant  r  r  c                      y r'  r  r  s      r  rx  z#VariableBuilder._wrap_lazy_constant  r  r  c                     | j                   sJ| ||      S | j                  t        j                         t	        j
                  || j                        S t        j
                  || j                        S )zCWrap a primitive constant, deferring guard installation if allowed.r  r4  )rd  ru  rE   r  r   r  r  r   r  s      r  rx  z#VariableBuilder._wrap_lazy_constant  s_     ''"u~% ; ;<#**t{{KK#**5EEr  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"   rN  r  rB   r  s     r   assert_not_wrapped_by_this_graphz0VariableBuilder.assert_not_wrapped_by_this_graph  s;    5>1%8DGG<M<MM*<4  N>r  c           	         | j                         }|| j                  j                  j                  vsJ t	        |      d u}t
        j                  r_|s]t        |t        j                  j                        s|r7|j                  j                         r| j                  |t                      d}t
        j                  xr% t!        |      xs t#        |      xs t%        |      }|xrC t
        j                   xs0 t               xs$ t        j&                  j
                  j(                  }|s6|j                  j+                         s|r]|j                  j-                         sC| j/                  |       | j                  j                  j1                  || j2                  |      S t	        |      dk(  rb| j5                  t6        j8                         | j/                  |       | j                  j                  j1                  || j2                  |      S t;        |      rX| j/                  |       | j                  j                  j1                  |t=        j>                  dd| j2                        |      S || j                  j                  j@                  v }|r#| j                  j                  j@                  |   S i }tC        |      }|| j5                  t6        jD                         t	        |      dk(  r| j5                  t6        j8                         | j/                  |       t        |t        jF                        rS|jH                  rGt        |t        jJ                  jL                  jN                  jP                        stS        ddd	g 
       t        |t        jF                        rPtU        |      rE| j                  jV                  rt
        jX                  stS        dddg tZ        j\                  
       t_        |      rta        |      u|jb                  ta        |      jb                  k7  rSta        |      }	|	te        |	jb                        nd}
tS        dd|jb                   d|
 dg tZ        jf                  
       ti        || j                  d|      }| j                  j                  jj                  jm                  t=        j>                  dd| j2                        to        |      ||      }tq        | j                  ||       ts        d$| j                  ||||d|}|ju                         r-ti        |jv                  | j                  ty        |d      d       t6        jz                  }t        |t|              rt        |      rt6        j                  }t        j                  j                         xr. t        |t        j                  j                  j                        }|sA| j5                  t        j                  |t        |t              r|n
t        |                   t        |      r|r| j5                  t6        jD                         |j                         d   d   }|dk7  rt        d      |j                         d   }t        |      dk(  r$|d   |j                  k(  r|d   |j                  k(  st        d      t        ty        | j                  d      j                  t6        j                               t        ty        | j                  d      j                  t6        j                               no| j5                  t6        j                         | j5                  t6        jD                         t        t        |      j                  t6        j                               |j                         \  }}|D ]S  }t        ||      }ty        | j                  |      }t        j                   t        | j                  |      |             U || j                  j                  j@                  |<   d|j                  j                  vsJ t        |      |j                  j                  d<   |j                  j                  j                  d    }t        |      | j                  j                  urt        d!      t        ||d"|      }||j                  j                  d#<   |S )%Nr>  Tr4  guardedr4  rX  z&Attempted to wrap strided NestedTensorr  3torch.compile does not support strided NestedTensorr  zAttempted to wrap sparse Tensorz-torch.compile does not support sparse TensorsNonez.dtype mismatch between tensor and its gradientztensor dtype: z; grad dtype: zmInconsistent dtype between tensor and its gradient. This can happen in FSDP and crashes meta tensor creation.rN  r"  r  )rN  r  r  r  r  _base)rN  r  r"  r  r   _local_tensorz7Expecting Dtensor inner tensor name to be _local_tensorr   r;   z;Expecting Dtensor flattening ctx to be _spec, requires_grad_specrequires_gradr"  r  z(Wrapped Tensor must be this graph's fakeFr5  r  )br  rN  rO  rt  ru   r<   r\  r,  r  rv  r  r$  r%  rA  r|   rc  r\   r]   r_   r)  prepare_freezingis_specialized_nn_moduleis_fsdp_moduler  rh  r$  ru  rE   r  rZ   r  r  r)  infer_subclass_typer  r0  	is_nestednestedr  nested_tensorNestedTensorrD   r#   rV  capture_sparse_computer=   SPARSE_TENSORr  r$   r$  rB  rd  wrap_to_fake_tensor_and_recordr  r  r  cache_real_value_when_exportwrap_fx_proxy_is_viewr  rO   r*  rY   r^   NOT_NONE_MATCHrf  is_availabletensorDTensorrv  rw  rc   r:   r7   __tensor_flatten__r  rN  r  r  rF   r  r  DTENSOR_SPEC_MATCHrh  TENSOR_SUBCLASS_METADATA_MATCHrh   rY  r   r  rc  r  r  rl   r  r"   r  rB   r  )r*  r%  r  is_static_inputshould_install_free_tensormake_graph_attributeis_duplicate_tensoroptionsr  safe_grad_valgrad_strr  tensor_proxyr0  
guard_type
is_dtensorinner_tensor_nameflattening_ctxattrsrX  attrinner_valueinner_sourcefake_tensor_valuer5  s                            r  r  zVariableBuilder.wrap_tensor  s   " DGGNN777771%8D ,,#5%(("4"45 v22MMO ""50E0G"H"O &,%@%@ &
!&) >&v.>5f= 	#  /  
000 5$&5}}##44 	 &  99;?S''66811%877>>99tyy :   #5)Y6  5 5611%877>>99tyy :   f%11%877>>99'dii8 :   %(J(JJ77>>55f==+E2$ 7 78"5)Y6 5 56 	--e4 uell+uell&<&<&J&J&W&WX@Q	 uell+e$WW^^6+H+H
 9K8)778	 % % ,y/555%e,M3@3Ls=../RXHH(^H:NL6)556" 7dggf
 ww~~11DDFF#S$))4K	 E 
 	%TWWlEB' 
ww''
 
 >> +77!&'2	 "..
fj).Fv.N%44J&&335 
*5$$++33;

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


# )-%%%O  9 "%**bii8889 ' GJ j 	 	sB   H I:!I
/II
	I7I2,I:2I77I::JrJ  r  c                    t        |      t        u sJ | j                  | j                  j                  j
                  v r-| j                  j                  j
                  | j                     S | j                  j                  j                  }t        j                         j                  ra|j                         }t        |       | j                  j                  j                  j                  t        || j                  d              nt!        | j#                               sp|dt$        j&                  j(                  j*                  r@| j-                  t.        j0                         t3        j4                  || j                        S | j                  j                  }t7        | j                  |t9        j:                  |      | j                  j<                  j?                               }tA        | j                  j                        }| j                  }	tC        |	tD              r|	jG                         }	||}
nt(        jH                  r)|jJ                  tL        u rtO        dd       tQ               }
ntC        |	tR              r6|	jT                  *tW        |	jT                        j                  |ddi      d   st(        jX                  stZ        j\                  }
nS|jJ                  tL        u rtO        dd       | j-                  t.        j0                         t3        j4                  |      S |j_                  || j                  |
      }| j                  j                  j                  j                  t        || j                  |             n[t!        | j#                               sJ | j-                  t.        j0                         t3        j4                  || j                        S tC        | j#                         t`              rJ tc        | j#                         je                  t.        jf                               d	| j#                         i}| j                  j                  jh                  jk                  tm        jn                  d
d| j                        t        |      || j#                               }|jp                  jr                  }tC        |tt        jv                        s
J | d       || j                  j                  jh                  jx                  |<   t{        j4                  | j                  ||fi |}|| j                  j                  j
                  | j                  <   t!        | j#                               s6t}        | j#                         |dd d|      |jp                  j~                  d<   |S )Nr  rq  dynamo.automatic_dynamic_shapesTr   Fr  r1  r  r4  rX  r4  r6  r  r5  )@r  r  r$  rN  rO  unspec_variable_mapr  r   rz  #force_unspec_int_unbacked_size_liker  r*   r  r  r2   r  rZ   r  r  r)  r<   r#  ru  rE   r  r   r  rL   rJ   rw  r$  r%  r'   r,  rQ   r[  automatic_dynamic_shapesscalarrH   r   $get_automatic_dynamic_shapes_mark_asra   rJ  r  assume_static_by_defaultr,   r  r  re   rF   r  r  r  r  r  r  r  r  r  r  bound_symbolsr   r  r  )r*  r%  rJ  r  r  wrapped_valuer$  frame_state_entrynormalized_source_namebase_sourcer2  r  r  r  
unspec_vars                  r  r  zVariableBuilder.wrap_symintS
  sN    E{c!!!99:::77>>55dii@@GGNN,,	CC%<<>M%m4GGNN((//M4;;= $DOO$56EMM$8$8$G$G
 ##L$?$?@'..U4;;OO;;##D 9#//6+/;;+C+C+^+^+`	! &;4;;;K;K%L"++K+}5)224#&//%,,< A4HBD;4((4--.223IAu:V 44(00 %++|;#$EuM##L$?$?@'..U;;%JJ{{' K M GGNN((//M4;;@ &doo&7888 ; ;<#**t{{KKdoo/1BCCCdoo'22<3J3JKLT__./**==FF#S$))4??$	 > 
 !%%**(ELL1WhZ?V3WW1=B""00:$++DGGUMUWU
8B**4995!$//"34*2!#( #0+EJJOOJ' r  c           
      
   | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S t	        | j                  | j
                  j                   t        j                  |      | j
                  j                  j                               }t        j                  j                  j                  st        | j                               st!        j"                  |      sqt!        j$                  |      s\t        j&                  j                  j(                  j*                  s.t-        dd      s"t        j.                  rR|j0                  t2        ur@| j5                  t6        j8                         t;        j<                  || j
                        S t        j>                  |t        j@                        }t        jB                  jD                  jG                  |      r@| j5                  t6        j8                         t;        j<                  || j
                        S tI        | j                         tJ              rJ tM        | j                         jO                  t6        jP                               tS        | j                               }||d}tU        || j                  d|      }| j                  j                  jV                  jY                  t[        j\                  dd	| j                         t_        |      ||
      }ta        | j                  ||       tc        td        f| j                  ||d d|}tI        |td              sJ || j                  j                  j                  | j                   <   | j                  jf                  r=tI        | j                         th              stk        d| d| j                                d }	|jl                  jn                  jp                  d   }ts        |      sJ |}	|	jt                  | j                  jt                  u sJ d|	jt                   d       tw        | j                         |d|	d|      |jn                  jp                  d<   ty        | j                   | j                  j                  jz                  ddgt}        |gi              }
| j                  j                  j~                  j                  t        |
j                  | j
                  d              t               j                  ddd       |
S )Nrq  z.pytorch/compiler:unspecialize_float_killswitchFr  )r$  )r  	raw_valuer  r4  rX  r4  rN  r  r  r  =Dynamo attempts to add additional input during export: value=	, source=r  fake mode (^) from fake tensor metadata doesn't match mode({self.tx.fake_mode}) from InstructionTranslatorTr  r5  call_methodr  tensorify_float_attempt)	overwrite)Er$  rN  rO  r  rL   r  rJ   rw  r$  r%  r  r)  r<   rz  rZ   r  mathisnanisinf	_inductorrR  
cudagraphsr%   r  r  rH   ru  rE   r  r   r  r  float64rl  rm  is_gradtrackingtensorr,  re   rF   r  r  rW   r  r  r  r  r  r  r  r(  r   rV  ra   AssertionErrorr  r  r  r!   r  r  r  r  r   r  r  r2   sym_numr   rb  )r*  r%  r  r  r  r  r  r  r  r  r-  s              r  r~  zVariableBuilder.wrap_symfloat
  s$    99:::77>>55dii@@5GGKK++E2'+{{'?'?'Z'Z'\
 MM  11!$//"34zz% zz%  %%,,77OQVW//%,,L@  ; ;<#**t{{KK U%--@
 8844]C ; ;<#**t{{KK doo/1BCCCdoo'22<3J3JKL #4??#45#%8 7dggv
 **==FF#S$))4	 > 
 	%TWWe]C&'
ww'
 

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


# GG'DGGNN'' #J<4
 	$$++K		4;;PT,UV!!";TT!Rr  c                    | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S t	        j
                  |      }t        | j                         t              s6t        | j                         j                  t        j                               d| j                         i}|j                  d|i       t        || j                  d| j                               }| j                  j                  j                  j!                  t#        j$                  dd| j                         t'        |      || j                               }t)        | j                  ||       t+        t,        f| j                  ||d d|}|| j                  j                  j                  | j                   <   t/        | j                               s| j                  j0                  r=t        | j                         t2              st5        d	| d
| j                                d }|j7                         r|j9                         }n#|j:                  j<                  j>                  d   }tA        |      sJ |}|jB                  | j                  jB                  u sJ d|jB                   d       tE        | j                         |d|d|      |j<                  j>                  d<   |S )Nr  r  Fr  r4  rX  r4  r  r  r  r  r  r  Tr  r5  )#r$  rN  rO  r  r  r  r,  r  re   rF   r  rE   r  updater  r  r  r  r  r  r  r(  r   rZ   rV  ra   r  is_python_constantas_python_constantr  r  r  r!   r  r  )r*  r%  r  r  r  r  r  r  s           r  r  z,VariableBuilder.wrap_unspecialized_primitive]  s   99:::77>>55dii@@U+$//+->?$//+66|7N7NOPT__./U+,6dggt?P
 **==FF#S$))4??$	 > 
 	%TWWe]C&'
ww'
 

 9C**4995!$//"34ww~~j1BK&P$STaSbbklpl{l{l}k~  !%,,. * = = ? !+ 0 0 5 5 : :? K=))) -$..$''2C2CC /99: ;C CC
 +3!#'-#0+EJJOOJ' r  )Tr'  NN)Pr  r  r  __doc__rg   r@  rH  r(  r   rn  rj  r|  r  r   r   r  rB  ru  classmethodr  rv  cacher  r  r  r   r  r  r  r   r  r  r  r  r  r   r  r   r  r  r  r  r{  r  r   r  r  r   r   r  r   r  r   r  r  r  r   r   r  r0  rA  rv  rw  r_  r  ry  r  r{  r
   rx  r	   r  r  r  r,   r1   r  r~  r  rU  rV  s   @r  rc  rc    s   = %)	7#7 7 "	7
 
7&f  = =? =~
O 
 
F hsCx&8 T#s(^d=R  ;tFHS#X,>$>? ; ; __&d &tFHSRUXDV<V7W &  &P+

3 +<P +
I'"7"7"< I I
[[&&66
	

s 
/J 
 H  H  HD __	c8.4oEFF	G  6Z13 Z1? Z1x"Ps P Pp5c?DI|ZOPp	pd	H 	HO 	HH HO H<eem <8U <u|| D T $c c_ cJ?& ?_ ?B'3 '? ')U ) )  3%01 
	   5'?23 
	   S%s*+  
	  ?CFS%s*+F (C5/#9:;F 
	Fell t J J/ JXS& S& S&p '+04	ww t#w '-	w
 
wrO5 O_ Ob># >/ >r  rc  objc           	         d }t        | t              r| j                  }n"t        dd|  dt	        |        d|  dg        |J g }t        j                  |      D ]X  }d }| j                  r,t        | j                  d      }t        ||j                        }|j                  t        ||             Z t        |      S )	Nzdataclass fields failurezobj: z; variable type: z$Dataclass fields handling fails for z*. Expected it to be a user-defined object.r  __dataclass_fields__r4  )r,  r   r%  rD   r  r  r  r  rO   rT   r$  r  r   )r  r%  r  fieldr  base_srcs         r  r  r    s    E#01		.C5 1$s)=>seCmn		
 E##E* F::!#**.DEH&x<F.uVDEF r  r%  r  c                     t        | t        j                        rIt        | t              s9t        j                  |       rt        |       |u s| j                  st        |       } | S r'  )r,  r  r0  r   _is_functional_tensorr"   r  ro   )r%  r  s     r  _clone_inputr    sQ    %& uj) ++E2'.);  &ELr  rN  r  r  r  r  r  c                     | |||d|}|t        ddt        i|S t        ddt        i|}|j                  |        |S )Nr  r  r  )r(  r   r   install_global)rN  r  r  r  r  kwargsr  s          r  r  r    sd     &&	
 F  ENEfEE #U.JUfUb!r  c                     | j                   r_t        j                  j                         5  t	        || j
                        |j                  j                  |j                  <   d d d        y y # 1 sw Y   y xY wr'  )	rV  r  rl  DisableTorchFunctionSubclassr  r  tracerreal_value_cacher  )rN  r  r  s      r  r  r    sb     
yy XX224 	8Dr||9ELL))%**5	 		 	 	s   8A--A6r  c                    |t        | ||||fi |}n;t        |t        j                        rt	        | ||||fi |}nt        ||||||       }t        |t        j                  j                  j                  t        j                  j                  j                  f      r>|j                  j                  dk7  r%|j                  j                  j                  |       |S )Nplaceholder)_wrap_fx_proxyr,  r  r0  _wrap_fx_preexisting_tensorhandle_traced_outputr)  	variablesr   r   r  oprO  current_tracerrecord_tensor_or_symint_vt)r  rN  r  r  r  r  outs          r  r(  r(    s     )E=-
CJ
 
M5<<	0)E=-
CJ
 #2ug}j

 	''66''77	
 JJMM]*
		  ;;C@Jr  r  c                 z   ddl m} t        |t        j                        sJ dt        |              t        ||      sJ d|v r-|d   (|j                  j                  j                  |d          |j                  j                  dk(  r#d|j                  j                  v sBJ d| d       d|j                  j                  vsJ |j                  j                  d           t        j                  j                  j                         5  t        |      |j                   u rnt#        |||       |j$                  r^t        j&                  j)                         5  t+        ||j                         |j,                  j.                  |j                  <   d d d        d	| t0        t2        fv i}d
|v r|d
   J |d
   |d
<   t5        |fd|i|}|j6                  j
                  dk7  r%t        |      |j                   urt9        d|       d d d        t;        | |||||      S # 1 sw Y   xY w# 1 sw Y   %xY w)Nr;   r  z1_wrap_fx_preexisting_tensor expected tensor, got r  r   r  zplaceholder z* doesn't have 'example_value' in node.metar"  r  rN  r  zN`tensor` needs to be a `FakeTensor`wrapped by this instance of Dynamo. Found: )symbolic_convertr  r,  r  r0  r  rO  r  r  r  r  r  r)  r  +_disable_saved_tensors_hooks_during_tracingr"   r  r  rV  rl  r  r  r  r  r   r   r  r  rB   construct_tensor_variable)r  rN  r  r  r  r  r  r  s           r  r  r  B  s9    =fell+ 
;DL>J+ b34447wx0<
		 12 zz}}%%**//1 	
5'!KL	
1 ejjoo5 	
zz/0	
5
 
			H	H	J "v&",,6(UF;yy XX::< @LAELL11%**= Z"$@ABF w&78+<+HHH&x0F83FLrLVLF==''r||;*>>DXG ?"H %Bv}g 5 " "s&   AH18H%A7H1%H.	*H11H:c                    ddl m} t        ||      sJ d|v r-|d   (|j                  j                  j                  |d          d|j                  j                  vsJ |j                  j                  d           t        j                  j                  j                         5  t        |j                  |d      }d d d        t        ||||||       S # 1 sw Y   xY w)Nr;   r
  r  r  T)allow_non_graph_fake)r  r  r,  rO  r  r  r  r  r  r)  r  r  rr   r  )r  rN  r  r  r  r  r  s          r  r  r    s     =b34447wx0<
		 12%**//1Xejjooo6V5WX1 
			H	H	J R 'uzz2DQ	R  
 R Rs   %CCc                    dd l }dd l}dd l}t        | |j                        rt        |       rD|j                  rt        j                  s(t        dt        |       dg t        j                         t        |||| ||      }t        |t              sJ |j                  j                   j#                  ||t$               |S t'        |j(                  j*                  d      ra|j(                  j*                  j,                  dk(  r>t        |j(                  j*                  j.                  |j0                  j2                        s,|j(                  j*                  |j4                  j6                  u rFt9        |j(                  j*                        t        usJ t;        |j(                  j*                        S |j(                  j*                  |j0                  j<                  u s,|j(                  j*                  |j>                  j@                  u rtC        |       S tE        | |jF                        r@tI        d | D              r.| D cg c]  }tK        jL                  |       }	}tO        |	fi |S t        | tP        tR        f      rtU        |j(                  |        g }
tW        |       D ]  \  }}|%|
jY                  tK        jL                  d#i |       -|jZ                  j]                  d	t^        j`                  ||fi 
      }d|v r9t        | tR              sJ |d   }|jc                         }te        ||d      |d<   n|}|
jY                  tg        d$||||d|        t        | |jF                        rtO        |
|fi |S tE        | tP              rti        |
fi |S tE        | tR        tj        f      rtm        |
fi |S | jn                  jp                  dk(  s6t'        | d      s*J d| jn                  jp                   dt9        |               ts        |
| jn                  fi |S | "|j(                  j*                  |jt                  u rtK        jL                  d#i |S t        | |jv                  |jx                  |jz                  f      rT|j                  j|                  j                  | |       tU        |j(                  |        t        jL                  ||| fi |S t        | |j                        r|j(                  j*                  t        u s=|j(                  j*                  t               D cg c]  \  }}|j                   c}}v r[tU        |j(                  |        d }|j(                  j*                  t        u r|j(                  j                  d   }t        || |fi |S t        | |j                        r|j(                  j*                  t        u s=|j(                  j*                  t               D cg c]  \  }}|j                   c}}v r[d }|j(                  j*                  t        u r|j(                  j                  d   }tU        |j(                  |        t        || |fi |S t        j                  |j(                  j*                        r*t        |j(                  j*                  |j                        s=|j(                  j*                  t               D cg c]  \  }}|j                   c}}v r$tU        |j(                  |        t        || d fi |S |j(                  j*                  dk(  r;|j(                  j                  dk(  r"tU        |j(                  |        tK        | fi |S | lt        | |j                        rV|j(                  j*                  dk(  r=|j(                  j                  dk(  r$tU        |j(                  |        t        || d fi |S t        | t              r`|j(                  j*                  |j                  t        t^        j`                  |j                  j                  |j                  t^        j                  |j                  j                  j                  |j                  j                  j                  |j                  j                  j                  t        |j                  dt              t        |j                  dt              |j                  fv s2|j(                  j                  dk(  rE|j(                  j*                  dk(  r,tU        |j(                  |        tK        jL                  | fi |S t        | |j                  j>                  j                        r%ddl_m`} tU        |j(                  |         ||fi |S t        | t              r]|j(                  j*                  |j0                  j                  |j0                  j                  j                  |j                  j>                  j                  |j                  j>                  j                  |j                  j>                  j                  |j0                  j                  |j0                  j                  |j0                  j                  |j0                  j                  |j0                  j                  dgtS        t        j                               z   v r,tU        |j(                  |        tK        jL                  | fi |S t        | t        t        t        f      r|j(                  j*                  t        u sN|j(                  j*                  t        u s2|j(                  j                  dk(  rE|j(                  j*                  dk(  r,tU        |j(                  |        tK        jL                  | fi |S t        | t              s|j(                  j*                  dv r,tU        |j(                  |        tK        jL                  | fi |S t        t9        |             rft        t9        |             r| }|j                  j                  j                  |j                  j                  |       }t        jL                  ||      S t        ddt        |        d |j(                  j                   d!|j(                  j*                   d"g        y c c}w c c}}w c c}}w c c}}w )%Nr   z4Attempted to wrap sparse Tensor with VariableTrackerzBtorch.compile does not support sparse Tensors with VariableTrackerr  )mutation_type_clsr  	set_statec              3   <   K   | ]  }t        |t                y wr'  )r,  r  r  s     r  r_  z'handle_traced_output.<locals>.<genexpr>  s      3 
1c3s   rR  )kindtargetr  r  r  Fr   )r  rN  r  r  ztorch.return_types_fieldsz	expected z. == torch.return_types or named tuple but got queryr  record_eventget_rankget_world_size
bit_lengthr   r   
is_integerr  )r  	__round__ztorch.* op returned non-Tensorzexample_value type: z; op: z
; target: zUtorch.* ops that return a non-Tensor cannot be traced into the Dynamo FX graph outputr'  r  )ytorch._functorch.vmaptorch._subclasses.fake_tensortorch._utilsr,  r0  r#   rV  r<   r  rD   rB  r=   r  r  r   rO  rt  
_track_objr   r  r  r  r  r&  rl  	Generatorr  set_rng_stater  r   _DisableFuncTorchr  _is_in_bad_forkr   r   r  r  r   r  r   r  r  r   r^  r  r  r  operatorgetitemr6  rX   r(  r   r4   r   rI  r  r   manual_seedr   SymFloatr  r  track_produced_symintsr   r  r   rA   current_streamr  r   r  r   rZ  r[  r  r  r  sym_intrY  _utils_element_sizeseedmodrm  vmap_validate_and_get_batch_sizepredispatch_vmap_increment_nesting_vmap_decrement_nestingrf  r  _constrain_as_sizebackends
SDPAParamssdpar   r@   _are_functorch_transforms_activeis_batchedtensoris_flash_attention_availablecan_use_flash_attentioncan_use_efficient_attention_get_cudnn_sdp_enabled_get_flash_sdp_enabled_get_mem_efficient_sdp_enabled_get_math_sdp_enabled_get_overrideable_sdp_enabledr   r  r  r   r   r   r   r  r  r  r  r   r   )r  rN  r  r  r  r  r  r  r  sizesunpackedr  r  proxy_ir  	options_irX  device_interfacer  r   r  s                        r  r  r    s
    !(-. '		!>!>NM*`8)778	 (E=-
 #///
		))3*> 	* 	
 


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

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

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

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

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

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

^+::
*JJMM]*uzz/@/@F/J%**m4&&}@@@	M5	)UZZ->->BV-V%**m4&&}@@@	]+	,] 34!E..<<NNII
 )//
 	

 	4*7=+A*B&Wabgblblbsbsatuo		
s DLs   s&9s+s1.s7c                 &   t        |       t        j                  t        j                  j                  t        j
                  j                  j                  t        j
                  j                  j                  fv st        |       ry t        |       S r'  )r  r  r0  rv  r  rA  r!  r   r  r  r7   r  s    r  r  r    sj    E{%%00++<<	 
 
'u	-$ E{r  c                    | j                  |      }t        |t        j                  j                  j
                        r|j                  |j                  u r|r|}nt        |t        j                  j                        rt        j                  j                  }nOt        |t        j                  j                        rt        j                  j                  }nt        j                  }||d<   |S )N
class_type)
specializer,  r  rA  r!  r   r  rv  r  r  r0  )r  rN  r  r  specialized_propstensor_types         r  get_specialized_propsrO    s     #--m< 	=%"3"3"?"?"J"JK##r||3'Kuxx'9'9:((,,Kuxx7((//K,,K*5,'r  c                 $   t        ||j                        }t        |j                  |       |j                  j                  dk7  r&|j
                  j                  j                  ||       |j                  t        | |||              | |fi |S )z
    Actually construct a tensor variable after all the pre-processing from
    wrapping a pre-existing or newly created tensor value.
    r   )
r  r  r   r  r  rO  r  r*  r  rO  )r  rN  r  r  r  r  s         r  r  r    sv     !=Mejj-0
 zz}}%
		  77uMNN(RVWe'w''r  c                      t         j                  dk(  rt        j                  S t         j                  dk(  rt        j                  S t        dt         j                         )Ndynamicunbackedz+invalid automatic_dynamic_shapes_mark_as = )r<    automatic_dynamic_shapes_mark_asr,   r  ru  r  r  r  r  r  r    sT    ..);!!!		0	0J	>"""9&:a:a9bc
 	
r  _DYNAMIC_SOURCES_DYNAMIC_SOURCES_CONFIG_HASHc                  F   t        t        j                  j                  j                        } t
        t        | k(  rt
        S t        j                  j                  j                  j                  dd      j                  d      D ch c]  }|r| c}a| at
        S c c}w N r  ,)	hashr  compilerr<   dynamic_sourcesrU  rV  replacesplitcurrent_hashss     r  get_dynamic_sourcesrc    s     --==>L #(D(T
 &&66>>sBGMMcR 	

 $0    Bsource_namec                     t               }|D ]6  }|| k(  st        j                  ||       st        j	                  d| |        y y)NzA%s was marked dynamic due to dynamic source allowlist pattern: %sTF)rc  r  matchr  r  )re  r]  patterns      r  rs  rs    sM    )+O" k!RXXg{%CIIS
  r  r$  rk  c           
         |j                         }t        |      s|j                         }|j                         }d g|z  }t	        |      D cg c]
  }||   | f }}|j                  t               i }	|D ]>  \  }
}| }|	j                  |
|
      ||<   |	j                  |
||   z  t        |             @ ng }t        | |t        j                  t        |      t        |                  S c c}w )N)r  )sizer#   stridedimr  sortr+   rz  
setdefaultrK   rL   rJ   make_tensorr  )rN  r$  rk  ex_size	ex_striderl  rk  r  pending
candidatesi_strideneg_is               r  record_automatic_dynamicrv  ,  s     ffhGHHJ	eeg#/4Sz:!IaL1"%::/0
& 	IOHeA"x:F1I!!(WQZ"7QH	I $
''gfF  ;s   C1_UNBACKED_SOURCES_UNBACKED_SOURCES_CONFIG_HASHc                  F   t        t        j                  j                  j                        } t
        t        | k(  rt
        S t        j                  j                  j                  j                  dd      j                  d      D ch c]  }|r| c}a| at
        S c c}w rX  )	r[  r  r\  r<   unbacked_sourcesrw  rx  r^  r_  r`  s     r  get_unbacked_sourcesr{  P  s     -->>?L $)F,)V  
 &&77??RHNNsS 	

 %1!rd  c                     t               }|D ]6  }|| k(  st        j                  ||       st        j	                  d| |        y y)NzC%s was marked unbacked due to unbacked source allowlist pattern: %sTF)r{  r  rg  r  r  )re  rz  rh  s      r  rt  rt  d  sN    +-# k!RXXg{%CIIU
  r  r  static_shapes
outer_onlyc                   01 | j                   rGt        | t        j                  j                  j
                  j                        st        dddg        |j                  }|j                  j                  j                  j                  | d       }|r|j                  ni }d }| j                         r$t        |d      }	t!        | j"                  ||	|      }t%        |       r|st!        | |||d      }
t        |
t&              sJ i }t)        |       j+                  |       \  }}|D ]+  }t-        | |      }t        ||      }t!        ||||      ||<   - t/        |
j0                  |
j2                  |
j4                  |
j6                  ||
j8                  |
j                  |      S |rt;        |      svt'        t<        j>                  g| jA                         z  t<        jB                  g| jA                         z  d g| jA                         z  d g| jA                         z  |||	      S d
dl"m#1 tI        1fd| jK                         D              rt'        | jK                         D cg c]2  }t        |tL              rt<        jN                  nt<        j>                  4 c}t<        jB                  g| jA                         z  d g| jA                         z  d g| jA                         z  |||	      S tQ        |||       }tS        |       }i 0dtT        dddtV        dd f0fd}d
dl,m-} |j                  j\                  `|j                  j\                  D ]G  }t        ||      r|j^                  |k(  s  ||j@                  |j`                  |j                         I g }g }g }g }g }tc        | jA                               D ]]  }|t-        | dte                     v }|t-        | dte                     v }|t-        | dte                     v }|t-        | dte                     v } |t-        | dte                     v }!|jg                  t-        | di       j                  |g              ti        |j                        }"|}	t        |	tj              r|	jm                         }	|sFt        |	tn              r|	jp                  zts        |	jp                        j                  |"|di      |   rPtt        jw                  d|       tx        g| jA                         z  }#tz        |#|<   |t}        j~                  |#      z  }t        j                  xr |j                  |      }$t        j                  xr |j                  |      }%t;        |      rtt        jw                  d|       d}$t        |      rtt        jw                  d|       d}$|$xs |%}&0j                  |      }|d }'d }(|rt        j                  sd }(t        | d      r| j                  D )cg c]  })|)j@                  |k(  s|) c})j                         }*|*j                  |*j                  t        d       }'nd
d!l"mL}+  |+t        |*j                  |*j                  "      d#      }'nt        d       }'n|rt        d       }'n|!s+|&r)t        d$d       |$rt        d       }'|%rbt        d       }(nU|!st        j                  st        d$d       d }'d }(n2|\  }'},d }(| d%| d&}-|,|j                  j                  j                  |-<   |jg                  |'       |jg                  |(       |st        |      rt<        j                  }.nr|'|s| s 1| jK                         |         r|&rt               }.nFt<        jN                  }.n5|st        j                  s|!rt<        j>                  }.nt<        j                  }.|(t<        jN                  }/nt<        jB                  }/|jg                  |.       |jg                  |/       ` t'        ||||||||t-        | d'd       (	      S c c}w c c})w ))NzGEncountered strided NestedTensor in automatic dynamic dim determinationr  r  r  r  T)r~  )dynamic_sizesdynamic_stridesconstraint_sizesconstraint_stridesview_base_contexttensor_source#shape_env_to_source_to_symbol_cacheinner_contexts)r  r  r  r  r  r  r  r   )is_nested_intc              3   T   K   | ]  }t        |t              xr	  |        ! y wr'  )r,  r   )r]  rb  r  s     r  r_  z%_automatic_dynamic.<locals>.<genexpr>  s(     
La:a 9q)9%99
Ls   %(rl  constraint_rangeStrictMinMaxConstraintr$  r	  c                     | v r=ddl m} |    \  }} ||j                  |j                  z  d      }|xs |}||f| <   y ||f| <   y )Nr   r  FvrrH  )%torch.fx.experimental.symbolic_shapesr  r  )	rl  r  r$  r  old_constraint_rangeold_namenew_constraint_rangenew_namedim2constraints	           r  update_dim2constraintz1_automatic_dynamic.<locals>.update_dim2constraint  sm     . T-;C-@* (#9#&&)=)@)@@$   '4H"6"@N3"2D"8N3r  )_RelaxedConstraint_dynamo_strict_unbacked_indices_dynamo_unbacked_indices_dynamo_dynamic_indices_dynamo_weak_dynamic_indices_dynamo_static_indices_specialize_onFz#automatic dynamic %s marked dynamic)rj  ro  rp  _dynamo_dynamic_rangerG  r  )lowerupperr  r  z.size()[]_dynamo_shape_ids)	r  r  r  r  specialize_onr  r  r  	shape_ids)Ur  r,  r  r  r  r  r  rD   r$  rO  tracing_contexttensor_to_contextrz  r  r  rO   _automatic_dynamicr  r7   r.   r  r  rY  r/   r  r  r  r  r  rs  r,   r  rl  INFER_STRIDEr  r  rc  rj  r   r  rv  r\  r  rB  r  r  export_constraintst_idr  r  rb  r  r'   rQ   r[  ra   rJ  r  r  r  rI   rH   rJ   	make_sizer<   r  is_size_dynamicis_stride_dynamicrt  allow_ignore_mark_dynamicr  r  popminmaxr-   r  r9   r   r  source_name_to_debug_nameru  r  r  DUCK)2rk  rN  r  r}  r~  r$  prior_policyr  r  r  outer_contextr  r  rX  r  inner_tensorr  rb  r  r  r  r  rI  r  r  r  r  r  r  marked_strict_unbackedmarked_unbackedmarked_dynamicmarked_weak_dynamicmarked_staticr  	mark_sizeautomatic_dynamic_sizeautomatic_dynamic_strideautomatic_dynamicconstraint_sizeconstraint_stridedr	dim_ranger  name_dim_namedynamic_sizedynamic_strider  r  s2                                                   @@r  r  r  s  s    	{{:	5<<!!//<< 	]M		
 ;;D99,,>>BB1dKL<H88b (
 15zz| 1.qwwKW$Q'
*r6=T
 -)@AAA 7--a0q 	D"1d+L%fd3L#5b,$N4 	 ''55)99*;;,??/'550=0a0a)	
 		
 .t4&%,,-7'445?"Vaeeg- $v// 0S
 	
 D

L1668
LL&  '1F&;
""ARARR (445?"Vaeeg- $v// 0S
 	
 1T1= a5DN99$<9DG9	9$ ?	yy##/))66 	J*&89$&%NNJ$?$?		 MOM1557^ E/!"g0#%'
 "
 wq*DceLLga)BCEJJ71.Lce#TTWQ(@#%HHWQ(8"=AA!RHI
 "7v{{!Ck=1%..0K{K0$$0[))*../E5zRSTU II;TB#quuw.I'IaL!4!>!>I!NN ++T0A0Q0QRS0T 	 ++V0A0S0STU0V 	! T"II>E%)"d#II?F%)"2N6N
 $''*
"O $f&F&F$(!156%&%<%<!!!!ce  !}},1F*AE*R +A*immT&++
 '>&NO'"9E"J"'8 A4H)&=&MO+(?$(O%$V-L-L#$EuM"&$(!%/"OU $xs!,HFKBII99(C0!!"3406%..L'"QVVXa[)
 !CE)11f==%,,L &??L('//N'44N\*~.KE/N ##')-#+,O!0$7 z!s   '7`?	aa)parent_contextr"  r  c                N   t        j                         }	 t        | ||||      |j                  j                  xj
                  t        j                         |z
  z  c_        S # |j                  j                  xj
                  t        j                         |z
  z  c_        w xY w)Nr  r"  r  )rh  ri  $_wrap_to_fake_tensor_and_record_implrO  rk  !wrap_to_fake_tensor_and_record_ns)rk  rN  r  r"  r  rm  s         r  r  r    s|     ,,.C
3r&In
 			**LLLLNS 	
L		**LLLLNS 	
Ls   A$ $A B$c          
          t               t        j                  t        j                  j                  t
        fv s&t         t        j                        st               rJ t         |      \  }}|st         |      n-t        t              sJ j                  }|j                  |   t        j                  dj                  t!         j"                        t                      t%               5  j&                  J t)         fd      }d d d        Wt        t
              rG|j*                  x}	9j,                  j.                  j1                  t3        |	t5                           t              rf|j7                         \  }
}|
D ]N  }t9        ||      }t9         |      }t        |      }t;        ||t        |t        j                               P j,                  j<                  j>                   <   tA        |      r|jB                  r|jE                         n|jG                         }|jI                         d|jJ                  z  |jI                         |jM                         dj,                  jN                  <   n8|jI                         |jM                         dj,                  jN                  <   |r~|rjQ                         sltS              saj,                  j.                  j1                  t3        |             j,                  jT                  tW                  j1                         |S  S # 1 sw Y   @xY w)N)r  zwrap_to_fake %s %s %s %sc                  @    j                   j                         S )N)r  symbolic_context)r  r  )rk  r  r  rN  s   r  rM  z6_wrap_to_fake_tensor_and_record_impl.<locals>.<lambda>  s$    00!%5 1  r  r  )r   )rj  rk  values_sizevalues_stride)rj  rk  ),r  r  r0  rv  r  r   r,  r7   r   r  rO   r^  r  r  r  r$  r  shaper   r  r   	item_memorO  r  r  r2   rP   r  rY  r  r  r  r#   	is_sparse_valuesvaluesrj  ndimrk  input_source_to_sizes_stridesr  rZ   tracked_fakes_id_to_sourcer\  )rk  rN  r  r"  r  r}  _reasoninner_context_namefake_esym_valr  rX  r  
fake_innerinnerr  r  r  s   ```              @r  r  r    s    	QELL%(("4"4jAAa&(+!!!!? "
w 1!RO fj111!'-<<=OP		&KK!''NG	
 &' 	<<+++(F	 6:.",,,9II##**G%9&%ACST )0002HE1 
$VT2
4()&$7.'(U\\B#3	
 :J		!!33A6  *0)9)9V^^%v}}F ,%{{}!'?BII33F;  --/?BII33F; "v'F'F'H&v.II##**FF,<= II00A7>>vF	 	s    MM)c            
          e Zd ZdZddZeedddeee	      ee
e	e	f      z  eee	df      z  eee	      z  defd	              Zeedddee	   defd
              Zeedddee	df   defd              Zeedddeez  ez  ez  defd              Zeeddde	defd              Zeddde	defd       Zededefd       Zede
eede	gef   f   fd       Zy)rg  a  
    Like builder, but stateless and does not require a source. Useful for simple type->VT objects, or objects
    that are being created/evaporated during inlining (ex: consider a locally made list of tensors we then iterate over
    .), such a list should not show up as an artifact from inputs, nor in reconstruction, nor in the graph. However,
    there may be reasons to represent it as a ListVariable internally.

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

    NOTE - This class is very new! It will have some rough edges, but it was created to stem the bleeding of giant
    if/else type->VariableTracker trees that were cropping up all over dynamo.
    r	  Nc                     t        d      )NzUse SourcelessBuilder.create()r  r1  s    r  rH  zSourcelessBuilder.__init__  s    =>>r  rN  r  r%  .c                      y r'  r  rN  r%  s     r  r  zSourcelessBuilder.create   s     r  c                      y r'  r  r  s     r  r  zSourcelessBuilder.create*  s    SVr  c                      y r'  r  r  s     r  r  zSourcelessBuilder.create.  s     r  c                      y r'  r  r  s     r  r  zSourcelessBuilder.create4  s     r  c                      y r'  r  r  s     r  r  zSourcelessBuilder.create:  s    PSr  c           
      V   t        |      }t        j                  j                  |      }|r	 || |      S t	        |t
              r|S t        t        |            rTt        j                  j                  j                  | j                  j                  |      }t        j                  ||      S t	        |t        j                         rt#        |      S t%        j&                  |      rt%        j                  |      S t)        |      rVt+        j,                  |      At+        j.                  |      rd| j                  _         t+        j,                  |      |      S t)        |      rPt3        j4                  |      r; t+        j,                  |j6                        |j6                        }t9        |d      S t;        |      r t+        j<                  |      |      S t	        |t>        j@                  t        jB                  t        jD                  jF                  jH                  f      rtK        |      S t	        |t         tL        jN                  f      r@t	        |t               r%tQ        |t>        j@                        rtS        |      S t3        |      S t	        |tT        jV                        rtY        |      S t	        |tT        jZ                        rt	        |j6                  t         tL        jN                  f      rvt]        |j6                  |j^                  j`                        |k(  sJ t        j                  | |j6                        }	 |jc                  | |j^                  j`                        S t	        |t        jf                  jh                  jj                        rtm        |      S t	        |t        jn                  jp                  jr                        rt#        |      S tu        jv                  |      rtu        |      S ty        jz                  |      rty        |      S |t|        j~                  u rt        |      S t	        |t        j                        rt        |      S t	        |t        j                  j                  j                  j                        rt%        j                  t        |            S t	        |t        t        j                  j                              r3t        j                  j                  j                  j                  |      S t	        |tT        j                  tT        j                  f      rt        |      S t        |      rUt        t        |            D cg c]"  }t        j                  | t]        ||            $ }}t        |t        |            S t	        |t        j                        ro|j                  j                  | j                  j                  v rC| j                  j                  |j                  j                     }	t        j                  | |	      S t        |t              rt        |      S t        d|j                   d|j                   d| g t        j                         y # td        $ r Y Gw xY wc c}w )NTr  )r  z%Unexpected type in sourceless builderrD  z3SourcelessBuilder.create does not know how to wrap r  )`r  rg  _type_handlersrz  r,  r   r   r  r  r  r  rO  r  r   r  r  _HAS_DEFAULT_FACTORY_CLASSr   r   r  rq  r@   r  r  r  r   is_supported_new_methodr&  r   rx   r  ri  rj  rk  rl  rm  rn  r   abcABCMetar  r   r  r  r   r|  rY  r#  r  var_getattrr  rW  graph_moduleGraphModuler   r  r  r  r   r  r   r  rv  r  r   r  r  r   r)  r  lazyLazySymNodeFormatStringrB  r  flex_attention_backwardhigher_order_ops&FlexAttentionBackwardHighOrderVariableGenericAlias	UnionTyper   r{   r   r   r   r  r  r  r   r   r(  r   rD   r  r  r=   
DYNAMO_BUG)
rN  r%  
value_typefast_handlerr  r  
cls_obj_vtr$  rO  r  s
             r  r  zSourcelessBuilder.create>  s   %[
(77;;JGE**e_-L!$u+.#nn@@RR		##UO -33 
 {EEF,U33((/#**511e_!<!<U!C!O..u5>B		;5;..u5e<<e_!9!Q!Q"

 >+--enn=ennMC"3	22#E*,;%%e,U33DIIu00%((2E2E2S2ST
  &&ckk23%&:eTYY+G3E::+E22u667(//ue../ 5>>D#+++>? 5>>5>>+B+BCuLLL*11"ennEJ!--b%..2I2IJJ uxx44@@A077u{{22;;<,U33++E2$U++..u5%e,,ioo%)%00rzz*'..u}}66;;SST#**3u:66tE$;$;$S$STU==**;;bb   2 2EOODE!%((5! .d5k: "((WUD-ABF  &fUDDuell+

299#:#::II++EJJOO<E"))"e44E6"!%((;!,,-Qz/F/F.GHMj\Z1%001		
I ' .s   %Z 8'Z&	Z#"Z#c                 \    t        j                  |       sJ t        j                  |       S )Nr  )r   r  r  r  s    r  wrap_constant_literalz'SourcelessBuilder.wrap_constant_literal  s'    **5111&&U33r  r  c                     t         j                  i } t        D ]  }d | |<   
 fd| t        <   fd| t        <   fd| t
        <   fd| t        <   fd| t        <   fd| t        j                  <   | t
           | t        j                  <   | t
           | t        <   | t           | t        <   fd| t        j                  <   d	 | t        j                   <   d
 | t"        j$                  <   d | t&        j(                  <   d | t        j*                  <   d | t        j,                  <   d | t        j.                  j0                  j2                  <   d | t        j4                  j6                  j8                  <   d | t        j4                  j6                  j:                  <   d | t        j4                  j6                  j<                  <   dddt>        dt>        fd}t@        jB                  D ]  }|| |<   	 | S )Nc                     t        |      S r'  )r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    ,<U,C r  c           	      b    t        |D cg c]  } | |       c}t                     S c c}w N)r  )r   r   rN  r%  r  r  s      r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s)    +$)*qVB]*:J:L+
 *   ,c           	      b    t        |D cg c]  } | |       c}t                     S c c}w r  )r   r   r  s      r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s*    1C$)*qVB]*:J:L2
 *r  c                     t        |j                         D ci c]  \  }} | |       | |       c}}t        |      t                     S c c}}w r  )r   r  r  r   rN  r%  r  r  r  s       r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  sF    +<6;kkmDdaVB]F2qM)DK*,,
 Ds   A
c           	      b    t        |D cg c]  } | |       c}t                     S c c}w r  )r   r   r  s      r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s)    <$)*qVB]*:J:L,
 *r  c           	      N    t        |D cg c]  } | |       c}      S c c}w r'  )r   r  s      r  rM  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  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s#    $)*qVB]*2
 *r
  c                     t        t        |j                         D ci c]  \  }} | |       | |       c}}t        t	                           S c c}}w r  )r   r   r  r  r   r  s       r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  sJ    =Q:?++-H$!QAr1-H.0>
 Hs   Ac                     t        |      S r'  )r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    6u= r  c                 ,    t        |t                     S r  r   r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    8Q!1!39
 r  c                     t               S r'  )r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s
    4G4I r  c                     t        |      S r'  )r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    7KE7R r  c                 ,    t        |t                     S r  )r   r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    ;Q!1!3<
 r  c                 ,    t        |t                     S r  )r   r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    :%5%7 r  c                 ,    t        |t                     S r  r  r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>      7%5%7 r  c                 ,    t        |t                     S r  r  r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r  r  c                 ,    t        |t                     S r  r  r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r  r  rN  r  r%  r	  c                     |S r'  r  r  s     r  passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthrough  s    Lr  )"rg  r  rp   rb  r6   r  r  r  r  r  r  r[  r3   r4   r  r  r  rZ  r  r  r  r   r  rm  r  r  distributionsconstraints_Real	_Interval
Constraintr  r   all_subclasses)handlersr  r  r  r  s       @r  make_type_handlersz$SourcelessBuilder.make_type_handlers  s    #))  	 ' 	DACHQK	D
 




 
 -5TN(()#+D> #+D> ,
''( > 	++,'
""# #J%R!!"*
%%& 	!!--BBC 	$$00667 	$$00::; 	$$00;;<	3 	A 	! 	 '55 	(C'HSM	(r  r=  )r  r  r  r  rH  r
   r  r  rb  r   r  r  r  r   r  r   r   r@  r  r  rB  r   r   r(  r  r   r!  r  r  r  rg  rg    s   
? 'CH~
tCH~

uS#X
  tCy/ 
   V.VtCyV\V  V'05c3h	   '04s
U0BS0H	   S.SsSS  Sf
. f
s f
 f
 f
P 4V 4 4 4 Ph/5FGG! P Pr  rg  c                   6    e Zd ZdZd	dZedddedefd       Zy)
"SourcelessUserDefinedObjectBuilderz
    SourceLessBuilder does not return a UserDefinedObjectVariable, but in some
    cases it might be ok to return UserDefinedObjects. In such case, use this
    builder.
    r	  Nc                     t        d      )Nz/Use SourcelessUserDefinedObjectBuilder.create()r  r1  s    r  rH  z+SourcelessUserDefinedObjectBuilder.__init__
  s    NOOr  rN  r  r%  c                     t        |      }t        |t              rt        |t	                     S t        |t        j                  j                        rt        |t	                     S t        |t	                     S r  )r  r  r   r   r   r,  r  rv  rw  r   r   )rN  r%  r  s      r  r  z)SourcelessUserDefinedObjectBuilder.create  sa    %[
j.1)%?O?QRRuxx/0%5%7  -UBRBTUUr  r=  )	r  r  r  r  rH  r  r   r   r  r  r  r  r#  r#    s<    P 	V* 	V3 	V? 	V 	Vr  r#  r  r'  )F(  r  r  r  r  r6  r  ri  rv  rZ  	itertoolsrs  r  r&  r  r  r  rh  r  r  collections.abcr   r   r   typingr   r   r   r	   r
   r   r   r  r  r   torch._dispatch.pythonr   #torch._dynamo.graph_bytecode_inputsr   r   torch._dynamo.utilsr   r   r   r   torch._guardsr   "torch._higher_order_ops.flat_applyr   !torch._higher_order_ops.torchbindr   torch._library.opaque_objectr   r   r   r   
torch._opsr   r   r   r  r   r    r!   r"   torch._subclasses.meta_utilsr#   r$   torch._utils_internalr%   %torch.fx.experimental._backward_stater&   torch.fx.experimental._dynamismr'   torch.fx.experimental.sym_noder(   r)   r  r*   r+   r,   r-   r.   r/   r0   r1   r2   torch.fx.immutable_collectionsr3   r4    torch.nn.utils._expanded_weightsr5   torch.utils._ordered_setr6   torch.utils._python_dispatchr7   r8   torch.utils._sympy.value_rangesr9   torch.utils.weakr:   r  r<   r=   r>   r?   r@   rH  rA   excrB   rC   rD   r  rE   rF   rG   pgorH   rI   rJ   rK   rL   rt  rM   r  rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   r  rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   builtinr   constantr   r   ctx_managerr   r   r   r   r   dictsr   r   r   r   r   r   r   r   rf  r   r   r   r   r   	functionsr   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   iterr   r  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   r   	nn_moduler   r   r   	optimizerr   script_objectr   r   r9  r   streamsr   r   r   r  r   r   r   r   r   r   r   r   r   r   torch_functionr   r   r   user_definedr   r   r   r   r   r   r   r   r   r   r   r   r   r   numpyr   ModuleNotFoundErrorr?  torch._dynamo.codegenr  torch._dynamo.symbolic_convertr  r  	getLoggerr  r  r  getArtifactLoggerr@  r  r  r  r  DimListr(  r@  r  r  	dataclassr  rE  rf  varsr  r`  r  rb  ra  rv  rw  r`  ra  r]  r^  rc  r  r  r  r  r  r(  rW  Proxyr0  r  r  r  rB  r  r  rO  r  r  rU  rV  rc  rs  rv  rw  rx  r{  rt  r  r  r  rg  r!  r  r#  r  r  r  <module>rV     s  &              	 
    4  V V V    ;  ) 9 <  I H  B 1 ? A E
 
 
 J ; / 8 * T T ? S S A A  '       @! ! ! ! ! ! ! ! !D  % 4 	 	 	     $ ;
 
 
           2  
 ) ( O O $ $ I I I       
       $
 //  g!NN44'  
 m$CL
"V " "
	 	 G9 G9 G9T<H <, &/ /Y--// & IcN  +.% s3x /
 "'!>!> $)HHOO$D$D !K' K'\N O    0 (= # * !%!%	# : $;	
  2
#
,/
@C
	
z !%!%$[!$#$ $ :	$
 $;$ $ $Z "&D[!D#D 88>>D LL	D
 $;D D DX !%!% [! #  88>>  :	 
 $;     Hz
z
#z
 88>>z
 #s(^	z

 $;z
 [!z
 z
zq T!Wt^ :#  $;	
 
#s(^2([!(#( 88>>( 	(
 $;( #s(^( (6
j 
 %) #c(T/ (+/ cDj /SX (
3 
4 
#+.38<<@ &* 3s8d? ),0 sTz 0c#h (
C 
D 
( U
U#U U 	U
 U U~ "&


#
 TM	

 
 $J
 	
2 "&n
n#n TM	n
 n $Jn 	nbm m` $5#G#G#I   V VO~  B
s   ]& &]98]9