
    Bj                       U d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlmZmZ ddlmZ ddlmZmZmZmZmZmZ ddlZddlZddlm Z  ddl!m"Z" ddl#m$Z$m%Z%m&Z& dd	l'm(Z(m)Z)m*Z*m+Z+m,Z, dd
l-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZB ddlCmDZDmEZE ddlFmGZG ddlHmIZI ddlJmKZK ddlLmMZMmNZN ddlOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZm[Z[ ddl\m]Z] ddl^m_Z_ ddl`maZambZb ddlcmdZd ddlemfZf ddlgmhZhmiZimjZjmkZkmlZl ddlmmnZn dd lompZpmqZqmrZr dd!lsmtZtmuZumvZv dd"lwmxZxmyZymzZzm{Z{m|Z| dd#l}m~Z~ dd$lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ dd%lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d&d'lmZmZmZmZmZmZmZ d&d(lmZ d&d)lmZ d&d*lmZmZmZmZmZmZ d&d+lmZmZmZmZ d&d,lmZ d&d-lmZmZmZmZmZmZmZmZmZmZmZ d&d.lmZmZ d&d/lmZmZ d&d0lmZmZ d&d1lmZmZmZmZmZmZmZmZ d&d2lmZmZmZmZmZmZmZ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&d3lmZmZmZ d&d4lmZ d&d5lmZmZ d&d6lmZ d&d7lmZmZmZm Z  d&d8l!m"Z"m#Z#m$Z$ d&d9l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d&d:lm,Z,m-Z-m.Z.m/Z/ d&d;l0m1Z1m2Z2m3Z3 d&d<l4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mBZB 	 ddlCZDn# eE$ r dZDeeFd=<   Y nw xY werdd>lGmHZH dd?lImJZJmKZK  e
jL        eM          ZNejO        P                    eMd@          ZQddAlmRZR  eRdB          ZS eRdC          ZTeUZVdDeWdEeXfdFZY G dG dH          ZZej[         G dI dJ                      Z\ G dK dLe\          Z] e^dM  e_e	          `                                D                       Zae^eb         eFdN<    ec            Zdeceb         eFdO<   eje        jf        jg        Zheje        jf        ji        Zj G dP dQ          ZkdRedEefdSZldTedUe@dz  dEefdVZm	 	 ddWdXdYedZedz  d[endz  d\edEefd]ZodWdXdYedZedEdfd^Zp	 	 dd_eneS         dWdXdYedZedz  d[endz  d\edEeSfd`Zq	 dd_eneS         dWdXdYejr        js        daejt        d[endz  d\edEeSfdbZu	 	 dd_eneS         dWdXdYejr        js        dZedz  d[endz  d\edEeSfdcZvdZedWdXdYejr        js        d\ewexef         d[endz  d_eneS         dEefddZydTeTdEeneT         dz  fdeZzd_edWdXdZed[endz  dEewexef         f
dfZ{d_eneS         dWdXdYejr        js        dZed[endz  d\ewexef         dEeSfdgZ|dEeRfdhZ}da~ecex         dz  eFdi<   daebdz  eFdj<   dEecex         fdkZdlexdEeXfdmZdWdXdnexdoejt        dEezfdpZdaecex         dz  eFdq<   daebdz  eFdr<   dEecex         fdsZdlexdEeXfdtZ	 ddoedWdXdvedweXdxeXdEeVfdyZddzdoedWdXdvedz  d{eXd|edz  dEefd}ZddzdoedWdXdvedz  d{eXd|edz  dEefd~Z G d d          Ze                                e_         G d d          ZdS )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overloadTYPE_CHECKINGUnion)SymInt)enable_python_dispatcher)CURRENT_STREAM_INDEXget_external_object_by_indexregister_user_object)get_metrics_contextis_int_specialization_caseis_torch_symnormalize_count_iterset_feature_use)TracingContext)
flat_apply)call_torchbind)is_opaque_reference_typeis_opaque_typeis_opaque_value_typeshould_hoist)
OpaqueBase)HigherOrderOperator
OpOverloadOpOverloadPacket)
FakeTensorFakeTensorModeis_fakemaybe_get_fake_mode)is_sparse_any	safe_grad)justknobs_check)BackwardState)normalize_source_name)_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CurrentStreamSourceDictGetItemSourceDictSubclassGetItemSourceDynamicScalarSourceFloatTensorSourceGetItemSource
GradSourceis_constant_sourceis_from_closure_sourceis_from_global_sourceis_from_nonlocal_sourceis_from_optimizer_source&is_from_unspecialized_nn_module_sourceListGetItemSourceLocalSource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"enumerate_items_with_dict_positionget_fake_valueget_locals_to_stealget_static_address_typeis_frozen_dataclassis_functionis_function_or_wrapperis_invoke_subgraphis_lru_cache_wrapped_functionis_namedtupleis_parameter_freezing	is_typingis_utils_checkpointis_wrapper_or_member_descriptoristypenamedtuple_fieldsodict_valuesproxy_args_kwargsrange_iteratorset_example_valuetensor_always_has_static_shapetuple_iteratortuple_iterator_getitemtuple_iterator_len unwrap_with_attr_name_if_wrapperwrap_fake_exception   )AttributeMutationExistingAttributeMutationNewtypestrValueMutationExistingValueMutationNewVariableTrackerVariableTrackerMeta)BuiltinVariableConstantVariable)AutocastModeVariableCudagraphOverrideVariableDynamoConfigPatchVariableErrorOnGraphBreakVariableNullContextVariablePreserveVersionContextVariable)ConstDictVariableDefaultDictVariableMappingProxyVariableSetVariable)WorldMetaClassVariable)BuiltinMethodVariableCollectionsNamedTupleFunction!CollectiveFunctionRewriteVariable'CreateTMADescriptorExperimentalVariable!CreateTMADescriptorStableVariableFunctoolsPartialVariableSysFunctionVariableTritonKernelVariableTritonSetAllocatorVariableUserFunctionVariableWrapperUserFunctionVariable)"LocalMapWrappedHigherOrderVariable TorchHigherOrderOperatorVariable)CountIteratorVariableItertoolsVariable)LazyConstantVariableLazyVariableTracker)BaseListVariableListIteratorVariableListVariableRangeVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradEngineVariableAutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableConstantLikeVariableDebuggingVariableDelayGraphBreakVariableGetAttrVariableGetSetDescriptorVariableIgnoredFunctionVariableLambdaVariableLoggingLoggerVariableMethodWrapperVariableNumpyDTypeVariableNumpyVariableObjectVariablePythonModuleVariableRandomClassVariableRandomVariableSavedTensorBoxStringFormatVariableTorchVersionVariableTypingVariableWeakRefVariable)FSDPManagedNNModuleVariable$UnspecializedBuiltinNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)OpaqueObjectClassVariableTorchScriptObjectVariableSDPAParamsVariable)DictKeySetVariableFrozensetVariableOrderedSetClassVariableOrderedSetVariable)EventVariableStreamContextVariableStreamVariable)NumpyNdarrayVariable$supported_const_comparison_op_valuesSymNodeVariableTensorSubclassVariableTensorVariableUnspecializedPythonVariable)DispatchKeySetVariableFuncTorchInterpreterVariableTorchCtxManagerClassVariableTorchInGraphFunctionVariable)TensorWithTFOverrideVariable#torch_function_mode_stack_state_mgrTorchFunctionModeVariable)FrozenDataClassVariableInspectVariableIntWrapperVariableKeyedJaggedTensorVariableMutableMappingVariableSourcelessGraphModuleVariableUserDefinedClassVariableUserDefinedConstantVariableUserDefinedDictVariable!UserDefinedExceptionClassVariableUserDefinedListVariableUserDefinedObjectVariableUserDefinedSetVariableUserDefinedTupleVariablenp)	PyCodegen)InstructionTranslatorInstructionTranslatorBasecudagraph_static_inputs)TypeVarVTTypeAliasTtreturnc                     t           j                            t           j        j        j                  5  t          | d          cd d d            S # 1 swxY w Y   d S )Ngrad)torch_logginghide_warnings	_internalsafe_grad_filterhasattr)r  s    b/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr  W  s    		%	%en&>&O	P	P " "q&!!" " " " " " " " " " " " " " " " " "s   AAAc                       e Zd ZdS )_missingN__name__
__module____qualname__     r  r  r  \  s        Dr  r  c                      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dS )GraphArgNsource_examplepass_arg_as_tensorfake_tensorT	is_tensorexample_strong_refnamevaluer	  c                 >    t                               | ||           d S N)object__setattr__)selfr$  r%  s      r  r)  zGraphArg.__setattr__  s"    
 	4u-----r  c                 x    t          | j        t                    r|                                 }|J |S | j        S r'  )
isinstancer  r<   )r*  rs     r  examplezGraphArg.example  s9    dm]33 	!A===H= r  c                     t          | j        t          j                  r/t	          | j                  | _        t          | j                  sJ d S d S r'  )r,  r  r  Tensorr<   r#   r!  r*  s    r  __post_init__zGraphArg.__post_init__  sP    dmU\22 	-)$-88DM4+,,,,,	- 	-,,r  codegenr  c                 &     || j                    d S r'  r  r*  r3  s     r  reconstructzGraphArg.reconstruct  s    r  c                 "    d | _         d | _        d S r'  )r  r#  r1  s    r  erasezGraphArg.erase  s    "&r  otherc                     t          |t                    sdS | j        	|j        d u S |j        dS | j        j        |j        j        k    S )NF)r,  r  r  r$  )r*  r:  s     r  __eq__zGraphArg.__eq__  sP    %** 	5;<4''|#u;#u|'888r  r	  Nr3  r  r	  N)r  r  r  rj   __annotations__r   boolr  _subclassesr!  r!   r"  r#  r0  r   strr)  propertyr(   r.  r2  r7  r9  r(  r<  r  r  r  r  r  `  sN        TM MMM" ".9D@@@@ It >Bu|3d:AAA. .C .D . . . . !4}DtK ! ! ! X!- - - -
   ' ' ' '9F 9t 9 9 9 9 9 9r  r  c                   (     e Zd Zd fdZddZ xZS )	BackwardStateGraphArgr	  Nc                 l    t                                          d t                      dd d           d S )NF)r  r  r   r!  r"  )super__init__r(   )r*  	__class__s    r  rH  zBackwardStateGraphArg.__init__  sA    "__$ 	 	
 	
 	
 	
 	
r  r3  r  c                     j         j        j        sJ                     fd                               dd                                                                j         j        j                   d S )Nc                  D                          t          j        d          S )Nr(   )load_import_fromr(   r  )r3  s   r  <lambda>z3BackwardStateGraphArg.reconstruct.<locals>.<lambda>  s    G,,]-EWW r  r   F)txoutputbackward_state_varadd_push_nullcall_functiondup_topstorer6  s    `r  r7  z!BackwardStateGraphArg.reconstruct  s    z 3333WWWW	
 	
 	
 	a'''gj':;;;;;r  r=  r>  )r  r  r  rH  r7  __classcell__rI  s   @r  rE  rE    sQ        
 
 
 
 
 
< < < < < < < <r  rE  c              #      K   | ]?\  }}|                     d           t          j        |          .t          |          V  @dS )_N)
startswithinspectisclassid).0r$  members      r  	<genexpr>r_    sf       / /f??3/ %,OF$;$;/vJJ/ / / / / /r  ITERTOOLS_TYPE_IDSITERTOOLS_POLYFILLED_TYPE_IDSc            
           e Zd ZdZ	 d6d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j        e         defdZd
ej        e         defdZd
ej         j!        j"        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
edefd!Z6d
e7e8z  de9e:z  fd"Z;d
ej<        d#eddfd$Z=d
ej>        j?        defd%Z@d
edefd&ZAd
e(defd'ZBd
eCdefd(ZDeEd
e(d)ee(gef         defd*            ZFeEd
eCd)eeCgef         defd+            ZFeE	 d7d
e(eCz  ez  ez  d)ddefd,            ZF	 d7d
e(eCz  ez  ez  d)eegef         dz  defd-ZFd
ej<        ddfd.ZGd
ej<        defd/ZHd
edefd0ZI	 	 d8d
e(d1eJdz  d2eKdz  defd3ZLd
eCdefd4ZMd
edefd5ZN xZOS )9VariableBuilderz3Wrap a python value in a VariableTracker() instanceTrN  r  r  allow_lazy_constantr	  Nc                     |
J d            t          j                    
J d            t                                                       || _        || _        |j        | _        || _        d S )NzRConsider SourcelessBuilder for ephemeral objects, usually objects created locally.zExpected active TracingContext)r   try_getrG  rH  rN  r  r$  rd  )r*  rN  r  rd  rI  s       r  rH  zVariableBuilder.__init__  sy     !!` "!! %''335U333K	 $7   r  r%  c                 *   t          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__  s    lnn	??5))GN3LL$LLLDGN3LL$LLLLLLs   A 5Bc                    | j         j        j        j                            | j                   || j         j        j        v r| j         j        j        |         }t          | j        |j                  }|r|                     |           t          |t          j        j                  r/t          |t                    r|                    | j                   |S | j         j        j                            | j                  }|r| j        st          |t$                    s|S |                     |          }|j        | j        |_        dt(          dt*          dt,          fd}|                     |          s |||          rG|| j         j        j        vr4t1          |          s%| j         j        j                            ||          }d| j        j        vr|| j         j        j        | j        <   |S )Nr%  vtr	  c                 t    t          |           pt          | t                    ot          |t                    S r'  )r   r,  r*   r   )r%  rp  s     r  _is_deduplicable_sym_variablezAVariableBuilder._call_impl.<locals>._is_deduplicable_sym_variable  s5     U##Hz%'H'H2R112r  JVP_NESTING)rN  rO  current_tracertraced_sourcesaddr  side_effectsrI   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   %488EEEDGN///!%!<U!C'5G5NOOI /##I...%11 
Kj"$A7 7 
K #==dkJJJ%%GN9==dkJJ	 	! ' !z.0 0 ! ! ZZ9BI	2 	2/ 	2d 	2 	2 	2 	2 ..r22	N 10;;	N
 TW^8883E:: 9 ,BB5"MMB  000ACDGN1$+>	r  rp  c                 `    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)    Bxx(% %
 
 	
r  c                     | j         S r'  r5  r1  s    r  
get_sourcezVariableBuilder.get_source8  s
    {r  guards.c                     |                                  	 fd|D             }n# t          $ r Y d S w xY wt          |ddi i S )Nc                 :    g | ]}                     |          S r  )
make_guard)r]  guardr  s     r  
<listcomp>z2VariableBuilder.install_guards.<locals>.<listcomp>>  s'    @@@6$$U++@@@r  skipr   )r  NotImplementedErrorrH   )r*  r  tmpr  s      @r  rx  zVariableBuilder.install_guards;  sl    ""	@@@@@@@CC" 	 	 	44	s####	s   & 
44c                 @    |                      t          j                  S r'  )_type_dispatch_implr>   trace_numpy)clss    r  _type_dispatchzVariableBuilder._type_dispatchD  s    &&v'9:::r  r  c                 B   t           j        t           j        j        t           j        j        t           j        j        j        f| j        ft          t          t          t          j        t           j        f| j        ft           j        | j        ft&          | j        ft*          | j        ft.          t0          f| j        ft          t4                    | j        ft8          j        | j        ft>          j         | j!        ft           j"        j#        j$        | j%        ft           j&        j'        | j(        ftR          j*        | j+        fg}|r-tX          r&|-                    tX          j.        | j/        f           i }|D ]-\  }}ta          |t                    r|n|fD ]}||vsJ |||<   .|S r'  )1r  r0  ry  	ParameterrA  r!   functional_tensorFunctionalTensorwrap_tensortuplelistr   collectionsdequeSizewrap_listlike	itertoolscountwrap_itertools_countr   wrap_tuple_iteratorr   wrap_range_iteratorslicerangewrap_slice_rangers   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_implH  s    LH&%0%7H	  lK,=uzJ! _c67S45S45U^S12())3+;<Z/0"C$45[.0IJY%s'<=#S%;</
4  	A2 	ANNBJ(>?@@@  	 	FB%b%00;RRre  q		 r  c                 ^    |                      t          j                   t          |          S r'  )rx  rG   ID_MATCHr   r*  r%  s     r  r  z"VariableBuilder.wrap_regex_patterns  s'    L1222#E***r  c                     |                      t          j                   t          j        | j        || j                  S Nr5  )rx  rG   
TYPE_MATCHr   buildrN  r  r  s     r  r  zVariableBuilder.wrap_weakrefx  s5    L3444$TWeDKHHHHr  c                 ,    t          dddg            d S )Nz3Attempted to represent unregistered RemovableHandle zDynamo attempted to build a representation of a torch.utils.hooks.RemovableHandle, which is not supported. This happens because the RemovableHandle was created in another frame.gb_typecontextexplanationhints)rF   r  s     r  r  z%VariableBuilder.wrap_removable_handle|  s4     	Im	
 	
 	
 	
 	
 	
r  c                    t          |d          s4t          ddt          |          j         dg t          j                   |                     t          j                   t          |d| j
        t                                S )N_torchdynamo_inlinez.wrap_jit_function: missing _torchdynamo_inlineztype: zfDynamo expected a JIT function with a _torchdynamo_inline attribute, but the object does not have one.r  r  mutation_type)r  rF   r  r  r?   SUPPORTABLErx  rG   r  r   r  r   r  s     r  r  z!VariableBuilder.wrap_jit_function  s    u344 	H7e!57746)56    	L3444*!;355	
 
 
 	
r  c                 j                          t          j                                         t          j                   t	          d |D                       }|s3t          ddd |                                D              ddg           dt          d	t          d
t          t          t          f         f fdt          fd|                                D                       }t          |d           }t          | j                  } j        j        j                            ||          S )Nc              3   >   K   | ]}t          j        |          V  d S r'  r   
is_literalr]  ks     r  r_  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>  s.      FF1(3A66FFFFFFr  znon-const keys in mappingproxynon-const keys: c                 :    g | ]}t          j        |          |S r  r  r  s     r  r  z6VariableBuilder.wrap_mapping_proxy.<locals>.<listcomp>  s*    +j+j+j!K[KfghKiKi+jA+j+j+jr  z1Dynamo expects mappingproxy keys to be constants.zFEnsure your mappingproxy keys are constants (e.g. int, float, strings)r  r  vr	  c                     t          j        |           }| }t                                          |          }t	          j        ||          }||fS r'  )r   creater[   r  r   )r  r  key
source_keysource_value	res_valuer*  s         r  build_key_valuez;VariableBuilder.wrap_mapping_proxy.<locals>.build_key_value  sM    ")!,,CJ():):JGGL+21lCCI	>!r  c              3   6   K   | ]\  }} ||          V  d S r'  r  )r]  r  r  r  s      r  r_  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>  s3      EEtq!__Q**EEEEEEr  r5  )rx  rG   r  MAPPING_KEYS_CHECKallrF   keysr   r  r   dictitemsr   r   r  rN  rO  rw  track_mutable)r*  r%  	all_constr  dict_vtr  r  s   `     @r  r  z"VariableBuilder.wrap_mapping_proxy  sM   L3444 	L;<<<FFFFFFF	 	8l+j+juzz||+j+j+jllO\	   	"s 	"s 	"u_o5U/V 	" 	" 	" 	" 	" 	" EEEEu{{}}EEEEE $E$777%gdkBBBw~*88GGGr  c                     ddl m } |d ft          j        d ft          j        d fg}i }|D ]A\  }}t          |t          t          f          r|n|fD ]}||vsJ ||t          |          <   B|S )Nr=   )comptimec                     t                      S r'  )r   r  s     r  rM  z.VariableBuilder._id_dispatch.<locals>.<lambda>  s    +;+=+= r  c                 n    t          t          fd| j        i|                     t          j                  S )Nr  )r   _dataclasses_fields_lambdar  rx  rG   CLOSURE_MATCHr  s     r  rM  z.VariableBuilder._id_dispatch.<locals>.<lambda>  s=    N.% %;% )),*DEE% % r  c                     t                      S r'  )r   r  s     r  rM  z.VariableBuilder._id_dispatch.<locals>.<lambda>  s    4H4J4J 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 JK
  	# 	#FB%b5$-88CRRre # # "r!uu# r  c                 e   @AB ddl m}m}m} ddlm}m}m}  |            rddlm	} ddl
m}	 n G d d          }	 G d	 d
          }dtd}
dtd} G d d          }dtd} |            rddlm}
m}  |            rddlm}  |            rdd l}t%          |d          r|j        }                                                     t-                              }| |           S                                                      t1                              }| |           S t3          t4          j                  rt-                    t4          j        j        j        t4          j        j        j        t@          fvrdt-                    tB          j"        vrIt-                    j#        t4          j        j#        u stI                    r %                              S tM                    r '                    tP          j)                    fdtU          t-                              D             }tW          | j,        t[                                } t]          j/        t-                               j,        |          } j0        j1        j2        3                    |          S ti          tj          tl          j7        tl          j8        f          r '                    tP          j9                   tu          d D                       AAs) j0        j1        j;        <                     j,                   dtz          dtz          dtz          dt|          t~          t~          f         fA fdBtk          Bfdt                    D                       }ti          tl          j7                  r\t           j,        d          }t          |t-                     t           j0        |          jD                   j,                  }n$t          |t-                     j,                  } j0        j1        j2        F                    |          S t3          t4          j        jG                  r H                              S t          jJ                  r K                              S t3          t4          jL        jM                  r=t           j,                   } j0        j1        j2        3                    |           |S ti          t          t          f          r`t          d! D                       r t          d"d#d$d%gt          jT        &            '                    tP          j9                    '                    tP          j)                   t          }ti          t                    rlt           j,        d'          }t          |W                    tP          jX                              j0        j1        j;        <                    |           t          }t                    @ fd(t          @          D             } || j,                   } j0        j1        j2        3                    |          S ti          t                    r\tu          d) D                       rC fd*D             } '                    tP          j]                   t          | j,                   S t3          t          j`        t4          ja        t4          jb        jc        jd        f          r5 '                    tP          je                   t           j,                   S t          jh                  r5 '                    tP          ji                   t           j,                   S t                    rdt          fd+t4          jk        j!        jl        D                       r5 '                    tP          je                   t           j,                   S t3          t          jo                  r5 '                    tP          j9                   t           j,                   S t                    rt           j,                   S t                    rt           j,                   S t          jv                  rt          jw         j,                   S t3          t          jy                  rt           z                                d,          } t           j0        |          j{                  }g }t           z                                d-          }t          j|                  D ]D\  }}|}                     t           j0        t          ||                    |                     Ei }t           z                                d.          } j                                        D ]k\  }!}"t          jJ        |!          s"t          d/d0|! d1g t          j        &            t           j0        t          | |!                    |"          ||!<   lt           z                                W                    tP          j9                  | W                    tP          jX                  |W                    tP          j)                             t          d2d           }#t	          ||||#3          S t                    r6 '                    tP          je                   t           j,                   S t          Ct3          t          j                  r(                     t          j                            S t          j                  rNt          sJ ti          t          j                  rZt          j        j                  r?t          t           j,        d4          W                    tP          j                             nt          j                  r  '                    tP          j                   nt          j                  r  '                    tP          j                   nNt                    r  '                    tP          je                   n '                    tP          j9                   t+           j,                   S t          j                  r6 '                    tP          je                   t/           j,                   S t          j                  rt3          t          j                  ra '                    tP          j9                   t           j,        d5          }$t          |$W                    tP          je                             n '                    tP          je                   t5           j,                   S t7          j                  rA '                    tP          j                   t7          j         j0         j,                   S ti          t4          j        j        j                  r6 '                    tP          j                   tC           j,                   S t3          t4          j        j        j                  rEd }%	 j        }%n# tH          $ r Y nw xY wg }& j,        W                    tP          j9                  g}'t3          |%t|                    rt           j,        d6          }(|'}                    |(W                    tP          j)                             t          |%          D ]D\  }}"|&}                     t           j0        t          |(|                    |"                     Et          |'   j0        j1        j2        3                    tK           j,        tM          |&          7                    S t3          t          j                  rti          t          d8d           t4          j        j        j                  rƐt          d9d:          d;k    rt          j        d;d           k    rt          t           z                                d4          W                    tP          j                             tQ          tC          j        t           j,        d8<                     d;t-                    =          S t3          t4          jb        j                  r6 '                    tP          je                   tU           j,                   S t4          jk        j        j        j        u r2 '                    tP          j                   t]           fd>          S t3          |          rt_          j                  S t3          |          rtc          j                  S t3          |          rtg          j        j                  S t                    rjt          j                  Ut          j                  rd? j0        j1        _        t          j                                       j,                   S t          r0t3          t          j                  r                               S t3          tx                    rat4          j        j        u rt          d@d:dAg &            '                    tP          j9                   t          j         j,                   S t3          t4          j        j                  rr '                    tP          je                   t           j,        dB          }) t           j0        |)          j                  }*t          j         j0        |*          S t3          t4          j                  r։ '                    tP          j9                   t3           j,        t                    r	t          }+nt           j,                  }+ j0        j1                            dCt          |+fi           },t          |,j                   t          |, j,        |+D          } j0        j1        j2        3                    |          S t3          t4          jb        j                  r@ '                    tP          j9                   t          j         j0         j,                  S t3          t4          jc        j        j                  r/ '                    tP          je                   t                    S t3          t4          j                  r '                    tP          j9                   t           j,                  }+ j0        j1                            dCt          |+fi           }-t          |-j                   t          |-|+ j,                   S ti          t          j                  rLt          j        dEd           5 '                    tP          j9                   t           j,                   S t          j                  r[ '                    tP          j9                   t           j,                   } j0        j1        j2        3                    |          S t3          t4          j        j                  r^ '                    tP          je                   t           j,                   _,        t           j,        t                                S t3          t4          j                  r/ '                    tP          j                   t                    S t          j                  rt           j,                   S t          u r. '                    tP          je                   t                      S t1                    t          v rMt1                    t          vr6 '                    tP          j                   t           j,                   S t3          t                    r
t3          t                    }.t           j,        |.          }/t1                     j0        j1        j        j        v r* j0        j1        j        j        t1                             }0n j0        j1        j                            j        |/t          j        F          }1 j0        j1        j                            |1j        |/G          }0t3          |0t                    s t          dHt-          |0                      j0        j1        j                            t          j        dIdJ j                  t-          |0          |0|/           }2t          |/|0dKd dK|0L          |2j        j        dM<   |0j        j        }3t3          |3t          j                  sJ |3 dN             j0        j1        j        }                    t          |0|/d                      t          j         j0        |2|0          S t                    rEt3          t4          j                  r j,        nt           j,                  }/d }4j                                        rM j0        j1        j                            t          j        j                  |/t          j        O          }4n_t3          t4          j                  r% j0        j1        j        	                                }4nt          dPd:dQg t          jT        &           |4J t3          |4t                    s t          dHt-          |4                      j0        j1        j                            t          j        dIdJ j                  t-          |4          |4|/           }2t          |/|4dKd dK|4L          |2j        j        dM<   |4j        j        }3t3          |3t          j                  sJ |3 dN             j0        j1        j        }                    t          |4|/d                      t3          t4          j                  r|4n|4dRk    }5t          |2|5          S t3          |	|f          r8 '                    tP          je                   t          d d  j,                   S |
u rt          dRS          S |u rt          dS          S |j        u rt                      S |u rt                    S t3          t4          j        j        j                  rt3          t4          j        j        j                  r                               S  '                    tP          je                   t)          j        j        j        j        g j,        T          S t3          j                  rt          j                  r  '                    tP          j                   n4t          j                  r '                    tP          j                   t3           j,                   S t          j        dUdK          rE '                    tP          j9                   t7          dV j,        t                                S t9                    rE '                    tP          j9                   t7          dW j,        t                                S t:          j        u s"t:          j        dXk    r't:          j         u rtC           j,                   S tE                    r\t          j        dYdK          rE '                    tP          j9                   t7          dY j,        t                                S tl          j#        u r6 '                    tP          je                   tI           j,                   S t3          t          j%                  rLtM          j'                  r6 '                    tP          je                   tM           j,                   S tQ                    r~tR          j*        tR          j+        fv r` '                    tP          je                   tQ          tY          tR           j,                   j-        t-                    =          S tE                    r_t]                    \  }6|6t           j,        |6           _,        t          j/                                       j,                   S t`          j1        u r5 '                    tP          je                   te           j,                   S ti          t`          j1                  rstg          j4                  r] '                    tP          j9                   tg           j,                   } j0        j1        j2        F                    |           |S t3          t          j5        tl          j7        f          r^ '                    tP          j8                   ts           j,                   } j0        j1        j2        3                    |           |S t3          t          j:                  rtw                    S t3          t          j<                  rt{                    S t}          t-                    t,                    rFt}          t~                    r/ '                    tP          je                   t                    S t}          t-                    t,                    r݉t4          jA        jB        jC        t4          j        jD        t4          j        jE        fv r0t          j/                                       j,                   S t4          j        jF        u r: '                    tP          j                   t          jH         j0                  S t}          t4          j                  rMt4          j        ur?j#        t4          j        j#        u r't                    st           j,                   S t           j,                  s '                    tP          j                   t3          t,                    r2t}          t          j`                  rt           j,                   S t                    rt           j,                   S t           j,                   S t          j        t-                              rddZl,mP}7mQ}8 t3          t4          jR        jS        jT                  rjU        t4          jR        jS        V                              r j0        j1        j                            t          j        dIdJ j                  t-                     j,                   }9t           j,        dKd dK          |9j        j        dM<   t          j        |9 j,                   S t          t-                              r" '                    tP          jX                   n<t          t-                              r@ '                    tP          j9                    '                    tP          jZ                   nt%          d[          s                               S t          j\         t           j0         |8 j,                            ]                                ^                                                     t          j\         t           j0         |7 j,                            _                                                     t4          jR        jS        `                     j0        j1        ja                  }:t          t-                              r"t          t-                              s}:}9ntB          jc        rlt           j,                  s*t           j,                  st           j,                  r- j0        j1        g                     j         j,                   S  j0        j1        j                            t          j        dIdJ j                  t-                    |: j,                   }9t           j,        dKd dK|:          |9j        j        dM<   t          j        |9|: j,                   S t3          tj          tl          j8        f          rzt-                    jh        tj          jh        u rW '                    tP          j9                    '                    tP          j)                    j0        j1        j;        <                     j,                   dtz          dtz          dtz          dt|          t~          t~          f         f fd\Btk          Bfd]t                    D                       }t          |t3          tl          j8                  rtl          j8        ntj          t[                       j,        ^          };d?|;_i        t          |; j,        _          } j0        j1        j2        3                    |          S t3          t|                    rӉ '                    tP          j9                    '                    tP          j)                    fd`t          t|          l                                        D             }tW          | j,        t[                                }t]          | j,        a          } j0        j1        j2        3                    |          S t3          t                    rՉ '                    tP          j9                    '                    tP          j)                    fdbt          t          l                                        D             }t          | j,        t[                                }<t          |< j,        c          } j0        j1        j2        3                    |          S t3          t          t          f          r3 '                    tP          j9                    '                    tP          j)                   t          tj          o                                        @@ fddt          t          l                    @                    D             }t3          t                    rt          }=nt3          t                    sJ t          }= |=| j,        t[                                }>t          |> j,        e          } j0        j1        j2        3                    |          S t}          t-                    t                    r[ '                    tP          j9                   t           j,                   } j0        j1        j2        3                    |          S t                    r[ '                    tP          j9                   t           j,                   } j0        j1        j2        3                    |          S t3          t                    rtu          df D                       r fdgD             }t           z                                W                    tP          j)                   z                                W                    tP          j]                             t          | j,                   S t          dhdidj D              dkdlg&           d S t          j                  r`ddmlxmy}? jz        jz        j        |?j{        k    r |                    j}                  S jz        j        |?j        k    r{t                              dn j,        j        t          j                    |                    j}        t          j        t          t          dKo          p          q          S jz        j        |?j        k    r\t                              dn j,        j        t          j                    |                    j}        t          j        r          S tI          dsjz                   ti          t                    r6 '                    tP          j9                   t	           j,                   S                                S )uNr   )
has_triton has_triton_experimental_host_tma%has_triton_tensor_descriptor_host_tmar=   )CudagraphOverrideContextManagerDynamoConfigPatchProxy(ErrorOnGraphBreakDecoratorContextManager)	Autotuner)JITFunctionc                       e Zd ZdS )*VariableBuilder._wrap.<locals>.JITFunctionNr  r  r  r  r   r            r  r   c                       e Zd ZdS )(VariableBuilder._wrap.<locals>.AutotunerNr  r  r  r  r  r    r  r  r  r	  c                      d S r'  r  r  r  r  create_1d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_1d_tma_descriptor      Dr  c                      d S r'  r  r  r  r  create_2d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_2d_tma_descriptor  r  r  c                   &    e Zd Zedd            ZdS )/VariableBuilder._wrap.<locals>.TensorDescriptorr	  Nc                      d S r'  r  r  r  r  from_tensorz;VariableBuilder._wrap.<locals>.TensorDescriptor.from_tensor  s    r  r=  )r  r  r  staticmethodr  r  r  r  TensorDescriptorr    s2           \  r  r  c                      d S r'  r  r  r  r  set_allocatorz,VariableBuilder._wrap.<locals>.set_allocator  r  r  )r  r
  )r  r  c           	      ~    g | ]9}t          j        t          |          t          j        |                     :S r5  )r   r  getattrrQ   r  )r]  r$  r*  r%  s     r  r  z)VariableBuilder._wrap.<locals>.<listcomp>0  sY     - - -
 	 $*E4((%dk488  - - -r  r  )r  tuple_vtc              3   >   K   | ]}t          j        |          V  d S r'  r  r  s     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>E  s.      JJq,7::JJJJJJr  ir  r  c                     	                                 }rt          j        |          }|}n%t          ||           }t	          j        ||          }t          ||          }t	          j        ||          }||fS r'  )r  r   r  rT   r   rW   )
r  r  r  baser  r  r  r  r  r*  s
           r  r  z.VariableBuilder._wrap.<locals>.build_key_value`  s     (( D*1!44C!"JJ!3D!!<!<J-4Q
CCC0zBB/6q,GG	I~%r  c              3   :   K   | ]\  }}} |||          V  d S r'  r  r]  r  r  r  r  s       r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>o  K        Aq!  1a((     r  default_factory)r  r  )user_clsr  r5  c              3   J   K   | ]}t          |t          j                  V  d S r'  )r,  r  r0  r]  xs     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>  s.      >>1:a..>>>>>>r  z$Attempted to wrap a set with tensorsz+Python set containing torch.Tensor elementszDynamo cannot trace sets of tensors. To get a stable ordering, Dynamo needs to convert the set into a list and the order might not be stable if the set contains tensors.z,Use a dictionary where the keys are tensors.r  _dictc           	      h    g | ].\  }}t          j        |t          j        |                     /S r  )r   r  re   r  )r]  r  r  r*  s      r  r  z)VariableBuilder._wrap.<locals>.<listcomp>  sS        Aq $*=dk1MM    r  c              3      K   | ]^}t          |          t          j        u r|j        d k    p3|t          j        j        j        v pt          |t          t          f          V  _dS )r  N)r  r  BuiltinMethodTyper  r  r  _pytreeBUILTIN_TYPESr,  r   r    r!  s     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>  s       .
 .
  aE33O8O > U[(66> 1z+;<==.
 .
 .
 .
 .
 .
r  c                 P    g | ]"}t                               j        |          #S r  SourcelessBuilderr  rN  r]  r  r*  s     r  r  z)VariableBuilder._wrap.<locals>.<listcomp>  s,    IIIa&--dgq99IIIr  c              3       K   | ]}|u V  	d S r'  r  )r]  r  r%  s     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>  s8       %
 %
ERK%
 %
 %
 %
 %
 %
r  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  r5  __self__r  r  apply)r^  py_typec                      t          t          j        j        j        j                                       j         j        j        j	        
                                fi           S r'  )r   r  _dynamoexternal_utilsFakeCompiledAutogradEngineexec_final_callbacksrR  rN  rO  rw  get_ca_final_callbacks_varr1  s   r  rM  z'VariableBuilder._wrap.<locals>.<lambda>}  sS    ,M0K` -GW^0KKMMO  r  Tz9Attempted to wrap torch._higher_order_ops.invoke_subgraphzJDirectly using invoke_subgraph is not supported. Use nested_compile_regionstreamrR  )r  user_object_indexenter_result)r  dynamic_dim)hintr  Expected SymInt, got [^a-zA-Z0-9]+rX  F)r"  r#  grapharg is not a basic Symbol.)rC  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  )FlattenScriptObjectSourceScriptObjectQualifiedNameSource__obj_flatten__c                                                      }t          ||           }t          j        ||          }t	          ||          }t          j        ||          }||fS r'  )r  rT   r   r  rX   )	r  r  r  r  r  r  r  r  r*  s	           r  r  z.VariableBuilder._wrap.<locals>.build_key_value  s`     ((/a88
)0J??8zJJ/6q,GG	I~%r  c              3   :   K   | ]\  }}} |||          V  d S r'  r  r  s       r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>  r  r  )r  r  r  )r  r  c           	          g | ]Q}t          j        t                              |          t	                                          |                     RS r  )r   r  r  __getitem__r[   r  r]  r  r*  r%  s     r  r  z)VariableBuilder._wrap.<locals>.<listcomp>  sg       
 	 $*%%eQ//():):A>>    r  )r  r  c           	          g | ]Q}t          j        t                              |          t	                                          |                     RS r  )r   r  r  rV  rc   r  rW  s     r  r  z)VariableBuilder._wrap.<locals>.<listcomp>  sg       
 	 $*$$UA..,T__->->BB    r  )list_vtr  c           	          g | ]Q}t          j        t                              |          t	                                          |                     RS r  )r   r  r  rV  re   r  )r]  r  Lr*  s     r  r  z)VariableBuilder._wrap.<locals>.<listcomp>  sg       
 	 $*$$Q**:4??;L;LaPP    r  )set_vtr  c              3   >   K   | ]}t          j        |          V  d S r'  r  r  s     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>  s.      AAa#.q11AAAAAAr  c                 P    g | ]"}t                               j        |          #S r  r*  r,  s     r  r  z)VariableBuilder._wrap.<locals>.<listcomp>  s,    MMM!*11$'1==MMMr  znon-const keys in dict_keysr  c                 :    g | ]}t          j        |          |S r  r  r  s     r  r  z)VariableBuilder._wrap.<locals>.<listcomp>  s*    /g/g/gaHXHcdeHfHf/g/g/g/gr  z.Dynamo expects dict_keys keys to be constants.zCEnsure your dict_keys keys are constants (e.g. int, float, strings))_DimHintTypez%s marked %s via IntWrapper	warn_only)
constraint)dynamismr  rd  zUndefined dynamism r=  (  torch.utils._tritonr  r  r  
decoratorsr  r  r  triton.runtime.autotunerr  triton.runtime.jitr   $triton.tools.experimental_descriptorr  r
  triton.tools.tensor_descriptorr  tritonr  r  r  r}  r  r  r\  r,  r  r0  ry  	parameterUninitializedBufferUninitializedParameterr7   r>   nontraceable_tensor_subclasses__torch_dispatch__r9   r  r~   rx  rG   SEQUENCE_LENGTHr   r   r  r   r   
get_vt_clsrN  rO  rw  r  r   r  r  defaultdictOrderedDictr  r  guard_on_key_orderrv  r   r  r   ru   rQ   r   rc  r  r   r  rz  wrap_moduler   r  r  	overridesTorchFunctionModer   setr8   anyrF   r?   r  r   rH   r  DICT_KEYS_MATCHr   r  	enumerate	frozensetEQUALS_MATCHr   enumEnumDispatchKey_C
_functorchTransformTyper  r   r   is_reorderable_logging_functionBUILTIN_MATCHcallabler;  ignore_logging_functionsr   loggingLoggerr   r   rp   r|   rq   r   should_wrap_in_hopr  	functoolspartialr  r.  r/  r  r[   r0  r  
USER_ERRORrW   r  r   r   r   r   genericr  asarrayrB   is_numpyr  
MethodTyperZ  
isfunctionr3  r  r[  CLASS_MATCHr   is_numpy_dtyper   is_numpy_type_infoiinfor   r   can_rewriter  autogradfunctionFunctionMetar   FunctionCtxr5  RuntimeErrorr   r   r6  r   _ImperativeEnginer   r<  r=  _exec_final_callbacks_stubr   r   changesr   error_on_graph_breakr   fwdbwdlookup_callableis_callable_allowed!has_user_defined_allowed_in_graphcreate_with_sourcenumberwrap_unspecialized_primitiver   _higher_order_opsinvoke_subgraphr   makecudaStreamContextr@  r   StreamrV   r   r   create_proxyr   r   noder   _SDPAParamsr   pyfunctorchFuncTorchInterpreterr   Eventr   
contextlibnullcontextgetattr_staticr   r   is_matching_objectoptim	Optimizerrg   r   r   DispatchKeySetDISPATCH_KEY_SET_MATCHr   r   is_group_member_typer   r`  ra  r   r*   r+   rY   root_tracerdynamic_scalar_nodes	shape_envcreate_unspecified_symbolrealr.   DYNAMICcreate_symintnoder   AssertionErrorcreate_graph_inputr  subr$  r  metaexprsympySymboltracked_fakesr4   r   r   rU   has_hint$create_unspecified_symint_and_symbolintrD  SymBoolcreate_unbacked_symintr   r   r  r   r   ampautocast_modeautocast_UnmanagedAutocastwrap_user_definedr   device
fast_dtype_enabled_cache_enabledr   is_matching_clsr   r}   sysexc_infoversion_info	exceptionr   r{   
namedtupler   r&  r   is_supported_builtin_methodrz   floatfromhexhexr   r  r   lookuprandomRandomr   r   is_supported_random_objr   rA   DummyModuleMODULE_MATCHr   GetSetDescriptorTyper   MethodWrapperTyper   
issubclassBaseExceptionr   r  r  BackwardHookr  Buffer _unsafe_preserve_version_counterr   constructorr:   r   r^   r   r   r   r   rP  rQ  _libraryfake_class_registryFakeScriptObjectreal_objtracing_with_realr   CONSTANT_MATCHr   OPAQUE_OBJ_GUARD_FN_MATCHr   realize_all_typequalified_namerR  maybe_to_fake_obj	fake_moder   install_free_tensorsr_   r`   rb   register_attr_or_module__new__should_reconstruct_allr   r  __len__r   r   fromkeysr   r   r   ry   r   rt   r   r   torch.export.dynamic_shapesr`  rd  STATICwrap_symintvallogdebugr3   r/   AUTOr(  r   )Cr*  r%  r  r  r  r  r  r  r  r   r  r
  r  r  
triton_modtype_dispatchid_dispatchrO  r  r  factory_sourcevarset_var_clsinternal_dict_sourcer  func_srcfunc_objr/  args_sourcer  argr0  keywords_sourcer  r  r2  	dt_sourceactual_saved_tensorsr5  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_namerP  rQ  proxyfake_script_objr  rY  
set_vt_clsr\  r`  r[  r  r  sC   ``                                                              @@@r  r~  zVariableBuilder._wrap  s0   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 :<< 		::::::6666666              	 	 	 		 	 	 		 	 	 	 	 	 	 	
	 	 	 	 ,+-- 	        1022 	HGGGGGG:<< 	9''''z?33 9 * 8 ++--11$u++>>$ =u--- ''))--bii88";tU+++ uel++	/U "6"9	 	 U6#HHH U.%,2QQQ077 R ''... ~	1 <===- - - - -
 .d5kk::- - -F %{355  H
 F-8eEE{!  F
 7>.DDUFSSSED+"9;;RSTT i	1 7888JJEJJJJJI  C" 155dkBBB&&&#&&78& & & & & & &     A%HH    F
 e[455 !+DK9J!K!K,KK$LODG^$L$L-% %  ;   +!%[[;   7>.<<UFKKKux// f	1##E***(// d	1$$U+++u@AA b	1+E$+FFFCGN'==eSIIIJEC,-- ^	1>>>>>>> BI>
 G*6     7888 <===%KeZ(( 1'1$+w'G'G$(33L4PQQ   1556JKKK0 UA    &aLL	  E ![t{;;;F7>.DDUFSSSE9%% t	1# .
 .
 .
 .
 .
 +
 +
 t	1" JIII5IIIE 9:::$U4;????Y)58+>+LM
 
 `	1  5666,U4;GGGG>uEE Z	1  :;;;$U4;????e__ U	1 %
 %
 %
 %
"'-"6"O%
 %
 %
 "
 "
 U	1  5666*5EEEEw~.. O	1 7888(t{CCCC '' L	1,DK@@@@&& J	11EEEE/B5II H	15;4;OOOOy011 F	1!$//"3"3V<<H9tw99%*EEHD$T__%6%6??K#EJ//  3KODG];-J-JKKCPP    H():):JGGO,,.. 
 
1'2155 ! N ; ; ;$Y= 1 <=	   oG.BB   !!,,\-DEE**<+GHH&&|'CDD   #*%t"D"D+$>Q    u c	1 5666!{    ^
5"* = =^**2:e+<+<===!%(( Y	1II2eU-.. =%en55 !"4;
;;FF(6   
 '' =##L$<====#E** =##L$>????% =##L$9::::##L$;<<< t{;;;;'.. F	1 5666%eDK@@@@+E22 C	1%** ;##L$;<<<&t{G<<	i22<3HIIJJJJ##L$9:::'dkBBBB.:5AA z	1 :;;;4;{   
 E5>2?@@ s	1 8999+{    u~6BCC m	1#' ',':$$    Mk,,\-DEEFF.66 
'1$+'O'O$(33L4PQQ   &&:;;  DAq!(( G]3G%K%K     
 6""7>.DD/;"0"?"?     ue.//N	1z400%.2I2V N	1
 z2..'99$???? 4??,,j99DD .   
 #(N%dk*EEE   U    ux9:: x
	1 5666)%DDDD}+Fab b  :;;;!      566 g
	1,U];;;GHH e
	1,U-GHHH>?? c
	1,UY	BBBe__ a
	1!<U!C!C!O.u55 HCG@.u55HHdk I     Z
	1Jubi00 Z
	144U;;;233 X
	1/???W l	     788838t{SSSSuz788 N
	1 5666&t{H==M@-@@NNJ(/DDDu|,, H
	1 7888$+':;; A,,UDK@@7>66!=x L l/777 eDK5  C 7>.DDUCPPP 466 y		1 7888%,TWeT[IIIu/;PQQ v		1 5666/666u{++ s		1 7888(<<E'.55,	 K k.666 {	    5*011c		1&undCCK 7888&dk::::&9%@@ ]		1 7888.uT[IIIF7>.DDUFSSSu{455 X		1 5666)$+66DK${799   
 u344 P		1 CDDD)%000#8?? M		1)%DDDDj   5666*,,,uII+++5		!>>> 8999$U4;????~.. B		1z22F(f==F%yyDGN6KKK w~1Fr%yyQgn.HHJ! * 2 I  
 w~/AA! B  
 "$// O()Md)M)MNNN "W^7JJ'di88T

	 K  N 4<#'4 4 4N$Z0 y~Hh55  444 5 GN(//D&$0O0OPPP")$'>4HHH%   X	1 eU\223%dk22 
 Jz""$$ GN,QQEJO,,$.$6 R   
 eU]33 !%!9!P!P!R!RJJ " C "$Q> 1 =>	    )))j&11 Q$%OT*=M=M%O%OPPP!W^7JJ'di88Z  	 K  N 4<#-4 4 4N$Z0 "+Hh55  444 5 GN(//JPT0U0UVVV )==R

:QR?  #>>BBBY788 S	1 5666'{	    ...:BBBB...:BBBB&2224666m##-e444uy6?@@ C	1%!8!KLL --e444##L$9:::+(,	#  ;    *9%@@ u	1u%% @##L$<====#E** @##L$>???/dkJJJJ#E+H%PP o	1 7888.{799	    +511 g	1 7888.{799	    cl""''ES],B,B&uT[AAAA#E** [	1w/E(%0
 0
 [	1  7888.%{799	    k,,, 56660t{KKKK5*
 
 N	1#?FFN	1  5666(t{CCCC I	1EemUY-G$G$G 5666"dk:::U   
 $E** B	1?FFE9 $(i@@%e,,??dk @    fm## 5666&dk::::E6=)) u	1n.T/
 /
 u	1  7888#E$+>>>FGN'55eVDDDM  0-2KLMM k	1 9:::){  F
 GN'==eVLLLMu9:: b	1 ,E222u677 Z	1
 )///UT** T	1z%/O/O T	1 56664U;;;UT** P	1!."   #)%00CC$+ D    GGG##L$<===5A$'JJJ 5%,//I -- ,0OOO
 ;5AA P .eDKHHHH)$+66 > ##L$<===%&& :eTY+G+G /;   
 e$$ 0;   
 ,{    '6tE{{CC Z	1        %!C!TUU ' ~1CCEJJ 2EEF+S$)<<KK;	 F   /7K/ /

+ 17;    $DKK00 ##L$?@@@@)$u++66 ##L$;<<<##L$JKKKKU$566  --e444 $/O!@!@!M!M  4466    $/TODG-F-Ft{-S-STT--//    $n@RR(% O $DKK00 d5kk9R9R "', %dk22*4;77 :$+FF
 w~==49T[ >   
 2EEF+S$)<<KK#;	 F   /7K#/ /

+ -3{    ut[%<=>>m	1U#t|33  7888 <=== GN-11$+>>>
&
&
&#&
&78
& 
& 
& 
& 
& 
&     A%HH    F
 ( "%)@AAK++355{	 	 	G .2G*,UGDKXXXF7>.DDUFSSSu%% 	1 7888 <===    
 u}}U3344  F %{355  H
 .  F 7>.DDUFSSSt$$ h	1 7888 <===    
 t||E2233  F #{355  G
 -UGDKXXXF7>.DDUFSSSY/00 T	1 7888 <===T]]5))**A    
 t||A//  F %%% /(

!%33333.
Zt{:O:Q:Q  F ,E&UUUF7>.DDUFSSSU^44 =	1 7888+E$+FFFF7>.DDUFSSS '' 9	1 7888,U4;GGGF7>.DDUFSSSy)) 5	1AA5AAAAA  NMMMuMMMOO%%001MNNOO%%001JKK   *%DDDD9i/g/g5/g/g/gii P]	       2599 	1@@@@@@~%)<@S)S)S''	222$(<<<		1K$&  
 ''I'/1#:U#K#K#K   (    $(999		1K$&  
 ''	J<N'OOO"#I#I#IJJJE6"" 	1 7888!%<<<<))%000s   | ||c                 0   ddl m} |                     t          j                   t          j        |          r$t          |t          | j                            }nrt          ||          rLt          |          t          vr6|                     t          j                   t          || j                  }nt          || j                  }t          j        t          |                    s|S | j        j        j                            ||          S )Nr   )_CONSTANT_BASE_TYPESr5  )user_definedr-  rx  rG   r  r   r  ri   r  r,  r  rs   CONSTANT_SUBCLASS_MATCHr   r   rO   "cls_supports_mutation_side_effectsrN  rO  rw  r  )r*  r%  r-  r  s       r  r  z!VariableBuilder.wrap_user_defined.  s   666666L3444-e44 	J
 %U?4;3O3OPPPFFu233	JU#888 DEEE0t{KKKFF.uT[IIIF=d5kkJJ 	Mw~*@@OOOr  c                     t           j        rOt          |          t          j        u r4                     t          j                   t          j	        |          S                      t          j
                   t          |t                    rot          d |D                       rV j        j                                        r8                     t          j                   t#          d |D                       S  fdt%          |          D             } j        j        j                            d          }t/           j        t0                    r j        j        t5          |          v r j        }t/          |t6                    sJ  j        j        j                            t=          j        dd j                   t          |          ||          }d	|j!        j"        d
<   tG          tH           j        ||d |          }g }t%          |j%                  D ]\  }}	tM          ||d          }
|	 j        j        j'        |
<   tQ          ||                   |	j)        j!        j"        d<   tU          j+        t          j,        t[          ||                             }|.                    |
/                    |                     ta          |ddi tc          ||dd d          }||j!        j"        d<   |D ]}|2                                  tg          j4        |          | j                  }t          |t6          tj          j6        f          r% j        j        j7        8                    ||          S |S )Nr%  c              3   >   K   | ]}t          j        |          V  d S r'  r  r]  items     r  r_  z0VariableBuilder.wrap_listlike.<locals>.<genexpr>U  s.      HH$$/55HHHHHHr  c                 6    g | ]}t          j        |          S r  r   r  r4  s     r  r  z1VariableBuilder.wrap_listlike.<locals>.<listcomp>Y  s$    !R!R!RD"2"9$"?"?!R!R!Rr  c           	          g | ];\  }}t          j        |t                                          |                     <S r  )r   r  r[   r  )r]  r  r5  r*  s      r  r  z1VariableBuilder.wrap_listlike.<locals>.<listcomp>[  s[     
 
 

 4	  &$T__%6%6::  
 
 
r  r*  rF  rX  r5  T	steal_arg)
target_clsrN  r)  example_valuesubclass_typer  Fr  r  index_is_slicetensor_dictr  r   )r   r!  r"  rG  )9r>   specialize_intr  r  r  rx  rG   r  r   r  rr  r   r  r  r  guard_sourceis_unspecialized_nn_moduler   r}  rN  rO  local_scoper}  r,  rd   
local_namerw   r  r  r  r  r  r$  r  r  wrap_fx_proxy_clsr   r  r[   input_source_to_varro   r)  r  r  TENSOR_MATCHr<   r  r  rH   r  realizer   cls_for_instancer  r  rw  r  )r*  r%  rO  maybe_gmr  tensor_list_proxylist_variabler  r  tensor_variablesource_ir  rG  rp  r  s   `              r  r  zVariableBuilder.wrap_listlikeE  s      	8T%[[EJ%>%> ;<<<#*7777 	L8999 5%  	THH%HHHHH	T (CCEE	T
  ;<<< !R!RE!R!R!RSSS
 
 
 

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

9!2599&UUU%$ 1233 	L7>.<<UFKKKr  c                                           t          j                    fdt          t	                              D             }t          | j                  } j        j        j	        
                    |          S )Nc           
          g | ]N} t          j        t                                          |                    t	          |                    OS r  )rc  rN  rl   r  r   rW  s     r  r  z7VariableBuilder.wrap_tuple_iterator.<locals>.<listcomp>  sg     
 
 
  WODG%?@Q@QST%U%UVV&ua00 
 
 
r  r5  )rx  rG   TUPLE_ITERATOR_LENr  r   r   r  rN  rO  rw  r  )r*  r%  rO  r  s   ``  r  r  z#VariableBuilder.wrap_tuple_iterator  s    L;<<<
 
 
 
 
 -e4455	
 
 
 'vdkBBBw~*88GGGr  c                     |                      t          j                   d t          j        |          D             }t          || j                  }| j        j        j	        
                    ||          S )Nc                 6    g | ]}t          j        |          S r  r7  )r]  r  s     r  r  z7VariableBuilder.wrap_range_iterator.<locals>.<listcomp>  s1     (
 (
 (
+,#A&&(
 (
 (
r  r5  )rx  rG   RANGE_ITERATOR_MATCHcopydeepcopyr   r  rN  rO  rw  r  )r*  r%  r  r  s       r  r  z#VariableBuilder.wrap_range_iterator  st    L=>>>(
 (
04e0D0D(
 (
 (
 &eDK@@@w~*88GGGr  c                    t          |          \  }}t          j        |          rt          j        |          s|                     |          S |                     t
          j                   t          t          j        |          t          j        |          | j	                  }| j
        j        j                            ||          S r  )r   r   r  r  rx  rG   COUNT_ITERATOR_MATCHr   r  r  rN  rO  rw  r  )r*  r%  current_itemstepr  s        r  r  z$VariableBuilder.wrap_itertools_count  s    1%88d'55	1 +D11	1 ))%000L=>>>&#L11#D));
 
 

 w~*88GGGr  c                       fddD             }                      t          j                   t          t                    rt          | j         j                  S t          | j                  S )Nc           
          g | ]N} t          j        t                                          |                    t	          |                    OS r  )rc  rN  rQ   r  r  )r]  r  r*  r%  s     r  r  z4VariableBuilder.wrap_slice_range.<locals>.<listcomp>  se     
 
 
  GODGZ0A0A1%E%EFFq!! 
 
 
r  startstoprZ  r5  )	rx  rG   r  r,  r  r   rN  r  r   )r*  r%  r  s   `` r  r  z VariableBuilder.wrap_slice_range  s    
 
 
 
 
 /	
 
 
 	L3444eU## 	< DDDD t{;;;;r  r  c                 (   ddl m} t                              d| j        j        t          |                      |||           || j        j        j	        v r8| j        j        j	        |         }|j
        |j        j        j        d         d<   d S d S )Nr=   )mark_static_addressz Marking static input %s, id: %s)r  r?  _dynamo_static_input_type)rg  ra  static_inputs_logr  r  r$  r\  rN  rO  rw  rc  r)  r  r  )r*  r%  r  ra  r  s        r  mark_static_inputz!VariableBuilder.mark_static_input  s    444444.0@"U))	
 	
 	
 	E//// DGN///'.-e4C / IN./JKKK 0/r  c                    ddl m} t          |j                  dk    r?t	          dt          |          dt          |           dg t          j        d           t          ||          rt          j
        |j        d	d
          r5t          j
        |j        dd           }t          | j        d| d          S |                     t          j                   t#          | j        d          | _        |                     |j                  S t)          |          t*          j        j        j        u r,t	          dt3          |          dg t          j                   t7          |t*          j        j        t*          j        j        t*          j        j        f          r9t@          j!        s-t	          dt3          |          ddgt          j"                   tG          |dd
          rtG          |dd
          st	          dddg            |                     t          j                   tI          || %                                          }tM          j'        t)          |                    s|S | j(        j)        j*        +                    ||          S tY          j-        || j(        j.                  rot7          |t*          j/        j0        j1        j2                  r-|3                                }ti          | j                  | _        tk                      }tm          |j7                  r|j7        j8        tr          u r	 |7                                D ]\  }}| :                    ||           nM# tv          $ r@}ty          t)          |          | j(        t{          |j>                             Y d }~nd }~ww xY wtm          |j?                  r|j?        j8        t          u r	 |?                                D ]\  }}	| :                    |	|           nM# tv          $ r@}ty          t)          |          | j(        t{          |j>                             Y d }~nd }~ww xY w|r|| j(        j)        jA        | jB        <   |jC        D                    d          r|jC        D                    d          rtG          |jE        dd
          rv| j        }
| j(        j)        j.        rt@          jF        rt          | j                  }
t          ||
          }t          |
J                    t          j                             nu| j        }
| j(        j)        j.        rt@          jF        rt          | j                  }
t          ||
          }t          |
J                    t          j                             | j(        j)        M                    || j                   tM          j'        t)          |                    s|S | j(        j)        j*        +                    ||          S t          |jE        t*          j        jO        jP        jQ                  rB|                     t          j                   t          || %                                          S | j(        j)        R                    || jB        | %                                          S ) 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+torch.jit.script/freeze modules unsupportedzDynamo does not support tracing into torch.jit.script or torch.jit.freeze modules because they execute in the TorchScript runtime, not Python. Replace the ScriptModule submodule with the original eager nn.Module.z#Attempted to wrap RNN, GRU, or LSTMz*Dynamo does not support RNN, GRU, or LSTM.zgSet torch._dynamo.config.allow_rnn=True to enable experimental support for RNN, GRU, and LSTM in Dynamo_is_fsdp_managed_module_fsdp_use_orig_paramszFSDP with use_orig_params=Falser  z3Dynamo only supports FSDP with use_orig_params=Truer5  rb  )r/  )ztorch.nn.modulesz	torch.ao.ztorch.nn.modules.container_dynamo_marked_static)S
eval_framerg  len__dict__rF   r   r?   r  r   rZ  r  forwardr   r  rx  rG   r  rQ   rw  rm  r  r  r  _scriptRecursiveScriptModulerB  FUNDAMENTALr,  ry  RNNGRULSTMr>   	allow_rnnr  r  r   r  rO   r0  rN  rO  rw  r  r@   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baserP   r   r  named_parametersr3  !og_module_named_parameters_fn_ptrre  	TypeErrorrE   r  r/  named_buffersog_module_named_buffers_fn_ptr
nn_modulesr$  r  rY  rI  r  rm   r   rH   r  rn   r    add_fqn_info_for_inlined_modulesr  paralleldistributedDistributedDataParallelr  )r*  r%  rg  rl  r  freezingrX  peb
new_sources              r  rw  zVariableBuilder.wrap_module  s   000000u~!##1fU\]bUcUcfff&1U	    %)) 	5%em5KUSS 
 ,M#=t  /;icfiii   
  7888$T[+>>DK##EO444;;%)+AAAEE

,&2
 
 
 
 uux|UX\58=IJJ	$	 =E

H}&2	    53U;; m	 5"95AA = U	   "  78880t?P?PQQQFA$u++NN 7>.DDUFSSS0GG O	
 %!6!C!NOO ;((-dk::,..H /00
R *37XXXR % 6 6 8 8 B B1..q.AAAAB  R R R,T!WWdgDLLQQQQQQQQQR ,--
R '04RRRR % 3 3 5 5 B B1..q.AAAAB  R R R,T!WWdgDLLQQQQQQQQQR  = 8=)$)4  ++,MNNN(334PQQN *A5IIN "[
w~, Q0K Q!CDK!P!PJ=eJWWWj33L4KLLMMMM![
w~, J0K J!<T[!I!IJ6uZPPPj33L4KLLMMMGN;;E4;OOOA$u++NN 7>.DDUFSSSOUX.:R
 
 	  78880t?P?PQQQQ7>99	(( :   s0   1M8 8
O6N==O-1P 
Q))6Q$$Q)c                    t          |          t          u rt          |t                    sJ t          | j        j                  rFt                              d| j        j                   |                     |t          j
                  S t          | j        j                  rFt                              d| j        j                   |                     |t          j                  S t          j        st          || j                  rd }| j        j                                        s| j        j                                        rd}t'          | j        | j        j        t+          j        |          | j        j                                                   |                     t1          j        t4          j        |                     t9          j        || j                  S |                     || j                  S |                     |          S t          |          t@          u rSt          |t@                    sJ t          j!        s|                     || j"                  S |                     |          S t          |          tF          tH          fv r3t          |tF          tH          f          sJ |                     |          S |                     t4          j%                   t9          j        || j                  }t          |tL          tN          f          r%| j        j(        j)        *                    ||          S |S )N&%s marked dynamic via source whitelistre  '%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.rB  )recompile_hintr%  r  )+r  r  r,  is_dynamic_sourcer  r$  r  r  r	  r.   r  is_unbacked_sourceUNBACKEDr>   r@  r   rA  "is_unspecialized_builtin_nn_modulerB  rN   rN  rL   make_scalarrx  r  r  rG   r  r   r  _wrap_lazy_constant_wrap_symint_for_lazyr  specialize_float_wrap_symfloat_for_lazyr@  rB  r  r  rz  rO  rw  r  )r*  r%  r  r  s       r  r  zVariableBuilder.wrap_literal  s   ;;#eS))))) !122 L		BDKDTUUU''
8J'KKK!$+"233 M		CT[EUVVV''
8K'LLL( "S .eT[AA T%)N0SSUU;3NNPP5 ' .(+7>>37;3K3f3f3h3h	    ''!)(5n    
 ,2t{SSSS//t7QRRR++E222%[[E!!eU+++++* U//t7STTT++E222%[[T3K''edC[11111++E222 ;<<<%,5MMMF%$-- Pw~2@@OOOMr  c                 ,    |                      |          S r'  )r	  r  s     r  r  z%VariableBuilder._wrap_symint_for_lazy  s    &&&r  c                 ,    |                      |          S r'  )wrap_symfloatr  s     r  r  z'VariableBuilder._wrap_symfloat_for_lazy  s    !!%(((r  wrap_fnc                     d S r'  r  r*  r%  r  s      r  r  z#VariableBuilder._wrap_lazy_constant  	    
 #r  c                     d S r'  r  r  s      r  r  z#VariableBuilder._wrap_lazy_constant  r  r  c                     d S r'  r  r  s      r  r  z#VariableBuilder._wrap_lazy_constant  r  r  c                     | j         sG| ||          S |                     t          j                   t	          j        || j                  S t          j        || j                  S )zCWrap a primitive constant, deferring guard installation if allowed.Nr  r5  )rd  rx  rG   r  r   r  r  r   r  s      r  r  z#VariableBuilder._wrap_lazy_constant	  sk     ' 	L"wu~~% ;<<<#*t{KKKK#*5EEEEr  c                 ~    t          |          r+t          |          | j        j        u rt	          dd          d S d S )Nz*Cannot wrap a Tensor that has already beenz"wrapped by this instance of Dynamo)r#   r$   rN  r   rD   r  s     r   assert_not_wrapped_by_this_graphz0VariableBuilder.assert_not_wrapped_by_this_graph	  sP    5>> 	1%88DG<MMM*<4  	 	MMr  c           	      (   |                                  }|| j        j        j        vsJ t	          |          d u}|s_t          |t          j        j                  s|r>|j	        
                                r%|                     |t                                 d}t          j        o,t          |          pt!          |          pt#          |          }|o#t                      pt          j        j        j        }|s4|j	                                        s|rU|j	                                        s<|                     |           | j        j                            || j        |          S t	          |          dk    r[|                     t4          j                   |                     |           | j        j                            || j        |          S t9          |          rP|                     |           | j        j                            |t;          j        dd| j                  |          S || j        j        j        v }|r| j        j        j        |         S i }tA          |          }||                     t4          j!                   t	          |          dk    r|                     t4          j                   |                     |           t          |t          j"                  rC|j#        r<t          |t          j$        j%        j&        j'                  stQ          ddd	g 
           t          |t          j"                  rFtS          |          r7| j        j*        rt          j+        stQ          dddg tX          j-        
           t]          |          r}t_          |          n|j0        t_          |          j0        k    rQt_          |          }	|	tc          |	j0                  nd}
tQ          dd|j0         d|
 dg tX          j2        
           tg          || j        d|          }| j        j        j4        5                    t;          j        dd| j                  tm          |          ||          }to          | j        ||           tq          d)| j        ||||d|}| j        j        j        9                    ||           |:                                r+tg          |j;        | j        ty          |d          d           t4          j=        }t          |t|                    rt          |          rt4          j@        }t          jA        B                                o#t          |t          jA        jC        jD                  }|sM|                     t          jF        |t          |t                    r|nt          |                               t          |          r|r^|                     t4          j!                   |J                                d         }|ddgk    rt          d          |J                                d         }t          |          dk    rS|d         |jM        jN        k    r=|d         |jM        jO        k    r'|d         |jM        jP        k    r|d         |jQ        k    st          d          t          ty          | jS        d           T                    t4          jU                             t          ty          | jS        d!          T                    t4          jV                             nw|                     t4          jW                   |                     t4          j!                   t          t          |          T                    t4          jV                             |J                                \  }}|D ]}t          ||          }tm          |          }t          |t          jZ        j[        j\                  rtm          |j]                  }t          |t          j"                  sHt          |          s9t          tm          |          j_        d"tm          |          j_         d#          ty          | jS        |          }t          ja         t          | j        |          |                     || j        j        j        |<   d$|jc        jd        vsJ t          |          |jc        jd        d$<   |jf        jc        jd        d%         }t          |          | j        jh        urt          d&          t          ||d'|          }||jc        jd        d(<   |S )*Nrb  Tr5  guardedrF  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"  r2  r   _local_tensordevice_meshzDExpecting DTensor inner attrs to be ['_local_tensor', 'device_mesh']r      r=   rN  z\Expecting DTensor flattening ctx to be (placements, tensor_meta, shard_order, requires_grad)_specrequires_gradz found in tensor attrs of z[.__tensor_flatten__(). Only tensors and reference-type opaques are allowed in tensor attrs.r?  r;  z(Wrapped Tensor must be this graph's fakeFrG  r  )kr  rN  rO  rw  rx   r,  r  ry  r  rA  rB  re  r   r>   r  r_   r`   rb   r;  prepare_freezingis_specialized_nn_moduleis_fsdp_moduler  r  r$  rx  rG   r  r]   r  r  rF  infer_subclass_typer  r0  	is_nestednestedr  nested_tensorNestedTensorrF   r%   r}  capture_sparse_computer?   SPARSE_TENSORr  r&   r4  rB  r  wrap_to_fake_tensor_and_recordr  r  r  cache_real_value_when_exportwrap_fx_proxyr  _is_viewr  rQ   rG  r\   ra   NOT_NONE_MATCHr  is_availabletensorDTensorr  r  rf   r<   r9   __tensor_flatten__r  rr  r  
placementstensor_metashard_orderr  rH   r  r  DTENSOR_SPEC_MATCHr  TENSOR_SUBCLASS_METADATA_MATCHrk   r  r  r  r  r  r   r  r   r  rc  r  r  ro   r)  r$   r   rD   r  )r*  r%  r  is_static_inputshould_install_free_tensormake_graph_attributeis_duplicate_tensoroptionsr<  safe_grad_valgrad_strr;  tensor_proxyrM  
guard_type
is_dtensorinner_attrsflattening_ctxattrsrX  attrinner_value
inner_typeinner_sourcefake_tensor_valuerG  s                             r  r  zVariableBuilder.wrap_tensor	  s	   "" DGN777771%88D 	#ueh011	# 	# ".IIKK	#
 ""50E0G0G"HHH"O &,%@ &
!&)) >&v..>5f== 	#  /  
!##Lu}';'L 	 & 	 99;;	?S	'6688	 11%8887>99ty :    #5))Y66  566611%8887>99ty :    f%% 	11%8887>99'di88 :    %(JJ 	>7>5f==+E22$ 7888"5))Y66 5666 	--e444 uel++
	
	 uel&<&J&WXX
	
 @Q	    uel++	e$$	 W^	 ,2+H	 9K8)78	    %  	%  ,y//555%e,,M3@3Ls=.///RXHHNNNHNNL6)56   " 7dgf
 
 
 w~1DDF#S$)44KK	 E 
 
 	%TWlEBBB' 
w''
 
 
 
 	#99%QQQ>> 		 +7!&'22	    ".
fj)) 	5.Fv.N.N 	5%4J&3355 
*5$+3;
 ;

  	 ! &f.?@@2*511  	 	 	 )// B	  %##L$;<<<#6688;?M"BBB&^   "'!9!9!;!;A!>''1,,&q)U[-CCC&q)U[-DDD&q)U[-DDD&q)U-@@@&v   t{G44??$7    t{O<<GG$1     ##L$OPPP##L$;<<<*622==l>WXX   //11HE1  %eT22 "+..
N6G  < "&k&:!;!;J!  2:>> ',,5 + +;;/+ + +    *$+t<<#/:ODG\::;GG    6E*62L$5$:::::0DU0K0K}- ,16;OL0119JJJ*+UVVVFE52CDD-5z*r  c           	         t           J t          |t           j                  sJ t          |                                           }ddlm} |j        j         }|r?	 d|j        _        n1# t          $ r$ t          |j
        t           j                  sJ Y nw xY wd }t          j                    5  	 |                    |          }|rddlm}  ||          }n8# t"          $ r+}t%          dt'          |          dg |           Y d }~nd }~ww xY wd d d            n# 1 swxY w Y   |J t)          j         t-          | j        |          |                     t1          || j        d|	          }| j        j        j                            t9          j        d
d| j                  t?          |          ||          }	tA          | j        |	|           d|i}
tC          dtD          | j        |	|d d|
}|| j        j        j#        |<   |j$        j%        j&        d         }tO          ||d|d|          }||	j%        j&        d<   | j(        |_(        |S )Nr   )_utilT)clone_preserve_stridesz)failed to convert numpy.ndarray to TensorzHException encountered when attempting to convert numpy.ndarray to Tensor)r  r  r  r  from_excFr  rF  rX  r5  r  )r:  rN  r)  r;  r<  r;  r   r!  r"  r#  rG  r  ))r   r,  r  rf   r  torch._numpyr  flags	writeable
ValueErrorr  nditerr   temp_restore_stack_try_convert_to_tensortorch._prims_commonr  r  rF   rB  r   r  rc  rN  r  rO  r  r  r  r  r$  r  r  rE  r   rF  r)  r  r  r  r  )r*  r%  r  r  readonlytensor_valuer  r  r;  r)  r  numpy_ndarray_variablerG  s                r  r  z"VariableBuilder.wrap_numpy_ndarray.
  s,   ~~~%,,,,,"4??#4#455&&&&&&{,, 	99(,%% 9 9 9 "%*bi88888889 0CEE 	 	$;;EBB HJJJJJJ#9#9,#G#GL&   GJJ j        	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  ''' 	'(H(H(H(V(VWWW6w	
 
 
 *==F#S$)44	 > 
 
 	%TWe\BBBV$!2 "
+w'"
 "
 "
 "
 6L*62.49>O #%+
 
 
 '/

# )-%%%sN   A* *+BB0D2(CD
D%!DDDDD#&D#rd  r  c                    t          |          t          u sJ | j        | j        j        j        v r| j        j        j        | j                 S | j        j        j        }d }t          j                    j	        r]|
                                }t          |           | j        j        j                            t          || j        d                      nt!          |                                           s|Pt$          j        j        j        r:|                     t.          j                   t3          j        || j                  S | j        j        }t7          | j        |t9          j        |          | j        j                                                  }tA          | j        j                  }| j        }	tC          |	tD                    r|	#                                }	||}
nt(          j$        r-|j%        tL          u rtO          dd           tQ                      }
ntC          |	tR                    r7|	j*        0tW          |	j*                                      |ddi          d         st(          j,        stZ          j.        }
nR|j%        tL          u rtO          dd           |                     t.          j                   t3          j        |          S t(          j/        r	||j0        nd }|1                    || j        |
|          }tC          |td                    stg          d	t          |                     | j        j        j                            t          || j        |                     n]t!          |                                           sJ |                     t.          j                   t3          j        || j                  S tC          |                                 th                    rJ tk          |                                 6                    t.          j7                             d
|                                 i}| j        j        j8        9                    tu          j;        dd| j                  t          |          ||                                           }|j<        j=        }tC          |t|          j?                  sJ | d            || j        j        j8        j@        |<   t          j        | j        ||fi |}|| j        j        j        | j        <   t!          |                                           s4t          |                                 |dd d|          |j<        jC        d<   |S )Nr  r  dynamo.automatic_dynamic_shapesTr   Fr2  )r  rC  excluded_valuerE  r  rF  rX  r5  rH  r  rG  )Dr  r  r$  rN  rO  unspec_variable_mapr  r   r}  #force_unspec_int_unbacked_size_liker  r,   r  r  r4   r  r]   r  r  r;  r>   r@  rx  rG   r  r   r  rN   rL   r  rA  rB  r)   r,  rS   r  automatic_dynamic_shapesscalarrJ   r   $get_automatic_dynamic_shapes_mark_asrd   rd  r  assume_static_by_defaultr.   r  !automatic_dynamic_exclusion_guardexcluded_scalarr  r   r  rh   rH   r  r  r  r  r  r  r  r  r  r  bound_symbolsr   r  r  )r*  r%  rd  r  r  frame_state_entrywrapped_valuer$  normalized_source_namebase_sourcerC  r  r  r)  r%  
unspec_vars                   r  r	  zVariableBuilder.wrap_symint
  s,    E{{c!!!!9:::7>5di@@GN,	8<C U	L%<<>>M%m444GN(//M4;==    $DOO$5$566 J	LEM$8$G
 ##L$?@@@'.U4;OOOO;#D 9#/66+/;+C+^+^+`+`	! ! ! &;4;;K%L%L"+K+}55 5)2244#&/<%,<< A4HHHBDD;44<(4-..223IAu:VV 5
 4 5 )0 %+|;;#$EuMMM##L$?@@@'.U;;;; ;%1 "11 	  &JJ{'.	 K  M mV44 T$%RT-=P=P%R%RSSSGN(//M4;@@    &doo&7&788888 ;<<<#*t{KKKKdoo//1BCCCCCdoo''22<3JKKLLLT__../*==F#S$)44??$$	 > 
 
 !%*(EL11WWh3W3W3WWW1=B"0:$+DGUMUUWUU
8B*495!$//"3"344 	*2!!#( #0+ + +EJOJ' r  c           
      h	   | j         | j        j        j        v r| j        j        j        | j                  S t	          | j        | j        j         t          j        |          | j        j        	                                          }t          j        j        j        st          |                                           smt!          j        |          sYt!          j        |          sEt          j        j        j        j        s*t-          dd          st          j        rH|j        t2          ur:|                     t6          j                   t;          j        || j                  S t          j        |t          j                   }t          j!        j"        #                    |          r:|                     t6          j                   t;          j        || j                  S tI          |                                 tJ                    rJ tM          |                                 '                    t6          j(                             tS          |                                           }||d}tU          || j        d|          }| j        j        j+        ,                    t[          j.        dd	| j                   t_          |          ||
          }ta          | j        ||           tc          td          f| j        ||d d|}tI          |td                    sJ || j        j        j        | j         <   | j        j3        rNtI          |                                 th                    s'tk          d| d|                                            d }	|j6        j7        j8        d         }ts          |          sJ |}	|	j:        | j        j:        u sJ d|	j:         d            tw          |                                 |d|	d|          |j7        j8        d<   ty          | j         | j        j        j=        ddgt}          |gi           R            }
| j        j        j?        @                    t          |
jB        | j        d                      t                      D                    ddd           |
S )Nr  z.pytorch/compiler:unspecialize_float_killswitchFr  )r4  )r  	raw_valuer  rF  rX  r5  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  rG  call_methodr5  tensorify_float_attempt)	overwrite)Er$  rN  rO  r  rN   r  rL   r  rA  rB  r  r;  r>   r  r]   r  mathisnanisinf	_inductorrl  
cudagraphsr'   r  r  rJ   rx  rG   r  r   r  r  float64r  r  is_gradtrackingtensorr,  rh   rH   r  r  rZ   r  r  r  r  r  r  r  rE  r   r}  rd   r  r)  r  r  r#   r   r  r  r  r   r  r  r4   sym_numr   rz  )r*  r%  r  r  r  r  r;  r)  r  r  r-  s              r  r  zVariableBuilder.wrap_symfloat  s    9:::7>5di@@5GK+E22'+{'?'Z'Z'\'\
 
 
 M 1	L!$//"3"344	L z%  	L z%  		L %,7	L OQVWW	L /	L &,L@@  ;<<<#*t{KKKK U%-@@@
 844]CC 	L ;<<<#*t{KKKK doo//1BCCCCCdoo''22<3JKKLLL #4??#4#455#%88 7dgv
 
 
 *==F#S$)44	 > 
 
 	%TWe]CCC&'
w'
 
 
 

 *&ABBBBB8B*4957> 	*T__->->"L"L 	 {P]{{hlhwhwhyhy{{   !"(-2?C}%%%%%) *dg.?????+5 ? ? ? @??  '/OO#),'
 '
 '


# G'DGN' #J<44  
 
 	$++K	4;PT,U,UVVV!!";TT!RRRr  c                    | j         | j        j        j        v r| j        j        j        | j                  S t	          j        |          }t          |                                 t                    s>t          |                                 
                    t          j                             d|                                 i}|                    d|i           t          || j        d|                                           }| j        j        j                            t#          j        dd| j                   t'          |          ||                                           }t)          | j        ||           t+          t,          f| j        ||d d|}|| j        j        j        | j         <   t/          |                                           s	| j        j        rNt          |                                 t2                    s't5          d	| d
|                                            d }|                                r|                                }n|j        j        j        d         }tA          |          sJ |}|j!        | j        j!        u sJ d|j!         d            tE          |                                 |d|d|          |j        j        d<   |S )Nr  r  Fr  rF  rX  r5  r  r  r  r;  r  r	  Tr  rG  )#r$  rN  rO  r  r  r  r,  r  rh   rH   r  rG   r  updater  r  r  r  r  r  r  rE  r   r]   r}  rd   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   9:::7>5di@@U++$//++->?? 	Q$//++66|7NOOPPPT__../U+,,,6dgt?P?P
 
 
 *==F#S$)44??$$	 > 
 
 	%TWe]CCC&'
w'
 
 
 

 9C*495!$//"3"344 	w~ j1B1BK&P&P $Talpl{l{l}l}   !%,,.. L * = = ? ? !+ 0 5 :? K=))))) -$.$'2CCCCC/9 C C C DCC
 +3!!#'-#0+ + +EJOJ' r  )Tr'  NN)Pr  r  r  __doc__rj   r@  rH  r(  r   rn  rj  r  r  r   r   r  rB  rx  classmethodr  r  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   r  r0  re  ry  rz  rw  r  r  r  r  r	   r  r  r  r  r.   r3   r	  r  r  rU  rV  s   @r  rc  rc    s1       == %)	7 7#7 7 "	7
 
7 7 7 7 7 7&f     > >? > > > >@
O 
 
 
 
 
F    hsCx&8 T#s(^d=R     ;tFHS#X,>$>? ; ; ; [; _'d 'tFHSRUXDV<V7W ' ' ' _ ['R+
3 +<P + + + +
I'"7"< I I I I I
[&6
	
 
 
 

s 
/J 
 
 
 
"H H H H H HB _	c8.4oEFF	G   _ [6R13 R1? R1 R1 R1 R1h"Ps P P P P P.p5c?DI|ZOPp	p p p pd	H 	HO 	H 	H 	H 	HH HO H H H HH# H/ H H H H <eem <8U < < < <u| D T    $h h_ h h h hT?& ?_ ? ? ? ?B'3 '? ' ' ' ')U ) ) ) ) )  3%01 
	   X  5'?23 
	   X   U{T!C'  
	   X <@F FU{T!C'F 3%01D8F 
	F F F Fel t    W W/ W W W WrS& S& S& S& S& S&p '+04	A AA t#A '-	A
 
A A A AFO5 O_ O O 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 ]Y}d }| j        r*t          | j        d          }t          ||j
                  }|                    t          ||                     Zt          |          S )	Nzdataclass fields failurezobj: z; variable type: z$Dataclass fields handling fails for z*. Expected it to be a user-defined object.r  __dataclass_fields__r5  )r,  r   r%  rF   r  r  r  r  rQ   rW   r$  r  r   )r  r%  r  fieldr  base_srcs         r  r  r    s    E#011 
	.=C==$s))==nsnnn		
 	
 	
 	
 E#E** F F: 	=!#*.DEEH&x<<F.uVDDDEEEEr  r%  r   c                     t          | t          j                  rPt          | t                    s;t          j        |           rt          |           |u s| j        st          |           } | S r'  )r,  r  r0  r!   _is_functional_tensorr$   r  rr   )r%  r   s     r  _clone_inputr$    sr    %&& ' uj))
	' +E22	
	'
 (..);; <
  &&ELr  rN  r  r)  r;  r<  r  c                     | |||d|}|t          ddt          i|S t          ddt          i|}|                    |            |S )Nr  r:  r  )rE  r   r   install_global)rN  r)  r;  r<  r  kwargsr  s          r  r  r    s{     &&	 
 F  EENEfEEE #UU.JUfUUb!!!r  c                     | j         r`t          j                                        5  t	          || j                  |j        j        |j        <   d d d            d S # 1 swxY w Y   d S d S r'  )	r}  r  r  DisableTorchFunctionSubclassr$  r   tracerreal_value_cacher  )rN  r)  r;  s      r  r  r    s     
y  X2244 	 	8Dr|9 9EL)%*5	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 s   (AA"A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k    r|j        j                            |           |S )Nplaceholder)_wrap_fx_proxyr,  r  r0  _wrap_fx_preexisting_tensorhandle_traced_outputr;  	variablesr   r   r  oprO  rt  record_proxyable_vt)r:  rN  r)  r;  r<  r  outs          r  rE  rE  T  s     )E=-
 
CJ
 
 
M5<	0	0 
)E=-
 
CJ
 
 #2ug}j
 

 	'6'7	
 	

: JM]**
	 44S999Jr  r  c                 B   ddl m} t          |t          j                  sJ dt          |                       t          ||          sJ d|v r-|d         %|j        j                            |d                    |j	        j
        dk    rd|j	        j        v sJ d| d            n)d|j	        j        vsJ |j	        j        d                      t          j        j                                        5  t          |          |j        u rnt#          |||           |j        r]t          j                                        5  t+          ||j                  |j        j        |j	        <   d d d            n# 1 swxY w Y   d	| t0          t2          fv i}d
|v r|d
         J |d
         |d
<   t5          |fd|i|}|j        j        dk    r(t          |          |j        urt9          d|           d d d            n# 1 swxY w Y   t;          | |||||          S )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  r2  r  r;  r  +_disable_saved_tensors_hooks_during_tracingr$   r   r  r}  r  r)  r$  r*  r+  r   r   r  r  rD   construct_tensor_variable)r:  rN  r)  r  r<  r  r  r'  s           r  r/  r/  |  s    =<<<<<fel++  JDLLJJ + b3444447wx0<
	 1222 z}%%%*/111L5LLL 2111 ejo555z/1 655
 
		H	H	J	J " "v&&",66(UF;;;y  X::<<  @LA AEL1%*=               Z"$@ABF w&&78+<+H+HH&x0F83FLLrLVLLF=''''r|;;*G>DG G  ?" " " " " " " " " " " " " " "H %Bv}g  s8   7AH(E9-H9E=	=H E=	A5HH	Hc                    ddl m} t          ||          sJ d|v r-|d         %|j        j                            |d                    d|j        j        vsJ |j        j        d                      t          j	        j
                                        5  t          |j        |d          }d d d            n# 1 swxY w Y   t          ||||||           S )Nr=   r6  r  r;  T)allow_non_graph_fake)r7  r  r,  rO  r  r  r  r  r  r;  r  r8  rv   r0  )r:  rN  r)  r;  r<  r  r  s          r  r.  r.    sF    =<<<<<b3444447wx0<
	 1222%*/111ejoo6V3X111 
		H	H	J	J R R 'uz2DQQQ	R R R R R R R R R R R R R R R  
  s   B::B>B>c                    dd l }dd l}dd l}t          | |j                  rt          |           r?|j        rt          j        s,t          dt          |           dg t          j                   t          |||| ||          }t          |t                    sJ |j        j                            ||t$                     |S t'          |j        j        d          r>|j        j        j        dk    r)t          |j        j        j        |j        j                  s|j        j        |j        j        u r;t9          |j        j                  t          usJ t;          |j        j                  S |j        j        |j        j        u s|j        j        |j        j         u rtC          |           S tE          | |j#                  r2tI          d | D                       rd	 | D             }tK          |fi |S t          | tL          tN          f          rtQ          |j        |            g }	tS          |           D ]\  }
}|%|	*                    tW          j,        d'i |           ,|j-        .                    d
t^          j0        ||
fi           }d|v rIt          | tN                    sJ |d         }|1                                }te          ||
d          |d<   n|}|	*                    tg          d(||||d|           t          | |j#                  rtK          |	|fi |S tE          | tL                    rti          |	fi |S tE          | tN          tj          f          rtm          |	fi |S to          |           sJ dt9          |                        ti          |	|8                    dts                                          } tu          j;        t9          |                     | fd|i|S | |j        j        |j<        u rtW          j,        d'i |S t          | |j=        |j>        |j?        f          rI|j        j@        A                    | |           tQ          |j        |            t          j,        ||| fi |S t          | |jC                  r|j        j        t          u s$|j        j        d t                      D             v rKtQ          |j        |            d }|j        j        t          u r|j        jF        d         }t          || |fi |S t          | |jH                  r|j        j        t          u s$|j        j        d t                      D             v rKd }|j        j        t          u r|j        jF        d         }tQ          |j        |            t          || |fi |S t          jK        |j        j                  rt          |j        j        |jH                  s$|j        j        d t                      D             v r$tQ          |j        |            t          || d fi |S |j        j        dk    r2|j        jM        dk    r"tQ          |j        |            tW          | fi |S | Yt          | |jH                  rD|j        j        dk    r4|j        jM        dk    r$tQ          |j        |            t          || d fi |S t          | t                    r|j        j        |jO        |jP        |jQ        t          t^          j0        |jS        jT        |jU        t^          jV        |jW        jX        jY        |jW        jZ        j[        |jW        jZ        j\        t          |j]        dt                    t          |j]        dt                    |j_        fv s |j        jM        dk    r7|j        j        dk    r'tQ          |j        |            tW          j,        | fi |S t          | |j`        j        ja                  r$ddlbmc} tQ          |j        |             ||fi |S t          | t                    r|j        j        |j        je        |j        jW        jf        |j`        j        jg        |j`        j        jh        |j`        j        ji        |j        jj        |j        jk        |j        jl        |j        jm        |j        jn        |j        jo        dgtO          t          jq                              z   v r'tQ          |j        |            tW          j,        | fi |S t          | t          t          t          f          rm|j        j        t          u s3|j        j        t          u s |j        jM        dk    r7|j        j        d k    r'tQ          |j        |            tW          j,        | fi |S t          | t                    s|j        j        d!v r'tQ          |j        |            tW          j,        | fi |S t          | |ju        jv        jw                  rt          j,        ||           S t          t9          |                     rpt          t9          |                     rt          j,        | |           S |ju        jv        {                    |j        j|        |           }t          j,        ||          S t          d"d#t          |            d$|j        jM         d%|j        j         d&g            d S ))Nr   z4Attempted to wrap sparse Tensor with VariableTrackerzBtorch.compile does not support sparse Tensors with VariableTrackerr  )mutation_type_clsr  	set_statec              3   @   K   | ]}t          |t                    V  d S r'  )r,  r  r!  s     r  r_  z'handle_traced_output.<locals>.<genexpr>!  s=       3 3 
1c3 3 3 3 3 3r  c                 6    g | ]}t          j        |          S r  r7  r!  s     r  r  z(handle_traced_output.<locals>.<listcomp>$  s$    CCC!(++CCCr  rR  )kindtargetr/  r'  r  Fr=  )r:  rN  r)  r;  z)expected namedtuple or structseq but got r  r  r  c                 "    g | ]\  }}|j         S r  current_streamr]  rX  device_interfaces      r  r  z(handle_traced_output.<locals>.<listcomp>p  0       A 	'  r  c                 "    g | ]\  }}|j         S r  rE  rG  s      r  r  z(handle_traced_output.<locals>.<listcomp>}  rI  r  c                 "    g | ]\  }}|j         S r  )r  rG  s      r  r  z(handle_traced_output.<locals>.<listcomp>  s0       A 	  r  queryr
  record_eventget_rankget_world_size
bit_lengthr   r   
is_integerr5  )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  )~torch._functorch.vmaptorch._subclasses.fake_tensortorch._utilsr,  r0  r%   r}  r>   r  rF   rB  r?   r  r9  r   rO  rw  
_track_objr   r  r  rB  r  r6  r  	Generatorr  set_rng_stater  r   _DisableFuncTorchr  _is_in_bad_forkr   r   r  r  r   r  r  r   r}  r  r   r  r*  r  operatorgetitemrU  r[   rE  r   r6   r   r~   r}  r   r   rs  manual_seedr   SymFloatr  rt  track_produced_symintsr   r  r   rC   r/  r   r  r   rZ  r[  r  r2  r  sym_intsym_maxsym_minr  _utils_element_sizeseedmodr  vmap_validate_and_get_batch_sizepredispatch_vmap_increment_nesting_vmap_decrement_nestingr  r  _constrain_as_sizebackends
SDPAParamssdpar   r@   _are_functorch_transforms_activeis_batchedtensoris_flash_attention_availablecan_use_flash_attentioncan_use_efficient_attention_get_cudnn_sdp_enabled_get_flash_sdp_enabled_get_mem_efficient_sdp_enabled_get_math_sdp_enabled_get_overrideable_sdp_enabled_is_autocast_availabler   r  r  r   r   r  r  r  r   r   r   r  r   r   )r;  rN  r)  r  r<  r:  r  r  sizesunpackedr  r
  proxy_ir  	options_ir  r  r   r*  s                      r  r0  r0    s    !   ((((-.. B
 '' 			!'!>	 NM**`8)78	    (E=-
 
 #/////
	))3*> 	* 	
 	
 	
 

!:..d
J&+55uz(1583EFF 6 : :::EJ%&&c1111+EJ,=>>>
UX777:
 :::(777	uz	*	* U
s 3 3$13 3 3 0 0 U
 DC]CCCE--W---	ME4=	1	1 P
%*m444.. (	 (	FAs{$+<<G<<     ,33(#+	 4   w&& &mT:::::$X.F 'I*7#',+ + +Ih'' !(I % #-%&)  $ 
 
 
 
 mUZ00 	  %;;7;;;M5)) 	 55W555MD.#9:: 	44G444 //  QD<O<OQQ / %%kk/;K;M;MNN  H L+6tM7J7JKK !   
 
	%*"3u7H"H"H&77w777	MEL%.%-#P	Q	Q M

	 77uMMM%*m444%b%JJ'JJJ=%,//I
J!===		  #C#E#E   
 
 	%*m444: <<<JOA&Ee]EEEWEEE=%+..|
J!===		  #C#E#E   
 
 : <<<JOA&E%*m444UM5DDGDDD
)**o
uz(%+66o
 
	  #C#E#E   
 
 	%*m444UM4CC7CCC		g	%	%%*-=*H*H%*m44499999!}ek22 	"J//JM]**%*m444UM4CC7CCC	M3	'	' [

MMML&JL!>(@(@E%z8<<E%'7BB $#
	
 	
, JM]**uz/@L/P/P 	%*m444&}@@@@@	M5>#6#A	B	B ?
,,,,,,%*m444!!%337333	M4	(	( :

H5H0N<N7N;H+H+H3H*H2H+
 38::
;
;<	< 	<" 	%*m444&}@@@@@	MC#5	6	6 &

^++:
**JM]**uz/@F/J/J%*m444&}@@@@@	M5	)	) 
UZ->BV-V-V%*m444&}@@@@@	M5>#E#V	W	W 
 )/
 
 	
 
]++	,	, 
] 3 344 	,3    .<NNI
 
 )/
 
 	

 	4u7=+A+Auuuubgblbsuuo		
 	
 	
 	
 	
 	
r  c                     t          |           t          j        t          j        j        t          j        j        j        t          j        j        j	        fv st          |           rd S t          |           S r'  )r  r  r0  ry  r  rA  r!  r!   r  r  r9   r2  s    r  r  r    sd    E{{%0+<	  
 
'u	-	-. tE{{r  c                    |                      |          }t          |t          j        j        j                  r|j        |j        u rx|r|}nnt          |t          j        j                  rt          j        j        }n=t          |t          j        j	                  rt          j        j	        }nt          j
        }||d<   |S )N
class_type)
specializer,  r  rA  r!  r!   r   ry  r  r  r0  )r:  rN  r;  r<  specialized_propstensor_types         r  get_specialized_propsr    s     #--m<< 	=%"3"?"JKK6#r|33 	''KKux'9:: 	'(,KKux77 	'(/KK,K*5,'r  c                    t          ||j                  }t          |j        |           |j        j        dk    r |j        j                            ||           |                    t          | |||                      | |fi |S )z
    Actually construct a tensor variable after all the pre-processing from
    wrapping a pre-existing or newly created tensor value.
    r-  )
r$  r   r   r  r2  rO  rt  r_  r  r  )r:  rN  r)  r;  r<  r  s         r  r9  r9  /  s     !==Mej-000
 z}%%
	 77uMMMNN(RVVWWW:e''w'''r  c                      t           j        dk    rt          j        S t           j        dk    rt          j        S t          dt           j                   )Ndynamicunbackedz+invalid automatic_dynamic_shapes_mark_as = )r>    automatic_dynamic_shapes_mark_asr.   r  r  r  r  r  r  r  r  K  sP    .);;!!		0J	>	>""c&:acc
 
 	
r  _DYNAMIC_SOURCES_DYNAMIC_SOURCES_CONFIG_HASHc                     t          t          j        j        j                  } t
          t          | k    rt
          S d t          j        j        j                            dd                              d          D             a| at
          S )Nc                     h | ]}||S r  r  r]  ss     r  	<setcomp>z&get_dynamic_sources.<locals>.<setcomp>d  s.       	  r   r  ,)	hashr  compilerr>   dynamic_sourcesr  r  replacesplitcurrent_hashs    r  get_dynamic_sourcesr  Z  s     -=>>L #(D(T(T &6>>sBGGMMcRR  
 $0 r  source_namec                     t                      }|D ]<}|| k    st          j        ||           rt                              d| |            dS =dS )NzA%s was marked dynamic due to dynamic source allowlist pattern: %sTF)r  r  matchr  r  )r  r  patterns      r  r  r  n  sl    )++O"  k!!RXg{%C%C!IIS  
 44 " 5r  r$  r  c           
      8   |                                 }t          |          s|                                |                                }d g|z  }fdt	          |          D             }|                    t                     i }|D ]M\  }}	|	 }
|                    ||          ||
<   |                    |||
         z  t          |
                     Nng }t          | |t          j        t          |          t          |                              S )Nc                 &    g | ]}|         | fS r  r  )r]  r  	ex_strides     r  r  z,record_automatic_dynamic.<locals>.<listcomp>  s$    :::!IaL1"%:::r  )r  )sizer%   stridedimr  sortr-   r}  
setdefaultrM   rN   rL   make_tensorr  )rN  r$  r  ex_sizer  r  pending
candidatesi_strideneg_ir  r  s              @r  record_automatic_dynamicr  {  s    ffhhG HHJJ	eegg#::::uSzz:::/000
& 	I 	IOHeA"x::F1I!!(WQZ"7QHHHH	I $
'gfFF  r  _UNBACKED_SOURCES_UNBACKED_SOURCES_CONFIG_HASHc                     t          t          j        j        j                  } t
          t          | k    rt
          S d t          j        j        j                            dd                              d          D             a| at
          S )Nc                     h | ]}||S r  r  r  s     r  r  z'get_unbacked_sources.<locals>.<setcomp>  s.       	  r  r  r  r  )	r  r  r  r>   unbacked_sourcesr  r  r  r  r  s    r  get_unbacked_sourcesr    s     ->??L $)F,)V)V   &7??RHHNNsSS  
 %1!r  c                     t                      }|D ]<}|| k    st          j        ||           rt                              d| |            dS =dS )NzC%s was marked unbacked due to unbacked source allowlist pattern: %sTF)r  r  r  r  r  )r  r  r  s      r  r  r    sm    +--#  k!!RXg{%C%C!IIU  
 44 " 5r  Fr  static_shapes
outer_onlyc                 |  ./0 | j         r<t          | t          j        j        j        j                  st          dddg            |j        }|j	        j
        j                            | d           }|r|j        ni }d }|                                 r't          |d          }	t!          | j        ||	|          }t%          |           r
|st!          | |||d          }
t          |
t&                    sJ i }t)          |                               |           \  }}|D ]}}t-          | |          xxt          j        d x*\   } t          ||          }t!          ||||          ||<   L  xt0          d x\    ] }t3          d	t)          |                     t5          |
j        |
j        |
j        |
j        ||
j        |
j        |
          S |rtA          |          st'          tB          j"        g| #                                z  tB          j$        g| #                                z  d g| #                                z  d g| #                                z  |||          S ddl%m&0 tO          0fd| (                                D                       r~t'          d | (                                D             tB          j$        g| #                                z  d g| #                                z  d g| #                                z  |||          S tS          |||           }tU          |           }i .dtV          dddtX          dd f.fd}ddl-m.} |j	        j/        G|j	        j/        D ]:}t          ||          r|j0        |k    r ||j#        |j1        |j                   ;g }g }g }g }g }te          | #                                          D ]//t-          | dtg                                v }/t-          | dtg                                v }/t-          | dtg                                v }/t-          | dtg                                v }/t-          | dtg                                v } |4                    t-          | di                               /g                      tk          |j                  }!|}	t          |	tl                    r|	7                                }	|sLt          |	tp                    r|	j9        tu          |	j9                                      |!/di          /         rZtv          <                    d|           tz          g| #                                z  }"t|          |"/<   |t          j@        |"          z  }t          jB        o|C                    /          }#t          jB        o|D                    /          }$tA          |          rtv          <                    d |           d}#t          |          rtv          <                    d!|           d}#|#p|$}%.                    /          }|d }&d }'|rt          jF        sd }'t          | d"          rq/fd#| jH        D             I                                }(|(jJ        |(jK        t          d$          }&ndd%l%mM})  |)t          |(jJ        |(jK        &          d'          }&nt          d$          }&n|rt          d$          }&n| s7|%r5t          d(d           |#rt          d$          }&|$rt          d$          }'nF| st          jB        st          d(d           d }&d }'n#|\  }&}*d }'| d)/ d*}+|*|j	        jP        jQ        |+<   |4                    |&           |4                    |'           |st          |          rtB          jR        },np|&'|s%|s# 0| (                                /                   r|%rt                      },n6tB          jT        },n)|st          jU        s| rtB          j"        },ntB          jV        },|'tB          jT        }-ntB          j$        }-|4                    |,           |4                    |-           t'          ||||||||t-          | d+d           t-          | d,d           |jW        -          S ).NzGEncountered strided NestedTensor in automatic dynamic dim determinationr  r  r  r  T)r  r  z#expected Tensor or OpaqueBase, got )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   Z   K   | ]%}t          |t                    o |           V  &d S r'  )r,  r   )r]  r  r  s     r  r_  z%_automatic_dynamic.<locals>.<genexpr>  s?      
L
La:a  9q)9)9%9
L
L
L
L
L
Lr  c                 h    g | ]/}t          |t                    rt          j        nt          j        0S r  )r,  r   r.   r  r  r  s     r  r  z&_automatic_dynamic.<locals>.<listcomp>  sB        '1F&;&;R
""AR  r  r  constraint_rangeStrictMinMaxConstraintr$  r	  c                     | v r8ddl m} |          \  }} ||j        |j        z  d          }|p|}||f| <   d S ||f| <   d S )Nr   r  Fvrrb  )%torch.fx.experimental.symbolic_shapesr  r  )	r  r  r$  r  old_constraint_rangeold_namenew_constraint_rangenew_namedim2constraints	           r  update_dim2constraintz1_automatic_dynamic.<locals>.update_dim2constraint)  s     .  TTTTTT-;C-@* (#9#9#&)=)@@$ $ $   '4H"6"@N3"2D"8N3r  )_RelaxedConstraint_dynamo_strict_unbacked_indices_dynamo_unbacked_indices_dynamo_dynamic_indices_dynamo_weak_dynamic_indices_dynamo_static_indices_specialize_onFz#automatic dynamic %s marked dynamic)r  r  r  _dynamo_dynamic_rangec                 *    g | ]}|j         k    |S r  )r  )r]  drr  s     r  r  z&_automatic_dynamic.<locals>.<listcomp>  s'     ! ! !!!r  ra  r  )lowerupperr  r  z.size()[]_dynamo_shape_ids_dynamo_unbacked_bounds)r  r  r  r  specialize_onr  r  r  	shape_idsunbacked_boundsexcluded_sizes)Xr  r,  r  r  r  r  r  rF   r$  rO  tracing_contexttensor_to_contextr}  r  r  rQ   _automatic_dynamicr  r9   r0   r  r  r  r0  r   r  r1   r  r  r  r  r  r  r.   r  r  INFER_STRIDEr  r  r{  r  r  r\  r  rB  r  r  export_constraintst_idr  r  rz  r  r)   rS   r  rd   rd  r  r  r  rK   rJ   rL   	make_sizer>   r  is_size_dynamicis_stride_dynamicr  allow_ignore_mark_dynamicr  r  popminmaxr/   r  r;   r   r  source_name_to_debug_namer  r  r  r  DUCKr  )1r  rN  r  r  r  r$  prior_policyr  r  r  outer_contextr  r  rX  r  r  r  
unexpectedr  r  r  r  rc  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	dim_ranger  name_dim_namedynamic_sizedynamic_strider  r  r  s1                                                 @@@r  r  r    s1
    	{ 
:	5<!/<  
 	]M		
 	
 	
 	
 ;D9,>BB1dKKL<HP88b (
 15zz|| X 11.qwKWW$Q'' !

 !
*r6=T
 
 
 -)@AAAAA 77--a00q 	 	D!T""22U\^^^^^^^#-fd#;#;L+=#R}, ,N4(( 32
 "Z\\\\\\ "(Pd:>N>NPP   ''5)9*;,?/'50=0a)	
 	
 	
 		
  	
.t44 	
&%,-7'45?"Vaeegg- $v// 0S
 
 
 	
 DCCCCC

L
L
L
L16688
L
L
LLL 
&    (45?"Vaeegg- $v// 0S
 
 
 	
 1T1== a55DN99$<9DG9	9 9 9 9 9 9$ ?>>>>>	y#/)6 	 	J*&899 $&&%%NJ$?   MOM15577^^ E/ E/!"g0#%%'
 '
 "
 wq*DceeLLLga)BCEEJJJ71.Lcee#T#TTWQ(@#%%HHHWQ(8"==AA!RHHIII
 "7v{!C!Ck=11 	1%..00K 	O{K00	O$0[)**../E5zRRSTU 1 II;TBBB#quuww.I'IaL!4!>I!N!N!NN +T0A0Q0QRS0T0T 	 +V0A0S0STU0V0V 	! T"" 	*II>EEE%)"d## 	*II?FFF%)"2N6N
 $''**
"O $  )f&F  )$(!1566 O! ! ! !%&%<! ! !cee  !},1F*AE*R*R*R      +A*@*imTTT&++ + +
 '>&N&N&NOO' )"9E"J"J"J" 
)'8 
) A4HHH) N&=&M&M&MO+ P(?$(O(O(O%$ NV-L N#$EuMMM"&$(!!%/"OU $,,,,,HFKBI9(C000!!"3444 	+066 	+%.LL' (" ( }QVVXXa[)) ( ! 2CEE)1 	+f= 	+ 	+%,LL &?L('/NN'4N\***~...."#')-#+,O!0$77#<dCC(7   r  )parent_contextr"  r  c                   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)r  rN  r  r"  r  rm  s         r  r  r    s     ,..C
3r&In
 
 
 		*LLLNNS 	
LLL	*LLLNNS 	
LLLLLLs   A 0Bc          
      N    t                     t          j        t          j        j        t
          fv s*t           t          j                  st                     rDJ t           |          \  }}|st           |          n+t          t                    sJ j        }|j        |         t                              dj        t!           j                  t                                t%                      5  j        J t)           fd          }d d d            n# 1 swxY w Y   xt          |t
                    rc|j        x}	Zt          t,                    rj        }
nt1                    }
j        j                            t9          |	|
                     t          |          rx|                                \  }}|D ]^}t=          ||          }t=           |          }t          |          }t?          ||t          |t          j                             _j        j         j!         <   tE          |          r|j#        r|$                                n|%                                }|&                                d|j'        z  |&                                |(                                dj        j)        <   n6|&                                |(                                dj        j)        <   |r|r*                                sotW                    s`j        j                            t9          |                     j        j,        t[                                                             |S  S )N)r  zwrap_to_fake %s %s %s %sc                  >    j                                        S )N)r  symbolic_context)r   r  )r  r  r  rN  s   r  rM  z6_wrap_to_fake_tensor_and_record_impl.<locals>.<lambda>)  s'    00!%5 1   r  r  )r   )r  r  values_sizevalues_stride)r  r  ).r  r  r0  ry  r  r!   r,  r9   r   r  rQ   r^  r  r  r  r$  r  shaper   r   r   	item_memorZ   r  rR   rO  r  r  r4   r  r  r  r  r  r%   	is_sparse_valuesvaluesr  ndimr  input_source_to_sizes_stridesr  r]   tracked_fakes_id_to_sourcer\  )r  rN  r  r"  r  r  _reasoninner_context_namefake_esym_valitem_sourcer  rX  r  
fake_innerinnerr  r  r  s   ```               @r  r	  r	    s    	QEL%("4jAAAa&& 	B(++ 	B !!!!? "
 "
 "
w  	Q1!ROO fj11111!'-<=OP		&K!'NNGG	
 	
 	
 &'' 	 	<+++(       F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 6:.. ",,9 &"344 ;$k26::I#**G[2BCC   )00 	0022HE1 
 
$VT22
4(()&$77.'(U\BB#3     :J	!3A6   	 *0)9NV^^%%%v}}F ,%{{}}!'? ?BI3F;;  --//? ?BI3F; 	G"	G'-'F'F'H'H	G 'v..	G
 I#**FF,<==   I0A7>>vFFFs   
D55D9<D9c            
       J   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dS )r+  a  
    Like builder, but stateless and does not require a source. Useful for simple type->VT objects, or objects
    that are being created/evaporated during inlining (ex: consider a locally made list of tensors we then iterate over
    .), such a list should not show up as an artifact from inputs, nor in reconstruction, nor in the graph. However,
    there may be reasons to represent it as a ListVariable internally.

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

    NOTE - This class is very new! It will have some rough edges, but it was created to stem the bleeding of giant
    if/else type->VariableTracker trees that were cropping up all over dynamo.
    r	  Nc                      t          d          )NzUse SourcelessBuilder.create()r  r1  s    r  rH  zSourcelessBuilder.__init__}  s    =>>>r  rN  r  r%  .c                     d S r'  r  rN  r%  s     r  r  zSourcelessBuilder.create  s	     #r  c                     d S r'  r  r#  s     r  r  zSourcelessBuilder.create  s    SVSVr  c                     d S r'  r  r#  s     r  r  zSourcelessBuilder.create  s	     r  c                     d S r'  r  r#  s     r  r  zSourcelessBuilder.create  s	     3r  c                     d S r'  r  r#  s     r  r  zSourcelessBuilder.create  s    PSPSr  c                     t                    }t          j                            |          }|r |           S t	          t
                    rS t          t                              r/t	          t          j                  st          j
                  S t          t                              rDt          j        j                             j        j                  }t          j
        |          S t	          t$          j                  rt)                    S t+          j                  rt+          j
                  S t/                    rQt1          j                  =t1          j                  rd j        _         t1          j                            S t/                    rZt9          j                  rF t1          j        j                  j                  }t?          |dt                              S tA                    r t1          j!                            S t	          t          j        t          j"        t          j#        j$        j%        f          rt)                    S t	          t           tL          j'        f          rUtQ          t                    t                     r$tQ          tR                    rtU                    S t9                    S t	          tV          j,                  rt[                    S t	          tV          j.                  rt	          j        t           tL          j'        f          rwt_          j        j0        j1                  k    sJ t          
                     j                  }	 |2                     j0        j1                  S # tf          $ r Y nuw xY w j        j4        j5                            tm          j                            }|*t          j7        j8        9                    j0        |          S nt	          t          j:        j;        j<                  rt{                    S t	          t          j>        j?        j@                  rt)                    S t	          t          jB                  rt                    S t	          t          j7        j8        jD        jE                  r	 t+          j
        t                              S # t          j7        jG        jH        t          j:        jI        jJ        jK        f$ r6 t          j
        jM        N                                jO        gi           cY S w xY wt	          t          t          jP        jQ                            r)t          j7        j8        jR        S                              S t	          tV          jT        tV          jU        f          rt                    S t                    rr fdt          t                              D             }t          |t                                }	 t          j\        t                              |	          S t	          t          j]                  rIj^        j_         j        j`        v r1 j        j`        j^        j_                 }
t          j
         |
          S t	          t                    r fddD             }t          |           S t          t                    rt                    S t          d	|jh         d
|ji         d| g t          jk                   d S )NTr  r8  c           	      b    g | ]+}t                               t          |                    ,S r  r+  r  r  )r]  r$  rN  r%  s     r  r  z,SourcelessBuilder.create.<locals>.<listcomp>  sC        "((WUD-A-ABB  r  rC  )r  c           	      b    g | ]+}t                               t          |                    ,S r  r*  )r]  r  rN  r%  s     r  r  z,SourcelessBuilder.create.<locals>.<listcomp>  sC        "((WUA->->??  r  r]  z%Unexpected type in sourceless builderrh  z3SourcelessBuilder.create does not know how to wrap r  )lr  r+  _type_handlersr}  r,  r   r   r  r  r   r  r   r  r  r  r  rO  r   r  _HAS_DEFAULT_FACTORY_CLASSr   r   r  r  rB   r  r  r  r   is_supported_new_methodr6  r   r{   r  r  r  r  r  abcABCMetar  r  r   r  r  r   r  r  r3  r  var_getattrr  rw  id_to_variabler\  r;  r1  UserMethodVariabler~  graph_moduleGraphModuler   r  r'  TreeSpecr  r  r   lazyLazySymNodeFormatStringrB  exc	UserErrorr  symbolic_shapesGuardOnDataDependentSymNoder   fmt_varr  sym_node_varr  flex_attention_backwardhigher_order_ops&FlexAttentionBackwardHighOrderVariableGenericAlias	UnionTyper   r~   r   r   r   r   rs  r   r  r  r  r   r  r   r   r(  r   rF   r  r  r?   
DYNAMO_BUG)rN  r%  
value_typefast_handlerr*  r  
cls_obj_vtobj_vtrO  r  r)  r  s   ``          r  r  zSourcelessBuilder.create  s   %[[
(7;;JGG 	+<E***e_-- n	)L!$u++.. k	)z%7S7S k	),3E5AAA%d5kk22 i	)#n@RR	#U O -3  
 {EFF _	),U333(// ]	)#*5111e__ [	)!<U!C!C!O.u55 C>B	;5;.u55e<<<e__ V	)!9!Q"
 "
 V	)
 >+-en==enMMC"3	4;;GGGG#E** O	),;%e,,U333Y)58+>+LM
 
 L	) -U333ck233 G	)$u++t,, @E=1Q1Q @8???+E222u677 C	)(///u/00 A	)%.4*=>> u~u~/FGG5PPPP.55b%.II
%11"en6MNNN*   D />BB2enCUCUVV% =2EE   & ux4@AA 0	)0777u{2;<< .	),U333rz** ,	)'...u}6;STT *	)'.s5zz::: !+%5Q    ,2M4466'(    	 tE$;$STTUU 	)=*;bb    2EODEE 	)!%(((5!! 	)    -d5kk::  F %V;K;M;MNNNHC+6tE{{CC    uel++	)
29#:::I+EJO<E")"e444u%% 	)    2  E !+++E6"" 	)!%(((;!,HHz/FHHZjZZ1%01		
 	
 	
 	
 	
 	
s%   7O 
O%$O% T& &A'VVc                 X    t          j        |           sJ t          j        |           S )Nr2  )r   r  r  r2  s    r  wrap_constant_literalz'SourcelessBuilder.wrap_constant_literal  s-    *511111&U3333r  r  c                  V   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        j        j        <   d | t          j        j        j        <   d | t          j        j        j        <   d | t          j        j        j        <   dddt>          dt>          fd}t@          j!        D ]}|| |<   | S )Nc                      t          |          S r'  r   r#  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>*  s    ,<U,C,C r  c                 Z     t           fd|D             t                                S )Nc                 (    g | ]} |          S r  r  r]  r"  r  rN  s     r  r  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>,  #    ***qVVB]]***r  rC  )r   r   rN  r%  r  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>+  s:    +*****E***:J:L:L+
 +
 +
 r  c                 Z     t           fd|D             t                                S )Nc                 (    g | ]} |          S r  r  rO  s     r  r  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>/  rP  r  rC  )r   r   rQ  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>.  s;    1C*****E***:J:L:L2
 2
 2
 r  c                      t           fd|                                D             t          |          t                                S )Nc                 D    i | ]\  }} |           |          S r  r  r]  r  r  r  rN  s      r  
<dictcomp>zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<dictcomp>2  s3    DDDdaVVB]]FF2qMMDDDr  rC  )r   r  r  r   rQ  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>1  sL    +<DDDDDekkmmDDDKK*,,,
 ,
 ,
 r  c                 Z     t           fd|D             t                                S )Nc                 (    g | ]} |          S r  r  rO  s     r  r  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>7  rP  r  rC  )r   r   rQ  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>6  s:    <*****E***:J:L:L,
 ,
 ,
 r  c                 >     t           fd|D                       S )Nc                 (    g | ]} |          S r  r  rO  s     r  r  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>:  rP  r  )r   rQ  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>9  s,    M*****E***-
 -
 r  c                 >     t           fd|D                       S )Nc                 (    g | ]} |          S r  r  rO  s     r  r  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>=  rP  r  )r   rQ  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda><  s,    *****E***2
 2
 r  c                      t          t           fd|                                D             t          t	                                          S )Nc                 D    i | ]\  }} |           |          S r  r  rV  s      r  rW  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<dictcomp>F  s3    HHH$!QAr1HHHr  rC  )r   r   r  r  r   rQ  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>D  sS    =QHHHHH%++--HHH.00  >
 >
 r  c                      t          |          S r'  )r   r#  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>L  s    6u== r  c                 <    t          |t                                S NrC  r   r   r#  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>N  s"    8Q!1!3!39
 9
 9
 r  c                     t                      S r'  )r   r#  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>Q  s    4G4I4I r  c                      t          |          S r'  )r   r#  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>R  s    7KE7R7R r  c                 <    t          |t                                S rb  )r   r   r#  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>T  s"    ;Q!1!3!3<
 <
 <
 r  c                 <    t          |t                                S rb  )r   r   r#  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>X  s"    :%5%7%7   r  c                 <    t          |t                                S rb  rc  r#  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>^  "    7%5%7%7   r  c                 <    t          |t                                S rb  rc  r#  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>c  ri  r  c                 <    t          |t                                S rb  rc  r#  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>h  ri  r  rN  r  r%  r	  c                     |S r'  r  r#  s     r  passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthroughm  s    Lr  )"r+  r  rs   rz  r8   r  r  r  r  r  r  ru  r5   r6   r  r  r  rZ  r  r  r  r   r  r  r  r  distributionsconstraints_Real	_Interval
Constraintr  r   all_subclasses)handlersr  rm  r  r  s       @r  make_type_handlersz$SourcelessBuilder.make_type_handlers!  sF    #)  	 ' 	D 	DACCHQKK
 
 
 
 
  
  
  

 
 
 


 
 
 

 
 
 
 
  
  
  
 -5TN()#+D> #+D> ,
 ,
 ,
 ,
'( >= 	+,'
 '
"# #J"I%R%R!"*
 *
%&  	!-BC  	$067  	$0:;  	$0;<	3 	A 	! 	 	 	 	 '5 	( 	(C'HSMMr  r=  )r  r  r  r  rH  r	   r  r  rz  r   r  r  r  r   r  r   r   r@  r  r  rB  r   r   r(  rJ  r   ru  r  r  r  r+  r+  p  so       
 
? ? ? ? 'CH~
tCH~

uS#X
  tCy/ 
   \ X V.VtCyV\VVV \ XV'05c3h	   \ X '04s
U0BS0H	   \ X S.SsSSSS \ XS{
. {
s {
 {
 {
 {
 \{
z 4V 4 4 4 4 \4 Ph/5FGG! P P P \P P Pr  r+  c                   >    e Zd ZdZd	dZedddedefd            ZdS )
"SourcelessUserDefinedObjectBuilderz
    SourceLessBuilder does not return a UserDefinedObjectVariable, but in some
    cases it might be ok to return UserDefinedObjects. In such case, use this
    builder.
    r	  Nc                      t          d          )Nz/Use SourcelessUserDefinedObjectBuilder.create()r!  r1  s    r  rH  z+SourcelessUserDefinedObjectBuilder.__init__  s    NOOOr  rN  r  r%  c                 6   t          |          }t          |t                    rt          |t	                                S t          |t          j        j                  rt          |t	                                S t          |t	                                S rb  )r  r  r   r   r   r,  r  ry  rz  r   r   )rN  r%  rE  s      r  r  z)SourcelessUserDefinedObjectBuilder.create  s    %[[
j.11 	V)%?O?Q?QRRRRux// 	V0%5%7%7    -UBRBTBTUUUUr  r=  )	r  r  r  r  rH  r  r   r   r  r  r  r  rw  rw  x  su         P P P P 	V* 	V3 	V? 	V 	V 	V \	V 	V 	Vr  rw  r  r'  )F(  r  r/  r  r  rU  r  r  r  rZ  r  r  r  r[  r  r  r  rh  r  r  collections.abcr   r   r   typingr   r   r   r	   r
   r   r  r  r   torch._dispatch.pythonr   #torch._dynamo.graph_bytecode_inputsr   r   r   torch._dynamo.utilsr   r   r   r   r   torch._guardsr   "torch._higher_order_ops.flat_applyr   !torch._higher_order_ops.torchbindr   torch._library.opaque_objectr   r   r   r   torch._opaque_baser   
torch._opsr   r   r    rT  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/   r0   r1   r2   r3   r4   torch.fx.immutable_collectionsr5   r6    torch.nn.utils._expanded_weightsr7   torch.utils._ordered_setr8   torch.utils._python_dispatchr9   r:   torch.utils._sympy.value_rangesr;   torch.utils.weakr<   r  r>   r?   r@   rA   rB   rH  rC   r9  rD   rE   rF   r  rG   rH   rI   pgorJ   rK   rL   rM   rN   rw  rO   r  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   rl   rm   rn   r  ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   builtinr   constantr   ctx_managerr   r   r   r   r   r   dictsr   r   r   r   r  r   	functionsr   r   r   r   r   r   r   r   r   r   r   r@  r   r   iterr   r   r7  r   r   listsr   r   r   r   r   r   r   r   miscr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	nn_moduler   r   r   	optimizerr   script_objectr   r   ro  r   setsr   r   r   r   streamsr   r   r   r  r   r   r   r   r   r   r   r   r   r   torch_functionr   r   r   r.  r   r   r   r   r   r   r   r   r   r   r   r   r   r   numpyr   ModuleNotFoundErrorr?  torch._dynamo.codegenr  torch._dynamo.symbolic_convertr  r  	getLoggerr  r  r  getArtifactLoggerrd  r  r  r  r  DimListr(  r@  r  r  	dataclassr  rE  r~  varsr  r`  r  rz  ra  ry  rz  r  r  r  r  rc  r  r$  r  r  r  rE  r~  Proxyr0  r/  r.  r  rB  r0  r  r  r9  r  r  r  r  r  r  r  r  r  r  r  r  r	  r+  ru  r,  rw  r  r  r  <module>r     s    & 


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



    4 4 4 4 4 4 4 4       L L L L L L L L L L L L L L L L         ; ; ; ; ; ;         
              ) ( ( ( ( ( 9 9 9 9 9 9 < < < < < <            * ) ) ) ) ) H H H H H H H H H H            B A A A A A A A 1 1 1 1 1 1 ? ? ? ? ? ? A A A A A A E E E E E E E E
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 J I I I I I I I ; ; ; ; ; ; / / / / / /        8 7 7 7 7 7 * * * * * * T T T T T T T T T T T T T T ? ? ? ? ? ? S S S S S S S S S S A A A A A A A A A A              ' & & & & &                                                                                                                                   B! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !D                  % $ $ $ $ $ & & & & & &                           0 / / / / /                                 ; : : : : : : : ; ; ; ; ; ; ; ;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                                                   4         
 ) ( ( ( ( ( O O O O O O O O $ $ $ $ $ $            J I I I I I I I I I                                   
                               $   B
  //////        g!!N44'        
 gm$$GCLL
"V " " " " "
	 	 	 	 	 	 	 	 G9 G9 G9 G9 G9 G9 G9 G9T< < < < <H < < <, &/Y / /Y--/// / / & & IcN    +.#%% s3x / / /
 "'!> $)HO$D !E( E( E( E( E( E( E( E(PP O          0 (= #    * !%!%	 # : $;	
     2
#
,/
@C
	
 
 
 
z !%!%$ $[!$#$ $ :	$
 $;$ $ $ $ $ $Z "&D D[!D#D 8>D L	D
 $;D D D D D DX !%!%   [! #  8>  :	 
 $;           HN
N
#N
 8>N
 #s(^	N

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

 
 $J
 	
 
 
 
2 "&v v v
v#v TM	v
 v $Jv 	v v v vrB B B B B B B BJ $5#G#G#I#I   V V V V V V V V V Vs   $N+ +N=<N=