
    קg                       U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlm Z m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+m,Z, d d	l-m.Z.m/Z/ d d
l0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC ddlDmEZEmFZFmGZGmHZH ddlImJZJ ddlKmLZLmMZM ddlNmOZOmPZPmQZQ ddlRmSZS ddlTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZh ddlHmiZimjZjmkZkmlZl ddlmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZ ddlmZmZmZmZ ddlmZmZ ddlmZmZmZmZmZmZ ddlmZmZmZmZmZmZ ddlmZmZmZmZmZ dd lmZmZmZmZmZmZ dd!lmZ dd"lmZ dd#lmZ dd$lmZmZmZmZmZmZmZmZmZ dd%lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ dd&lmZmZmZ dd'lmZ dd(lmZ dd)lmZ dd*lmZmZmZmZmZ dd+lmZmZ dd,lmZmZmZ dd-lmZmZmZmZmZmZmZ 	 d dlZn# e$ r dZY nw xY werd d.lmZ  ej        e          Zej                            ed/          ZeZd0 Z G d1 d2          Zej         G d3 d4                      Z G d5 d6e          Zej         G d7 d8                      Z  ed9  ee                                          D                       Zee         ed:<    e            Zee         ed;<    G d< d=          Z	d> Z
	 dLd?efd@Z	 dLdAZej         G dB dC                      Z	 dMd?e:fdEZddFdGeef         dHefdIZ G dJ dK          Ze                                e_        dS )N    N)AnyCallableDict	FrozenSetListMutableMapping
NamedTupleOptionalSetTYPE_CHECKINGUnion)SymInt)GuardSourceTracingContext)call_torchbind)HigherOrderOperator)
_EventBase_StreamBase)
FakeTensoris_fakemaybe_get_fake_mode)is_sparse_any	safe_grad)justknobs_check)BackwardState)_constrain_range_for_size
DimDynamicRelaxedUnspecConstraintStatefulSymbolicContextSubclassSymbolicContextSymbolicContext)immutable_dictimmutable_list)is_traceable_wrapper_subclass)ValueRanges)TensorWeakRef   )configmutation_guardreplay_recordtrace_rules) get_registered_device_interfaces)InternalTorchDynamoErrorunimplemented)GuardBuilderinstall_guardmake_dupe_guard)SideEffects)AttrProxySource
AttrSourceCallMethodItemSourceConstantSourceConstDictKeySourceConvertIntSourceFloatTensorSourceGetItemSource
GradSourceis_cell_contentsis_constant_sourceis_from_defaultsis_from_optimizer_sourceLocalSourceNumpyTensorSourceOptimizerSourceRandomValueSourceSourceSubclassAttrListSourceTupleIteratorGetItemSource)is_callable_allowedis_numpyis_numpy_dtypeis_numpy_type_info)_extract_tensor_dictbuild_checkpoint_variableclone_inputcommon_constant_typesget_fake_valueget_locals_to_stealget_static_address_typeis_frozen_dataclassis_function_or_wrapperis_lru_cache_wrapped_functionis_namedtupleis_parameter_freezing	is_typingis_utils_checkpointis_wrapper_or_member_descriptoristypeodict_valuesproxy_args_kwargsset_example_valuetensor_always_has_static_shapetuple_iteratortuple_iterator_getitemtuple_iterator_len unwrap_with_attr_name_if_wrapperwrap_fake_exception   )MutableLocaltypestrVariableTrackerVariableTrackerMeta)ConstantVariableEnumVariable)AutocastModeVariableEventVariableNullContextVariablePreserveVersionContextVariableStreamContextVariableStreamVariable)ConstDictVariableCustomizedDictVariableDefaultDictVariableHFPretrainedConfigVariablePythonSysModulesVariableSetVariable)DeviceMeshVariablePlacementClassVariablePlacementVariableProcessGroupVariableWorldMetaClassVariable)!CollectiveFunctionRewriteVariableFunctoolsPartialVariableTritonKernelVariableUserFunctionVariableUserMethodVariableWrapperUserFunctionVariable) TorchHigherOrderOperatorVariable)ItertoolsVariable)LazyVariableTracker)	BaseListVariableListVariableNamedTupleVariableRangeVariableRestrictedListSubclassVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradEngineVariableAutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableDebuggingVariableDelayGraphBreakVariableGetAttrVariableGetSetDescriptorVariableInspectSignatureVariableLambdaVariableLoggingLoggerVariableMethodWrapperVariableNumpyDTypeVariableNumpyTypeInfoVariableNumpyVariablePythonModuleVariableRandomClassVariableRandomVariableRegexPatternVariableSavedTensorBoxTorchVersionVariableTypingVariable)FSDPManagedNNModuleVariable$UnspecializedBuiltinNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)TorchScriptObjectVariableSDPAParamsVariable)NumpyNdarrayVariableSymNodeVariableTensorSubclassVariableTensorVariableUnspecializedPythonVariable)TorchCtxManagerClassVariableTorchInGraphFunctionVariable)build_torch_function_fnTensorWithTFOverrideVariableTorchFunctionModeVariable)FrozenDataClassVariableKeyedJaggedTensorVariableMutableMappingVariableSourcelessGraphModuleVariableUserDefinedClassVariableUserDefinedObjectVariableWeakRefVariable)InstructionTranslatorcudagraph_static_inputsc                     t          j                    5  t          j        dd           t          | d          cd d d            S # 1 swxY w Y   d S )NignorezThe .grad attribute of a Tensorgrad)warningscatch_warningsfilterwarningshasattr)ts    [/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr      s    		 	"	" " "*KLLL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ed<   eeej        f         ed<   e	ed<   e
ej        j        j                 ed<   dZe	ed<   dZe
ej                 ed<   ed	             Zd
 Zd Zd Zd ZdS )GraphArgsource_examplepass_arg_as_tensorfake_tensorT	is_tensorNexample_strong_refc                 x    t          | j        t                    r|                                 }|J |S | j        S N)
isinstancer   r&   )self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   torchTensorr&   r   r   r   s    r   __post_init__zGraphArg.__post_init__&  sP    dmU\22 	-)$-88DM4+,,,,,	- 	-,,r   c                 :    | j                             |           d S r   )r   reconstructr   codegens     r   r   zGraphArg.reconstruct+  s    (((((r   c                 "    d | _         d | _        d S r   )r   r   r   s    r   erasezGraphArg.erase.  s    "&r   c                 j    | j                                         |j                                         k    S r   )r   namer   others     r   __eq__zGraphArg.__eq__2  s)    {!!U\%6%6%8%888r   )r   r   r   rD   __annotations__r   r&   r   r   boolr
   _subclassesr   r   r   r   r   propertyr   r   r   r   r   r   r   r   r   r      s         NNN M5</0000" %+7BCCCC It 26.555! ! X!- - -
) ) )' ' '9 9 9 9 9r   r   c                   &     e Zd Zd fdZd Z xZS )BackwardStateGraphArgreturnNc                 l    t                                          d t                      dd d           d S )NF)r   r   r   r   r   )super__init__r   )r   	__class__s    r   r   zBackwardStateGraphArg.__init__7  sA    "__$ 	 	
 	
 	
 	
 	
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   )r   s   r   <lambda>z3BackwardStateGraphArg.reconstruct.<locals>.<lambda>C  s    G,,]-EWW r   r   F)txoutputbackward_state_varadd_push_nullcall_functiondup_topstorer   s    `r   r   z!BackwardStateGraphArg.reconstruct@  s    z 3333WWWW	
 	
 	
 	a'''gj':;;;;;r   r   N)r   r   r   r   r   __classcell__r   s   @r   r   r   6  sL        
 
 
 
 
 
< < < < < < <r   r   c                   j    e Zd ZU ee         ed<   eee                  ed<   eee                  ed<   dS )FrameStateSizeEntryscalarsizestrideN)r   r   r   r
   intr   r   r   r   r   r  r  J  sL         SM
49
T#Yr   r  c              #      K   | ]?\  }}|                     d           t          j        |          .t          |          V  @dS )_N)
startswithinspectisclassid).0r   members      r   	<genexpr>r  S  sf       / /f??3/ %,OF$;$;/vJJ/ / / / / /r   ITERTOOLS_TYPE_IDSITERTOOLS_POLYFILLED_TYPE_IDSc                   P    e Zd ZdZdeddf fdZd Zd Ze e	j
        d          d                         Zd	 Zd
 Zd Ze e	j
        d          d                         Zdej        fdZdej        fdZd Zd Ze e	j
        d          deeed egef         f         fd                        Zd ZdefdZ de!e"e#e$e%f         fdZ&de'fdZ(de!e)e*f         fdZ+de,j-        de.fdZ/de,j0        j1        fdZ2d Z3de,j-        fdZ4de,j-        fdZ5d Z6d Z7d  Z8d! Z9 xZ:S )"VariableBuilderz3Wrap a python value in a VariableTracker() instancer   r   Nc                     |
J d            t          j                    
J d            t                                                       || _        || _        |                                | _        d S )NzRConsider SourcelessBuilder for ephemeral objects, usually objects created locally.zExpected active TracingContext)r   try_getr   r   r   r   r   )r   r   r   r   s      r   r   zVariableBuilder.__init___  sq     _ %''335U333KKMM			r   c                 l   || j         j        j        v rJ| j         j        j        |         }t          | j        |j                  }|r|                     |           |S | j         j        j                            || j                  }|r|S |                     |          }| j        |_        | 	                    |          rG|| j         j        j        vr4t          |          s%| j         j        j                            ||          }| j         j        j                            || j        |           |S r   )r   r   side_effectsr1   r   install_guardsvariable_tracker_cachelookup_wrap_can_lift_attrs_to_inputsrY   track_object_existingadd)r   valueside_effect_result	dup_guard	cached_vtvts         r   __call__zVariableBuilder.__call__m  s    DGN///!%!<U!C'5G5NOOI /##I...%%GN9@@TT	 	ZZK	**2..	NTW^8883E:: 9 ,BB5"MMB-11%bIII	r   c                 T    t          |          t          t          t          t          hv S r   )typer   r   r   r   )r   r)  s     r   r"  z)VariableBuilder._can_lift_attrs_to_inputs  s&    Bxx(% 	
 
 	
r   c                  
    ddhS )Nr   rd   r   r   r   r   _common_constantsz!VariableBuilder._common_constants  s     		
 		
r   c                     | j         S r   r   r   s    r   
get_sourcezVariableBuilder.get_source  s
    {r   c                     |                                  t          t                    s"                                t          j        k    rd S t          fd|D             ddi i S )Nc                 :    g | ]}                     |          S r   )
make_guard)r  guardr   s     r   
<listcomp>z2VariableBuilder.install_guards.<locals>.<listcomp>  s'    EEEU))%00EEEr   skiprd   )r1  r   r6   guard_sourcer   CONSTANTr0   )r   guardsr   s     @r   r  zVariableBuilder.install_guards  sp    ""v~..	""$$(<<<4EEEEfEEENANNN	r   c                     t          |t                    sJ | j        |_        | j        j        j                            ||          S r   )r   rg   r   r   r   r  track_mutable)r   r%  vars      r   set_source_and_track_mutablez,VariableBuilder.set_source_and_track_mutable  s>    #/////[
w~*88DDDr   c           
         t           j        t           j        j        t           j        j        t           j        j        j        f| j        ft          t          t          t          j        t           j        f| j        ft           | j        ft$          t&          f| j        ft          t*                    | j        ft.          j        | j        ft4          j        | j        ft           j        j        j        | j         ft           j!        j"        | j#        fg	}tH          j%        r-tL          r&|'                    tL          j(        | j)        f           i }|D ]-\  }}tU          |t                    r|n|fD ]}||vsJ |||<   .|S r   )+r   r   nn	Parameterr   r   functional_tensorFunctionalTensorwrap_tensortuplelistr[   collectionsdequeSizewrap_listliker_   wrap_tuple_iteratorslicerangewrap_slice_rangerN   wrap_literalrePatternwrap_regex_patternweakrefReferenceTypewrap_weakrefutilshooksRemovableHandlewrap_removable_handlejitScriptFunctionwrap_jit_functionr(   trace_numpynpappendndarraywrap_numpy_ndarrayr   )clsentriesresulttsfnr   s         r   _type_dispatchzVariableBuilder._type_dispatch  s^    LH&%0%7H	  lK,=uzJ! S45U^S12())3+;<Z/0"C$45[.0IJY%s'<=)
.  	A" 	ANNBJ(>?@@@ 	 	FB%b%00;RRre  q		 r   r%  c                 ^    |                      t          j                   t          |          S r   )r  r/   ID_MATCHr   r   r%  s     r   rR  z"VariableBuilder.wrap_regex_pattern  s'    L1222#E***r   c                 l    |                      t          j                   t          || j                  S Nr0  )r  r/   
TYPE_MATCHr   r   rj  s     r   rU  zVariableBuilder.wrap_weakref  s.    L3444uT[9999r   c                 $    t          d           d S )Nz"unregistered hook removable handle)r.   rj  s     r   rY  z%VariableBuilder.wrap_removable_handle  s    
 	:;;;;;r   c                 n    |                      t          j                   t          |d| j                  S )N_torchdynamo_inliner0  )r  r/   rm  r   r   rj  s     r   r\  z!VariableBuilder.wrap_jit_function  s:    L3444*(
 
 
 	
r   c                     ddl m } t          j        d f|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                 x    t          t          j        fd| j        i|                     t
          j                  S Nr   )r   r   creater   r  r/   CLOSURE_MATCHrj  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>  s@    N,3% %;% )),*DEE% % r   c                     t                      S r   )r   rj  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>  s    +;+=+= r   c                 n    t          t          fd| j        i|                     t          j                  S rt  )r   _dataclasses_fields_lambdar   r  r/   FUNCTION_MATCHrj  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>  s=    N.% %;% )),*EFF% % r   c                     t                      S r   )r   rj  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>  s    4H4J4J r   )rr  r  	signaturedataclassesfieldsr   __version__r   rE  rF  r  )rb  rr  rc  rd  re  rf  r   s          r   _id_dispatchzVariableBuilder._id_dispatch  s    
 	(''''' !  ==>"   J JK%
*  	# 	#FB%b5$-88CRRre # # "r!uu# r   c                 A   '( ddl m}  |            rddlm} ddlm} n G d d          } G d d          }                                                     t                              }| |           S  	                                                    t                              }| |           S t                    rt          j        d	          t                    st          t           j                  r                               S t'                    r                               S t*          j        j        j        u r                     t4          j                    j        j        j                             j         !                                            fd
tE          #                                          D             }tI          |t                              S tJ          j&        u r4                     t4          j'                   tQ           j                   S tS          j*        t                              re                     t4          j+                   tS          j,                   } j         |_          j        j        j-        .                    |          S t          t^          t`          j1        t`          j2        f          r                     t4          j3                   ti          d 5                                D                       ''r                      t4          j6                   n; j        j        j                             j         !                                           ' fd(t_          (fdtE          #                                          D                       }t          t`          j1                  r\to           j         d          }tq          |t                     ts           j        |          j:                   j                   }n$tI          |t                     j                   } ;                    |          S ty          t*          j=        j>                  r ?                              S t          jA                  r B                              S ty          t*          jC        jD                  r=t           j                   }	 j        j        j-        .                    |	           |	S t          t                    rFd D             r:                     t4          jG                   t          jH         j                   S ty          t          jJ                  r5                     t4          jG                   t           j                   S t          jM                  r5                     t4          jN                   t           j                   S ty          t          jP                  r5                     t4          j'                   t           j                   S t                    rt           j                   S ty          t          jU                  rto           V                                d          }
 ts           j        |
          jW                  }g }to           V                                d          }tE          jX                  D ]D\  }}|Y                     ts           j        t          ||                    |                     Ei }to           V                                d          }j[        #                                D ]W\  }}t          jA        |          st          d            ts           j        t          ||                    |          ||<   Xt           V                                ^                    t4          j+                  |^                    t4          j_                  |^                    t4          j3                             t          |||          S t                    r5                     t4          jG                   t           j                   S t          Aty          t          jd                  r' e                    t          jf                            S t                    rYt          sJ                      t                    rt4          j'        nt4          j+                   t           j                   S t                    r5                     t4          jG                   t           j                   S t                    rty          t          jm                  ra                     t4          j+                   to           j         d          }t          |^                    t4          jG                             n                     t4          jG                   t           j                   S t          jp                  r@                     t4          j'                   t          jH         j         j                   S t          t*          jq        jr        js                  r5                     t4          j'                   t           j                   S ty          t*          jq        jr        ju                  rBd }	 jv        }n# t          $ r Y nw xY wg } j         ^                    t4          j+                  g}ty          |t                    rto           j         d          }|Y                    |^                    t4          j3                             tE          |          D ]D\  }}|Y                     ts           j        t          ||                    |                     Et          |   j        j        j-        .                    t           j         t          |                              S ty          t          j|                  rt          t          dd           t*          jq        jr        js                  rt          dd          dk    rqt          j~        dd           k    rW                     t4          j'                   t          t          j~        to           j         d                    d          S ty          t*          j        j                  r6                     t4          jG                   t           j                   S t*          j        j        j        j        u r2                     t4          j'                   t           fd          S t                    ret          j                  Pt                    rd  j        j        _        t          j                                       j                   S t          r/ty          t          j                  r                               S t          j                  r/                     t4          j+                   t                    S ty          t"                    rF                     t4          j+        t4          j                   t'          j         j                   S ty          t*          j        j                  rr                     t4          jG                   to           j         d!          } ts           j        |          j                  }t1          jH         j        |          S ty          t2                    r                     t4          jG                    j        j                            d"t*          j        j        d#j        j        j        d$          }t?          |j                   tC          |j         j                   S ty          t*          j        j                  r@                     t4          j+                   tI          jH         j         j                   S ty          tJ                    r                     t4          jG                   t*          j        j                                        j        j                            d"t*          j        j        j        t                    fi           }t?          |j                   tQ          | j                   S ty          t*          j        j                  r%t           j        v rtU           j                   S t          tV          j                  rKt          j        d%d           5                     t4          j+                   t[           j                   S t]          j                  r[                     t4          j+                   t]           j                   } j        j        j-        .                    |          S ty          t*          j        j                  rP                     t4          jG                   tc           j                    _         te           j                   S tg          j                  rtg           j                   S tk          j                  r6                     t4          jG                   tk           j                   S to          j                  r6                     t4          j                   to           j                   S tu          j                  r6                     t4          jG                   tu           j                   S ty          j                  r6                     t4          j                   ty           j                   S t                    t|          v rMt                    t~          vr6                     t4          j'                   t           j                   S ty          t*          j                  rt           j                   }j                                        rZj                                        } j        j        j                            t          |          |t          j        &          }n# j        j        j                                        } j        j        j                            t          j        d'd( j!                  t          |          |          } t          ||d)d d)|*          | j        j        d+<   t?          | j        |            j        j        j                            |j        j                    j        j        j        Y                    t          ||d                      t          | |d,k              S ty          ||f          r8                     t4          jG                   t          d d  j                   S ty          t*          j        j        j                  rN                     t4          jG                   t          j        j        j        j        g j         -          S t          j                  r6                     t4          j'                   t           j                   S t          j        d.d)          r7                     t4          j+                   t          d/ j                   S t                    r7                     t4          j+                   t          d0 j                   S t                    r^t                    \  }!|!to           j         |!           _         t          j                                       j                   S t          j        u r5                     t4          jG                   t           j                   S t          t          j                  rrt          j                  r]                     t4          j+                   t           j                   } j        j        j-                            |           |S ty          t          j        t          j        f          r]                     t4          j'                   t           j                   } j        j        j-        .                    |           |S ty          t          j|                  rty          j~        t*          j=        j>        t*          j        j        j        f          r ts           j        to           j         d                    j~                  }"|"rty          |"t                    s
J d1                                 t4          j'                   t          j        |" j                   S ty          t          j                  rt                    S ty          t          j                  rt                    S t          t                    t                    rt*          j        j        j        t*          j=        j        t*          j=        j        fv r/t          j                                       j                   S t*          jq        j        u r9                     t4          j'                   t          j         j                  S                      t4          jG                   t           j                   S t          j        t                              r                     t4          j3                    ;                    t           fd2t          t                              D             t                    to           j         d3          4                    S t          j        t                              rwd5d6l m}#m}$ t*          j        j                                      r j        j        j                            t          j        d'd( j!                  t                     j                   }%t           j         d)d d)          |%j        j        d+<   t          jH        |% j                   S t          d7          s 	                              S t          j         ts           j         |$ j                                                                                                                  t          j         ts           j         |# j                                                                                  t*          j        j                             j        j        j                  }& j        j        j                            t          j        d'd( j!                  t                     j                   }%t           j         d)d d)|&          |%j        j        d+<   t          jH        |%|& j                   S t          t                    t"                    r6                     t4          j+                   t%           j                   S t'                    rf                     t4          j+                   t)          jH         j         j                   } j        j        j-        .                    |          S  	                              S )8Nr   )
has_triton)	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  rp  c                     i | ]l\  }\  }}t          j        |          t          |t                                          t                                          |                               mS r0  )ri   ru  r   r:   r1  r7   )r  ikvr   s       r   
<dictcomp>z)VariableBuilder._wrap.<locals>.<dictcomp>;  s        Av1 !'**,E())+=doo>O>OQR+S+S - - -  r   r0  c              3   >   K   | ]}t          j        |          V  d S r   ri   
is_literal)r  r  s     r   r  z(VariableBuilder._wrap.<locals>.<genexpr>Q  s.      QQq,7::QQQQQQr   c                    rt          j        |          }|}n7t                                          |           }t	          j        ||          }t                                          |          }t	          j        ||          }||fS r   )ri   ru  r7   r1  r   r:   )	r  r  r  key
source_keysource_valuer%  	all_constr   s	          r   build_key_valuez.VariableBuilder._wrap.<locals>.build_key_valuek  s     D*1!44C!"JJ!3DOO4E4Eq!I!IJ-4Q
CCC,T__->->
KK+21lCCEz!r   c              3   >   K   | ]\  }\  }} |||          V  d S r   r   )r  r  r  r  r  s       r   r  z(VariableBuilder._wrap.<locals>.<genexpr>x  sJ        -6QA1a((     r   default_factory)r  r   c              3   >   K   | ]}t          j        |          V  d S r   r  r  xs     r   r  z(VariableBuilder._wrap.<locals>.<genexpr>  s?       +
 +
/0'**+
 +
 +
 +
 +
 +
r   r%  r   funcargskeywordsz*functools.partial with non-literal keyworddtypesaved_tensors)r   r  __self__r    apply)r  c                      t          t          j        j        j        j                                       j         j        j        j	        
                                fi           S r   )r   r   _dynamoexternal_utilsFakeCompiledAutogradEngineexec_final_callbacksr  r   r   r  get_ca_final_callbacks_varr   s   r   r   z'VariableBuilder._wrap.<locals>.<lambda>"  sS    ,M0K` -GW^0KKMMO  r   Tstreamr  r   )	stream_iddevice_indexdevice_typeenter_result)dynamic_dim[^a-zA-Z0-9]+r  F)r   r   graphargrd   )target_valuesr   __script_if_tracing_wrapper__original_fn__wrapped__z"Failed to produce a valid self objc           	      n    g | ]1}t          j        |         t          j        |                     2S )r  )r   ru  r:   r   r  r  r   r%  s     r   r6  z)VariableBuilder._wrap.<locals>.<listcomp>>  sR         ,2"'(=a3P3P    r   r   )user_clsuser_cls_sourcer'   )FlattenScriptObjectSourceScriptObjectQualifiedNameSource__obj_flatten__(  torch.utils._tritonr  triton.runtime.autotunerr  triton.runtime.jitr  rg  getr,  r  r  rS   r  getattr_staticr$   rZ   r(   traceable_tensor_subclassesrD  rU   rJ  r   rV  _pytreeSUPPORTED_NODESr  r/   DICT_VERSIONr   r   guard_on_key_orderr$  r   r   	enumerateitemsrq   sysmodulesrz  ru   rr   is_matching_cls_hfrm  wrapr  r#  dictrG  defaultdictOrderedDictSEQUENCE_LENGTHallkeysDICT_CONST_KEYSr4   rs   r  r  r>  r   r@  Modulewrap_moduleri   r  rO  	overridesTorchFunctionModer   	frozensetri  ru  enumEnumrj   r   is_reorderable_logging_functionBUILTIN_MATCHloggingLoggerr   rX   rL   	functoolspartialr1  r  r  r_  r:   r  r.   r0   r4  	DICT_KEYSr}   rW   r   r^  genericra  asarrayrH   callabler   rI   r   rJ   iinfor   r|   can_rewriteautogradfunctionFunctionMetar   FunctionCtxr  RuntimeErrorrE  r   r   types
MethodTypegetattrr  r   _C_ImperativeEnginer   r  r  r  _exec_final_callbacks_stubr   r+   lookup_callablerG   !has_user_defined_allowed_in_graphcreate_with_sourcenumberwrap_unspecialized_primitivert   is_matching_objectr   
NAME_MATCHr   makecudaStreamContextr  ro   r   create_proxyStreamr  r  r  r]   noderp   device_SDPAParamsr   r   store_user_object_weakrefget_user_object_from_idrl   _TensorMetar   
contextlibnullcontextrm   r   optim	OptimizerrB   r   r{   is_group_member_typerz   is_process_grouprw   is_device_meshEQUALS_MATCHrx   is_placement_typery   is_placementr  r  r   SymBoolr8   has_hintrequire_hint	shape_env$create_unspecified_symint_and_symbolr  r   DYNAMICcreate_unbacked_symintroot_tracercreate_graph_inputrP  subr   metabound_symbolsexprtracked_fakesTrackedFaker   r~   ampautocast_modeautocastrk   
fast_dtype_enabled_cache_enabledr   is_matching_clsr   rT   rb   r   randomRandomr   r   is_supported_random_objr<  
ModuleTyper*   DummyModuler   TreeSpecrg   r   __func__GetSetDescriptorTyper   MethodWrapperTyper   
issubclassrW  BackwardHookrA  Buffer _unsafe_preserve_version_counterrn   constructorr   r   rM  lenr   r  r  _libraryfake_class_registrytracing_with_realr   wrap_user_definedr   realize_all_typequalified_namer  maybe_to_fake_obj	fake_moder   r   rR   r   ))r   r%  r  r  r  type_dispatchid_dispatchrd  factory_sourcer=  func_srcfunc_objr  args_sourcer  argr  keywords_sourcer  r  	dt_sourceactual_saved_tensorsr  r:  saved_tensors_sourcestream_source
stream_varstream_proxyevent_proxy
new_source
value_hint
new_symintsym_node_proxy	attr_nameself_objr  r  proxyfake_script_objr  r  s)   ``                                     @@r   r!  zVariableBuilder._wrap  s   222222:<< 		::::::6666666               ++--11$u++>>$ =u--- ''))--bii88";tU+++ "%(( 	P*52GOOE )// h		16654
 4
 h		1 ##E***5!! d		1%%e,,,ek)999  9::: GN-11$+2B2B2D2DEEE    "+5;;==!9!9  F %VT%[[999ck!! ;<<<+4;????#6tE{{CC L		1 7888+0u==F KFM7>.DDUFSSSED+"9;;RSTT G		1 <=== QQEJJLLQQQQQI J ##L$@AAAA$ 155dk6F6F6H6HIII" " " " " "     :CEKKMM:R:R    F e[455 T!+DK9J!K!K,KK$LODG^$L$L-% %  ;   +64;;t{SSS44UFCCCux// J	1##E***(// H	1$$U+++u@AA F	1+E$+FFFCGN'==eSIIIJE9%% B	1 +
 +
49+
 +
 +
 B	1
  5666#*t{KKKKty)) {	1 5666eDK@@@@>uEE x	1  :;;;$U4;????w~.. s	1 ;<<<(t{CCCC '' p	1,DK@@@@y011 n	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 P!"NOOOoG]?A>>   !!,,\-DEE**<+ABB&&|'CDD  
 ,HdHEEEu T	1 5666!{    ^
5"* = =^**2:e+<+<===e__ J	1IIIE??-++!,  
 !t{;;;;E"" B	1 5666%eDK@@@@&& 	1%** ;##L$;<<<&t{G<<	i22<3HIIJJJJ##L$9:::(t{CCCC.:5AA v	1 ;<<<4;{   
 E5>2?@@ o	1 ;<<<+{    u~6BCC i	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.//K	1z400%.2I2V K	1
 z2..'99$????  ;<<<"(N:dk*+U+U+U   	   ux9:: {	1 5666)%DDDD}+Fab b  ;<<<!      e__ j	1!<U!C!C!O"5)) HCG@.u55HHdk I     d	1Jubi00 d	144U;;;':5AA b	1 7888-e444233 _	1 79PQQQ38t{SSSSuz788 \	1 5666&t{H==M@-@@NNJ(/DDD{++ W	1 56667>66
!!&$)$6#(#4 		 	L l/777!{	     466 D	1 7888%,TWeT[IIIz** A	1 5666M99%@@@'.55#;E	 K k.666 {    ueh233r	1;;;)%DDDD5*011m	1&undCCK 7888&dk::::&9%@@ g	1 7888.uT[IIIF7>.DDUFSSSu{455 b	1 5666)$+66DK$U4;????#8?? ^	1)%DDDD!2599 \	1 5666'dkBBBB.u55 Y	1 9:::%eDK@@@@#5e<< U	1 5666)%DDDD+E22 Q	1 9:::${   
 uII+++5		!>>> ;<<<$U4;????u}-- D	1 *$+66Jz""$$ O"Z4466
 GN,QQJ"$.$6 R   
 "W^5LLNN
!W^7JJ'di88Z  ! K  N 4<#-4 4 4N$Z0 n1:>>>GN(,,Z_-ABBBGN(//J
D99   #a   Y788 S	1 5666'{	    uy6?@@ K	1 5666'L$N(	 {    *9%@@ @	1 ;<<</dkJJJJ#E+H%PP }	1 7888.t{    +511 x	1 7888.umDKXXXX#E** u	1?FFE9 $(i@@%e,,??dk @    fm## 5666&dk::::E6=)) i	1n.T/
 /
 i	1  7888#E$+>>>FGN'55eVDDDM  0-2KLMM _	1 ;<<<){  F GN'==eVLLLMu/00 W	1ZNUX_ek.A.JK6
 6
 W	1
4;
 C C  n H  4
/! ! 4 434 4 4  ;<<<%{   
 u9:: }	1 ,E222u677 u	1
 )///UT** o	1!."   #)%00CC$+ D    GGG##L$?@@@5A$'JJJ  5666+{    ,;DKKHH [	1 <===44.     "'s5zz!2!2	   "%[[$.t{K$H$H	 	 	   '6tE{{CC L	1       
 ~1CCEJJ 2EEF+S$)<<KK; F   /7KtUE/ /

+ 17;    5"344 5--e444  +V)H)H)U)UVVKKMM0022     +P)B)B4;)O)OPP))++    $n@RR(% O GN.AA'di88U{ B  E +3UE4+ +EJOJ' -3{   
 U^44 	1 7888)%DDDD '' 	1 7888,3DGU4;WWWF7>.DDUFSSS))%000s   7m? ?
nnc                     |                      t          j                   t          || j                  }t          j        t          |                    s|S | j        j	        j
                            ||          S rl  )r  r/   rm  r   r   r2   "cls_supports_mutation_side_effectsr,  r   r   r  r#  r   r%  rd  s      r   r9  z!VariableBuilder.wrap_user_defined  sh    L3444*5EEE=d5kkJJ 	Mw~*@@OOOr   c                     t           j        rOt          |          t          j        u r4                     t          j                   t          j	        |          S                      t          j
                   |D ]}||u rt          d           t          |t                    r|t          d |D                       rc j                                                                        r8                     t          j                   t%          d |D                       S  fdt'          |          D             } j        j        j                            d          }t1           j        t2                    r j        j        t7          |          v r j        }t1          |t8                    sJ  j        j        j                            t?          j         dd j!                  t          |          |	          }d
|j"        j#        d<   tI          tJ           j        ||d |          }g }t'          |j&                  D ]\  }	}
tO          ||	d          }|
 j        j        j(        |<   tS          ||	                   |
j*        j"        j#        d<   tW          j,        t          j-        t]          ||	                             }|/                    |0                    |                     tc          |ddi te          ||dd d          }||j"        j#        d<    tg          j4        |          |tk                                }t          |t8                    r 6                    ||          S |S )Nr%  z-list elements are pointing to the list itselfc              3   >   K   | ]}t          j        |          V  d S r   r  r  items     r   r  z0VariableBuilder.wrap_listlike.<locals>.<genexpr>  s.      HH$$/55HHHHHHr   c                 6    g | ]}t          j        |          S r   ri   ru  r\  s     r   r6  z1VariableBuilder.wrap_listlike.<locals>.<listcomp>  s$    !R!R!RD"2"9$"?"?!R!R!Rr   c           	          g | ];\  }}t          j        |t                                          |                     <S r  )r   ru  r:   r1  )r  r  r]  r   s      r   r6  z1VariableBuilder.wrap_listlike.<locals>.<listcomp>  s[     
 
 

 4	  &$T__%6%6::  
 
 
r   r   r  r  r0  T	steal_arg)
target_clsr   rT  example_valuesubclass_typer   Fbaseindexindex_is_slicetensor_dictr7  rd   )r   r   r   r  mutable_local)7r(   specialize_intr,  r   rI  r  r/   CONSTANT_MATCHri   ru  r  r.   rZ   rE  r  r   r8  is_unspecialized_nn_moduler   r  r   r   local_scoper  r   r@   
local_namerP   rF  r  r  rP  r  r   r  r  wrap_fx_proxy_clsr   r  r:   input_source_to_varrK   rT  r  r  TENSOR_MATCHr&   r_  r4  r0   r   r   cls_for_instancere   r>  )r   r%  r]  r   maybe_gmr   tensor_list_proxylist_variabler:  r  tensor_variablesource_ir5  r  rd  s   `              r   rJ  zVariableBuilder.wrap_listlike  s     	8T%[[EJ%>%> ;<<<#*7777 	L8999 	O 	ODu}}MNNN 5%  	THH%HHHHH	T ((**EEGG	T
  ;<<< !R!RE!R!R!RSSS
 
 
 

 %U++
 
 
 7>-11&99K
 
 2	?k$(;H(E(EEE [FeT***** $ : M M'di88$u++f !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,..
 
 
 % 	D44UFCCCr   c                                           t          j                    fdt          t	                              D             }t          |t                       j                  }                     |          S )Nc           
          g | ]N} t          j        t                                          |                    t	          |                    OS r   )r  r   rF   r1  r`   r  s     r   r6  z7VariableBuilder.wrap_tuple_iterator.<locals>.<listcomp>  sg     
 
 
  WODG%?@Q@QST%U%UVV&ua00 
 
 
r   )rk  r   )	r  r/   TUPLE_ITERATOR_LENrM  ra   r   re   r   r>  )r   r%  r   rd  s   ``  r   rK  z#VariableBuilder.wrap_tuple_iterator  s    L;<<<
 
 
 
 
 -e4455	
 
 
 ',..
 
 
 00???r   c                       fddD             }                      t          j                   t          t                    rt          | j                  S t          | j                  S )Nc           
          g | ]N} t          j        t                                          |                    t	          |                    OS r   )r  r   r4   r1  r  )r  r  r   r%  s     r   r6  z4VariableBuilder.wrap_slice_range.<locals>.<listcomp>	  se     
 
 
  GODGZ0A0A1%E%EFFq!! 
 
 
r   )startstopstepr0  )r  r/   rm  r   rL  r   r   r   )r   r%  r  s   `` r   rN  z VariableBuilder.wrap_slice_range  s    
 
 
 
 
 /	
 
 
 	L3444eU## 	< t{;;;; t{;;;;r   r5  c                 B   ddl m} t                              d| 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)r5  ri  _dynamo_static_input_type)
decoratorsr  static_inputs_logdebugr   r   r  r   r   r  r  rT  r  r  )r   r%  r5  r  r=  s        r   mark_static_inputz!VariableBuilder.mark_static_input  s    444444.0@0@0B0BBuII	
 	
 	
 	E//// DGN///'.-e4C / IN.+   0/r   c                    ddl m} t          |j                  dk    rt	          dt          |                      t          ||          rt          j        |j	        dd          rt          | j                  S |                     t          j                   t          | j        d          | _        |                     |j                  S t%          |t&          j        j        t&          j        j        t&          j        j        f          rt0          j        st	          d	           t5          |d
d          rt5          |dd          s
J d            |                     t          j                   t7          ||                                           }t;          j        t?          |                    s|S | j         j!        j"        #                    ||          S tI          j%        || j         j&                  rt%          |t&          j'        j(        j)        j*                  r-|+                                }tY          | j                  | _        |                     t          j                   t&          j-        j        j.        rt_                      }|0                                D ]}| 1                    ||           |2                                D ]}| 1                    ||           |r|| j         j!        j3        | j4        <   |j5        6                    d          st5          |j7        dd          rtq          || j                  }nts          || j                  }t;          j        t?          |                    s|S | j         j!        j"        #                    ||          S tu          |j7        t&          j        j;        j<        j=                  rB|                     t          j                   ts          ||                                           S | j         j!        >                    || j4        |                                           S )Nr'   )OptimizedModuler   zuninitialized nn.Module: _torchdynamo_disableFr0  	_orig_modz5TorchDynamo purposely graph breaks on RNN, GRU, LSTMs_is_fsdp_managed_module_fsdp_use_orig_paramsz3Dynamo only supports FSDP with use_orig_params=Truer  )z	torch.nn.z	torch.ao._dynamo_marked_static)?
eval_framer  r5  __dict__r.   rf   rZ   r  r  forwardr   r   r  r/   rm  r4   r  r  r   r   r@  RNNGRULSTMr(   	allow_rnnr  r   r1  r2   rW  r,  r   r   r  r#  r)   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baser3   r  inline_inbuilt_nn_modulesrV   
parametersr  buffers
nn_modulesr   r   r  r   r   r   r0  paralleldistributedDistributedDataParallelregister_attr_or_module)r   r%  r  rd  freezingpbs          r   r  zVariableBuilder.wrap_module%  s   000000u~!##FgennFFGGG%)) 	5%em5KUSS C
 /dkBBBB 7888$T[+>>DK##EO444 uux|UX\58=IJJ	S$	S QRRR53U;; H	 .  E EDE E E  78880t?P?PQQQFA$u++NN 7>.DDUFSSS0GG .	
 %!6!C!NOO ;((-dk:: 7888}#= A022))++ > >A**1H*==== > >A**1H*==== A <ADGN-di8**+EFF R'!8%K K R >eDKXXX6uT[QQQ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	(( :   r   c                     t           j        sMt          |          t          u r6t	          j                    j        s| j                                        	                                r| j                                        
                                sx| j                                                                        sMt          | j                  s9t          | j                  s%t          d          sP||                                 v r:|                     t"          j                   t'          j        || j                  S |                     |          S t           j        s+t          |          t.          u r|                     |          S |                     t"          j                   t'          j        || j                  }t3          |t4          t6          f          r|                     ||          S |S )Nz5pytorch/dynamo:enable_unspecialize_zero_one_plain_intr  )r(   rl  r,  r  r   r  #force_unspec_int_unbacked_size_liker   r8  is_localis_specialized_nn_module"is_unspecialized_builtin_nn_moduler>   r<   r   r.  r  r/   rm  ri   ru  wrap_symintspecialize_floatfloatwrap_symfloatr   rF  setr>  rX  s      r   rO  zVariableBuilder.wrap_literal  s   $ !	e);); "%''K /K,,..7799/ ;++--FFHH/ ;++--PPRR/ $DK00/ $DK00/ (O /  !7!7!9!999 ##L$?@@@'.U4;OOOO''...( 	T%[[E-A-A%%e,,, ;<<<%,5MMMF%$-- H88GGGMr   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   r   r>  r-   rj  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        rn|slt          |t          j	        j
                  s(|rK|                                                                r%|                     |t                                 d}|ot
          j         pt                      }|                                                                s|rb|                                                                s<|                     |           | j        j                            || j        |          S t)          |          rP|                     |           | j        j                            |t+          j        dd| j                  |          S t/          |          t
          j        v rt/          |          }n~t/          |          t          j        t          j	        j
        t          j        j        j        t          j        j        j        fv s&t?          |          sJ t/          |                      d }|| j        j        j         v }|r| j        j        j         |         S t	          |          dk    r| !                    tD          j#                   |                     |           | j        j        j$        %                    t+          j        dd| j                  t/          |          |          }i }t/          |          t
          j        v r=tM          | j        || j'                  |d<   | !                    tD          j(                   t          |t          j                  r?|j)        r8t          |t          j*        j+        j,        j-                  st]          d           t          |t          j                  r6t_          |          r'| j        j0        rt
          j1        st]          d	           te          |          r;tg          |          ,|j4        tg          |          j4        k    rt]          d
           tk          d| j        ||||d|}	tD          j6        }
t          |tn                    rtq          |          rtD          j9        }
| !                    tu          j;        |
t          |tx                    r|nt{          |                               t?          |          r| !                    tD          j>                   | !                    tD          j(                   t          t          |          A                    tD          jB                             |C                                \  }}|D ]W}t          ||          }t          | j'        |          }t          jG         t          | j        |          |                     X|	| j        j        j         |<   d|jI        jJ        vsJ t          |          |jI        jJ        d<   |	jL        jI        jJ        d         }t          |          | j        jN        urt          d          t          ||d|          }||jI        jJ        d<   | j        j        Q                    |           |	S )Nr  Tr0  r  r  guardedtorch_function_fn3torch.compile does not support strided NestedTensorz-torch.compile does not support sparse TensorszInconsistent dtype between tensor and its gradient. This can happen in FSDP and crashes meta tensor creation. This is potentially a workaround. Fixing it correctly requires some design around FSDP + torch.compile.)r   rT  rc  rd  r   rZ  ri  rc  z(Wrapped Tensor must be this graph's fakeFr  r   )Rr1  r   r   r  rQ   r(   r  r   r   r@  rA  r8  rn  r  rV   r  is_fsdp_moduler  r  r   r=   rP  r  r,  r  r   r   r   r   rB  rC  r$   rr  r  r/   ri  r  r  r   r   rm  	is_nestednested	_internalnested_tensorNestedTensorr.   r   r  capture_sparse_computer   r   r  wrap_fx_proxyrs  r;   r?   NOT_NONE_MATCHr  r  rA   r&   TENSOR_SUBCLASS_METADATA_MATCHr0   rE   r4  r  __tensor_flatten__r  r4   r   r:  r  r  r  rK   rT  r   r>  r-   r   add_symbol_bindings)r   r%  r   is_static_inputmake_graph_attributerd  is_duplicate_tensortensor_proxyoptionsrx  
guard_typeattrsr  attrinner_valueinner_sourcefake_tensor_valuer  s                     r   rD  zVariableBuilder.wrap_tensor  s   "" DGN777771%88D ,	##	# 5%("455		# 	#  &2244OOQQ	# ""50E0G0G"HHH"O.  
00K4I4K4K 	
 !!::<<	@T	%%''6688	 11%8887>99ty :    f%% 	11%8887>99'di88 :    ;;&<<<$ !KKMM;;"!-8!3D	#  
 /u55 
 8<E{{   !M %(JJ 	>7>5f=="5))Y66 5666 	--e444 w~1DDF#S$)44d5kk& E 
 
 ;;&<<<+B, ,G'(  7888 uel++	Q	Q uel&<&J&WXX	Q
 OPPP uel++	Ke$$	K W^	K ,2+H	K IJJJ %  
	%  ,y//555D   ( 
w'
 
 
 
 ".
fj)) 	5.Fv.N.N 	5%4J "&*;<<.EE&u--  		
 		
 		
 )// 	 KLLL 7888&v..99,:STT   //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***8444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	 |                    |          }|rddlm}  ||          }n3# t          $ r&}t!          t#          |                     Y d }~nd }~ww xY wt%          j         t)          | j        |          |                     | j        j        j                            t3          j        dd| j                  t9          |          |          }d|i}	t;          dt<          | j        ||d	|	}
|
| j        j        j        |<   |
j         j!        j"        d
         }tG          ||d|d|          }||j!        j"        d<   |
S )Nr   )_utilT)clone_preserve_stridesr  r  r0  r   rb  r   rT  rc  rc  r   r   r   r   r  r   )$r^  r   r`  rA   r1  torch._numpyr  flags	writeable
ValueErrorrf  nditer_try_convert_to_tensortorch._prims_commonr  NotImplementedErrorr.   strr   r:  r  r   r   r  r  rP  r  r   r,  rq  r   rr  rT  r  r  r   )r   r%  r   r  readonlytensor_valuer  erT  r  numpy_ndarray_variablerc  r  s                r   ra  z"VariableBuilder.wrap_numpy_ndarrayq  sE   ~~~%,,,,,"4??#4#455&&&&&&{,, 	99(,%% 9 9 9 "%*bi88888889
	" 77>>L DFFFFFF55lCC" 	" 	" 	"#a&&!!!!!!!!	" 	'(H(H(H(V(VWWW*==F#S$)44d<6H6HQW > 
 
 V$!2 "
+w&	"
 "

 "
 "
 6L*62.49>O #%+
 
 
 '/

#%%s*   A* *+BB(C 
C5C00C5c                 
    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                            |j        j                    j        j        j                            t%          | j        d                      nct)                                                     st,          j        j        j        r:                     t6          j                   t;          j        | j                  S  j                                         fd} j        j        x}# ||            j        j        j                  }n`|j!        "tE          d |d           }||j#        j$        <   n7|j!        D ]} ||j$                             j        j        j                  }t0          j%        r|j&        t0          j'        stP          j)        }n4                     t6          j                   t;          j        |          S |*                    | j        |          } j        j        j                            |j        j                    j        j        j                            t%          | j        d                      n]t)                                                     sJ                      t6          j                   t;          j        | j                  S tW                                           tX                    rJ t[                                           .                    t6          j/                             d                                 i}	 j        j        j0        1                    te          j3        dd j                  t          |                                           	          }
ti          |
j        |           tk          |
|fi |	}| j        j        j         j        <   t)                                                     s j        j6        rNtW                                           tn                    s'tq          d
| d                                            |j9        j        j:        d         }tw                                           |dd d|          |
j        j:        d<   |S )Nr  c                    j         j        j        vrt          | d d           }nj         j        j                 }|j        | k    rrt
                              d| |j                   j                                        	                                rt
          
                    d d           d |_        |j         j        j        <   d S )N)r	  r
  r  z%automatic dynamic int %s val %s != %sz%sz is converted to a symbolic integer. It is an attribute of a user defined nn module class. If you wish to keep it static, you can mark the nn module class as `torch._dynamo.mark_static`.)r   r   frame_stater  r	  logr  r   r8  rn  info)r%  frame_state_entryr   r   s     r   update_frame_statez7VariableBuilder.wrap_symint.<locals>.update_frame_state  s    tw~999
 )<$4) ) )%% )-(B4(H%(/588		C !-4	    ;3355PPRR HH $'+ %_ %_ %_   48)03D*4000r   r
  r	  r  rZ  )r   r  r   r  r  r0  =Dynamo attempts to add additional input during export: value=	, source=rc  Fr  r  )<r,  r  r   r   r   unspec_variable_mapr  r   r  r  r  r   r  r$  r  r  r  r_  r  r   r=   r1  r   r  r(   rl  r  r/   rm  ri   ru  distributed_stater  
all_statesr  local_stateinput_sizesautomatic_dynamic_shapesr	  assume_static_by_defaultr   r  r  r   rC   r0   r4  rm  r  r  rP  r  r]   r   r  r@   AssertionErrorrT  r  r   )r   r%  r  wrapped_valuer  str  	sub_stater  r  rT  
unspec_varrc  r   s   `            @r   r  zVariableBuilder.wrap_symint  s   E{{c!!!!9:::7>5di@@GN,	C _	L%<<>>M%m444GN(,,]-?-DEEEGN(//M4;==    $DOO$5$566 S	L}#2 P ##L$?@@@'.U4;OOOO;##%%DE E E E E E< g//8""5)))$(GN$>t$D!!&$7eD% % %! 49*400 "$ D DI&&y'<T'BCCCC$(GN$>t$D! /<4E4L4T4 5U(0 ##L$?@@@'.U;;;;%JJ{' K  M
 GN(,,]-?-DEEE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??$$ > 
 
 	%*m444$UMEEWEE
8B*495!$//"3"344 	w~ j1B1BK&P&P $Talpl{l{l}l}   ',16GM*2!!#( #0+ + +EJOJ' r   c           
         | j         | j        j        j        v r| j        j        j        | j                  S t          j        j        j        s5t          | 	                                          st          j        |          r:|                     t          j                   t          j        || j                  S t	          j        |t          j                  }t)          | 	                                t*                    rJ t-          | 	                                                    t          j                             t3          | 	                                          |d}| j        j        j                            t9          j        dd| j                   t=          |          | 	                                          }t?          t@          f| j        ||d|}t)          |t@                    sJ || j        j        j        | j         <   | j        j!        rNt)          | 	                                tD                    s'tG          d| d	| 	                                           d }|j$        j%        j&        d
         }tO          |          sJ |}|j(        | j        j(        u sJ d|j(         d            tS          | 	                                |d|d|          |j%        j&        d<   tU          | j         | j        j        j+        ddgtY          |gi           R            }| j        j        j-        .                    t_          |j0        | j        d                      |S )Nr  )r  )r   	raw_valuer  r  r0  r   rT  rc  r  r  rc  fake mode (^) from fake tensor metadata doesn't match mode({self.tx.fake_mode}) from InstructionTranslatorTFr  r  call_methodr]  )1r   r   r   r  r   r  r(   r  r=   r1  mathisnanr  r/   rm  ri   ru  r   tensorfloat64r   rC   r0   r4  rm  r9   r  r  rP  r  r,  rq  r   r  r@   r  rT  r  r  r   r>  r   r  r  r\   r  r_  r  sym_num)	r   r%  r  r  rT  r  r  rc  r   s	            r   r  zVariableBuilder.wrap_symfloat8  sZ    9:::7>5di@@
 M 1	L!$//"3"344	L z%  	L
  ;<<<#*t{KKKK U%-@@@ doo//1BCCCCCdoo''22<3JKKLLL /t/@/@AAPUVV *==F#S$)44??$$ > 
 
 ''
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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           | j        j        j                            t!          j        dd| j                   t%          |          |                                           }t'          t(          f| j        ||d|}|| j        j        j        | j         <   t+          |                                           s| j        j        rNt          |                                 t.                    s't1          d| d|                                            d }t          |t2                    r|j        }n|j        j        j        d	         }t=          |          sJ |}|j        | j        j        u sJ d
|j         d            tA          |                                 |d|d|          |j        j        d<   |S )Nr   r  r  r  r0  r  r  r  rc  r  r  TFr  r  )!r   r   r   r  r   r  r   r1  rC   r0   r4  r/   rm  updater  r  rP  r  r,  rq  r   r=   r  r@   r  ri   r%  rT  r  r  r   r>  r   )r   r%  r  r  rT  r  r  rc  s           r   r  z,VariableBuilder.wrap_unspecialized_primitive  s   9:::7>5di@@U++$//++->?? 	Q$//++66|7NOOPPPT__../U+,,,*==F#S$)44??$$ > 
 
 ''
w'	
 

 
 

 9C*495!$//"3"344 	w~ j1B1BK&P&P $Talpl{l{l}l}   !%*&677 L * 0 * 0 5 :? K=))))) -$.$'2CCCCC/9 C C C DCC
 +3!!#'-#0+ + +EJOJ' r   );r   r   r   __doc__rD   r   r*  r"  staticmethodr  	lru_cacher.  r1  r  r>  classmethodrg  rP  rQ  rR  rS  rT  rU  rY  r\  r   r  r   r   rg   r  r!  r9  r   rE  rF  r[   r	   rJ  r_   rK  rL  rM  rN  r   r   r   r  r@  r  r  rO  r  rD  ra  r  r  r  r  r  s   @r   r  r  \  sD       ==" " 
	" " " " " "  0
 
 
 Y

 

  \

    E E E
 Y" "  ["H+
 + + + +
:'"7 : : : :< < <
 
 
 Y 	c8.4oEFF	G       [ DG
1 G
1 G
1RPs P P P PZ5lJ)N#O Z Z Z Zx@ @ @ @ @<eE5L&9 < < < <0u| 0D 0 0 0 0 ` ` ` ` `D" " "Hel    } } } } }~;& ;& ;&zH H HTg g gR4 4 4 4 4 4 4r   r  c                    t          | t                    r| j        }n/t          | t                    r| j        }nt          d|             g }t          j        |          D ]W}d }| j        r(t          t          | j        d          |j                  }|                    t          ||                     Xt          |          S )Nz)Dataclass fields handling fails for type __dataclass_fields__r0  )r   r   r%  rr   r  r.   r}  r~  r   r:   r4   r   r_  r   )objr%  r  fieldr   s        r   ry  ry    s    #011 I		C/	0	0 IG#GGHHHE#E** F F: 	"3:'=>>
 F 	.uVDDDEEEEr   r   c                     | |||d|}|t          ddt          i|S t          ddt          i|}|                    |            |S )N)r   rT  rc  rd  rb  r   )rq  r   r   install_global)r   rT  rc  rd  r  kwargsrd  s          r   r  r    sy     &&	 
 F  EENEfEEE"UU.JUfUUb!!!r   c                 V   ddl m} t          |          sJ d|v r-|d         %j        j                            |d                    d|j        j        vsJ |j        j        d                      |}fd}t          j	        j
                                        5  |t          |j        d          }nt          |          j        u rnt          |t          j                  rj        rSt          j                                        5   ||          |j        j        |j        <   d d d            n# 1 swxY w Y   d| t*          t,          fv i}	d	|v r|d	         J |d	         |	d	<   t/          |fd
i|	}t          |t          j                  r8|j        j        dk    r(t          |          j        urt5          d|           d d d            n# 1 swxY w Y   t          |t          j                  rt          |t          j        j                  }
t          |t          j        j                  } ||          }t=          |j        |           |                     |          }t          |t          j         j!        j"                  rI|j        j        u r;|r|nt          j        }|
rt          j        j        n|rt          j        j        n||d<   |                    |            | |fi |S tG          |j        j$        d          rC|j        j$        j%        dk    r.t          |j        j$        j&        t          j        j'                  s|j        j$        t          j(        j)        k    rtU          |j        j$                  S |j        j$        t          j        j+        k    s|j        j$        t          j,        j-        k    rt]          |          S t_          |t          j0                  r2tc          d |D                       rd |D             }te          |fi |S t          |tf          th          f          rt=          |j        |           g }tk          |          D ]\  }}|%|6                    to          j8        d*i |           ,|j        9                    dtt          j;        ||fi           }d	|v r2|d	         }|<                                }t{          ||d          |d	<   n|}|6                    t}          d+| ||d|           t          |t          j0                  rte          ||fi |S t_          |tf                    rt          |fi |S t_          |th          t          f          rt          |fdt                      i|S |jC        jD        dk    s7tG          |d          s'J d|jC        jD         dt3          |                       t          ||jC        fi |S ||j        j$        t          jF        u rto          j8        d*i |S t          |t          jG        t          jH        t          jI        f          r#t=          |j        |           t          ||fi |S t          jL        |j        j$                  rt          |j        j$        t                    s$|j        j$        d t                      D             v r)t=          |j        |           t          |||j        fi |S t          jL        |j        j$                  rt          |j        j$        t                    s$|j        j$        d t                      D             v r#t=          |j        |           t          ||fi |S |j        j$        dk    r2|j        jS        dk    r"t=          |j        |           to          |fi |S |Xt          |t                    rC|j        j$        d k    r3|j        jS        dk    r#t=          |j        |           t          ||fi |S t          |t                    r|j        j$        t          jU        t          tt          j;        t          jW        jX        t          jY        tt          jZ        t          j[        j\        j]        t          t          j^        d!t                    t          t          j^        d"t                    t          j`        f
v s|j        jS        dk    r5|j        j$        d#v r't=          |j        |           to          j8        |fi |S t          |t          ja        j,        jb                  r$d$d%lcmd} t=          |j        |            ||fi |S t          |t                    r|j        j$        t          j        jf        t          ja        j,        jg        t          ja        j,        jh        t          ja        j,        ji        fv r't=          |j        |           to          j8        |fi |S t          |t          t          t          f          r:|j        j$        t          u r't=          |j        |           to          j8        |fi |S t          d&t          |           d'|j        jS         d'|j        j$         z   d()           d S ),Nr'   )InstructionTranslatorBaser:  rc  c                     t          | t          j                  rUt          | t                    s@t          j        |           rt          |           j        u s| j        st          |           } | S r   )	r   r   r   r   _is_functional_tensorr   r>  r  rM   )r%  r   s    r   _clone_inputz'wrap_fx_proxy_cls.<locals>._clone_input5  sv    eU\** 	+ 5*--
+ /66	
+
 ,E22blBB? C
 $E**r   T)allow_non_graph_faker   r   r   r  zU`example_value` needs to be a `FakeTensor`wrapped by this instance of Dynamo. Found: 
class_typer   	set_statec              3   @   K   | ]}t          |t                    V  d S r   )r   r  r  s     r   r  z$wrap_fx_proxy_cls.<locals>.<genexpr>  s=       3 3 
1c3 3 3 3 3 3r   c                 6    g | ]}t          j        |          S r   r_  r  s     r   r6  z%wrap_fx_proxy_cls.<locals>.<listcomp>  s$    CCC!(++CCCr   r  )kindtargetr  r  Fre  r  rk  ztorch.return_types_fieldsz	expected z. == torch.return_types or named tuple but got c                 "    g | ]\  }}|j         S r   )current_streamr  r  device_interfaces      r   r6  z%wrap_fx_proxy_cls.<locals>.<listcomp>  s0       A 	'  r   c                 "    g | ]\  }}|j         S r   )Eventr   s      r   r6  z%wrap_fx_proxy_cls.<locals>.<listcomp>  s0       A 	  r   queryr  record_eventget_rankget_world_size)
bit_lengthrd   r   ztorch.* op returned non-Tensor  unsupported_operator)	case_namer   r   )nsymbolic_convertr  r   r   r:  r  r  r  r   r  rV  +_disable_saved_tensors_hooks_during_tracingrO   r   r>  r   r  r  DisableTorchFunctionSubclasstracerreal_value_cacher   r   wrap_to_fake_tensor_and_recordr  r,  r-   r@  rA  r2  r]   
specializer   r   r   r   r  r   r  	Generatorr'  set_rng_stater   _DisableFuncTorchr  _is_in_bad_forkr   rZ   rI  r  r   rE  rF  r  r_  ri   ru  r  operatorgetitemcopyr:   rq  r   r#   r   re   r   r   r   manual_seedr   SymFloatr  r   r  r  r0  r   r,   rp   r   rl   opr  sym_intr  _utils_element_sizeseedmod
_functorchvmap_validate_and_get_batch_sizer  r   _constrain_as_sizebackends
SDPAParamssdpar   r    _are_functorch_transforms_activeis_flash_attention_availablecan_use_flash_attentioncan_use_efficient_attentionr  r   r.   rf   )rb  r   rT  rc  rd  r  r  initial_example_valuer  r  is_parameter	is_bufferspecialized_propstensor_typesizesunpackedr  valproxy_ir   	options_ir   s    `                    r   rq  rq  (  s    =<<<<<b3444447wx0<
	 1222%*/111ejoo6V3X111)    $ 
		H	H	J	J ) )  +5:rPTUUUMM !//2<??u|44 	y  X::<<  @L%A AEL1%*=               Z"$@ABF w&&78+<+H+H+H&x0F8: "$(. M }el33	$)V33$]332<GG*N>KN N  M) ) ) ) ) ) ) ) ) ) ) ) ) ) )V -.. o
!-1CDD}eho>>	
 %]33%*m444&11-@@ }e&7&C&NOO	'2<77+8J--elK  !"" !UX__  l+ 	()))z%++7+++
!:..U
J&+55uz(1583EFF 6: :::+EJ,=>>>
UX777:
 :::(777	uz	*	* I
s 3 3$13 3 3 0 0 I
 DC]CCCE--W---	ME4=	1	1 D
%*m444.. !	 !	FAs{$+<<G<<     ,33(#+	 4   w&&$X.F 'I*7#1U+ + +Ih''
 !(I % #-%&)	 
 $     mUZ00 	T  %;;7;;;M5)) 	T 55W555MD.#9:: 	TRRR'RRR *59MMMQXyR RMM C=2=  C  Cmqr  nA  nA  C  C NMM &h0GSS7SSS		%*"3u7H"H"H&77w777	MEL%.%-#P	Q	Q P
%*m444um??w???
)**M
uz(+66M
 
	  #C#E#E   
 
 	%*m444e]M4HTTGTTT
)**D
/9%*:KZ/X/XD
		  #C#E#E   
 
 	%*m444UM==W===		g	%	%%*-=*H*H%*m44499999!}j11 	"J//JM]**%*m444UM==W===	M3	'	' 1

ML&JL!>E%z8<<E%'7BB $
	
 	
$ JM]**
!^33 	%*m444&}@@@@@	M5>#6#A	B	B 
,,,,,,%*m444!!%337333	M4	(	( 
UZ->1837	C . . 	%*m444&}@@@@@=3t"455
J//%*m444&}@@@@@-''MM%*-MM%*:KMMN,	
 	
 	
 	
 	
 	
s8   A1GD9-G9D=	=G D=	BGG #G c                   f    e Zd ZU eeef         ed<   eed<   ee	         ed<   de
fdZdedefdZdS )	r  faker   symbolic_contextr   c                 \    t          | j        | j                                        f          S r   )hashrX  r   r   r   s    r   __hash__zTrackedFake.__hash__-	  s%    TY 0 0 2 23444r   r   c                     t          |t                    rB| j        |j        u o3| j                                        |j                                        k    S dS )NF)r   r  rX  r   r   r   s     r   r   zTrackedFake.__eq__0	  sO    e[)) 	Y9
*Xt{/?/?/A/AU\EVEVEXEX/XXur   N)r   r   r   r   r   r   r   rD   r
   r!   r  r\  objectr   r   r   r   r   r  r  &	  s         

F"
####NNN////5# 5 5 5 5F t      r   r  Fc           
      *  +,-. | j         r8t          | t          j        j        j        j                  st          d           |                                .j	        j
        j                            | d           }|r|j        nd }d }|                                 r't          |d          }t!          | j        ||          }t%          |           r|st!          | ||d          }	i }
t'          |                               |           \  }}|D ]7}t+          | |          }t          ||          }t!          |||          |
|<   8t-          |	j        |	j        |	j        |	j        ||	j        |	j        |
          S |rt9          t:          j        g|                                 z  t:          j         g|                                 z  d g|                                 z  d g|                                 z  |||          S ddl!m"- tG          -fd	| $                                D                       r~t9          d
 | $                                D             t:          j         g|                                 z  d g|                                 z  d g|                                 z  |||          S .fd}j%        x}VtM          |           s| '                                nd} || $                                |           j	        j(        .         }n|j)        tU          | $                                d | '                                          }tW          | $                                          |j,        j-        .<   tW          | '                                          |j,        j.        .<   nP|j)        D ]6}.|j-        v r+.|j.        v r" ||j-        .         |j.        .                    7j	        j(        .         }t_          |           }i ++fd}j	        j0        r6j	        j0        D ])}|j1        |k    r ||j        |j2        |j                   *g }g }g }g }tg          |                                           D ],,t+          | dti                                v },t+          | dti                                v },t+          | dti                                v },t+          | dti                                v }tj          j6        o|j$        d u p|j$        ,         d u } tj          j6        o |j$        d uo|j'        d u p|j'        ,         d u }!| p|!}"|j$        r1|r/tn          8                    d.           d |j$        ,<   d |j'        ,<   +                    ,          }|d }#d }$|rtj          j9        sd }$tu          | d          rq,fd| j;        D             <                                }%|%j=        |%j>        t          d          }#nddl!m@}&  |&t          |%j=        |%j>                  d          }#nbt          d          }#nQ|s'|"r%| rt          d          }#|!rt          d          }$n(d }#d }$n#|\  }#}'d }$. d, d}(|'j	        jB        jC        |(<   |D                    |#           |D                    |$           |rt:          jE        })n_|#'|s%|s# -| $                                ,                   rt:          jF        })n)|stj          jG        s|rt:          j        })nt:          jH        })|$t:          jF        }*nt:          j         }*|D                    |)           |D                    |*           t9          |||||||          S )Nr  _baseT)
outer_only)dynamic_sizesdynamic_stridesconstraint_sizesconstraint_stridesview_base_contexttensor_source#shape_env_to_source_to_symbol_cacheinner_contexts)rb  rc  rd  re  rf  rg  rh  r   )is_nested_intc              3   Z   K   | ]%}t          |t                    o |           V  &d S r   )r   r   )r  srj  s     r   r  z%_automatic_dynamic.<locals>.<genexpr>w	  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  STATIC)r  rl  s     r   r6  z&_automatic_dynamic.<locals>.<listcomp>y	  sB        '1F&;&;R
""AR  r   c                 <   d }d }j         j        vr;t          d d d           }t          |           |_        t          |          |_        n>j         j                 }|j        $t          |           t          |j                  k    r>t                              dt          |           |j                   d |_        d |_        nd}t          |j                  D ]R\  }}|:| |         |k    r.t                              d|| |         |           d |j        |<   |p|j        |         d u }S|sVt          |j                  D ]A\  }}|:||         |k    r.t                              d|||         |           d |j        |<   B|j         j        <   d S )Nz!automatic dynamic %s dim %s != %sFz&automatic dynamic %s size(%s) %s != %sz(automatic dynamic %s stride(%s) %s != %s)
r   r  r  rF  r
  r  r5  r  r  r  )	r
  r  r  r  has_size_changedr  dimr   r   s	          r   r  z._automatic_dynamic.<locals>.update_frame_state	  s     ry,,, !4D$ E E%)$ZZ"'+F||$$ "	 5d ; %1t99$5$: ; ;;; II;D		).	   .2%*/3%,, (-$"+,=,B"C"C  3?tAw#~~II H $ ! $Q #   9=-215,Q0A0Fq0IT0Q )(& , 
C&/0A0H&I&I 	C 	CFAs"6!93C3C #		$N$($%$*1I$'!" !" !" ?C 1 8 ;&7	d###r   r   r  c                     | v r8ddl m} |          \  }} ||j        |j        z  d          }|p|}||f| <   d S ||f| <   d S )Nr   StrictMinMaxConstraintFvr	warn_only)%torch.fx.experimental.symbolic_shapesrt  rv  )	rq  constraint_ranger   rt  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   _dynamo_unbacked_indices_dynamo_dynamic_indices_dynamo_weak_dynamic_indices_dynamo_static_indicesz#automatic dynamic %s marked dynamic_dynamo_dynamic_rangec                 *    g | ]}|j         k    |S r   )rq  )r  drr  s     r   r6  z&_automatic_dynamic.<locals>.<listcomp>,
  s'     ! ! !!!r   F)rw  rs  )lowerupperru  z.size()[])Ir  r   r   r  r  r  r  r.   r   r   tracing_contexttensor_to_contextr  rh  _is_viewr4   _automatic_dynamicr`  r$   r,  r  r  r    rb  rc  rd  re  rg  r   r   rn  rq  INFER_STRIDErx  rj  anyr
  r  r   r  r  r  r  rF  r  r  input_stridesr  export_constraintst_idry  rM  r  r(   r  r  r  allow_ignore_mark_dynamicr   r  popminmaxr   rt  r%   r  source_name_to_debug_namer_  SIZE_LIKE_UNBACKEDr  r  DUCK)/r  r   r   static_shapesra  prior_policyrh  rf  base_sourceouter_contextri  r  r  r  inner_tensorr  r  r  r  r  r  r  r  
constraintrb  rc  rd  re  marked_unbackedmarked_dynamicmarked_weak_dynamicmarked_staticautomatic_dynamic_sizeautomatic_dynamic_strideautomatic_dynamicconstraint_sizeconstraint_stride	dim_rangert  name_dim_namedynamic_sizedynamic_strider~  r  rj  r   s/    `                                         @@@@r   r  r  8	  s    	{ M:	5<!/<  M 	KLLL;;==D9,>BB1dKKL<HR88d (
 48zz|| X 11.qwKWW$Q'' 

 
*r6=T
 
 

 77--a00q 	 	D"1d++L%fd33L#5b,$ $N4   ''5)9*;,?/'50=0a)	
 	
 	
 		
  	
&%,-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
 
 
 	
G8 G8 G8 G8 G8 G8R ""+#0#3#3;16688V,,,I1$7		/$qxxzz
 
 
 ,0>>"4(-1!((**-=-=$T**  	 	Iy,,,9P1P1P"")$/1H1N   I1$7 a55DN9 9 9 9 9  
y# )6 	 	J$&&%%NJ$?   MO15577^^ _/ _/wq*DceeLLLga)BCEEJJJ71.Lcee#T#TTWQ(@#%%HHH "(!@ "
"d*O.?.DQ.G4.O 	
 $*#B $
"$. !(D0W4E4LQ4OSW4W 	! 3N6N ! 	/n 	/II;TBBB(,"1%*.$Q'
 $''**
"O $ )f&F )$(!1566 O! ! ! !%&%<! ! !cee  !},1F*AE*R*R*R      +A*@*imTTT&++ + +
 '>&N&N&NOO" )'8 )) N&=&M&M&MO+ P(?$(O(O(O%"&$(!!%/"OU $,,,,,HFKBI9(C000!!"3444 	+%8LL' (" ( }QVVXXa[)) ( &-LL 	+f= 	+ 	+%,LL%?L('/NN'4N\***~...."#')-+,O   r   )parent_contextr   r   c          
          t                     t          j        t          j        j        t
          fv s*t           t          j                  st                     rJ t           |          \  }}|st           |          n+t          t                    sJ j        }|j        |         t                              d                                t!           j                  t                                t%           fd          }Yt          |t
                    rD|j        x}	;j        j                            t/          |	t1                                         t          |          rx|                                \  }
}|
D ]^}t5          ||          }t5           |          }t          |          }t7          ||t          |t          j                             _j        j        j         <   t=          |          r|j        r|                                 n|!                                }|"                                d|j#        z  |"                                |$                                dj        j%        <   n6|"                                |$                                dj        j%        <   |r|r&                                sotO                    s`j        j                            t/          |                     j        j(        tS                                                             |S  S )N)rg  zwrap_to_fake %s %s %s %sc                  >    j                                        S )N)r   rY  )r>  from_tensor)r  r   rY  r   s   r   r   z0wrap_to_fake_tensor_and_record.<locals>.<lambda>
  s'    BL,,!1 -   r   )r   r   r  )rd   )r
  r  values_sizevalues_stride)r
  r  )*r,  r   r   r@  rA  r   r   r$   r^   r  r4   r  ri  r  r  r   rE  shaperc   	item_memor   r  r_  r  r5   r  r  r1  r  r  r   	is_sparse_valuesvaluesr
  ndimr  input_source_to_sizes_stridesr  r=   tracked_fakes_id_to_sourcer  )r  r   r   r   r  r  reasoninner_context_namefake_esym_valr  r  r  
fake_innerinnerr  r  rY  s   ```              @r   r1  r1  q
  s    	QEL%("4jAAAa&& 	B(++ 	B !!! > !
 !
 !
v  	Q1!ROO fj11111!'-<=OP		&KKMM!'NNGG	
 	
 	
 %      
 
 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r   c                   f    e Zd ZdZd
dZedddefd            Zed             Zed	             Z	dS )SourcelessBuildera  
    Like builder, but stateless and does not require a source. Useful for simple type->VT objects, or objects
    that are being created/evaporated during inlining (ex: consider a locally made list of tensors we then iterate over
    .), such a list should not show up as an artifact from inputs, nor in reconstruction, nor in the graph. However,
    there may be reasons to represent it as a ListVariable internally.

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

    NOTE - This class is very new! It will have some rough edges, but it was created to stem the bleeding of giant
    if/else type->VariableTracker trees that were cropping up all over dynamo.
    r   Nc                      t          d          )NzUse SourcelessBuilder.create())r  r   s    r   r   zSourcelessBuilder.__init__
  s    =>>>r   r   r   c                    t          |          }t          j                            |          }|r || |          S t	          |t
                    r|S t	          |t          j                  rt          |          S t          j
        |          rt          j        |          S t          |          rLt          j        |          8t          |          rd| j        _         t          j        |          |          S t%          |          r t          j        |          |          S t	          |t(          j                  rt-          |          S t	          |t           t.          j        f          rt3          |          S t	          |t4          j                  rt9          |          S t	          |t:          j        j        j                   rtC          |          S t	          |t:          j"        j#        j$        t:          j"        j#        j%        f          rt          |          S tM          j'        |          rtM          |          S tQ          j)        |          rtQ          |          S t	          |tT          j+                  rtY          |          S t	          |t:          j-        j.        j/        j0                  r!t          j        tc          |                    S te          d|j3         d|j4                    d S )NTz&Unexpected type in sourceless builder .)5r,  r  _type_handlersr  r   rg   r}  _HAS_DEFAULT_FACTORY_CLASSr   ri   r  ru  r  r+   r  rG   r   r  rS   r   r  r  rj   abcABCMetar   r  r/  r   r   r  graph_moduleGraphModuler   rV  r  r,  LeafSpecry   r  rw   r  rP  rQ  r   r  	variableslazyLazySymNodeFormatStringr  r.   r   r   )r   r%  
value_typefast_handlers       r   ru  zSourcelessBuilder.create
  s   %[[
(7;;JGG 	+<E***e_--  	7L{EFF 	7,U333(// 	7#*5111e__ 	7!<U!C!C!O"5)) C>B	;5;.u55e<<<#E** 	7,;%e,,U333ty)) 	7&&&ck233 	7+E222u677 	7(///ux4@AA 	70777EK'0%+2E2NO
 
 	7 -U333+E22 	7$U+++.u55 	7%e,,,rz** 	7'...u}6;STT 	7#*3u::666fZ5JffZMdff	
 	
 	
 	
 	
r   c                 X    t          j        |           sJ t          j        |           S )NrZ  )ri   r  ru  rZ  s    r   wrap_constant_literalz'SourcelessBuilder.wrap_constant_literal  s-    *511111&U3333r   c                  d   t           j        i } t          D ]}d | |<   	fd| t          <   fd| t          <   fd| t
          <   fd| t          <   fd| t          j        <   | t                   | t          j
        <   | t                   | t          <   | t
                   | t          <   d | t          j        <   d | t          j        <   d	 | t          j        j        j        <   d
 | t          j        j        j        <   d | t          j        j        j        <   dd}t,          j        D ]}|| |<   | S )Nc                      t          |          S r   )ri   r   r%  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    ,<U,C,C r   c                 Z     t           fd|D             t                                S )Nc                 (    g | ]} |          S r   r   r  r  ru  r   s     r   r6  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>  #    ***qVVB]]***r   rj  )rv   re   r   r%  ru  s   ` r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s7    +*****E***,..+
 +
 +
 r   c                      t           fd|                                D             t          |          t                                S )Nc                 D    i | ]\  }} |           |          S r   r   )r  r  r  ru  r   s      r   r  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<dictcomp>   s3    DDDdaVVB]]FF2qMMDDDr   rj  )rq   r  r,  re   r  s   ` r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  sJ    +<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   r6  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>%  r  r   rj  )r   re   r  s   ` r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>$  s7    <*****E***,..,
 ,
 ,
 r   c                 >     t           fd|D                       S )Nc                 (    g | ]} |          S r   r   r  s     r   r6  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>(  r  r   )r   r  s   ` r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>'  s,    M*****E***-
 -
 r   c                 >     t           fd|D                       S )Nc                 (    g | ]} |          S r   r   r  s     r   r6  zJSourcelessBuilder.make_type_handlers.<locals>.<lambda>.<locals>.<listcomp>+  r  r   )r   r  s   ` r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>*  s,    *****E***2
 2
 r   c                     t                      S r   )r   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>0  s    4G4I4I r   c                      t          |          S r   )r   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>1  s    7KE7R7R r   c                 <    t          |t                                S Nrj  r   re   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>5      7
 
 
 r   c                 <    t          |t                                S r  r  r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>:  r  r   c                 <    t          |t                                S r  r  r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>?  r  r   r   r   c                     |S r   r   r  s     r   passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthroughC  s    Lr   )r   r   )r  ru  rN   r  r  rF  rE  r   rI  rG  r  r"   r#   r'  r(  r  r*  distributionsconstraints_Real	_Interval
Constraintrh   all_subclasses)handlersr   r  rb  ru  s       @r   make_type_handlersz$SourcelessBuilder.make_type_handlers  s   ")& 	D 	DACCHQKK
 
 
 

 
 
 


 
 
 

 
 
 
 
  
  
  
 -5TN()#+D> #+D> "I"I%R%R!"
 
 	+1	

 
 	+5	

 
 	+6	
	 	 	 	 '5 	( 	(C'HSMMr   r  )
r   r   r   r  r   r  rg   ru  r  r  r   r   r   r  r  
  s        
 
? ? ? ? )
* )
o )
 )
 )
 \)
V 4 4 \4 1 1 \1 1 1r   r  )NN)F(  r  rG  r  r}  r  r  r  	itertoolsr  r  r7  r'  rP  r  r  r   rS  typingr   r   r   r   r   r   r	   r
   r   r   r   r   r   torch._guardsr   r   !torch._higher_order_ops.torchbindr   
torch._opsr   torch._streambaser   r   torch._subclasses.fake_tensorr   r   r   torch._subclasses.meta_utilsr   r   torch._utils_internalr   %torch.fx.experimental._backward_stater   rx  r   r   r   r   r    r!   torch.fx.immutable_collectionsr"   r#   torch.utils._python_dispatchr$   torch.utils._sympy.value_rangesr%   torch.utils.weakr&   r  r(   r)   r*   r+   r!  r,   excr-   r.   r:  r/   r0   r1   r  r2   r   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rV  rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rf  re   rf   rg   rh   constantri   rj   ctx_managerrk   rl   rm   rn   ro   rp   dictsrq   rr   rs   rt   ru   rv   r  rw   rx   ry   rz   r{   	functionsr|   r}   r~   r   r   r   higher_order_opsr   iterr   r  r   listsr   r   r   r   r   r   r   r   r   miscr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	nn_moduler   r   r   	optimizerr   script_objectr   rH  r   r  r   r   r   r   r   r   r   torch_functionr   r   r   user_definedr   r   r   r   r   r   r   numpyr^  ModuleNotFoundErrortorch._dynamo.symbolic_convertr   	getLoggerr   r  _logginggetArtifactLoggerr  DimListr   r   	dataclassr   r   r  r  varsr  r  r  r   r  r  r  ry  r  rq  r  r  r   r1  r  r  r  r   r   r   <module>r     s   



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



                                    5 5 5 5 5 5 5 5 < < < < < < * * * * * * 5 5 5 5 5 5 5 5 R R R R R R R R R R A A A A A A A A 1 1 1 1 1 1 ? ? ? ? ? ?                J I I I I I I I F F F F F F 7 7 7 7 7 7 * * * * * * A A A A A A A A A A A A ? ? ? ? ? ? 9 9 9 9 9 9 9 9 A A A A A A A A A A & & & & & &                                           ,                                                                6 N M M M M M M M M M M M 4 4 4 4 4 4 4 4                                                           ? > > > > > # # # # # # % % % % % %
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                               0         
 ) ( ( ( ( ( 4 4 4 4 4 4 $ $ $ $ $ $              N M M M M M M M         
                    	BBB  EDDDDDD g!!N44'  
 " " "	 	 	 	 	 	 	 	 99 99 99 99 99 99 99 99x< < < < <H < < <(                 &/Y / /Y--/// / / & & IcN    +.#%% s3x / / /y y y y y y y yx3     & 26    ~ >By
 y
 y
 y
|        $ .3u uu u u ut	 IMa a av&a37a a a aHs s s s s s s sl $5#G#G#I#I       s   I$ $I.-I.