
    iT                      d dl m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	 d dlm
Z
mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZ d dl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"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d d
l,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 er"d dl6m7Z7 d dl m8Z8 d dl9m:Z: d dl;m<Z<m=Z= d dl>m?Z?m@Z@ dGdZAeBZC eddej                        ZE ed      ZF edej                        ZG edej                  d      ZHdHdZIdIdZJdJdZKdKd ZL ej                         ZNd!eN_O        edLd"       ZPd!d!d#	 	 	 	 	 	 	 	 	 	 	 dMd$ZQdNd%ZRdOd&ZSdNd'ZTdNd(ZUdPd)ZVdQd*ZW	 	 	 	 	 	 dRd+ZX ed,eY      ZZ ed-eY      Z[ ed.eY      Z\ e\d       a] G d/ d0      Z^ ed1       G d2 d3             Z_ ed1       G d4 d5eeG                Z` ed1       G d6 d7e`d8                Za ed1       G d9 d:e`eG   eeG                Zb G d; d<eeeH         Zc G d= d>ed!?      Zd G d@ dAeeeH         Ze ed1       G dB deeG                ZfdSdCZgdTdDZh G dE dFeeG         Zid dljmkZl y)U    )annotationsN)abstractmethod)AbstractContextManagercontextmanager)	dataclass)
AnyCallableClassVarGenericNewTypeOptionalProtocolTYPE_CHECKINGTypeVarUnion)override	TypedDict	TypeGuardTypeIsUnpack)CreationMeta)_add_batch_dim_unwrap_functional_tensor_wrap_functional_tensorget_unwrappedis_batchedtensoris_functorch_wrapped_tensoris_gradtrackingtensoris_legacy_batchedtensormaybe_get_bdimmaybe_get_levelpeek_interpreter_stack)enable_python_dispatcher)trace_structured)no_dispatch)is_traceable_wrapper_subclass)WeakIdKeyDictionary)	Generator)CInterpreter)Source)
FakeTensorFakeTensorMode)ShapeEnvSymbolicContextc                &    ddl m} t        | |      S )Nr   )r+   )torch._subclasses.fake_tensorr+   
isinstance)tr+   s     V/var/www/html/engine/venv/lib/python3.12/site-packages/torch/_subclasses/meta_utils.py_is_fake_tensorr4   =   s    8a$$    _TensorLikeTMetaTensorDesc_T_TensorT)bound_TensorT_covT)r:   	covariantc                :    	 | j                   S # t        $ r Y yw xY w)NF)is_leafRuntimeErrorr2   s    r3   safe_is_leafrA   J   s#    yy s    	c                    t         j                  j                  t         j                  j                  j                        5  | j
                  cd d d        S # 1 sw Y   y xY wN)torch_logginghide_warnings	_internalsafe_grad_filtergradr@   s    r3   	safe_gradrJ   R   s@    		%	%enn&>&>&O&O	P vv  s   AA!c                $    t        |       }|J |S rC   )rJ   )r2   rI   s     r3   _expect_safe_gradrL   W   s    Q<DKr5   c                &    | |k(  sJ |  d|        y )Nz !=  )abs     r3   	assert_eqrQ   ]   s    6 aSQC= 6r5   Fc               #     K   t        t        dd      } dt        _        	 d  | t        _        y # | t        _        w xY ww)Ndisable_inference_modeFT)getattrtlsrS   )priors    r3   $disable_inference_mode_for_fake_proprW   h   s5     C159E!%C+%*"U"s   A 0 A =A skip_symbolic	skip_leafc                    t        |t        j                        rt               j	                  |      n|}d fd ||      S )Nc                    | j                   |j                          s | j                  |j                          | j                  |j                         s | j                  |j                          | j                  |j                         t        t        dd      s" | j                  |j                                n | j                  d        | j                  |j                                 | j                  |j                                 | j                  d ut        |      d u       | j                   | j                  t        |             | j                  r | j                  |j                          | j                  |j                                 | j                  |j                                 | j                   |j!                                y t#        |       r` | j                  |j                          | j                  |j                                 | j                  |j                                y sB | j$                  |j%                                 | j&                  |j'                                 | j(                  |j+                                | j(                  r:| j,                  J |j.                  J  | j,                  |j.                         y y )NrS   F)dtypeshaperequires_gradr>   	is_sparserT   rU   is_inferenceis_conjis_negrI   rJ   rL   layout	dense_dim
sparse_dimis_coalescedis_sparse_compressedstridestorage_offsetis_view_is_viewbase_base)m1m2rQ   gorZ   rY   s     r3   rq   zassert_metadata_eq.<locals>.go   s   "((BHH%bhh)"""B$4$45bjj"**- 	",,-s4e<boor'89boou-"**bjjl+"))RYY[)"''%y}D'@A77rww)"-. <<bii+bllBLLN3bmmR]]_5boor'89!"%bii+bllBLLN3bmmR]]_5 "))RYY[1"++R->->-@Abjj"++-0zzww***xx+++277BHH% r5   )ro   r7   rp   torch.TensorreturnNone)r1   rD   TensorMetaTensorDescriberdescribe_tensor)rQ   ro   rp   rY   rZ   rq   s   `  ``@r3   assert_metadata_eqrx   r   sG     b%,,' 	--b1 && &&V b":r5   c                r    t        | t        j                        xr | j                  t        j                  u S rC   )r1   rD   ru   rd   
sparse_coor@   s    r3   is_sparse_coor{      s'    a&G188u7G7G+GGr5   c                    | t         j                  t         j                  t         j                  t         j                  hv S rC   )rD   
sparse_csr
sparse_csc
sparse_bsr
sparse_bsc)rd   s    r3   is_sparse_compressed_layoutr      s8    	  r5   c                d    t        | t        j                        xr t        | j                        S rC   )r1   rD   ru   r   rd   r@   s    r3   rh   rh      s"    a&P+Fqxx+PPr5   c                2    t        |       xs t        |       S rC   )r{   rh   r@   s    r3   is_sparse_anyr      s    63A66r5   c                J    t        ||       sJ d|  dt        |              |S )Nz	expected z	 but got )r1   type)tyobjs     r3   _checked_castr      s-    c2D)B4yc DDJr5   c                    | j                   S rC   real_storage)rm   s    r3   _get_real_storager      s    r5   c                    || _         y rC   r   )rm   r   s     r3   _set_real_storager      s     %Dr5   MetaStorageIdMetaTensorId_DescriberIdc                  d    e Zd ZdZddddZddZddZdd	 	 	 	 	 ddZd	dd
	 	 	 	 	 	 	 ddZy)rv   a  
    Given a Tensor/Storage, generate a MetaTensorDesc/MetaStorageDesc
    for it, which is enough information to reconstruct a meta tensor/fake tensor
    corresponding to a Tensor as faithfully as possible.

    This is a stateful conversion object because we keep track of the IDs
    of the tensors/storages passed to us, so we can consistently give
    the same ID when we see the same tensor/storage.
    F	copy_datac                  t         | _        t        t         dz         a t        d      | _        t        d      | _        t               | _        t               | _	        || _
        t               | _        t               | _        y )N   r   )DESCRIBER_NEXT_IDidr   r   next_tensor_idr   next_storage_idr'   lookup_tensorlookup_storager   settraced_tensorstraced_storagesselfr   s     r3   __init__zMetaTensorDescriber.__init__   sd    #():Q)>?,8O.;A.>0213"(+),r5   c                    || j                   vr6| j                  | j                   |<   t        | j                  dz         | _        | j                   |   S Nr   )r   r   r   r   r2   s     r3   get_tensor_idz!MetaTensorDescriber.get_tensor_id   sO    D&&&$($7$7Dq!".t/B/BQ/F"GD!!!$$r5   c                    || j                   vr6| j                  | j                   |<   t        | j                  dz         | _        | j                   |   S r   )r   r   r   r   ss     r3   get_storage_idz"MetaTensorDescriber.get_storage_id   sO    D'''%)%9%9D"#01E1E1I#JD ""1%%r5   tracec                   t         j                  |      |j                          j                  r|nd       |rNj                   j
                  vr6t        d fd        j
                  j                  j                         S )N)r   sizedatadescribe_storagec                 :     j                  j                        S rC   as_jsonr   rr   s   r3   <lambda>z6MetaTensorDescriber.describe_storage.<locals>.<lambda>      AIIdgg$6 r5   metadata_fn)MetaStorageDescr   r   r   r   r   r$   add)r   r   r   r   s   `  @r3   r   z$MetaTensorDescriber.describe_storage  sv     ""1% nn$
 QTT!5!55"6   $$QTT*r5   Trecurser   c                  ! t        |      }|j                         }|j                  }|j                  }|j                  }t        |      }	t        |      }
|j                  }t        |      }t        |      }t        |      }t        j                  |      }d }d}|sFt        |      s;|r|	r7|s5|
s3|s1 j                  |j                         |      }|j!                         }d }|st        |      s|r|	r|j#                         }d }d }d }|s|r j%                  t'        |      |      }n|r|j(                  j*                  dvr|j                         rt-        d      |
s>t        j.                  |        j%                  t        j0                  |      |      }|}nct        j2                  j5                         } j%                  t7        ||      |      }t        j2                  j8                  j;                         }d }|
r2t        j8                  j<                  j?                         5 }	 d d d        d }d }d }|	rWtA        |d      sJ |jC                         \  }}|D ci c]   }| j%                  tE        ||      |      " }}t+        |      }ddl#m$} tJ        jM                  |      }tE        tN        dd      }tQ        dBi d	 jS                  |      d
|d|rdn|jU                         d|d|jV                  d|jY                         d|jZ                  d|d|d|
d|d|d|d|d|j]                         d|j_                         dta        |t        jb                  jd                        d|	d|d||v r||   jf                  ji                         nd d|d|d|j(                  d |jk                         d!|d"|d#tm        tE        |d$to                           d%tE        |d&i       d'|j                  stq        |      r|js                         nd d(|j                  stq        |      r|ju                         nd d)|j                  r|jw                         nd d*|rN|j                  t        jx                  t        jz                  hv r" j%                  |j}                         d|+      nd d,|rN|j                  t        jx                  t        jz                  hv r" j%                  |j                         d|+      nd d-|rN|j                  t        j                  t        j                  hv r" j%                  |j                         d|+      nd d.|rN|j                  t        j                  t        j                  hv r" j%                  |j                         d|+      nd d/|r-tq        |      r" j%                  |j                         d|+      nd d0t        |      x}  j%                  | |      nd d1|j                         r)t        j2                  j                  j                  |      nd d2|d3|s|rt        |      nd d4|rt        |      nd d5|r9|j                         r)|j                   j%                  |j                  |      nd d6t        j                  j                  j                  |      d7|d8|d9|d:|d;|d<|d=|d> j                  r|nd !|rN!j                   j                  vr6t        d?! fd@A        j                  j                  !j                         !S # 1 sw Y   (xY wc c}w )CNr   r   xlalazyzVCannot safely fakify a view because this process drops the view information right now.__tensor_flatten__)_tensor_symint_registryrS   Fr   storagera   r>   r_   ndimr]   r`   	is_mkldnnis_functorch_wrappedr   r   r   rk   rb   rc   is_parameterr&   	is_nested
nested_intis_functionalrd   devicer   ri   rj   dynamo_dynamic_indices_dynamo_dynamic_indicesdynamo_hint_overrides_dynamo_hint_overridesrf   re   rg   crow_indicesr   col_indicesccol_indicesrow_indicesvaluesrI   creation_meta	unwrappedlevelbdimrm   	fake_mode	view_funcattrsctxr   functorch_stackautograd_meta_fromcurrent_levelr   rw   c                 :     j                  j                        S rC   r   r   s   r3   r   z5MetaTensorDescriber.describe_tensor.<locals>.<lambda>  r   r5   r   rN   )SrA   rl   r`   rd   r   r&   r   r   r   r   r   rD   _is_functional_tensorr   r   untyped_storagerj   ri   rw   r   r   r   r?   _sync_from_functional_tensor_C$_functionalization_reapply_views_tlsr   
_functorchr   pyfunctorch#temporarily_clear_interpreter_stackhasattrr   rT   $torch.nested._internal.nested_tensorr   ViewFuncfrom_tensorrU   r7   r   ra   r_   dimr]   rb   rc   r1   nn	Parameternoder   r   listr   rh   rf   re   rg   r}   r   r   r   r~   r   r   r   r   rJ   	_autograd_get_creation_metar!   r    rn   _subclassesfake_tensormaybe_get_fake_moder   r   r   r$   r   )"r   r2   r   r   r>   rk   r`   rd   r   is_traceable_wrapper_subclass_vr   r   is_batchedtensor_vis_legacy_batchedtensor_vis_gradtrackingtensor_vr   r   rj   ri   r   r   r   reapply_viewsmaybe_functorch_stackr   r   type_v	raw_attrsattrr   r   is_inference_mode_disabledrI   r   s"   `                                @r3   rw   z#MetaTensorDescriber.describe_tensor  s    q/**,KK	KK	*G*J':1=KK	-a0$;A$>!"7":33A6 *62"A $( ++A,=,=,?u+MG--/N*62"A
 XXZF
 	!!8,,]1-=U,KI qxx}}OCzz|"l  (A 0011!4E 1 	 &'" % M M O 00-a?u 1 	 !& 3 3 A A C $  ,,PPR&
 *12333113NIs & d**71d+;5*IIE  !WFP((+	 &-S2JE%R"* h
!!!$h
h
 #=!..BRh
 	h

 //h
 h
 ''h
  h
  h
  "6!h
" 0#h
$ %>%h
& #:'h
( )h
* IIK+h
, 88:-h
. $Auxx'9'9:/h
0 +J1h
2  3h
8 // (*//::<;h
> (?h
@ Ah
B 88Ch
D Eh
F Gh
H *Ih
J $(3Lce(T#UKh
L #*!-Er"JMh
P #$++1Ea1HdQh
T (){{6J16MakkmSWUh
V ./[[)dWh
b qxxE,<,<e>N>N+OO $$Q^^%5uE$Reh
l qxxE,<,<e>N>N+OO $$Q]]_e5$Qoh
v qxxE,<,<e>N>N+OO $$Q^^%5uE$Ryh
@ qxxE,<,<e>N>N+OO $$Q]]_e5$QCh
J 3A6 $$QXXZe$LMh
T &aL(D5 $$T$7Wh
\ =>JJL""55a8d]h
`  ah
f &)@  "ih
l '9"dmh
r qzz|0C $$QWWE$:uh
x ''33GGJyh
z  {h
| }h
~ h
@ Ah
H 2Ih
J  2Kh
L (Mh
N nn$Oh
R QTT!4!44!6 ##ADD)O s   4]+%])]&Nr   boolrs   rt   )r2   rr   rs   r   )r   torch.UntypedStoragers   r   )r   r  r   r  rs   r   )r2   rr   r   r  r   r  rs   r7   )	__name__
__module____qualname____doc__r   r   r   r   rw   rN   r5   r3   rv   rv      sn     -2 /%& 9>%15	& 37eXX+/X?CX	Xr5   rv   )frozenc                  4    e Zd ZU ded<   ded<   ded<   d	dZy)
r   r   r   intr   Optional[torch.UntypedStorage]r   c                    | j                   |t        | j                  t              r| j                  dS t	        | j                        dS )N)r   describer_idr   )r   r1   r   r  repr)r   r  s     r3   r   zMetaStorageDesc.as_json  sC    ''(!+DIIs!;DII
 	
 BFdii
 	
r5   Nr  r   rs   zdict[str, object])r  r  r	  __annotations__r   rN   r5   r3   r   r     s    
I )(
r5   r   c                  H    e Zd Ze	 	 d	 	 	 	 	 	 	 	 	 dd       Zedd       Zy)r   Nc                     y rC   rN   r   r2   new_basesymint_visitor_fntensor_visitor_fns        r3   applyzViewFunc.apply  s     r5   c                V    t        |       r
t               S t        | j                        S rC   )r4   _FakeTensorViewFunc_CustomViewFunc_view_func_unsafer@   s    r3   r   zViewFunc.from_tensor  s$    1&(("1#6#677r5   NN)
r2   r9   r  r9   r  Optional[Callable[[int], int]]r  ,Optional[Callable[[torch.Tensor], _TensorT]]rs   r9   )r2   rr   rs   r   )r  r  r	  r   r  staticmethodr   rN   r5   r3   r   r      sb    
 =AJN  :	
 H 
  8 8r5   r   c                  6    e Zd Ze	 	 d	 	 	 	 	 	 	 	 	 dd       Zy)r  Nc                n    t         j                  j                  j                  j	                  ||||      S rC   )rD   r   r   r+   r  r  s        r3   r  z_FakeTensorViewFunc.apply  s4       ,,77IIx*,=
 	
r5   r  )
r2   rr   r  rr   r  r   r  z.Optional[Callable[[torch.Tensor], FakeTensor]]rs   r+   )r  r  r	  r   r  rN   r5   r3   r  r    sN    
 =ALP	
	
 	
 :		

 J	
 
	
 	
r5   r  r+   c                  B    e Zd ZU ded<   e	 	 d	 	 	 	 	 	 	 	 	 dd       Zy)r  zpCallable[[torch.Tensor, Optional[Callable[[int], int]], Optional[Callable[[torch.Tensor], _TensorT]]], _TensorT]funcNc                (    | j                  |||      S rC   )r&  r  s        r3   r  z_CustomViewFunc.apply-  s     yy#46GHHr5   r  )
r2   rr   r  rr   r  r   r  r!  rs   r9   )r  r  r	  r  r   r  rN   r5   r3   r  r  "  sa      
 =AJNII I :	I
 HI 
I Ir5   r  c                       e Zd Z	 	 	 	 	 	 ddZy)_MetaTensorCallbackc                   y rC   rN   )r   argr   s      r3   __call__z_MetaTensorCallback.__call__?  s    r5   N)r+  Callable[[], torch.Tensor]r   Union[torch.device, str]rs   r;   r  r  r	  r,  rN   r5   r3   r)  r)  >  s    -=U	r5   r)  c                      e Zd ZU ded<   y)_MetaTensorCallbackKwargsr.  r   N)r  r  r	  r  rN   r5   r3   r1  r1  D  s    $$r5   r1  )totalc                       e Zd Z	 	 	 	 	 	 ddZy)_MetaTensorCallbackOptDevicec                    y rC   rN   )r   r+  kwargss      r3   r,  z%_MetaTensorCallbackOptDevice.__call__M  s    
 r5   N)r+  r-  r6  z!Unpack[_MetaTensorCallbackKwargs]rs   r;   r/  rN   r5   r3   r4  r4  L  s#    ' 4	
 
r5   r4  c                     e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ej
                  Zded<   dZded<   dZded<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded <   dZded!<   dZded"<   dZded#<   dZded$<   dZded%<   dZd&ed'<   d(Zded)<   dZd*ed+<   dZded,<   dZded-<   dZd.ed/<   dZd0ed1<   dZd0ed2<   dZ d0ed3<   dZ!d0ed4<   dZ"d0ed5<   dZ#d0ed6<   dZ$ded7<   dZ%d0ed8<   dZ&d9ed:<   dZ'd;ed<<   dZ(d0ed=<   h d>Z)d?ed@<   dZ*dAedB<   dZ+dCedD<   dZ,dEedF<   dZ-dGedH<   dZ.dedI<   dZ/dedJ<   dZ0dKedL<   dZ1dMedN<   dZ2dMedO<   dRdPZ3e4dSdQ       Z5y)Tr7   r   r   r  r   torch.dtyper]   ztorch.devicer   tuple[int, ...]r   z	list[int]r   zdict[int, int]r   torch.layoutrd   Fr  ra   r>   r_   r`   r   r   r   r   r   rk   r   NzOptional[int]r   r&   r   rb   rc   r   Optional[tuple[int, ...]]ri   r   rj   zOptional[MetaStorageDesc]r   rf   re   zOptional[bool]rg   zOptional[MetaTensorDesc]r   r   r   r   r   r   r   rm   z#Optional[dict[str, MetaTensorDesc]]r   zOptional[CreationMeta]r   rI   >
   r   r   r   r   r   r   r   r   r   r   zClassVar[set[str]]_UNSERIALIZABLEzOptional[object]r   zOptional[type]r   zOptional[FakeTensorMode]r   zOptional[ViewFunc]r   r   r   zOptional[list[CInterpreter]]r   Optional[torch.Tensor]r   r   c                v   dfdt        j                  |       D ci c]{  }t        | |j                        |j                  u sW|j                  dk(  rt        | |j                        r2|j                   |j                  t        | |j                              } }}|j                  d|i       |S c c}w )Nc                   | dv ry | t         j                  v rt        |      S t        |t        j
                  t        j                  t        j                  f      rt        |      S t        |t        j                        rt        |      S t        |t        t        f      r|D cg c]  } | |       c}S t        |t        t         f      r|j                  S t        |t              rt        |      S | dk(  r>t        |t              r.|j!                         D ci c]  \  }}||j                   c}}S |S c c}w c c}}w )N)r   r   r   )r7   r<  r  r1   rD   r   r]   rd   SymInttupler   r   r   r   strdictitems)kvv1k1jsons       r3   rI  z$MetaTensorDesc.as_json.<locals>.json  s     22N222Aw!ellEKKFGAw!U\\*Aw!eT]+./0Q00!o~>?tt!\*1vG|
1d 301	:fb"BEE	::H 1 ;s   'D<Er   r  )rE  rB  rF  objectrs   rJ  )dataclassesfieldsrT   namedefaultupdate)r   r  fieldr   rI  s       @r3   r   zMetaTensorDesc.as_json  s    	. %++D1

ejj)U]]:JJ"::#D%**5 JJUZZuzz)BCC

 

 	
.,/0

s   B B6c                    | j                   S rC   )r   r   s    r3   r^   zMetaTensorDesc.shape  s    yyr5   r  )rs   r9  )6r  r  r	  r  rD   stridedrd   ra   r>   r_   r`   r   r   r   r   r   rk   r   r   r&   r   rb   rc   r   ri   rj   r   rf   re   rg   r   r   r   r   r   r   r   rm   r   r   rI   r<  r   r   r   r   r   r   r   r   r   r   propertyr^   rN   r5   r3   r7   r7   U  s4   
I %%)) ==FL(L$GTM4ItIt!&$&"d"$)T)"'4'GTIt !%J$*/!4/M4GTFDL$(,F%,NC
 *.G&- $J$#I}##'L.'-1L*1,0K)0-1L*1,0K)0'+F$+*.I'.D-%)D
")15E.5,0M)0%)D
")+O'  !C	 D.*.I'.$(I!(  E=#'M='48O1815.5
 $(D
 '"H  r5   c                ^    t        |      t        j                  ury | j                  |       y rC   )r   rD   ru   copy_)dstsrcs     r3   
_safe_copyrY    s     Cy$IIcNr5   c                Z    t        |       t        j                  ury | j                         S rC   )r   rD   ru   clone)rX  s    r3   _safe_cloner\    s!    Cy$99;r5   c                      e Zd ZddddZddZddZddZddZddZdd	Z		 	 	 	 	 	 dd
Z
edd       Ze	 d	 	 	 	 	 dd       Zedd       Z	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 d dZy)!MetaConverterFr   c                   t        j                         | _        t        j                         | _        d| _        d| _        d | _        d| _        || _        t        |      | _
        y )Nr   r   )weakrefWeakValueDictionarystorage_memotensor_memohitmissdel_hookarg_cntr   rv   	describerr   s     r3   r   zMetaConverter.__init__  sa     '') 	 '') 	 	
 #,yAr5   c                B    | j                   dkD  xr | j                  dk(  S )Nr   )rd  re  rR  s    r3   
successfulzMetaConverter.successful!  s    xx!|.		Q.r5   c                N    | j                   j                  |j                  d       S rC   rc  getr   r   s     r3   get_tensor_memozMetaConverter.get_tensor_memo$  s    ##ADD$//r5   c                Z    | j                   j                  |j                  d       }|J |S rC   rl  )r   r2   r   s      r3   _checked_get_tensor_memoz&MetaConverter._checked_get_tensor_memo'  s-      t,}}r5   c                6    || j                   |j                  <   y rC   )rc  r   )r   r2   rF  s      r3   set_tensor_memozMetaConverter.set_tensor_memo,  s    !"r5   c                N    | j                   j                  |j                  d       S rC   )rb  rm  r   r   s     r3   get_storage_memozMetaConverter.get_storage_memo/  s      $$QTT400r5   c                6    || j                   |j                  <   y rC   )rb  r   )r   r   rF  s      r3   set_storage_memozMetaConverter.set_storage_memo2  s    "#!$$r5   c                   | j                        x} |fd      j                         }| j                  rbt        j                         5  t               5  j                  J t        |j                  j                                d d d        d d d        | j                  |       |S |S # 1 sw Y   'xY w# 1 sw Y   +xY w)Nc                 d    t        j                   j                  t         j                  d      S Nmetar]   r   )rD   emptyr   uint8)r   s   r3   r   z,MetaConverter.meta_storage.<locals>.<lambda>>  s    AFF%++fM r5   )
rt  r   r   rD   no_gradr%   r   r   r[  rv  )r   r   callbackmemor_ss    `   r3   meta_storagezMetaConverter.meta_storage5  s     ))!,,D5Mo  ~~ ]]_ ;km ;66---%c166<<>:; ; !!!S)JK; ; ; ;s$   B>3B2B>2B;	7B>>Cc                6    t        j                  t        |      S rC   )typingcastr9   )clsr2   s     r3   _checked_cast_tensor_tz$MetaConverter._checked_cast_tensor_tK  s     {{8Q''r5   Nc                .    | j                   |             S rC   )r  )r  r2   r   s      r3   _identity_callablez MetaConverter._identity_callableP  s     ))!#..r5   c                    t         j                  j                  j                  dd      } ||      }t	        j
                  t        |      S )Nz9Internal error: Tried to backward() through example inputr   )rD   r   
_functionsDelayedErrorr  r  r9   )r  r2   errfnerrs       r3   _backward_errorzMetaConverter._backward_errorX  s>    ##00G
 Ah{{8S))r5   c                n"    !"#$%&'() t        j                  |j                        #$ddlm}  |dt         j                               t        j                  j                         j                  t        j                  j                  j                        rJ  xj                  dz  c_        t        j                  &j                   &f	 	 	 	 	 	 	 d&fd)f	 	 	 	 	 	 	 d')fd}f	 	 	 	 	 	 	 	 	 	 	 d(# fd$	 	 	 	 	 	 	 	 	 	 d)!fd	!f	 	 	 	 	 	 	 d*!#$& )fd
} j#                        dt        j$                  j&                        5  j(                  rCj*                  }	 #fd      }
 j,                  rej.                  J t        j0                         5  t3               5  t5        |
      sJ t7        j.                        |
_        d d d        d d d        t;        |
      sJ d       |
j=                  t?        j@                               jB                  rd|
_!        jB                  r|	s  jE                  |
jG                               }
t        jH                         5  |
j=                  t?        j@                               d d d        ntK        jL                        rj*                  }	jL                  t        jN                  t        jP                  hv rpjR                  J jT                  J jV                  J jX                  jR                  z
  jT                  z
  }jV                  jZ                  |dz   |dz    "nd"jL                  t        j\                  t        jN                  hv r%j^                  J j^                  j`                  %n$jb                  J jb                  j`                  % #"%fd      }
 j,                  rej.                  J t        j0                         5  t3               5  t5        |
      sJ t7        j.                        |
_        d d d        d d d        t;        |
      sJ d       jB                  rd|
_!        jB                  	r|		s je                  |
      }
	njf                  rjh                  sddl5m6}  |d       	n{jn                  rGj*                  }	 )      \  '(} #'(fd      }
 j,                  rt        j0                         5  t3               5  jp                  J jr                  J t5        |
      sJ t        jt                  jp                  jr                  j`                  j                        |
_        j.                  J tw        |
j8                  j.                         d d d        d d d        t;        |
      sJ d       jB                  rd|
_!        jB                  r=|	s: je                  |
      }
n'jx                  r0jz                  rddl5m6}  |d       d+ # fd         }
nj|                  rj                  j~                  dvrj                  J jx                  rJ  j                  j                  #      } jE                  t        j                  |            }
t        j                  j                  |
       nFjz                  rj                  J d }r.,ddlFmG} t        |      sJ j                  j                  } j                  j                  #t        j                  j                  j                  d      |      }	 	 	 	 	 	 d,d}t        j                  j                  t        j                  j                  j                        }t        j                  j                  t        j                  j                  j                  d       	 |j`                  j`                  k(  rn ||j`                  j`                        r% jE                  t        j                  |            }nl |j`                  |j`                        r% jE                  t        j                  |            }n* jE                  |j                  j`                              }j*                  r8t        j0                         5   ||      }
d d d        jB                  
_!        nj                  jB                  jB                  k(  r't        jH                         5   ||      }
d d d        njB                  sJ t        j0                         5  t               5   jE                  |j                  |jZ                              }d d d        d d d        jB                  _!        t        jH                         5   ||      }
d d d        j                  J t        j                  j                  j                  
j                         t        j                  j                  t        j                  j                  j                  |       j                  |
_W        nj*                  }	j                  sj                  sjx                  sj                  rt        cd d d        S  )      \  '(}jh                  r $'(      }
n #'(fd      }
 j,                  rt        j0                         5  t3               5  jp                  J jr                  J t5        |
      sJ t        jt                  jp                  jr                  j`                  j                        |
_        tw        |
j8                  j.                         d d d        d d d        t;        |
      sJ d       jB                  r$jB                  |
_!        |	s je                  |
      }
j                  }|J |j                   j                  vr|
jf                  s&|
js                         (k(  r|
j                         |k(  r| j                  ||
j                                 j,                  rt5        |
      sJ |
j8                  J t        |
j                         |
j8                  j                                n7 j                  |#      }t        j                         }dd ldme}mf}  ||
      }| ||      }t        j0                         5   &       5  |5  |
j                  ||'(       d d d         j,                  rt        j0                         5  t3               5  t5        |
      sJ |
j8                  J jr                  J |
j8                  j                  t        |      j                  jp                  jr                         d d d        d d d        d d d        d d d        j                  1dd!lmL}  j                  j                  # |d"            
_i        t        j                  j                  
j                         t        j                  j                  |
j                         d d d        j                  xr j                  k(  }t        t        
d|#       dd$lFmq} j                  > |j                  jp                  dk(        r|
j                         j                  d       j                  rd|
_t        j                  8t5        |
      sJ |
j                  j                  j                  %      |
_x         j                  |
        j                        S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   
VxY w# 1 sw Y   
[xY w# 1 sw Y   #xY w# 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   \xY w# t        j                  j                  t        j                  j                  j                  |       w xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   CxY w)-Nr   r   )ConstantSource__meta_utils_unknown_tensorr   c           
     >   | j                   J | j                  }|1|j                  u r#| j                  | j                   | j                  fS t        fd| j                  D              }t        fd| j                   D              }j                  | j                        }j                  |||t        | j                        D cg c]  }|| j                  v  c}||| j                        S | j                  | j                   | j                  fS c c}w )Nc              3  @   K   | ]  }j                  |        y wrC   #_maybe_specialize_sym_int_with_hint).0sz	shape_envs     r3   	<genexpr>zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s$      # "EEbI#   c              3  @   K   | ]  }j                  |        y wrC   r  )r  sdr  s     r3   r  zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s$      % "EEbI%r  )symbolic_contexthint_overrides)ri   r   r  r   rj   rA  r  -_create_symbolic_sizes_strides_storage_offsetranger   r   r   )	r2   rX  r  r   t_sizet_stridet_storage_offsetdr  s	           r3    sym_sizes_strides_storage_offsetzCMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset  s!    88'''$KK	(Y-@-@I-M FFAHHa.>.>?? # #"#&&# F  % %"#((%  H (1'T'T((($ %RR (@EaffN1a666N)9'('>'> S   !*:*:;; Os   Dc                f     | ||      \  }}}t        j                  ||| j                  d      S ry  rD   empty_stridedr]   )inner_t	inner_srcr  inner_sizesinner_strides_inner_storage_offsetr  s         r3   empty_createz/MetaConverter.meta_tensor.<locals>.empty_create  sC     1)EUV	%&&mm	 r5   c                   ddl m ddlm | j                  J | j
                  J ||n| j                  }||n| j                  }|t        |      sJ 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	
fd|J  | |||	|      }|j                  |k(  s$J d| j
                   d| d|j                          |j                         |k(  s(J d| j
                   d| d|j                                 |S )
Nr   
AttrSource)SubclassSymbolicContextc           	     R   | j                   j                  | |||      S i }| j                   j                         D ]  \  }}d }	|Xt        |      sJ |j                  |   x}
	 8t        t        j                  j                  j                  j                  |
      }	 ||      }t        j                  ||j                        } ||j                  |j                  |	||      }|||<    | j                   J | j                   j#                  || j$                  ||      S )Nr  )r   meta_tensorrD  r1   inner_contextsr   rD   fxexperimentalsymbolic_shapesr.   	functoolspartialr   r   ri   r   __tensor_unflatten__r   )r2   
outer_sizeouter_strider  r  sourceinner_tensorsr  meta_tensor_desccurrent_contextcurrent_context_current_sourceinner_callbacknew_empty_tensorr  r  _empty_create_subclassr   r  s                 r3   r  zXMetaConverter.meta_tensor.<locals>.empty_create_subclass.<locals>._empty_create_subclass  sO    77?++! (  !#./ggmmo ;*D*&*O'3)*:<STTT0@0O0OPT0UU,!%& /< % 5 5 E E U U 0/O
 &0%=N%.%6%6 )9)@)@&N (>((--(//'&&($ +;M$'1;4 vv)))vv22!155*l r5   zExpected return value from z.__tensor_unflatten__() to have shape equal to z, but got: z/__tensor_unflatten__() to have stride equal to )r2   r7   r  r;  r  r;  r  ?Optional[torch.fx.experimental.symbolic_shapes.SymbolicContext]r  &_MetaTensorCallbackOptDevice[_TensorT]r  torch._guards.Sourcers   r9   )
torch._dynamo.sourcer  %torch.fx.experimental.symbolic_shapesr  r   r   r   ri   r1   r^   )r2   r  r  r  r  subr  r  r  r  r   r  s         @@@r3   empty_create_subclassz8MetaConverter.meta_tensor.<locals>.empty_create_subclass  si    8U77&&&66%%% (2'=166J+7+C<L#+z "90  3!353 83#	3 A3 -3 3 3j %%%(:|-=xC 99
* -affX 6"",[E* ::<</ -affX 6##/.CJJL>K/
 Jr5   c                   ddl m} ddlm}m}m} d }| j                  r*| j                  J  | j                   ||d      ||      }|j                  g| j                  z  }	| j                  rv| j                  J i }
| j                  j                         D ],  \  }}t        |t              sJ  | |||      ||      |
|<   .  ||	d g| j                  z  |
||      }|S  ||	d g| j                  z  |      }|S )Nr   r  )
DimDynamicStatelessSymbolicContextr  rn   )dynamic_sizesconstraint_sizesr  tensor_sourceview_base_context)r  r  r  )r  r  r  r  r  r  rk   rm   DYNAMICr   r&   r   rD  r1   rB  )r2   r  r  r  r  r  r  r  r  t_dynamic_sizesr  r  innert_symbolic_contextall_dynamic_symbolic_contexts                 r3   r  z?MetaConverter.meta_tensor.<locals>.all_dynamic_symbolic_contextH  s4    8    yyvv)))$@FFJvw7H%!
  *112QVV;O..ww***   $%77==? KD%%dC000+Gz&$7H,N4(
 &="1&*Vaff_#1"(&7&" &% &>"1&*Vaff_&7&" &%r5   c           	        t               5   |      \  }}}|j                  sGt        |       s<        5  j                  | j                  |||            cd d d        cd d d        S ddlm ddlmm} dfd}i |j                  rg|j                  J |j                  J  |||      }|j                         \  }	}
|	D ](  }t        ||      |j                  |   j                  <   * f	 	 	 	 	 	 	 dfd}|j                  J |j                  j                  || ||      }t!        j"                   ||j%                         |             t!        j"                   ||j'                         |             t!        j"                   ||j)                         |             |cd d d        S # 1 sw Y   ^xY w# 1 sw Y   y xY w)	Nr   )EphemeralSource)r  sym_eqc                    ddl m d uxr, t              xr t        fdj                  D              }|s| S  d      }j                  | |d       }j                  || |      S )Nr   )r  c              3  :   K   | ]  }|j                   u   y wrC   )STATIC)r  xr  s     r3   r  z_MetaConverter.meta_tensor.<locals>.view_from_base.<locals>.symint_visitor_fn.<locals>.<genexpr>  s$        ! !2!22 s   r  )positive)hintr  )r  r  r1   allr  create_symbolcreate_symintnode)	r   all_static_sizes
sym_sourcesymbolr  r  r  r  r  s	       @r3   r  zLMetaConverter.meta_tensor.<locals>.view_from_base.<locals>.symint_visitor_fn  s    P )4 &'79QR  %5%C%C   % (9+<  "11D!EJ&44Q
T4RF$66Qz 7  r5   r  r  c                    | y 
j                   j                  |       }	j                  |d       }||S 
j                   j                  |       } d      }
j	                  |||| ||||            S )Nr  )rh  r   rm  rw   r  )	visited_tr  r  
visited_idfake_visited_tvisited_desctemp_sourcer  r  real_to_fake_mappingr   s          r3   r  zLMetaConverter.meta_tensor.<locals>.view_from_base.<locals>.tensor_visitor_fn  s     !(# "&!=!=i!HJ%9%=%=j$%ON%1--#'>>#A#A)#LL #22E"FK++$! #4(+y( r5   )r   r  rs   r  )r  rr   r  8Optional[torch.fx.experimental.symbolic_shapes.ShapeEnv]r  r  rs   rr   )r#   r&   r  
as_stridedr  r  r  r  r  r   r   r   rT   r   r   r  rD   _checkr   ri   rj   )rm   r2   r  sizesstridesrj   r  r  fake_tr   _r  r  r  r  r  r  r  r  maybe_suppressr   r  r  r  s     `          @@@r3   view_from_basez1MetaConverter.meta_tensor.<locals>.view_from_base  s    *+ E3Sv40 779$?
 () #:: OOE7NK  E E" A
 < (*$2277... 66--- (=e'(F  &88:HE1 % WAHQUAV,QWWT]-=-=>W "GO'+' 	' E' "' 'V {{... **t.0A VFKKM59:VFMMOW=>VF$9$9$;^LMKE E E Es)   ,G"G	G1E
GG	
GGc                     t         j                  j                  j                   j                   j
                   j                   j                  t         j                  d      S )Nrz  )r]   rd   r   )	rD   opsaten_sparse_coo_tensor_with_dimsrf   re   r   r]   rz   r@   s   r3   r   z+MetaConverter.meta_tensor.<locals>.<lambda>0  sH    		 K KLLKKFF"#''#(#3#3#) !L ! r5   z)the callback you passed in doesn't detachT   rN   c            
         t         j                  j                  j                  dj                  j
                   j                  j                  d      S )Nr   rz  )rd   r]   r   )rD   r  r  #_sparse_compressed_tensor_with_dimsre   r^   rd   r]   )	blocksizeindex_dtyper2   s   r3   r   z+MetaConverter.meta_tensor.<locals>.<lambda>c  sH    		 R RKKGG%'#$88"#''#) !S 	! r5   )unimplementedz;strided nested tensors are not supported by meta conversionc                 J    t        j                   j                  d      S ry  r  r  r  r2   s   r3   r   z+MetaConverter.meta_tensor.<locals>.<lambda>  s     3 3!7!''&! r5   r{  z;view functorch tensors are not supported by meta conversionc                     j                   r j                  J  j                  J  j                  J  
 j                        } j                  } j                  }t        j
                  j                  j                   j                        5  j                  t        |||            }d d d        |S  j                  r. j                  J  j                  J t        j                  j                  } |       5   
 j                        }d d d         j                  }|	k(  r}nut        j
                  j                  j                   j                        5  j                  t        j                  j
                  j                  |            }d d d         j                  } j                   rt#              r	d|_        |S  j                   r|sj%                        }S  j&                  rb j                  J  j(                  J j+                   j                        }j                  t-        | j(                              }|S  j.                  J  j0                   j.                    fd      }j2                  rt	        j4                         5  t7               5  t	        j8                   j0                   j.                   j:                   j<                        |_         j@                  J tC        |j>                   j@                         d d d        d d d        |S |S # 1 sw Y   S xY w# 1 sw Y   BxY w# 1 sw Y   xY w# 1 sw Y   <xY w# 1 sw Y   |S xY w)NTc                 J    t        j                   j                  d      S ry  r  r  s   r3   r   zDMetaConverter.meta_tensor.<locals>._to_fake_tensor.<locals>.<lambda>  s"    (;(;$)$+*+''+1	)" r5   r{  )"r   r   r   r   rD   r   r   %temporarily_restore_interpreter_stackr   r  r   r   r   _DisableFuncTorch_wrap_for_gradr>   r_   rA   r  r   r   r  r   ri   r   r   r~  r%   r  r]   r   real_tensorr   rY  )r2   ftlvlr   r   disable_functorchr>   r  r  GRAD_TENSOR_SENTINEL_VALUE_to_fake_tensorr  r   r  r  r  s   `      @@r3   r  z2MetaConverter.meta_tensor.<locals>._to_fake_tensor  sB    --#$;;#::#:#$77#66#6#$66#55#5!0!=B"#''C#$66D
 "'!1!1!=!=!c!c ! 1 1" " %)$?$?$22tS$A%""L  !A 44#$;;#::#:#$77#66#6050J0J-!2!4 B%4Q[[%AB"#''C"&@@$&%*%5%5%A%A%g%g$%$5$5&" !& )-(C(C(-(;(;(J(J2s(S)&A!& '(iiG <?26Z  !Y "#$($8$8$;V  !U __#$;;#::#:#$??#>>#>!%!1!1 ! ) (
 !' 0
"B !% ; ; 7AOO L!A8  !/ $%88#77#7$%FFE&'hhG (!"!A  $~~%*]]_ !Fkm !F494G4G()()./gg/0xx	5&AM ,-66+=$=+=$.q}}aff$E!F !F  !qM"L  !yB B!& !&Z!F !F !F  !sI   M	M+:M);NA5M6;NMM&)M36M?	;NNr   )r  rn   c                `    t        j                  |       xr t        j                  |       |k(  S rC   )utilsis_complex_dtypecorresponding_real_dtype)complex_dtype
real_dtypes     r3   	is_c_of_rz,MetaConverter.meta_tensor.<locals>.is_c_of_r.  s2     "22=A * % > >} M)!*r5   Fr  c                 J    t        j                   j                  d      S ry  r  r  s   r3   r   z+MetaConverter.meta_tensor.<locals>.<lambda>  s"    E$7$7 % '&'gg'-	% r5   )r  )in_kernel_invocation_managerr   r  rI   rX   )guard_or_false)nt_tensor_id)r2   r7   rX  r  r  r  rs   z,tuple[tuple[int, ...], tuple[int, ...], int])r  r7   r  r  r  r  rs   rr   )r2   r7   r  r9  r  r9  r  r  r  zOptional[torch._guards.Source]rs   r9   )
r2   r7   r  r  r  r  r  _MetaTensorCallback[_TensorT]rs   z5torch.fx.experimental.symbolic_shapes.SymbolicContext)rm   r9   r2   r7   r  r  rs   r9   r2   r7   rs   r9   )r  r8  r  r8  rs   r  ){r  r  r   r  r  lenrc  rD   r   _dispatch_tls_local_exclude_sethasDispatchKeyPythonrg  
contextlibnullcontextsuppress_guardsrn  inference_modera   r`   r>   r   r   r~  r%   r4   r\  r  rA   _coalesced_r  rg   r_   r  r[  enable_gradr   rd   r   r   rf   re   r   r   r^   r}   r   r]   r   r  r   r&   torch._dynamo.excr  r   r   ri   r  rY  r   rk   r   r   r   r  _to_functional_tensor_mirror_autograd_meta_tor   rm   r  r  r1   r  _dynamor  r  &_dispatch_tls_is_dispatch_key_excludedADInplaceOrView'_dispatch_tls_set_dispatch_key_excludedview_as_realview_as_complexviewr#   r   r   _set_creation_metafake_devicer   r   r   NotImplementedr   r   rb  rj   rv  r   r   r  r0   r  r   set_r   rI   	_set_conjrb   _set_negrc   r   rx   rQ   r  resize_r   	_is_paramr   r   create_symbolic_nested_intnested_int_memorr  rp  )*r   r2   r  	callback_r  r  r  r  r  r>   r   	batch_dimr  _storage_offsetr   base_symbolic_contextr  rm   r  old_excludemidrj   r   r  maybe_fake_mgrr  r   mb_fake_moder  rZ   r  r  r  r  r  r  r  r  r  r  r  r  s*   ``` ``                         @@@@@@@@@@@r3   r  zMetaConverter.meta_tensorg  s:    2;1B1Bahh2
 >; $-c$2B2B.C-DEF 88;;=AAHH  ''
 	
 
 	4 -7,B,B &66N !%	<%	<%%	<%	< :%	<X !	#	+		 	6 !5;g	g	'g	 *g		g	 3g	 g	Z0	&0	&(0	& P0	& 4	0	&
 C0	&h L	L	L	L	 L	 L	\ "*)+&%%ann5 p/;;iiG
 !	A ~~ vv111"]]_ @km @#21#55#5,7,?AM@ @ (?W,WW? MM$q~~"67*.w
 !77	B"..0 @MM$q~~*>?@ @0:iiGxxE$4$4e6F6F#GG ||777 {{666 xx333$%FFQ\\$9AKK$G	$%HHNN9q=9q=$Q	$&	xxE$4$4e6F6F#GG ~~999&'nn&:&: ~~999&'nn&:&: 	A ~~ vv111"]]_ @km @#21#55#5,7,?AM@ @ (?W,WW?*.w 003[[)H)H @!U [[iiG
 9FC	' !A
 ~~"]]_ >km >#$66#55#5#$88#77#7#21#55#5,1,?,? !-AM $%66#55#5&q}}aff=> > (?W,WW?*.w 003++yyC%YU! U!n (*A__o)M;;222 5555 $ 0 0! (!I 3333I>A 2213G3GKYY 66---,0) %5%A  **:<TUUU ,==I4D4V4V1++! ,,77H-D'2@K #((("Q"Q,,<<#K HHDD,,<<eE::0 &tzz177;#'#>#>u?Q?QRV?W#XD&qww

;#'#>#> % 5 5d ;$D $(#>#>tyy?Q#RD& 99 "' <$24$;< /0ooAO vv33qF%*%6%6%8 !@(6tQ(?A!@ !@ () 6%*]]_ !&6N6P !&*.*E*E(,		$**(=+&C!& !& 56OO 1%*%6%6%8 !?(6sA(>A!?
  !:::**==aQHH!HH00@@+ %&HHAM  iiG //13J3J2222-Wp/ p/b 9FDTU	&
 661%g %  >>!& B+- B'(vv'9 9'9'(xx'; ;';'6q'9 9'9050C0C$%FFAHHAGGAHH1" !+1==!&& AB B (?W,WW?*+//& !% 4 4Q 7A		A=(=tt4#4#44HHJ'1 ! 0 0 2n D --a1B1B1DE>>#21#55#5#$==#<<#<- ! 1 1 3Q]]5R5R5T #//H/E, '224 '
 (;1'='3-I,-WN"]]_ &n.> &!/ L !sNE7 KL#~~%*]]_ 	!&km 	!&+:1+=$=+=+,==+D$D+D+,88+?$?+?$%MM$6$6(9#(>()(8(8()()	%&		!& 	!&	& & 66%? "--! "662(AF ""1aii0!!!QXX.ap/f ''QAGG7Q,Q  y!QdiX Myy$		!8K)L!!#++A.~~" ||'&q)))$%KK$J$J!" %K %!   A&,,Q//m@ @ @ @$@ @F@ @ @ @@> > > >h< <!@ !@!& !& !& !&
!? !? HH!HH00@@+LB B B BdL L	!& 	!& 	!& 	!&	& & & &ip/ p/su  )AAD*<9(,/97BAD*%A@0E:AD**A@ 5(A@A@ %CAD*0A@:;BA@-A@:!IAD*4C(AB
AA&AAB7
AA+AB,AA.7+AA!"AA.*-AB
AA;!A
AB+BAD*AAD*AC)BAC9ACE5AD*6AD>ADAC)	(AD>AD		A/AC68AD	 ADADBAD*,6199A@	>AD*@A@	@AD*@A@@A@ @ A@*	@%AD*@-A@7@2A@:@:AA	@?AD*AAA	AABAAA	AABA!AA+A&AA.A.AA8	A3ABA;AB	B ABBAACCAD*CACCACCAC&	C!AD*C)AC3C.ADC6AD C;AD	DADDADDADDADDAD'	D"AD*D*AD4T)r  r  r  r   c               $    | j                   }n|}t        |t        j                        r|j                  j
                  dk(  s>|j                  s2|j                         r=|j                  1|j                  j                  r xj                  dz  c_
        t        S  xj                  dz  c_        n<t        j                  j                  |      r xj                  dz  c_
        t        S |S d} j                  j!                  ||      |rJ t#        d fd       t%        j&                         5 }|j)                  t        j*                  j,                  j/                                t1               }	|	7|j)                  t        j2                  j4                  j7                                 j9                  |||      }
d d d        t        |      t        j:                  j<                  u rd
_        
S # 1 sw Y   7xY w)	Nr   r   Fr   describe_sourcec                 h     j                   j                  j                  j                         dS )N)r  r   r  )rh  r   rM  )r   r  t_descs   r3   r   z(MetaConverter.__call__.<locals>.<lambda>p  s'    $(NN$5$5 ))$kkm% r5   r   T) r  r1   rD   ru   r   r   is_quantizedrl   rn   r`   re  r8  rd  	overridesis_tensor_likerh  rw   r$   r&  	ExitStackenter_context	_dispatchpythonsuspend_functionalizationr"   r   r   r   r  r   r   r=  )r   r2   r  r  r  r  r   r@  
exit_stackstr   rK  s   `   `      @r3   r,  zMetaConverter.__call__4  s    //I I a& '  !''"5!'':K:K		Q	%%A__++A.IINI!! H>E ///?%%%! !!# 	z$$U__%;%;%U%U%WX')B~(($$00TTV    A	  7ehh((( AK -	 	s    BHHr  )rs   r  )r2   r7   rs   r=  r   )r2   r7   rF  r9   rs   rt   )r   r   rs   r  )r   r   rF  r  rs   rt   )r   r   r  z0Callable[[Callable[[], torch.Tensor]], _TensorT]rs   r  )r2   rr   rs   r9   rC   )r2   r-  r   z"Optional[Union[torch.device, str]]rs   r9   )r2   r9   rs   r9   )r2   r7   r  Optional[ShapeEnv]r@  r  r  Optional[Source]r  Optional[SymbolicContext]rs   r9   )r2   rr   r  rV  r  z'Optional[_MetaTensorCallback[_TensorT]]r  rW  r  rX  r   r  rs   r9   )r  r  r	  r   rj  rn  rp  rr  rt  rv  r  classmethodr  r  r  r  r,  rN   r5   r3   r^  r^    s\   ,1 B*/0
#1$ C 
	, ( (  6:/%/ 3/ 
	/ / * *K0K0 &K0 1	K0
 !K0 4K0 
K0` )-\
 =A#'6: \\ &\
 :\ !\ 4\ \ 
\r5   r^  )r2   rJ  rs   zTypeIs[FakeTensor])r2   #Union[MetaTensorDesc, torch.Tensor]rs   r  )r2   r6   rs   zOptional[_TensorLikeT])r2   r6   rs   r6   )rO   r8   rP   r8   rs   rt   )rs   zGenerator[None, None, None])rQ   z Callable[[object, object], None]ro   rZ  rp   rr   rY   r  rZ   r  rs   rt   )r2   rJ  rs   zTypeGuard[torch.Tensor])rd   r:  rs   r  )r   ztype[_T]r   rJ  rs   r8   )rm   r  rs   r  )rm   r  r   r  rs   rt   )rW  rr   rX  r=  rs   rt   )rX  rr   rs   r=  )m
__future__r   r&  rK  r  	threadingr  r`  abcr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   typing_extensionsr   r   r   r   r   rD   torch._C._autogradr   torch._C._functorchr   r   r   r   r   r   r   r   r    r!   r"   torch._dispatch.pythonr#   torch._loggingr$   torch.utils._mode_utilsr%   torch.utils._python_dispatchr&   torch.utils.weakr'   collections.abcr(   r)   torch._guardsr*   r0   r+   r,   r  r-   r.   r4   r   DimListru   r6   r8   r9   r;   rA   rJ   rL   rQ   localrU   rS   rW   rx   r{   r   rh   r   r   r   r   r  r   r   r   r   rv   r   r   r  r  r)  r1  r4  r7   rY  r\  r^  torch._prims_common_prims_commonr  rN   r5   r3   <module>rl     s   "        = !   M L  +    < + / F 0 )0$H
 P% ~'7FT]:U\\2~U\\TJ
! ioo #  + +  9/9+9 	9
 9 9 
9zHQ
7
%
%.B%	% -~s+ ~s+ O O Od $
 
 
 $8wx  8 8$ $
(<0 
 
 $Ihx('(*; I I6(GL$9 %	 %8W\-B  $SWX& S SDEGH% EP$ $r5   