
    /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mZ ddlZddl Z ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z& dd	l'm(Z(m)Z)m*Z*m+Z+ dd
l,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZAmBZB ddlCmDZD ddlEmFZF ddlGmHZH ddlImJZJmKZK ddlLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZU ddlVmWZWmXZX ddlYmZZZ ddl[m\Z\ ddl]m^Z^m_Z_ ddl`maZa ddlbmcZc ddldmeZemfZfmgZgmhZhmiZi ddljmkZk ddllmmZmmnZnmoZo dd lpmqZqmrZrmsZs dd!ltmuZumvZvmwZwmxZxmyZy dd"lzm{Z{ dd#l|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ dd$lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d%d&lmZmZmZmZmZmZ d%d'lmZ d%d(lmZmZ d%d)lmZmZmZmZmZ d%d*lmZmZmZmZmZmZmZmZ d%d+lmZmZmZmZmZ d%d,lmZmZmZmZmZmZmZmZmZmZmZmZmZ d%d-lmZmZ d%d.lmZ d%d/lmZmZ d%d0lmZmZmZmZmZmZmZmZmZ d%d1lmZmZm Z mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d%d2lmZmZmZ d%d3lmZ d%d4lmZmZ d%d5lmZ d%d6l m!Z!m"Z"m#Z# d%d7l$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d%d8l m+Z+m,Z,m-Z-m.Z. d%d9l/m0Z0m1Z1m2Z2 d%d:l3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA 	 ddlBZCn# eD$ r dZCeeEd;<   Y nw xY werdd<lFmGZG dd=lHmIZImJZJ  e
jK        eL          ZMe jN        O                    eLd>          ZPdd?lmQZQ  eQd@          ZR eQdA          ZSeTZUdBeVdCeWfdDZX G dE dF          ZYejZ         G dG dH                      Z[ G dI dJe[          Z\ e]dK  e^e	          _                                D                       Z`e]ea         eEdL<    eb            Zcebea         eEdM<   e jd        je        jf        Zge jd        je        jh        Zi G dN dO          ZjdPedCefdQZkdRedSe=dz  dCefdTZl	 	 ddUdVdWedXedz  dYemdz  dZedCefd[ZndUdVdWedXedCdfd\Zo	 	 dd]emeR         dUdVdWedXedz  dYemdz  dZedCeRfd^Zp	 dd]emeR         dUdVdWe jq        jr        d_e js        dYemdz  dZedCeRfd`Zt	 	 dd]emeR         dUdVdWe jq        jr        dXedz  dYemdz  dZedCeRfdaZudXedUdVdWe jq        jr        dZevewef         dYemdz  d]emeR         dCefdbZxdReSdCemeS         dz  fdcZyd]edUdVdXedYemdz  dCevewef         f
ddZzd]emeR         dUdVdWe jq        jr        dXedYemdz  dZevewef         dCeRfdeZ{dCeOfdfZ|da}ebew         dz  eEdg<   da~eadz  eEdh<   dCebew         fdiZdjewdCeWfdkZdUdVdlewdme js        dCewfdnZdaebew         dz  eEdo<   daeadz  eEdp<   dCebew         fdqZdjewdCeWfdrZ	 ddmedUdVdtedueWdveWdCeSfdwZddxdmedUdVdtedz  dyeWdzedz  dCefd{ZddxdmedUdVdtedz  dyeWdzedz  dCe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OptionaloverloadTYPE_CHECKINGUnion)SymInt)enable_python_dispatcher)get_external_object_by_indexregister_user_object)get_metrics_contextis_int_specialization_caseis_torch_symset_feature_use)TracingContext)
flat_apply)call_torchbind)is_opaque_reference_typeis_opaque_typeis_opaque_value_typeshould_hoist)HigherOrderOperator
OpOverloadOpOverloadPacket)
FakeTensorFakeTensorModeis_fakemaybe_get_fake_mode)is_sparse_any	safe_grad)justknobs_check)BackwardState)normalize_source_name)_DynamicScalar
DynamicInt)	_constrain_range_for_size_nested_int_aware_sort
DimDynamicRelaxedUnspecConstraintStatefulSymbolicContextSubclassSymbolicContextSymbolicContextSymIntSymbolicContextTrackedFake)immutable_dictimmutable_list)ExpandedWeight)
OrderedSet)is_traceable_wrapper_subclass"is_traceable_wrapper_subclass_type)ValueRanges)TensorWeakRef   )configgraph_break_hintsmutation_guardreplay_recordtrace_rules) get_registered_device_interfaces)InternalTorchDynamoErrorraise_observed_exceptionunimplemented)GuardBuilderinstall_guardmake_dupe_guard)auto_dynamic
auto_unsetFrameStateSizeEntryInferStrideprocess_automatic_dynamic)SideEffects)AttrProxySource
AttrSourceCallMethodItemSourceChainedSourceConstDictKeySourceConvertIntSourceDictGetItemSourceDictSubclassGetItemSourceDynamicScalarSourceFloatTensorSourceGetItemSource
GradSourceis_constant_sourceis_from_closure_sourceis_from_global_sourceis_from_nonlocal_sourceis_from_optimizer_source&is_from_unspecialized_nn_module_sourceListGetItemSourceLocalSourceNonSerializableSetGetItemSourceNumpyTensorSourceOptimizerSourceRandomValueSourceSkipGuardSourceSourceSubclassAttrListSourceTupleIteratorGetItemSource"UnspecializedBuiltinNNModuleSourceUnspecializedNNModuleSource) _extract_tensor_dictbuild_checkpoint_variablebuild_invoke_subgraph_variableclone_inputcommon_constant_types	dict_keysget_fake_valueget_items_from_dictget_locals_to_stealget_static_address_typeis_frozen_dataclassis_functionis_function_or_wrapperis_invoke_subgraphis_lru_cache_wrapped_functionis_namedtupleis_parameter_freezing	is_typingis_utils_checkpointis_wrapper_or_member_descriptoristypenamedtuple_fieldsodict_valuesproxy_args_kwargsrange_iteratorset_example_valuetensor_always_has_static_shapetuple_iteratortuple_iterator_getitemtuple_iterator_len unwrap_with_attr_name_if_wrapperwrap_fake_exception   )AttributeMutationNewtypestrValueMutationExistingValueMutationNewVariableTrackerVariableTrackerMeta)BuiltinVariable)ConstantVariableEnumVariable)AutocastModeVariableDynamoConfigPatchVariableErrorOnGraphBreakVariableNullContextVariablePreserveVersionContextVariable)ConstDictVariableDefaultDictVariableDictKeySetVariableFrozensetVariableMappingProxyVariableOrderedSetClassVariableOrderedSetVariableSetVariable)DeviceMeshVariablePlacementClassVariablePlacementVariableProcessGroupVariableWorldMetaClassVariable)BuiltinMethodVariableCollectionsNamedTupleFunction!CollectiveFunctionRewriteVariable'CreateTMADescriptorExperimentalVariable!CreateTMADescriptorStableVariableFunctoolsPartialVariableFunctoolsWrapsVariableSysFunctionVariableTritonKernelVariableTritonSetAllocatorSkipVariableUserFunctionVariableUserMethodVariableWrapperUserFunctionVariable)"LocalMapWrappedHigherOrderVariable TorchHigherOrderOperatorVariable)ItertoolsVariable)LazyConstantVariableLazyVariableTracker)	BaseListVariableListIteratorVariableListVariableNamedTupleVariableRangeVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradEngineVariableAutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableConstantLikeVariableDebuggingVariableDelayGraphBreakVariableGetAttrVariableGetSetDescriptorVariableIgnoredFunctionVariableLambdaVariableLoggingLoggerVariableMethodWrapperVariableNumpyDTypeVariableNumpyVariableObjectVariablePythonModuleVariableRandomClassVariableRandomVariableSavedTensorBoxTorchVersionVariableTypingVariableWeakRefVariable)FSDPManagedNNModuleVariable$UnspecializedBuiltinNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)OpaqueObjectClassVariableTorchScriptObjectVariableSDPAParamsVariable)EventVariableStreamContextVariableStreamVariable)NumpyNdarrayVariable$supported_const_comparison_op_valuesSymNodeVariableTensorSubclassVariableTensorVariableUnspecializedPythonVariable)DispatchKeySetVariableFuncTorchInterpreterVariableTorchCtxManagerClassVariableTorchInGraphFunctionVariable)TensorWithTFOverrideVariable#torch_function_mode_stack_state_mgrTorchFunctionModeVariable)FrozenDataClassVariableInspectVariableIntWrapperVariableKeyedJaggedTensorVariableMutableMappingVariableSourcelessGraphModuleVariableUserDefinedClassVariableUserDefinedDictVariableUserDefinedEnumClassVariable!UserDefinedExceptionClassVariableUserDefinedListVariableUserDefinedObjectVariableUserDefinedSetVariableUserDefinedTupleVariablenp)	PyCodegen)InstructionTranslatorInstructionTranslatorBasecudagraph_static_inputs)TypeVarVTTypeAliasTtreturnc                     t           j                            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    d/home/longshao/multi-rider-rag/.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  rg   __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	 d5dddededdf fd	Zd
edefdZ	d
edefdZ
dedefdZdefdZdedef         deeef         dz  fdZedeeedef         f         fd            Zeej        dedeeedef         f         fd                        Zd
e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
e6e7z  de8e9z  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%Z@d
e(defd&ZAd
eBdefd'ZCeDd
e(d(ee(gef         defd)            ZEeDd
eBd(eeBgef         defd*            ZEeD	 d6d
e,e(eBeef         d(ddefd+            ZE	 d6d
e,e(eBeef         d(eFeegef                  defd,ZEd
ej;        ddfd-ZGd
ej;        defd.ZHd
edefd/ZI	 	 d7d
e(d0eJdz  d1eKdz  defd2ZLd
eBdefd3ZMd
edefd4ZN xZOS )8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        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r4t+          |          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  side_effectsrG   r  install_guardsr,  r  nnModuler   set_nn_module_stack_sourcevariable_tracker_cachegetrd  r   _wrapr   r   r@  _can_lift_attrs_to_inputsr   track_object_existingr$  )r*  r%  side_effect_result	dup_guard	cached_vtrp  rr  s          r  rj  zVariableBuilder._call_impl  s   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_source7  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  NotImplementedErrorrF   )r*  r  tmpr  s      @r  ru  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_dispatchC  s    &&v'9:::r  r  c                    t           j        t           j        j        t           j        j        t           j        j        j        f| j        ft          t          t          t          j        t           j        f| j        ft           | j        ft$          | j        ft(          t*          f| j        ft          t.                    | j        ft2          j        | j        ft8          j        | j        ft           j        j         j!        | j"        ft           j#        j$        | j%        ftL          j'        | j(        fg}|r-tR          r&|*                    tR          j+        | j,        f           i }|D ]-\  }}t[          |t                    r|n|fD ]}||vsJ |||<   .|S r'  ).r  r0  rv  	ParameterrA  r   functional_tensorFunctionalTensorwrap_tensortuplelistr   collectionsdequeSizewrap_listliker   wrap_tuple_iteratorr   wrap_range_iteratorslicerangewrap_slice_rangerp   wrap_literalrePatternwrap_regex_patternweakrefReferenceTypewrap_weakrefutilshooksRemovableHandlewrap_removable_handlejitScriptFunctionwrap_jit_functiontypesMappingProxyTypewrap_mapping_proxyr   appendndarraywrap_numpy_ndarrayr,  )r  r  entriesresulttsfnr  s          r  r  z#VariableBuilder._type_dispatch_implG  sv    LH&%0%7H	  lK,=uzJ! S45S45U^S12())3+;<Z/0"C$45[.0IJY%s'<=#S%;<-
2  	A2 	ANNBJ(>?@@@  	 	FB%b%00;RRre  q		 r  c                 ^    |                      t          j                   t          |          S r'  )ru  rE   ID_MATCHr   r*  r%  s     r  r  z"VariableBuilder.wrap_regex_patternq  s'    L1222#E***r  c                     |                      t          j                   t          j        | j        || j                  S Nr5  )ru  rE   
TYPE_MATCHr   buildrN  r  r  s     r  r  zVariableBuilder.wrap_weakrefv  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)rD   r  s     r  r  z%VariableBuilder.wrap_removable_handlez  s4     	Im	
 	
 	
 	
 	
 	
r  c                 n    |                      t          j                   t          |d| j                  S )N_torchdynamo_inliner5  )ru  rE   r  r   r  r  s     r  r  z!VariableBuilder.wrap_jit_function  s:    L3444*(
 
 
 	
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   createrX   r  r   )r  r  key
source_keysource_value	res_valuer*  s         r  build_key_valuez;VariableBuilder.wrap_mapping_proxy.<locals>.build_key_value  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  )ru  rE   r  MAPPING_KEYS_CHECKallrD   keysr   r  r   dictitemsr   r   r  rN  rO  rt  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  ru  rE   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                 f   @AB ddl m}m}m} ddlm}m}  |            rddlm} ddl	m
} n G d d          } G d	 d
          }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                                                      t/                              }| |           S t1          t2          j                  rt+                    t2          j        j        j        t2          j        j        j        t>          fvrdt+                    t@          j!        vrIt+                    j"        t2          j        j"        u stG                    r $                              S tK                    r &                    tN          j(                    fdtS          t+                              D             }tU          | j+        tY                                }t[          |t+                     j+        |          } j.        j/        j0        1                    |          S te          tf          th          j5        th          j6        f          r &                    tN          j7                   tq          d D                       AAs) j.        j/        j9        :                     j+                   dtv          dtv          dtv          dtx          tz          tz          f         fA fdBtg          Bfdt}          t                              D                       }te          th          j5                  r\t           j+        d          }t          |t+                     t           j.        |          jC                   j+                  }n$t          |t+                     j+                  } j.        j/        j0        E                    |          S t1          t2          j        jF                  r G                              S t          jI                  r J                              S t1          t2          jK        jL                  r=t           j+                   } j.        j/        j0        1                    |           |S te          t          t          f          r`t          d! D                       r t          d"d#d$d%gt          jS        &            &                    tN          j7                    &                    tN          j(                   t          }te          t                    rlt           j+        d'          }t          |V                    tN          jW                              j.        j/        j9        :                    |           t          }t                    @ fd(t}          @          D             } || j+                   } j.        j/        j0        1                    |          S te          t                    r\tq          d) D                       rC fd*D             } &                    tN          j[                   t          | j+                   S t1          t          j^        t2          j_        t2          j`        ja        jb        f          r5 &                    tN          jc                   t           j+        +          S t          jf                  r5 &                    tN          jg                   t           j+                   S t                    rdt          fd,t2          ji        j         jj        D                       r5 &                    tN          jc                   t           j+                   S t1          t          jm                  r5 &                    tN          j7                   t           j+                   S t                    rt           j+                   S t                    rt           j+                   S t          jt                  rt          ju         j+                   S t1          t          jw                  rt           x                                d-          } t           j.        |          jy                  }g }t           x                                d.          }t}          jz                  D ]D\  }}|{                     t           j.        t          ||                    |                     Ei }t           x                                d/          }j}        ~                                D ]k\  } }!t          jI        |           s"t          d0d1|  d2g t          j        &            t           j.        t          ||                     |!          || <   lt           x                                V                    tN          j7                  |V                    tN          jW                  |V                    tN          j(                             t          d3d           }"t          ||||"4          S t                    r6 &                    tN          jc                   t	           j+                   S t
          Ct1          t
          j                  r(                     t          j                            S t          j                  rNt
          sJ te          t          j                  rZt          j        j                  r?t          t           j+        d5          V                    tN          j                             nt          j                  r  &                    tN          j                   nt          j                  r  &                    tN          j                   nNt                    r  &                    tN          jc                   n &                    tN          j7                   t'           j+                   S t          j                  r6 &                    tN          jc                   t+           j+                   S t          j                  rt1          t
          j                  ra &                    tN          j7                   t           j+        d6          }#t          |#V                    tN          jc                             n &                    tN          jc                   t1           j+                   S t3          j                  rA &                    tN          j                   t3          j         j.         j+                   S te          t2          j        j        j                  r6 &                    tN          j                   t?           j+                   S t1          t2          j        j        j                  rEd }$	 j        }$n# tD          $ r Y nw xY wg }% j+        V                    tN          j7                  g}&t1          |$tx                    rt           j+        d7          }'|&{                    |'V                    tN          j(                             t}          |$          D ]D\  }}!|%{                     t           j.        t          |'|                    |!                     Et          |&   j.        j/        j0        1                    tG           j+        tI          |%          8                    S t1          t          j                  rte          t          d9d           t2          j        j        j                  rt          d:d;          d<k    rt          j        d<d           k    rt          t           x                                d5          V                    tN          j                             tM          t?          j        t           j+        d9=                     d<          S t1          t2          j`        j                  r6 &                    tN          jc                   tQ           j+                   S t2          ji        j        j        j        u r2 &                    tN          j                   tY           fd>          S t1          |          rt[          j                  S t1          |          rt_          j                  S t                    rjt          j                  Ut          j                  rd? j.        j/        _        t          j                                       j+                   S t
          r0t1          t
          j                  r                               S t1          tn                    rat2          j        j        u rt          d@d;dAg &            &                    tN          j7                   tu          j         j+                   S t1          t2          j        j                  rr &                    tN          jc                   t           j+        dB          }( t           j.        |(          j                  })t          j         j.        |)          S t1          t2          j                  r &                    tN          j7                   t           j+                  }* j.        j/                            dCt          |*fi           }+t          |+j                   t          |+ j+        |*D          } j.        j/        j0        1                    |          S t1          t2          j`        j                  r@ &                    tN          j7                   t          j         j.         j+                  S t1          t2          ja        j        j                  r/ &                    tN          jc                   t                    S t1          t2          j                  r &                    tN          j7                   t           j+                  }* j.        j/                            dCt          |*fi           },t          |,j                   t          |,|* j+                   S te          t          j                  rLt          j        dEd           5 &                    tN          j7                   t           j+                   S t          j                  r[ &                    tN          j7                   t           j+                   } j.        j/        j0        1                    |          S t1          t2          j        j                  rP &                    tN          jc                   t           j+                   _+        t           j+                   S t1          t2          j                  r/ &                    tN          j                   t                    S t          j                  rt           j+                   S t          j                  r6 &                    tN          jc                   t           j+                   S t          j                  r6 &                    tN          j[                   t           j+                   S t          j                  r6 &                    tN          jc                   t           j+                   S t          j                  r6 &                    tN          j[                   t           j+                   S t          u r. &                    tN          jc                   t                      S t/                    t          v rMt/                    t          vr6 &                    tN          j                   t           j+                   S t1          t                    rt1          t                    }-t           j+        |-          }.t/                     j.        j/        j        j        v r* j.        j/        j        j        t/                             }/nc j.        j/        j                            j        |.t          j        F          }0 j.        j/        j                            |0j        |.G          }/ j.        j/        j                            t          j        dHdI j                  t+          |/          |/|.           }1t          |.|/dJd dJ|/K          |1j        j        dL<   |/j        j        }2t1          |2t          j                  sJ |2 dM             j.        j/        j        {                    t          |/|.d                      t          j         j.        |1|/          S t                    rt1          t2          j                  r j+        nt           j+                  }.d }3j                                        rM j.        j/        j                            t          j        j                  |.t          j        N          }3n_t1          t2          j                  r% j.        j/        j                                        }3nt          dOd;dPg t          jS        &           |3J  j.        j/        j                            t          j        dHdI j                  t+          |3          |3|.           }1t          |.|3dJd dJ|3K          |1j        j        dL<   |3j        j        }2t1          |2t          j                  sJ |2 dM             j.        j/        j        {                    t          |3|.d                      t1          t2          j                  r|3n|3dQk    }4t          |1|4          S t1          ||f          r8 &                    tN          jc                   t          d d  j+                   S |	u rt          dQR          S |
u rt          dR          S |j        u rt                      S |u rt                    S t1          t2          j        j        j                  rR &                    tN          jc                   t#          j        j        j        j        g j+        S          S t-          j                  rt          j                  r  &                    tN          j                   n4t          j                  r &                    tN          j                   t-           j+                   S t          j        dTdJ          r7 &                    tN          j7                   t1          dU j+                   S t3                    r7 &                    tN          j7                   t1          dV j+                   S t4          j        u s"t4          j        dWk    r't4          j        u rt=           j+                   S t?                    rNt          j        dXdJ          r7 &                    tN          j7                   t1          dX j+                   S t          j         u r6 &                    tN          jc                   tC           j+                   S th          j"        u r6 &                    tN          jc                   tG           j+                   S t1          t          j$                  rLtK          j&                  r6 &                    tN          jc                   tK           j+                   S tO                    rotP          j)        tP          j*        fv rQ &                    tN          jc                   tM          tW          tP           j+                   j,                  S t?                    r_t[                    \  }5|5t           j+        |5           _+        t          j.                                       j+                   S t^          j0        u r5 &                    tN          jc                   tc           j+                   S te          t^          j0                  rste          j3                  r] &                    tN          j7                   te           j+                   } j.        j/        j0        E                    |           |S t1          t          j4        tj          j6        f          r^ &                    tN          j7                   tq           j+                   } j.        j/        j0        1                    |           |S t1          t          j                  rt1          j        t2          j        jF        t2          j9        j:        j;        f          ru t           j.        t           j+        d9                     j                  }6|6rt1          |6tz                    s
J dY            ty          j        |6 j+                   S t1          t          j=                  rt}                    S t1          t          j?                  rt                    S t          t+                    t*                    rFt          t                    r/ &                    tN          jc                   t                    S t          t+                    t*                    r݉t2          j9        jD        jE        t2          j        jF        t2          j        jG        fv r0t          j.                                       j+                   S t2          j        jH        u r: &                    tN          j                   t          jJ         j.                  S t          t2          j                  rMt2          j        ur?j"        t2          j        j"        u r't                    st           j+                   S t           j+                  s &                    tN          j                   t                    rt           j+                   S t1          t*                    r2t          t          j^                  rt           j+                   S t           j+                   S t          j        t+                              rQddZl+mS}7mT}8 t2          jU        jV        W                              r j.        j/        j                            t          j        dHdI j                  t+                     j+                   }9t           j+        dJd dJ          |9j        j        dL<   t          j        |9 j+                   S t          t+                              r" &                    tN          jY                   n<t          t+                              r@ &                    tN          j7                    &                    tN          j[                   nt#          d[          s \                              S t          j^         t           j.         |8 j+                            _                                `                                                     t          j^         t           j.         |7 j+                            a                                                     t2          jU        jV        b                     j.        j/        jc                  }:t          t+                              r t          t+                              s}9n{ j.        j/        j                            t          j        dHdI j                  t+                    |: j+                   }9t           j+        dJd dJ|:          |9j        j        dL<   t          j        |9|: j+                   S t1          tf          th          j6        f          rt+                    je        tf          je        u rd &                    tN          j7                    &                    tN          j(                    j.        j/        j9        :                     j+                   dtv          dtv          dtv          dtx          tz          tz          f         f fd\Btg          Bfd]t}          t                              D                       }t          |t1          th          j6                  rth          j6        ntf          tY                       j+        ^          };d?|;_f        t          |; j+        _          } j.        j/        j0        1                    |          S t1          tx                    rԉ &                    tN          j7                    &                    tN          j(                    fd`t          tx          i                                        D             }tU          | j+        tY                                }t          | j+        a          } j.        j/        j0        1                    |          S t1          t                    rՉ &                    tN          j7                    &                    tN          j(                    fdbt          t          i                                        D             }t          | j+        tY                                }<t          |< j+        c          } j.        j/        j0        1                    |          S t1          t          t          f          r3 &                    tN          j7                    &                    tN          j(                   t          tf          m                                        @@ fddt          t          i                    @                    D             }t1          t                    rt          }=nt1          t                    sJ t          }= |=| j+        tY                                }>t          |> j+        e          } j.        j/        j0        1                    |          S t          t+                    t                    r[ &                    tN          j7                   t           j+                   } j.        j/        j0        1                    |          S t                    rf &                    tN          j7                   t          j         j.         j+                   } j.        j/        j0        1                    |          S t1          t                    rtq          df D                       r fdgD             }t           x                                V                    tN          j(                   x                                V                    tN          j[                             t          | j+                   S t          dhdidj D              dkdlg&           d S t          j                  r`ddmlvmw}? jx        jx        j        |?jy        k    r z                    j{                  S jx        j        |?j        k    r{t          }                    dn j+        j        t          j                    z                    j{        t          j        t          t          dJo          p          q          S jx        j        |?j        k    r\t          }                    dn j+        j        t          j                    z                    j{        t          j        r          S tE          dsjx                   te          t                    r6 &                    tN          j7                   t           j+                   S  \                              S )uNr   )
has_triton has_triton_experimental_host_tma%has_triton_tensor_descriptor_host_tmar;   )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  getattrrO   r  )r]  r$  r*  r%  s     r  r  z)VariableBuilder._wrap.<locals>.<listcomp>#  sY     - - -
 	 $*E4((%dk488  - - -r  )r  mutation_type)	tuple_clsr  tuple_vtc              3   >   K   | ]}t          j        |          V  d S r'  r  r  s     r  r_  z(VariableBuilder._wrap.<locals>.<genexpr>9  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  rR   r   rT   )
r  r  r  baser  r  r  r  r  r*  s
           r  r  z.VariableBuilder._wrap.<locals>.build_key_valueT  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>g  M        Av1  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  rb   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  r%  r  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  r.  __self__r  r  apply)r^  c                      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  rt  get_ca_final_callbacks_varr1  s   r  rM  z'VariableBuilder._wrap.<locals>.<lambda>s  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  [^a-zA-Z0-9]+rX  F)r"  r#  grapharg is not a basic Symbol.)r;  z!Attempted to wrap unbacked SymIntz+Unbacked SymInt input is not supported yet.r   )rank)target_valuesr  __script_if_tracing_wrapper__original_fn__wrapped__)      r  z"Failed to produce a valid self obj)FlattenScriptObjectSourceScriptObjectQualifiedNameSource__obj_flatten__c                                                      }t          ||           }t          j        ||          }t	          ||          }t          j        ||          }||fS r'  )r  rR   r   r  rU   )	r  r  r  r  r  r  r  r  r*  s	           r  r  z.VariableBuilder._wrap.<locals>.build_key_value  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__rX   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  rM  r`   r  rN  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  rM  rb   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  r[  zUndefined dynamism r=  (  torch.utils._tritonr  r  r  
decoratorsr  r  triton.runtime.autotunerr  triton.runtime.jitr  $triton.tools.experimental_descriptorr  r   triton.tools.tensor_descriptorr  tritonr  r  r  rz  r  r  r\  r,  r  r0  rv  	parameterUninitializedBufferUninitializedParameterr5   r<   nontraceable_tensor_subclasses__torch_dispatch__r7   r  r{   ru  rE   SEQUENCE_LENGTHr   r   r  r   r   rN  rO  rt  r}  r   r  r  defaultdictOrderedDictr  r  guard_on_key_orderaddr   r  r   	enumeraters   rO   r   rc  r  r   r  rw  wrap_moduler   r  r  	overridesTorchFunctionModer   setr6   anyrD   r=   SUPPORTABLEr   rF   r  DICT_KEYS_MATCHr   r  	frozensetEQUALS_MATCHr   enumEnumDispatchKey_C
_functorchTransformTyper  r   r   is_reorderable_logging_functionBUILTIN_MATCHcallabler2  ignore_logging_functionsr   loggingLoggerr   r~   rm   ry   rn   r   should_wrap_in_hopr  	functoolspartialr  r'  r(  r  rX   r)  r  
USER_ERRORrT   r  r   r}   r   r   genericr  asarrayr@   is_numpyr  
MethodTyperZ  
isfunctionr,  r  r[  CLASS_MATCHr   is_numpy_dtyper   is_numpy_type_infoiinfor   r   can_rewriter  autogradfunctionFunctionMetar   FunctionCtxr.  RuntimeErrorr   r   r/  r   _ImperativeEnginer   r3  r4  _exec_final_callbacks_stubr   r   changesr   error_on_graph_breaklookup_callableis_callable_allowed!has_user_defined_allowed_in_graphcreate_with_sourcenumberwrap_unspecialized_primitiver   _higher_order_opsinvoke_subgraphr   makecudaStreamContextr7  r   Streamr   create_proxyr   r   noder   _SDPAParamsr   pyfunctorchFuncTorchInterpreterr   Eventr   
contextlibnullcontextgetattr_staticr   r   is_matching_objectoptim	Optimizerrd   r   DispatchKeySetDISPATCH_KEY_SET_MATCHr   r   is_group_member_typer   is_process_groupr   is_device_meshr   is_placement_typer   is_placementr   r`  ra  r   r(   r)   rV   root_tracerdynamic_scalar_nodes	shape_envcreate_unspecified_symbolrealr,   DYNAMICcreate_symintnodecreate_graph_inputr  subr$  r  metaexprsympySymboltracked_fakesr2   r   r   r   rS   has_hint$create_unspecified_symint_and_symbolintr<  SymBoolcreate_unbacked_symintr   r   r  r   r   ampautocast_modeautocastr   device
fast_dtype_enabled_cache_enabledr   is_matching_clsr   rz   sysexc_infoversion_info	exceptionr   rx   wrapsr   
namedtupler   r  r   is_supported_builtin_methodrw   floatfromhexhexr   r  r   lookuprandomRandomr   r   is_supported_random_objr   r?   DummyModuleMODULE_MATCHr   r  r  TreeSpecr   GetSetDescriptorTyper   MethodWrapperTyper   
issubclassBaseExceptionr   r  BackwardHookr  Buffer _unsafe_preserve_version_counterr   constructorr8   r   r[   r   r   r   r   r   rG  rH  _libraryfake_class_registrytracing_with_realr   CONSTANT_MATCHr   OPAQUE_OBJ_GUARD_FN_MATCHwrap_user_definedr   realize_all_typequalified_namerI  maybe_to_fake_obj	fake_moder   __new__should_reconstruct_allr   r  __len__r   r   r   fromkeysr   r   r   rv   r   rq   r   r   torch.export.dynamic_shapesrW  r[  STATICwrap_symintvallogdebugr1   r-   AUTOr(  r   )Cr*  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  argr)  keywords_sourcer  r  r+  	dt_sourceactual_saved_tensorsr.  r  saved_tensors_sourcestream_source
stream_varindexstream_proxyevent_proxyis_intr  r  symsym_node_proxysym_expr
new_syminttracing_symint	attr_nameself_objrG  rH  proxyfake_script_objr  rP  
set_vt_clsrS  rW  rR  r  r  sC   ``                                                              @@@r  r{  zVariableBuilder._wrap  s<1   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
	
 	
 	
 	
 	
 	
 	
 	

 :<< 		::::::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 ''... G	1 <===- - - - -
 .d5kk::- - -F %{355  H
 (u++{!	  F 7>.DDUFSSSED+"9;;RSTT q	1 7888JJEJJJJJI  C" 155dkBBB&&&#&&78& & & & & & &&     !*+>u+E+E!F!F    F
 e[455 !+DK9J!K!K,KK$LODG^$L$L-% %  ;   +!%[[;   7>.<<UFKKKux// j	1##E***(// h	1$$U+++u@AA f	1+E$+FFFCGN'==eSIIIJEC,-- b	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%% x	1# .
 .
 .
 .
 .
 +
 +
 x	1" JIII5IIIE 9:::$U4;????DIu0%(2E2ST
 
 d	1  5666eDK@@@@>uEE _	1  :;;;$U4;????e__ Z	1 %
 %
 %
 %
"'-"6"O%
 %
 %
 "
 "
 Z	1  5666*5EEEEw~.. T	1 7888(t{CCCC '' Q	1,DK@@@@&& O	11EEEE/B5II M	15;4;OOOOy011 K	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 h	1 5666!{    ^
5"* = =^**2:e+<+<===!%(( ^	1II2eU-.. =%en55 !"4;
;;FF(6   
 '' =##L$<====#E** =##L$>????% =##L$9::::##L$;<<< t{;;;;'.. K	1 5666%eDK@@@@+E22 H	1%** ;##L$;<<<&t{G<<	i22<3HIIJJJJ##L$9:::'dkBBBB.:5AA 	1 :;;;4;{   
 E5>2?@@ x	1 8999+{    u~6BCC r	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.//S	1z400%.2I2V S	1
 z2..'99$???? 4??,,j99DD .   
 #(N%dk*EEE      ux9:: ~
	1 5666)%DDDD}+Fab b  :;;;!      566 m
	1,U];;;GHH k
	1,U-GHHHe__ i
	1!<U!C!C!O.u55 HCG@.u55HHdk I     b
	1Jubi00 b
	144U;;;233 `
	1/???W l	     788838t{SSSSuz788 V
	1 5666&t{H==M@-@@NNJ(/DDDu|,, P
	1 7888(<<E7>66!=x L l/777 eDK5  C 7>.DDUCPPP 466 D
	1 7888%,TWeT[IIIu/;PQQ A
	1 5666/666u{++ ~		1 7888(<<E'.55,	 K k.666 {	    5*011n		1&undCCK 7888&dk::::&9%@@ h		1 7888.uT[IIIF7>.DDUFSSSu{455 c		1 5666)$+66DK$U4;????u344 _		1 CDDD)%000#8?? \		1)%DDDD!2599 Z		1 5666'dkBBBB.u55 W		1 9:::%eDK@@@@#5e<< S		1 5666)%DDDD+E22 O		1 9:::${    j   5666*,,,uII+++5		!>>> 8999$U4;????~.. 	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   "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%   W	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 =>	    )))!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 T	1 5666'{	    ...:BBBB...:BBBB&2224666m##1%888uy6?@@ D	1 5666'L$N(	 {    *9%@@ y	1u%% @##L$<====#E** @##L$>???/dkJJJJ#E+H%PP s	1 7888.t{    +511 n	1 7888.umDKXXXXcl""''ES],B,B&uT[AAAA#E** g	1w/E(%0
 0
 g	1  7888.,T[    io%% 5666)%DDDDk,,, 56660t{KKKK5*
 
 Z	1#?FFZ	1  5666(t{CCCC U	1EemUY-G$G$G 5666"dk:::   $E** O	1?FFE9 $(i@@%e,,??dk @    fm## 5666&dk::::E6=)) B	1n.T/
 /
 B	1  7888#E$+>>>FGN'55eVDDDM  0-2KLMM x	1 9:::){  F
 GN'==eVLLLMu/00 o	1ZNUX_ek.A.JK6
 6
 o	1
4;
 C C  n H  
8_ E E  4 E &{   
 u9:: V	1 ,E222u677 N	1
 )///UT** H	1z%/O/O H	1 56664U;;;UT** D	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$<===e$$ 0;   
 %&& :eTY+G+G 3;   
 ,{    '6tE{{CC N	1        ~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 2EEF+S$)<<KK#;	 F   /7K#/ /

+ -3{    ut[%<=>>r	1U#t|33  7888 <=== GN-11$+>>>
&
&
&#&
&78
& 
& 
& 
& 
& 
&      !*+>u+E+E!F!F    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,3DGU4;WWWF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                 l   |                      t          j                   t          j        |          r$t          |t          | j                            }nt          || j                  }t          j	        t          |                    s|S | j        j        j                            ||          S r  )ru  rE   r  r   r  rf   r  r   rM   "cls_supports_mutation_side_effectsr  rN  rO  rt  r}  )r*  r%  r  s      r  r  z!VariableBuilder.wrap_user_defined*  s    L3444-e44 	J
 %U?4;3O3OPPPFF.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>I  s.      HH$$/55HHHHHHr  c                 6    g | ]}t          j        |          S r  r   r  r(  s     r  r  z1VariableBuilder.wrap_listlike.<locals>.<listcomp>M  s$    !R!R!RD"2"9$"?"?!R!R!Rr  c           	          g | ];\  }}t          j        |t                                          |                     <S r
  )r   r  rX   r  )r]  r  r)  r*  s      r  r  z1VariableBuilder.wrap_listlike.<locals>.<listcomp>O  s[     
 
 

 4	  &$T__%6%6::  
 
 
r  r*  r=  rX  r5  T	steal_arg)
target_clsrN  r   example_valuesubclass_typer  Fr  r  index_is_slicetensor_dictr  r   )r   r!  r"  r>  )9r<   specialize_intr  r  r  ru  rE   r  r   r  ri  r   r  r  r  guard_sourceis_unspecialized_nn_moduler   rn  rN  rO  local_scoperz  r,  ra   
local_namert   r  r  r  r  r  r$  r  r  wrap_fx_proxy_clsr   r  rX   input_source_to_varrl   r   r  r  TENSOR_MATCHr:   r  r  rF   r  realizer   cls_for_instancer  r  rt  r  )r*  r%  rO  maybe_gmr  tensor_list_proxylist_variabler  r  tensor_variablesource_ir  r>  rp  r  s   `              r  r  zVariableBuilder.wrap_listlike9  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  ri   r  r   rN  s     r  r  z7VariableBuilder.wrap_tuple_iterator.<locals>.<listcomp>  sg     
 
 
  WODG%?@Q@QST%U%UVV&ua00 
 
 
r  r5  )ru  rE   TUPLE_ITERATOR_LENr  r   r   r  rN  rO  rt  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  r+  )r]  r  s     r  r  z7VariableBuilder.wrap_range_iterator.<locals>.<listcomp>  s$    JJJ!(++JJJr  r5  )ru  rE   RANGE_ITERATOR_MATCHcopydeepcopyr   r  rN  rO  rt  r  )r*  r%  r  r  s       r  r  z#VariableBuilder.wrap_range_iterator  sj    L=>>> KJT]55I5IJJJ%eDK@@@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  rO   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stopstepr5  )	ru  rE   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  r3  _dynamo_static_input_type)r^  rQ  static_inputs_logr  r  r$  r\  rN  rO  rt  rS  r   r  r  )r*  r%  r  rQ  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        t*          j        j        t*          j        j        f          r9t4          j        s-t	          dt9          |          ddgt          j                   t=          |dd
          rt=          |dd
          st	          dddg            |                     t          j                   t?          ||                                            }tC          j"        tG          |                    s|S | j$        j%        j&        '                    ||          S tQ          j)        || j$        j*                  rt)          |t*          j+        j,        j-        j.                  r-|/                                }ta          | j                  | _        t*          j1        j        j2        rwtg                      }ti          |j5                  r|j5        j6        tn          u r	 |5                                D ]\  }}| 8                    ||           nM# tr          $ r@}tu          tG          |          | j$        tw          |j<                             Y d }~nd }~ww xY wti          |j=                  r|j=        j6        t|          u r	 |=                                D ]\  }}	| 8                    |	|           nM# tr          $ r@}tu          tG          |          | j$        tw          |j<                             Y d }~nd }~ww xY w|r|| j$        j%        j?        | j@        <   |jA        B                    d          r|jA        B                    d          rt=          |jC        dd
          r| j        }
t4          j2        r1| j$        j%        j*        rt4          jD        rt          | j                  }
t          ||
          }t          |
H                    t          j                             n| j        }
t4          j2        r1| j$        j%        j*        rt4          jD        rt          | j                  }
t          ||
          }t          |
H                    t          j                             | j$        j%        K                    || j                   tC          j"        tG          |                    s|S | j$        j%        j&        '                    ||          S t          |jC        t*          j        jM        jN        jO                  rB|                     t          j                   t          ||                                            S | j$        j%        P                    || j@        |                                            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#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  rR  )r(  )ztorch.nn.modulesz	torch.ao.ztorch.nn.modules.container_dynamo_marked_static)Q
eval_framerW  len__dict__rD   r   r=   r  r   rZ  r  forwardr   r  ru  rE   r  rO   ro  r]  r,  r  rv  RNNGRULSTMr<   	allow_rnnrB  rt  r  r   r  rM   r$  r  rN  rO  rt  r}  r>   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baserN   r2  inline_inbuilt_nn_modulesr|   r  named_parametersr,  !og_module_named_parameters_fn_ptrrU  	TypeErrorrC   r  r(  named_buffersog_module_named_buffers_fn_ptr
nn_modulesr$  r  rY  rI  install_free_tensorsrj   r   rF   r  rk   r    add_fqn_info_for_inlined_modulesr  paralleldistributedDistributedDataParallelregister_attr_or_module)r*  r%  rW  r\  r  freezingrX  peb
new_sources              r  ro  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 uux|UX\58=IJJ	$	 =E

H}&2	    53U;; u	 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 W	
 %!6!C!NOO ;((-dk::}#= $A022 U344V .789 9V$)$:$:$<$< F FDAq 221H2EEEEF$ V V V0a$'QVUUUUUUUUUV U011
V +48VVVV$)$7$7$9$9 F FDAq 221H2EEEEF$ V V V0a$'QVUUUUUUUUUV  A <ADGN-di8  ++,MNNN(334PQQN *A5IIN "[
3 Q-Q171LQ "DDK!P!PJ=eJWWWj33L4KLLMMMM![
3 J-J171L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   1L> >
N6NN31O% %
P//6P**P/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 whitelistr\  '%s marked unbacked via source whitelista  torch.compile considers integer attributes of the nn.Module to be static. If you are observing recompilation, you might want to make this integer dynamic using torch._dynamo.config.allow_unspec_int_on_nn_module = True, or convert this integer into a tensor.r6  )recompile_hintr%  )+r  r  r,  is_dynamic_sourcer  r$  r  r  r  r,   r  is_unbacked_sourceUNBACKEDr<   r4  r   r5  "is_unspecialized_builtin_nn_moduler6  rL   rN  rJ   make_scalarru  r  r  rE   rw  r   r  _wrap_lazy_constant_wrap_symint_for_lazyr  specialize_float_wrap_symfloat_for_lazyr@  rB  r  r  rr  rO  rt  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  ru  rE   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  rB   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}t
          j        ra|s_t          |t          j	        j
                  s|r>|j                                        r%|                     |t                                 d}t
          j        o,t!          |          pt#          |          pt%          |          }|o0t
          j         p#t                      pt          j        j        j        }|s4|j                                        s|rU|j                                        s<|                     |           | j        j                            || j        |          S t	          |          dk    r[|                     t6          j                   |                     |           | j        j                            || j        |          S t;          |          rP|                     |           | j        j                            |t=          j        dd| j                  |          S || j        j        j         v }|r| j        j        j         |         S i }tC          |          }||                     t6          j"                   t	          |          dk    r|                     t6          j                   |                     |           t          |t          j#                  rC|j$        r<t          |t          j%        j&        j'        j(                  stS          ddd	g 
           t          |t          j#                  rFtU          |          r7| j        j+        rt
          j,        stS          dddg tZ          j.        
           t_          |          r}ta          |          n|j1        ta          |          j1        k    rQta          |          }	|	te          |	j1                  nd}
tS          dd|j1         d|
 dg tZ          j3        
           ti          || j        d|          }| j        j        j5        6                    t=          j        dd| j                  to          |          ||          }tq          | j        ||           ts          d$| j        ||||d|}|:                                r+ti          |j;        | j        ty          |d          d           t6          j=        }t          |t|                    rt          |          rt6          j@        }t          jA        B                                o#t          |t          jA        jC        jD                  }|sM|                     t          jF        |t          |t                    r|nt          |                               t          |          r|r1|                     t6          j"                   |J                                d         d         }|dk    rt          d          |J                                d         }t          |          dk    r"|d         |jM        k    r|d         |jN        k    st          d          t          ty          | jP        d          Q                    t6          jR                             t          ty          | jP        d          Q                    t6          jS                             nw|                     t6          jT                   |                     t6          j"                   t          t          |          Q                    t6          jS                             |J                                \  }}|D ]W}t          ||          }ty          | jP        |          }t          jX         t          | j        |          |                     X|| j        j        j         |<   d|jZ        j[        vsJ t          |          |jZ        j[        d<   |j]        jZ        j[        d          }t          |          | j        j_        urt          d!          t          ||d"|          }||jZ        j[        d#<   |S )%NrR  Tr5  guardedr=  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/  r0  r  _base)rN  r  r"  r&  r   _local_tensorz7Expecting Dtensor inner tensor name to be _local_tensorr   r;   z;Expecting Dtensor flattening ctx to be _spec, requires_grad_specrequires_gradr3  r/  z(Wrapped Tensor must be this graph's fakeFr>  r  )br  rN  rO  rt  ru   r<   rp  r,  r  rv  r  r5  r6  rU  r|   rw  r\   r]   r_   r2  prepare_freezingis_specialized_nn_moduleis_fsdp_moduler  r|  r$  ru  rE   r  rZ   r  r  r:  infer_subclass_typer  r0  	is_nestednestedr  nested_tensorNestedTensorrD   r#   rj  capture_sparse_computer=   SPARSE_TENSORr  r$   r-  rB  rt  wrap_to_fake_tensor_and_recordr  r  r  cache_real_value_when_exportwrap_fx_proxy_is_viewr  rO   r;  rY   r^   NOT_NONE_MATCHrz  is_availabletensorDTensorr  r  rc   r:   r7   __tensor_flatten__r  rb  r  r  rF   r  r  DTENSOR_SPEC_MATCHrw  TENSOR_SUBCLASS_METADATA_MATCHrh   r  r   r  rc  r  r  rl   r   r"   r  rB   r  )r*  r%  r  is_static_inputshould_install_free_tensormake_graph_attributeis_duplicate_tensoroptionsr0  safe_grad_valgrad_strr/  tensor_proxyrA  
guard_type
is_dtensorinner_tensor_nameflattening_ctxattrsrX  attrinner_valueinner_sourcefake_tensor_valuer>  s                            r  r  zVariableBuilder.wrap_tensor  s	   "" DGN777771%88D ,	##	# 5%("455		# 	#  &2MMOO	# ""50E0G0G"HHH"O &,%@ &
!&)) >&v..>5f== 	#  /  
00 5$&&5}#4 	 & 	 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''
 
 
 
 >> 		 +7!&'22	    ".
fj)) 	5.Fv.N.N 	5%4J&3355 
*5$+3;
 ;

  	 ! &f.?@@2*511  	 	 	 )// 4	  (##L$;<<< %*$<$<$>$>q$A!$D!$77&Q  
 "'!9!9!;!;A!> ''1,,&q)U[88&q)U-@@@ 'U   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)$+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  r=  rX  r5  r  )r.  rN  r   r/  r0  r/  r   r!  r"  r#  r>  r  ))r   r,  r  rc   r  torch._numpyr  flags	writeable
ValueErrorr  nditerr   temp_restore_stack_try_convert_to_tensortorch._prims_commonr  r  rD   rB  r   r  rc  rN  r  rO  r  r  r  r  r$  r  r  r9  r   r:  r   r  r  r  r  )r*  r%  r  r  readonlytensor_valuer  r  r/  r   r  numpy_ndarray_variabler>  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#r[  r  c                 x
   t          |          t          u sJ | j        | j        j        j        v r| j        j        j        | j                 S | j        j        j        }t          j                    j	        r]|
                                }t          |           | j        j        j                            t          || j        d                      nt!          |                                           s8|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 |/                    || j        |
          }| j        j        j                            t          || j        |                     n]t!          |                                           sJ |                     t.          j                   t3          j        || j                  S tC          |                                 t`                    rJ tc          |                                 2                    t.          j3                             d	|                                 i}| j        j        j4        5                    tm          j7        d
d| j                  t          |          ||                                           }|j8        j9        }tC          |tt          j;                  sJ | d            || j        j        j4        j<        |<   t{          j        | j        ||fi |}|| j        j        j        | j        <   t!          |                                           s4t}          |                                 |dd d|          |j8        j?        d<   |S )Nr%  r  dynamo.automatic_dynamic_shapesTr   Fr&  r:  r  r=  rX  r5  r?  r  r>  )@r  r  r$  rN  rO  unspec_variable_mapr  r   rz  #force_unspec_int_unbacked_size_liker  r*   r  r  r2   r  rZ   r  r  r2  r<   r4  ru  rE   r  r   r  rL   rJ   r  r5  r6  r'   r,  rQ   ro  automatic_dynamic_shapesscalarrH   r   $get_automatic_dynamic_shapes_mark_asra   r[  r  assume_static_by_defaultr,   r  r  re   rF   r  r  r  r  r  r  r  r  r  r  bound_symbolsr   r  r  )r*  r%  r[  r  r  wrapped_valuer$  frame_state_entrynormalized_source_namebase_sourcer;  r  r   r  
unspec_vars                  r  r  zVariableBuilder.wrap_symintS
  s    E{{c!!!!9:::7>5di@@GN,	C L	L%<<>>M%m444GN(//M4;==    $DOO$5$566 A	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;;;;%JJ{' K  M 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%  )r-  )r  	raw_valuer  r=  rX  r5  rN  r   r/  r0  =Dynamo attempts to add additional input during export: value=	, source=r/  fake mode (^) from fake tensor metadata doesn't match mode({self.tx.fake_mode}) from InstructionTranslatorTr  r>  call_methodr)  tensorify_float_attempt)	overwrite)Er$  rN  rO  r  rL   r  rJ   r  r5  r6  r  r2  r<   r  rZ   r  mathisnanisinf	_inductorrc  
cudagraphsr%   r  r  rH   ru  rE   r  r   r  r  float64r{  r|  is_gradtrackingtensorr,  re   rF   r  r  rW   r  r  r  r  r  r  r  r9  r   rj  ra   AssertionErrorr   r  r  r!   r  r  r  r  r   r  r  r2   sym_numr   rr  )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  r=  rX  r5  r  r  r  r/  r  r  Tr  r>  )#r$  rN  rO  r  r  r  r,  r  re   rF   r  rE   r  updater  r  r  r  r  r  r  r9  r   rZ   rj  ra   r  is_python_constantas_python_constantr   r  r  r!   r  r  )r*  r%  r  r  r/  r   r  r  s           r  r  z,VariableBuilder.wrap_unspecialized_primitive]  s   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__rg   r@  rH  r(  r   rn  rj  r|  r  r   r   r  rB  ru  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  r0  rU  rv  rw  ro  r  r  r  r  r
   r  r	   r  r  r  r,   r1   r  r  r  rU  rV  s   @r  rc  rc    s	       == %)	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 & & & _ [&P+
3 +<P + + + +
I'"7"< I I I I I
[&6
	
 
 
 

s 
/J 
 
 
 
 H  H  H  H  H  HD _	c8.4oEFF	G   _ [6Z13 Z1? Z1 Z1 Z1 Z1x"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<eem <8U < < < <u| D T    $c c_ c c c cJ?& ?_ ? ? ? ?B'3 '? ' ' ' ')U ) ) ) ) )  3%01 
	   X  5'?23 
	   X   S%s*+  
	   X ?CF FS%s*+F (C5/#9:;F 
	F F F Fel t    J J/ J J J JXS& S& S& S& S& S&p '+04	w ww t#w '-	w
 
w w w wr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%  rD   r  r  r  r  rO   rT   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  ro   )r%  r  s     r  _clone_inputr    sr    %&& ' uj))
	' +E22	
	'
 (..);; <
  &&ELr  rN  r  r   r/  r0  r  c                     | |||d|}|t          ddt          i|S t          ddt          i|}|                    |            |S )Nr  r.  r  )r9  r   r   install_global)rN  r   r/  r0  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'  )	rj  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_outputr2  	variablesr   r   r  oprO  current_tracerrecord_tensor_or_symint_vt)r.  rN  r   r/  r0  r  outs          r  r9  r9    s     )E=-
 
CJ
 
 
M5<	0	0 
)E=-
 
CJ
 
 #2ug}j
 

 	'6'7	
 	

A JM]**
	 ;;C@@@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  r  r  r2  r  +_disable_saved_tensors_hooks_during_tracingr"   r  r  rj  r{  r  r  r  r  r   r   r  r  rB   construct_tensor_variable)r.  rN  r   r  r0  r  r  r  s           r  r  r  B  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;   r  r  r/  T)allow_non_graph_fake)r  r  r,  rO  r  r  r  r  r  r2  r  r   rr   r  )r.  rN  r   r/  r0  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 | j7        j8        dk    s7t'          | d          s'J d| j7        j8         dt9          |                        ts          |	| j7        fi |S | |j        j        |j:        u rtW          j,        d'i |S t          | |j;        |j<        |j=        f          rI|j        j>        ?                    | |           tQ          |j        |            t          j,        ||| fi |S t          | |jA                  r|j        j        t          u s$|j        j        d t                      D             v rKtQ          |j        |            d }|j        j        t          u r|j        jD        d         }t          || |fi |S t          | |jF                  r|j        j        t          u s$|j        j        d t                      D             v rKd }|j        j        t          u r|j        jD        d         }tQ          |j        |            t          || |fi |S t          jI        |j        j                  rt          |j        j        |jF                  s$|j        j        d t                      D             v r$tQ          |j        |            t          || d fi |S |j        j        dk    r2|j        jK        dk    r"tQ          |j        |            tW          | fi |S | Yt          | |jF                  rD|j        j        dk    r4|j        jK        dk    r$tQ          |j        |            t          || d fi |S t          | t                    r|j        j        |jM        t          t^          j0        |jO        jP        |jQ        t^          jR        |jS        jT        jU        |jS        jV        jW        |jS        jV        jX        t          |jY        dt                    t          |jY        dt                    |j[        fv s |j        jK        dk    r7|j        j        dk    r'tQ          |j        |            tW          j,        | fi |S t          | |j\        j        j]                  r$ddl^m_} tQ          |j        |             ||fi |S t          | t                    r|j        j        |j        ja        |j        jS        jb        |j\        j        jc        |j\        j        jd        |j\        j        je        |j        jf        |j        jg        |j        jh        |j        ji        |j        jj        dgtO          t          jl                              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        jK        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          t9          |                     r]t          t9          |                     r| }|jr        js        t                    |j        ju        |           }t          j,        ||          S t          d"d#t          |            d$|j        jK         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  r+  r  s     r  r  z(handle_traced_output.<locals>.<listcomp>  s$    CCC!(++CCCr  rR  )kindtargetr(  r  r  Fr1  )r.  rN  r   r/  ztorch.return_types_fieldsz	expected z. == torch.return_types or named tuple but got c                 "    g | ]\  }}|j         S r  current_streamr]  rX  device_interfaces      r  r  z(handle_traced_output.<locals>.<listcomp>0  0       A 	'  r  c                 "    g | ]\  }}|j         S r  r-  r/  s      r  r  z(handle_traced_output.<locals>.<listcomp>=  r1  r  c                 "    g | ]\  }}|j         S r  )r  r/  s      r  r  z(handle_traced_output.<locals>.<listcomp>J  s0       A 	  r  queryr  record_eventget_rankget_world_size
bit_lengthr   r   
is_integerr)  )r  	__round__ztorch.* op returned non-Tensorzexample_value type: z; op: z
; target: zUtorch.* ops that return a non-Tensor cannot be traced into the Dynamo FX graph outputr'  r  )xtorch._functorch.vmaptorch._subclasses.fake_tensortorch._utilsr,  r0  r#   rj  r<   r  rD   rB  r=   r  r!  r   rO  rt  
_track_objr   r  r  r*  r  r/  r{  	Generatorr  set_rng_stater  r   _DisableFuncTorchr  _is_in_bad_forkr   r   r  r  r   r  r  r   rn  r  r   r  r  r  operatorgetitemrI  rX   r9  r   r4   r   rI  r  r   manual_seedr   SymFloatr  r  track_produced_symintsr   r  r   rA   r(  r   r  r   rZ  r[  r  r  r  sym_intr  _utils_element_sizeseedmodr|  vmap_validate_and_get_batch_sizepredispatch_vmap_increment_nesting_vmap_decrement_nestingrz  r  _constrain_as_sizebackends
SDPAParamssdpar   r@   _are_functorch_transforms_activeis_batchedtensoris_flash_attention_availablecan_use_flash_attentioncan_use_efficient_attention_get_cudnn_sdp_enabled_get_flash_sdp_enabled_get_mem_efficient_sdp_enabled_get_math_sdp_enabled_get_overrideable_sdp_enabledr   r  r  r   r   r   r   r  r  r  r  r   r   )r/  rN  r   r  r0  r.  r  r  sizesunpackedr  r   proxy_ir  	options_ir  r   r!  s                     r  r  r    s    !   ((((-.. n
 '' 			!'!>	 NM**`8)78	    (E=-
 
 #/////
	))3*> 	* 	
 	
 	
 

!:..P
J&+55uz(1583EFF 6 : :::EJ%&&c1111+EJ,=>>>
UX777:
 :::(777	uz	*	* A
s 3 3$13 3 3 0 0 A
 DC]CCCE--W---	ME4=	1	1 |
%*m444.. '	 '	FAs{$+<<G<<     ,33(#+	 4   w&& &mT:::::$X.F 'I*7#',+ + +Ih'' !(I % #-%&)  $ 	 	 	 	 mUZ00 	T  %;;7;;;M5)) 	T 55W555MD.#9:: 		T44G444 '26JJJ=)44 KJ DM3>  D  Dnr  tA  oB  oB  D  D KJ 5
 &h0GSS7SSS		%*"3u7H"H"H&77w777	MEL%.%-#P	Q	Q 

	 77uMMM%*m444%b%JJ'JJJ=%,//{
J!===		  #C#E#E   
 
 	%*m444: <<<JOA&Ee]EEEWEEE=%+..n
J!===		  #C#E#E   
 
 : <<<JOA&E%*m444UM5DDGDDD
)**a
uz(%+66a
 
	  #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L&JL!>(@(@E%z8<<E%'7BB $
	
 	
( JM]**uz/@L/P/P 	%*m444&}@@@@@	M5>#6#A	B	B 3
,,,,,,%*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
 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&}@@@@@	]++	,	, 
] 3 344 	"!E.<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  rv  r  rA  r!  r   r  r  r7   r&  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  rv  r  r  r0  )r.  rN  r/  r0  specialized_propstensor_types         r  get_specialized_propsrj    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  r  rO  r  rG  r  rj  )r.  rN  r   r/  r0  r  s         r  r!  r!    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    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>  s.       	  r   r  ,)	hashr  compilerr<   dynamic_sourcesrp  rq  replacesplitcurrent_hashs    r  get_dynamic_sourcesr    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    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>6  s$    :::!IaL1"%:::r  )r  )sizer#   stridedimr  sortr+   rz  
setdefaultrK   rL   rJ   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  rt  s     r  rv  z'get_unbacked_sources.<locals>.<setcomp>Z  s.       	  r  rw  r  rx  )	ry  r  rz  r<   unbacked_sourcesr  r  r|  r}  r~  s    r  get_unbacked_sourcesr  P  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  d  sm    +--#  k!!RXg{%C%C!IIU  
 44 " 5r  Fr  static_shapes
outer_onlyc                   -./ | 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|st!          | |||d          }
t          |
t&                    sJ i }t)          |                               |           \  }}|D ]7}t-          | |          }t          ||          }t!          ||||          ||<   8t/          |
j        |
j        |
j        |
j        ||
j        |
j        |          S |rt;          |          st'          t<          j        g|                                  z  t<          j!        g|                                  z  d g|                                  z  d g|                                  z  |||	          S d
dl"m#/ tI          /fd| %                                D                       r~t'          d | %                                D             t<          j!        g|                                  z  d g|                                  z  d g|                                  z  |||	          S tM          |||           }tO          |           }i -dtP          dddtR          dd f-fd}d
dl*m+} |j	        j,        G|j	        j,        D ]:}t          ||          r|j-        |k    r ||j         |j.        |j                   ;g }g }g }g }g }t_          |                                            D ]..t-          | dta                                v }.t-          | dta                                v }.t-          | dta                                v }.t-          | dta                                v }.t-          | dta                                v }|1                    t-          | di                               .g                      te          |j                  } |}	t          |	tf                    r|	4                                }	|sLt          |	tj                    r|	j6        to          |	j6                                      | .di          .         rZtp          9                    d|           tt          g|                                  z  }!tv          |!.<   |ty          j=        |!          z  }t|          j?        o|@                    .          }"t|          j?        o|A                    .          }#t;          |          rtp          9                    d|           d}"t          |          rtp          9                    d|           d}"|"p|#}$-                    .          }|d }%d }&|rt|          jC        sd }&t          | d           rq.fd!| jE        D             F                                }'|'jG        |'jH        t          d"          }%nd
d#l"mJ}(  |(t          |'jG        |'jH        $          d%          }%nt          d"          }%n|rt          d"          }%n|s7|$r5t          d&d           |"rt          d"          }%|#rt          d"          }&nF|st|          j?        st          d&d           d }%d }&n#|\  }%})d }&| d'. d(}*|)|j	        jM        jN        |*<   |1                    |%           |1                    |&           |st          |          rt<          jO        }+np|%'|s%|s# /| %                                .                   r|$rt                      }+n6t<          jQ        }+n)|st|          jR        s|rt<          j        }+nt<          jS        }+|&t<          jQ        },nt<          j!        },|1                    |+           |1                    |,           t'          ||||||||t-          | d)d           *	  	        S )+NzGEncountered strided NestedTensor in automatic dynamic dim determinationr  r  r  r  T)r  )dynamic_sizesdynamic_stridesconstraint_sizesconstraint_stridesview_base_contexttensor_source#shape_env_to_source_to_symbol_cacheinner_contexts)r  r  r  r  r  r  r  r   )is_nested_intc              3   Z   K   | ]%}t          |t                    o |           V  &d S r'  )r,  r   )r]  ru  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  rt  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vrrY  )%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  rX  r  )lowerupperr  r  z.size()[]_dynamo_shape_ids)	r  r  r  r  specialize_onr  r  r  	shape_ids)Tr  r,  r  r  r  r  r  rD   r$  rO  tracing_contexttensor_to_contextrz  r  r  rO   _automatic_dynamicr  r7   r.   r  r  r  r/   r  r  r  r  r  r  r,   r  r  INFER_STRIDEr  r  rs  r  r  r\  r  rB  r  r  export_constraintst_idr  r  rr  r  r'   rQ   ro  ra   r[  r  r  r  rI   rH   rJ   	make_sizer<   r  is_size_dynamicis_stride_dynamicr  allow_ignore_mark_dynamicr  r  popminmaxr-   r  r9   r   r  source_name_to_debug_namer  r  r  r  DUCK)0r  rN  r  r  r  r$  prior_policyr  r  r  outer_contextr  r  rX  r  inner_tensorr  r  r  r  r  rZ  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  s0                                                @@@r  r  r  s  s	    	{ 
:	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"1d++L%fd33L#5b,$ $N4   ''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   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          
          t                     t          j        t          j        j        t
          fv s*t           t          j                  st                     r%J t           |          \  }}|st           |          n+t          t                    sJ j        }|j        |         t                              dj        t!           j                  t                                t%                      5  j        J t)           fd          }d d d            n# 1 swxY w Y   Yt          |t
                    rD|j        x}	;j        j                            t3          |	t5                                         t          |          rx|                                \  }
}|
D ]^}t9          ||          }t9           |          }t          |          }t;          ||t          |t          j                             _j        j        j         <   tA          |          r|j!        r|"                                n|#                                }|$                                d|j%        z  |$                                |&                                dj        j'        <   n6|$                                |&                                dj        j'        <   |r|r(                                sotS                    s`j        j                            t3          |                     j        j*        tW                                                             |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  rv  r  r   r,  r7   r   r  rO   r^  r  r  r  r$  r  shaper   r  r   	item_memorO  r  r  r2   rP   r  r  r  r  r  r#   	is_sparse_valuesvaluesr  ndimr  input_source_to_sizes_stridesr  rZ   tracked_fakes_id_to_sourcer\  )r  rN  r  r"  r  r  _reasoninner_context_namefake_esym_valr  rX  r  
fake_innerinnerr  r  r  s   ```              @r  r  r    s    	Q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I#**G%9&%A%ACSTT   )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.create4  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                              rDt          j        j	        
                     j        j                  }t          j        |          S t	          t          j                  rt#                    S t%          j                  rt%          j                  S t)                    rQt+          j                  =t+          j                  rd j        _         t+          j                            S t)                    rKt3          j                  r7 t+          j        j                  j                  }t9          |d          S t;                    r t+          j                            S t	          t>          j         t          j!        t          j"        j#        j$        f          rtK                    S t	          t           tL          j'        f          rMt	          t                     r)tQ          t>          j                   rtS                    S t3                    S t	          tT          j+                  rtY                    S t	          tT          j-                  rt	          j        t           tL          j'        f          rwt]          j        j/        j0                  k    sJ t                               j                  }	 |1                     j/        j0                  S # td          $ r Y nw xY wt	          t          j3        j4        j5                  rtm                    S t	          t          j7        j8        j9                  rt#                    S tu          j;                  rtu                    S ty          j=                  rty                    S t|          j?        u rt                    S t	          t          jB                  rt                    S t	          t          jD        jE        jF        jG                  r!t%          j        t                              S t	          t          t          jI        jJ                            r)t          jD        jE        jK        L                              S t	          tT          jM        tT          jN        f          rt                    S t                    rG fdt          t                              D             }t          |t                              S t	          t          jS                  rIjT        jU         j        jV        v r1 j        jV        jT        jU                 }t          j         |          S t          t                    rt                    S t          d|j\         d|j]         d| g t          j_                   d S )	NTr  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  )r  z%Unexpected type in sourceless builderrX  z3SourcelessBuilder.create does not know how to wrap r  )`r  r#  _type_handlersrz  r,  r   r   r  r  r  r  rO  r  r   r  r  _HAS_DEFAULT_FACTORY_CLASSr   r   r  r  r@   r  r  r  r   is_supported_new_methodr/  r   rx   r  rx  ry  rz  r{  r|  r}  r   abcABCMetar  r   r  r  r   r  r  r,  r  var_getattrr  rk  graph_moduleGraphModuler   r  r  r  r   r  r   r  r  r  r   r  r  r   r2  r  lazyLazySymNodeFormatStringrB  r  flex_attention_backwardhigher_order_ops&FlexAttentionBackwardHighOrderVariableGenericAlias	UnionTyper   r{   r   r   r   r  r  r  r   r   r(  r   rD   r  r  r=   
DYNAMO_BUG)	rN  r%  
value_typefast_handlerr!  r  
cls_obj_vtrO  r   s	   ``       r  r  zSourcelessBuilder.create>  s   %[[
(7;;JGG 	+<E***e_-- Y	)L!$u++.. V	)#n@RR	#U O -3  
 {EFF L	),U333(// J	)#*5111e__ H	)!<U!C!C!O.u55 C>B	;5;.u55e<<<e__ C	)!9!Q"
 "
 C	)
 >+-en==enMMC"3	222#E** <	),;%e,,U333DIu0%(2E2ST
 
 9	)  &&&ck233 5	)%&& ;:eTY+G+G ;3E:::+E222u677 1	)(///ue.///	) 5>D#++>??	/	) 5>5>+BCCuLLLL*11"enEEJ!--b%.2IJJJ&   ux4@AA !	)0777u{2;<< 	),U333+E22 	)$U+++.u55 	)%e,,,io%%)%000rz** 	)'...u}6;STT 	)#*3u::666tE$;$STTUU 	)=*;bb    2EODEE 	)!%(((5!! 	)    -d5kk::  F &fUDDDDuel++	)
29#:::I+EJO<E")"e444E6"" 	)!%(((;!,HHz/FHHZjZZ1%01		
 	
 	
 	
 	
 	
s   M4 4
NNc                 X    t          j        |           sJ t          j        |           S )Nr&  )r   r  r  r&  s    r  wrap_constant_literalz'SourcelessBuilder.wrap_constant_literal  s-    *5111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  r  )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  r$  s     r  r  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>  r%  r  r&  )r   r   r'  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>  s3    DDDdaVVB]]FF2qMMDDDr  r&  )r   r  r  r   r'  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  sL    +<DDDDDekkmmDDDKK*,,,
 ,
 ,
 r  c                 Z     t           fd|D             t                                S )Nc                 (    g | ]} |          S r  r  r$  s     r  r  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>  r%  r  r&  )r   r   r'  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s:    <*****E***:J:L:L,
 ,
 ,
 r  c                 >     t           fd|D                       S )Nc                 (    g | ]} |          S r  r  r$  s     r  r  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>  r%  r  )r   r'  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s,    M*****E***-
 -
 r  c                 >     t           fd|D                       S )Nc                 (    g | ]} |          S r  r  r$  s     r  r  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>  r%  r  )r   r'  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  r,  s      r  r-  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<dictcomp>  s3    HHH$!QAr1HHHr  r&  )r   r   r  r  r   r'  s   ` r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  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>  s    6u== r  c                 <    t          |t                                S Nr&  r   r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s"    8Q!1!3!39
 9
 9
 r  c                     t                      S r'  )r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    4G4I4I r  c                      t          |          S r'  )r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    7KE7R7R r  c                 <    t          |t                                S r8  )r   r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s"    ;Q!1!3!3<
 <
 <
 r  c                 <    t          |t                                S r8  )r   r   r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s"    :%5%7%7   r  c                 <    t          |t                                S r8  r9  r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  "    7%5%7%7   r  c                 <    t          |t                                S r8  r9  r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r?  r  c                 <    t          |t                                S r8  r9  r  s     r  rM  z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r?  r  rN  r  r%  r	  c                     |S r'  r  r  s     r  passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthrough  s    Lr  )"r#  r  rp   rr  r6   r  r  r  r  r  r  rk  r3   r4   r  r  r  rZ  r  r  r  r   r  r|  r  r  distributionsconstraints_Real	_Interval
Constraintr  r   all_subclasses)handlersr  rC  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  rr  r   r  r  r  r   r  r   r   r@  r  r  rB  r   r   r(  r  r   rK  r  r  r  r#  r#    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f
. f
s f
 f
 f
 f
 \f
P 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 r8  )r  r  r   r   r   r,  r  rv  rw  r   r   )rN  r%  r  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  rM  rM    su         P P P P 	V* 	V3 	V? 	V 	V 	V \	V 	V 	Vr  rM  r   r'  )F(  r  r  r  r  rI  r  rx  r  rZ  	itertoolsr  r  rC  r  r  r  rh  r  r  collections.abcr   r   r   typingr   r   r   r	   r
   r   r   r  r  r   torch._dispatch.pythonr   #torch._dynamo.graph_bytecode_inputsr   r   torch._dynamo.utilsr   r   r   r   torch._guardsr   "torch._higher_order_ops.flat_applyr   !torch._higher_order_ops.torchbindr   torch._library.opaque_objectr   r   r   r   
torch._opsr   r   r   r<  r   r    r!   r"   torch._subclasses.meta_utilsr#   r$   torch._utils_internalr%   %torch.fx.experimental._backward_stater&   torch.fx.experimental._dynamismr'   torch.fx.experimental.sym_noder(   r)   r  r*   r+   r,   r-   r.   r/   r0   r1   r2   torch.fx.immutable_collectionsr3   r4    torch.nn.utils._expanded_weightsr5   torch.utils._ordered_setr6   torch.utils._python_dispatchr7   r8   torch.utils._sympy.value_rangesr9   torch.utils.weakr:   r  r<   r=   r>   r?   r@   r0  rA   excrB   rC   rD   r  rE   rF   rG   pgorH   rI   rJ   rK   rL   rt  rM   r  rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   r  rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   builtinr   constantr   r   ctx_managerr   r   r   r   r   dictsr   r   r   r   r   r   r   r   rz  r   r   r   r   r   	functionsr   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   iterr   r  r   r   listsr   r   r   r   r   r   r   r   r   miscr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	nn_moduler   r   r   	optimizerr   script_objectr   r   rU  r   streamsr   r   r   r  r   r   r   r   r   r   r   r   r   r   torch_functionr   r   r   user_definedr   r   r   r   r   r   r   r   r   r   r   r   r   r   numpyr   ModuleNotFoundErrorr?  torch._dynamo.codegenr  torch._dynamo.symbolic_convertr  r  	getLoggerr  r  r  getArtifactLoggerrT  r  r  r  r  DimListr(  r@  r  r  	dataclassr  rE  rv  varsr  r`  r  rr  ra  rv  rw  rt  ru  rq  rr  rc  r  r  r  r  r  r9  rk  Proxyr0  r  r  r  rB  r  r  rj  r!  r  rp  rq  r  r  r  r  r  r  r  r  r  r  r#  rK  r  rM  r  r  r  <module>r     s    & 


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



    4 4 4 4 4 4 4 4       V V V V V V V V V V V V V V V V V V         ; ; ; ; ; ;                   ) ( ( ( ( ( 9 9 9 9 9 9 < < < < < <            I 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              ' & & & & &                                                               @! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !D                % $ $ $ $ $ 4 4 4 4 4 4 4 4             	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                                                  $ # # # # # ; ; ; ; ; ; ; ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                                 2         
 ) ( ( ( ( ( O O O O O O O O $ $ $ $ $ $ I 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 !K' K' K' K' K' K' K' K'\N O          0 (= #    * !%!%	 # : $;	
     2
#
,/
@C
	
 
 
 
z !%!%$ $[!$#$ $ :	$
 $;$ $ $ $ $ $Z "&D D[!D#D 8>D L	D
 $;D D D D D DX !%!%   [! #  8>  :	 
 $;           Hz
z
#z
 8>z
 #s(^	z

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

 
 $J
 	
 
 
 
2 "&n n n
n#n TM	n
 n $Jn 	n n n nbm m m m m m m m` $5#G#G#I#I   V V V V V V V V V Vs   N$ $N65N6