
    i	                      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 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l/m0Z0 d dl1m2Z2 d dl3m4Z4 er$d dl5m6Z6m7Z7 d dlm8Z8 d dl9m:Z: d dl;m<Z<m=Z= d dl>m?Z?m@Z@ dHdZAeBZC eddej                        ZE ed      ZF edej                        ZG edej                  d      ZHdIdZIdJdZJdKdZKdLd ZL ej                         ZNd!eN_O        edMd"       ZPd!d!d#	 	 	 	 	 	 	 	 	 	 	 dNd$ZQdOd%ZRdPd&ZSdOd'ZTdOd(ZUdQd)ZVdRd*ZW	 	 	 	 	 	 dSd+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 dCeeG                ZfdTdDZgdUdEZh G dF dGeeG         Zid dljmkZl y)V    )annotationsN)abstractmethod)AbstractContextManagercontextmanager)	dataclass)
AnyClassVarGenericNewTypeOptionalProtocolTYPE_CHECKING	TypeGuardTypeVarUnion)override	TypedDict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)Callable	Generator)CInterpreter)Source)
FakeTensorFakeTensorMode)ShapeEnvSymbolicContextc                &    ddl m} t        | |      S )Nr   )r+   )torch._subclasses.fake_tensorr+   
isinstance)tr+   s     m/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/torch/_subclasses/meta_utils.py_is_fake_tensorr4   =   s    8a$$    _TensorLikeTMetaTensorDesc[Any]_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                6    t        |       }|t        d      |S )Nz3Expected tensor to have a gradient but grad is None)rJ   AssertionError)r2   rI   s     r3   _expect_safe_gradrM   X   s!    Q<D|RSSKr5   c                .    | |k7  rt        |  d|       y )Nz != )rL   )abs     r3   	assert_eqrQ   _   s#    Avs$qc]++ r5   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   k   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(                  rL| j,                  t/        d      |j0                  t/        d       | j,                  |j0                         y y )NrS   Fz*m1.base must not be None for a view tensorz+m2._base must not be None for a view tensor)dtypeshaperequires_gradr>   	is_sparserT   rU   is_inferenceis_conjis_negrI   rJ   rM   layout	dense_dim
sparse_dimis_coalescedis_sparse_compressedstridestorage_offsetis_view_is_viewbaserL   _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77?()UVV88#()VWW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   u   sG     b%,,' 	--b1 (& (&Z 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                R    t        ||       st        d|  dt        |             |S )Nz	expected z	 but got )r1   rL   type)tyobjs     r3   _checked_castr      s-    c2yId3i[ABB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 }|	r`tA        |d      stC        d      |jE                         \  }}|D ci c]   }| j%                  tG        ||      |      " }}t+        |      }ddl$m%} tL        jO                  |      }tG        tP        dd	      }tS        dCi d
 jU                  |      d|d|rd	n|jW                         d|d|jX                  d|j[                         d|j\                  d|d|d|
d|d|d|d|d|j_                         d|ja                         dtc        |t        jd                  jf                        d|	d|d||v r||   jh                  jk                         nd d|d|d |j(                  d!|jm                         d"|d#|d$to        tG        |d%tq                           d&tG        |d'i       d(|j                  sts        |      r|ju                         nd d)|j                  sts        |      r|jw                         nd d*|j                  r|jy                         nd d+|rN|j                  t        jz                  t        j|                  hv r" j%                  |j                         d	|,      nd d-|rN|j                  t        jz                  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/|rN|j                  t        j                  t        j                  hv r" j%                  |j                         d	|,      nd d0|r-ts        |      r" j%                  |j                         d	|,      nd d1t        |      x}  j%                  | |      nd d2|j                         r)t        j2                  j                  j                  |      nd d3|d4|s|rt        |      nd d5|rt        |      nd d6|r9|j                         r)|j                   j%                  |j                  |      nd d7t        j                  j                  j                  |      d8|d9|d:|d;|d<|d=|d>|d? j                  r|nd !|rN!j                   j                  vr6t        d@! fdAB        j                  j                  !j                         !S # 1 sw Y   1xY wc c}w )DNr   r   xlalazyzVCannot safely fakify a view because this process drops the view information right now.__tensor_flatten__z>Traceable wrapper subclass must have __tensor_flatten__ method)_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    )TrA   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hasattrrL   r   rT   $torch.nested._internal.nested_tensorr   ViewFuncfrom_tensorrU   MetaTensorDescr   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$T  113NIs & d**71d+;5*IIE  !WFP((+	 &-S2JE%R"!/ j"
!!!$j"
j"
 #=!..BRj"
 	j"

 //j"
 j"
 ''j"
  j"
  j"
  "6!j"
" 0#j"
$ %>%j"
& #:'j"
( )j"
* IIK+j"
, 88:-j"
. $Auxx'9'9:/j"
0 +J1j"
2  3j"
8 // (*//::<;j"
> (?j"
@ Aj"
B 88Cj"
D Ej"
F Gj"
J *Kj"
L $(3Lce(T#UMj"
N #*!-Er"JOj"
R #$++1Ea1HdSj"
V (){{6J16MakkmSWWj"
X ./[[)dYj"
d qxxE,<,<e>N>N+OO $$Q^^%5uE$Rgj"
n qxxE,<,<e>N>N+OO $$Q]]_e5$Qqj"
x qxxE,<,<e>N>N+OO $$Q^^%5uE$R{j"
B qxxE,<,<e>N>N+OO $$Q]]_e5$QEj"
L 3A6 $$QXXZe$LOj"
V &aL(D5 $$T$7Yj"
^ =>JJL""55a8d_j"
b  cj"
h &)@  "kj"
n '9"doj"
t qzz|0C $$QWWE$:wj"
z ''33GGJ{j"
|  }j"
@ Aj"
B Cj"
D Ej"
L 2Mj"
N  2Oj"
P (Qj"
R nn$Sj"
V QTT!4!44!6 ##ADD)Y s   4]%4%]2%]/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   r   r5   r3   rv   rv      sn     -2 /%& 9>%15	& 37e]]+/]?C]	]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   r   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   r   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   zViewFunc[Any])r	  r
  r  r   r  staticmethodr   r   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   s5       ,,77II
 	
r5   r!  )
r2   rr   r  rr   r  r"  r  z.Optional[Callable[[torch.Tensor], FakeTensor]]rs   r+   )r	  r
  r  r   r  r   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  r   r5   r3   r  r  1  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   r   )r   argr   s      r3   __call__z_MetaTensorCallback.__call__N  s    r5   N)r-  Callable[[], torch.Tensor]r   Union[torch.device, str]rs   r;   r	  r
  r  r.  r   r5   r3   r+  r+  M  s    -=U	r5   r+  c                      e Zd ZU ded<   y)_MetaTensorCallbackKwargsr0  r   N)r	  r
  r  r  r   r5   r3   r3  r3  S  s    $$r5   r3  )totalc                       e Zd Z	 	 	 	 	 	 ddZy)_MetaTensorCallbackOptDevicec                    y rC   r   )r   r-  kwargss      r3   r.  z%_MetaTensorCallbackOptDevice.__call__\  s    
 r5   N)r-  r/  r8  z!Unpack[_MetaTensorCallbackKwargs]rs   r;   r1  r   r5   r3   r6  r6  [  s#    ' 4	
 
r5   r6  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)Tr   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[Any]]r   r   r   r   r   r   r   rm   z(Optional[dict[str, MetaTensorDesc[Any]]]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[Any]]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   )r   r>  r  r1   rD   r   r]   rd   SymInttupler   r   r   r   strdictitems)kvv1k1jsons       r3   rK  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  )rG  rD  rH  objectrs   rL  )dataclassesfieldsrT   namedefaultupdate)r   r  fieldr   rK  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   r;  )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^   r   r5   r3   r   r   d  s;   
I %%)) ==FL(L$GTM4ItIt!&$&"d"$)T)"'4'GTIt !%J$*/!4/M4GTFDL$(,F%,NC
 *.G&- $J$#I}##'L.'26L/615K.526L/615K.5,0F)0/3I,3D-*.D
'. 
3  -1M)0*.D
'.+O'  !C	 D.*.I'.)-I&-  E=#'M='48O1815.5
 $(D
 '"H  r5   r   c                ^    t        |      t        j                  ury | j                  |       y rC   )r   rD   ru   copy_)dstsrcs     r3   
_safe_copyr[  	  s     Cy$IIcNr5   c                Z    t        |       t        j                  ury | j                         S rC   )r   rD   ru   clone)rZ  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   )rf  rg  rT  s    r3   
successfulzMetaConverter.successful2  s    xx!|.		Q.r5   c                N    | j                   j                  |j                  d       S rC   )re  getr   r   s     r3   get_tensor_memozMetaConverter.get_tensor_memo5  s    ##ADD$//r5   c                    | j                   j                  |j                  d       }|t        d|j                   d      |S )NzTensor memo for id z is None)re  rn  r   rL   )r   r2   r   s      r3   _checked_get_tensor_memoz&MetaConverter._checked_get_tensor_memo8  sA      t,9 #6qttfH!EFFr5   c                6    || j                   |j                  <   y rC   )re  r   )r   r2   rH  s      r3   set_tensor_memozMetaConverter.set_tensor_memo>  s    !"r5   c                N    | j                   j                  |j                  d       S rC   )rd  rn  r   r   s     r3   get_storage_memozMetaConverter.get_storage_memoA  s      $$QTT400r5   c                6    || j                   |j                  <   y rC   )rd  r   )r   r   rH  s      r3   set_storage_memozMetaConverter.set_storage_memoD  s    "#!$$r5   c                   | j                        x} |fd      j                         }| j                  rkt        j                         5  t               5  j                  t        d      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>P  s    AFF%++fM r5   z.s.data must not be None when copy_data is True)ru  r   r   rD   no_gradr$   r   rL   r   r]  rw  )r   r   callbackmemor_ss    `   r3   meta_storagezMetaConverter.meta_storageG  s     ))!,,D5Mo  ~~ ]]_ ;km ;vv~,L  &c166<<>:; ; !!!S)JK; ; ; ;s$   C<B;C;C	 CCc                6    t        j                  t        |      S rC   )typingcastr9   )clsr2   s     r3   _checked_cast_tensor_tz$MetaConverter._checked_cast_tensor_t`  s     {{8Q''r5   Nc                .    | j                   |             S rC   )r  )r  r2   r   s      r3   _identity_callablez MetaConverter._identity_callablee  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_errorm  s>    ##00G
 Ah{{8S))r5   c                %   !"#$%&'()*+ t        j                  |j                        %$ddlm}  |dt         j                               d}t        j                  j                         j                  t        j                  j                  j                        rt        |       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*                  rYj,                  }
 %fd      } j.                  rwj0                  t        d      t        j2                         5  t5               5  t7        |      st        d      t9        j0                        |_        d d d        d d d        t=        |      st        d      |j?                  tA        jB                               jD                  rd|_"        jD                  r.|
s+ jG                  |jI                               }t        jJ                         5  |j?                  tA        jB                               d d d        ntM        jN                        r(j,                  }
jN                  t        jP                  t        jR                  hv rjT                  t        d      jV                  t        d      jX                  t        d      jZ                  jT                  z
  jV                  z
  }jX                  j\                  |dz   |dz    $nd$jN                  t        j^                  t        jP                  hv r.j`                  t        d      j`                  jb                  'n-jd                  t        d      jd                  jb                  ' %$'fd      } j.                  rwj0                  t        d      t        j2                         5  t5               5  t7        |      st        d      t9        j0                        |_        d d d        d d d        t=        |      st        d      jD                  rd|_"        jD                  
r|

s jg                  |      }
njh                  r)jj                  sddl6m7}  |dtq              dg        
nVjr                  roj,                  }
 +      \  )*} %)*fd      } j.                  rt        j2                         5  t5               5  jt                  t        d      jv                  t        d       t7        |      st        d      t        jx                  jt                  jv                  jb                  j                  !      |_        j0                  t        d      t{        |j:                  j0                         d d d        d d d        t=        |      st        d      jD                  rd|_"        jD                  r|
s jg                  |      }nډj|                  r=j~                  rddl6m7}  |d"tq              dg        dA!"% fd#" "      }nj                  rj                  j                  d$vrj                  t        d%      j|                  rt        d&       j                  j                  %      } jG                  t        j                  |            }t        j                  j                  |       nډj~                  rj                  t        d'      d }rCAdd(lHmI} t        |      st        d)t                     j                  j                  } j                  j                  %t        j                  j                  j                  d*      |      }dd+lHmO}  ||       	 	 	 	 	 	 dBd,}t        j                  j                  t        j                  j                  j                        }t        j                  j                  t        j                  j                  j                  d-       	 |jb                  jb                  k(  rn ||jb                  jb                        r% jG                  t        j                  |            }nl |jb                  |jb                        r% jG                  t        j                  |            }n* jG                  |j                  jb                              }j,                  r8t        j2                         5   |	|      }d d d        jD                  _"        nj                  jD                  jD                  k(  r't        jJ                         5   |	|      }d d d        njD                  st        d.      t        j2                         5  t               5   jG                  |j                  |j\                              }d d d        d d d        jD                  _"        t        jJ                         5   |	|      }d d d        j                  t        d/      t        j                  j                  j                  j                         t        j                  j                  t        j                  j                  j                  |       j                  |_Z        nj,                  }
j                  sj                  sj|                  sj                  rt        cd d d        S  +      \  )*}jj                  r &)*0      }n %)*fd1      } j.                  rt        j2                         5  t5               5  jt                  t        d      jv                  t        d       t7        |      st        d      t        jx                  jt                  jv                  jb                  j                  !      |_        t{        |j:                  j0                         d d d        d d d        t=        |      st        d      jD                  r$jD                  |_"        |
s jg                  |      }j                  }|t        d2      |j                   j                  vr|jh                  s&|jw                         *k(  r|j                         |k(  r j                  ||j                                 j.                  rt7        |      st        d      |j:                  t        d3      t        |j                         |j:                  j                                nR j                  |%4      }t        j                          }dd5lgmh}mi}  ||      }| ||      }t        j2                         5   (       5  |5  |j                  ||)*       d d d         j.                  rt        j2                         5  t5               5  t7        |      st        d      |j:                  t        d3      jv                  t        d       |j:                  j                  t        |      j                  jt                  jv                         d d d        d d d        d d d        d d d        j                  1dd6lmN}  j                  j                  % |d7            _l        t        j                  j                  j                         t        j                  j                  |j                         d d d        j                  xr j                  !k(  }t        t        d|8       dd9lHmt}  j                  > | j                  jt                  dk(        r|j                         j                  d       j                  rd|_w        j                  At7        |      st        d:      |j                  j                  j                  ;      |_{         j                  |        j                        S # 1 sw Y   7x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   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   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   yx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   LxY w)CNr   r   )ConstantSource__meta_utils_unknown_tensora   This indicates you set no_dispatch() before calling into this function.  This is an error: we may be creating fake tensors and will perform operations on them which need fake tensor mode to be active.  You will segfault if you are in a no_dispatch() block.r   c           
     V  	 ddl m	 | j                  t        d      
`| j                  }t        	fd| j                  D              xs2 t        	fd| j                  D              xs  	| j                        }|1|j                  
u r#| j                  | j                  | j                  fS |'|s%|#| 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 )	Nr   )is_symbolict.stride must not be Nonec              3  .   K   | ]  } |        y wrC   r   ).0szr  s     r3   	<genexpr>zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s     9BB9   c              3  .   K   | ]  } |        y wrC   r   )r  sdr  s     r3   r  zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s     >r;r?>r  c              3  @   K   | ]  }j                  |        y wrC   #_maybe_specialize_sym_int_with_hint)r  r  	shape_envs     r3   r  zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s$      # "EEbI#   c              3  @   K   | ]  }j                  |        y wrC   r  )r  r  r  s     r3   r  zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s$      % "EEbI%r  )symbolic_contexthint_overrides)%torch.fx.experimental.symbolic_shapesr  ri   rL   r   anyr   rj   r  rC  r  -_create_symbolic_sizes_strides_storage_offsetranger   r   r   )r2   rZ  r  r   has_symbolict_sizet_stridet_storage_offsetdr  r  s            @r3    sym_sizes_strides_storage_offsetzCMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset  s    Jxx$%@AA$KK	9!&&99 5>QXX>>5"1#3#34 
 (Y-@-@I-M FFAHHa.>.>??)((0FFAHHa.>.>?? # #"#&&# F  % %"#((%  H (1'T'T((($ %RR (@EaffN1a666N)9'('>'> S   !*:*:;; Os   F&c                f     | ||      \  }}}t        j                  ||| j                  d      S rz  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                  t        d      | j                  t        d      ||n| j                  }||n| j                  }|#t        |      st        dt        |             	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
fd|t        d       | |||	|      }|j                  |k7  r(t        d	| j                   d
| d|j                         |j                         |k7  r,t        d	| j                   d| d|j                                |S )Nr   
AttrSource)SubclassSymbolicContext%t.attrs must not be None for subclass$t.type must not be None for subclassz.Expected SubclassSymbolicContext or None, got c           	        | j                   j                  | |||      S i }| j                   j                         D ]  \  }}d }	|mt        |      st	        dt        |             |j                  |   x}
	 8t        t        j                  j                  j                  j                  |
      }	 ||      }t        j                  ||j                        } ||j                   |j"                  |	||      }|||<    | j
                  t	        d      | j
                  j%                  || j&                  ||      S )Nz&Expected SubclassSymbolicContext, got r  r  )r   meta_tensorrF  r1   rL   r   inner_contextsr   rD   fxexperimentalsymbolic_shapesr.   	functoolspartialr   r   ri   __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"0"HN^I_H` a#  1A0O0OPT0UU,!%& /< % 5 5 E E U U 0/O
 &0%=N%.%6%6 )9)@)@&N (>((--(//'&&($ +;M$'7;: 66>()OPPvv22!155*l r5   zsource must not be Nonez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  r  r  r   rL   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  s    8Uww$%LMMvv~$%KLL (2'=166J+7+C<L+J "95 %DTJZE[D\] 7&757 87#	7 A7 -7 7 7r ~$%>??(:|-=xC yyJ&$1!&& :&&0\SYYKI  zz||+$1!&& :''3nK

~O 
 Jr5   c                P   ddl m} ddlm}m}m} d }| j                  r3| j                  t        d       | j                   ||d      ||      }|j                  g| j                  z  }	| j                  r| j                  t        d      i }
| j                  j                         D ]A  \  }}t        |t              st        dt!        |              | |||      ||      |
|<   C  ||	d g| j                  z  |
||      }|S  ||	d g| j                  z  |	      }|S )
Nr   r  )
DimDynamicStatelessSymbolicContextr  't.base must not be None for view tensorrn   r  zExpected attr to be str, got )dynamic_sizesconstraint_sizesr  tensor_sourceview_base_context)r  r  r  )r  r  r  r  r  r  rk   rm   rL   DYNAMICr   r%   r   rF  r1   rD  r   )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_context{  sV    8    yy66>()RSS$@FFJvw7H%!
  *112QVV;O..77?()PQQ   $%77==? KD%%dC0,;DJ<H  ,H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                  ry|j                  t        d      |j                  t        d       |||      }|j                         \  }	}
|	D ](  }t        ||      |j                  |   j                  <   * f	 	 	 	 	 	 	 dfd}|j                  t        d	      |j                  j!                  || ||      }t#        j$                   ||j'                         |             t#        j$                   ||j)                         |             t#        j$                   ||j+                         |             |cd d d        S # 1 sw Y   yx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  r  r  c                    | y 
j                   j                  |       }	j                  |      }||S 
j                   j                  |       } d      }
j	                  |||| ||||            S )Nr  )rj  r   rn  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%IN%1--#'>>#A#A)#LL #22E"FK++$! #4(+y( r5   z,t.view_func must not be None for view replay)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   rL   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    *+ I3Sv40 779$?
 () #:: OOE7NK  I I" A
 < (*$22ww,-TUU vv~,-STT (=e'(F  &88:HE1 % WAHQUAV,QWWT]-=-=>W "GO(+( 	( E( "( (X ;;&()WXX **t.0A VFKKM59:VFMMOW=>VF$9$9$;^LMSI I I Is)   ,G-"G 	G-1E%G- G*	%G--G6c                     t         j                  j                  j                   j                   j
                   j                   j                  t         j                  d      S )Nr{  )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>l  sH    		 K KLLKKFF"#''#(#3#3#) !L ! r5   .t.data must not be None when copy_data is TruezExpected r to be a FakeTensorz)the callback you passed in doesn't detachTz5t.sparse_dim must not be None for sparse block layoutz4t.dense_dim must not be None for sparse block layoutz1t.values must not be None for sparse block layout   r   z9t.crow_indices must not be None for sparse csr/bsr layoutz9t.ccol_indices must not be None for sparse csc/bsc layoutc            
         t         j                  j                  j                  dj                  j
                   j                  j                  d      S )Nr   r{  )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>  sH    		 R RKKGG%'#$88"#''#) !S 	! r5   )unimplementedz;attempted to apply meta conversion to strided nested tensorzThis is not supported.)gb_typecontextexplanationhintsc                 J    t        j                   j                  d      S rz  r  r  r  r2   s   r3   r   z+MetaConverter.meta_tensor.<locals>.<lambda>  s     3 3!7!''&! r5   z.t.size must not be None when copy_data is Truez0t.stride must not be None when copy_data is Truer|  z;attempted to apply meta conversion to view functorch tensorc                     j                   rɉ j                  t        d       j                  t        d       j                  t        d       
 j                        } j                  } j                  }t
        j                  j                  j                   j                        5  j                  t        |||            }d d d        |S  j                  r@ j                  t        d       j                  t        d      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(                  rt j                  t        d       j*                  t        d      j-                   j                        }j                  t/        | j*                              }|S  j0                  t        d	       j2                   j0                    fd
      }j4                  rt        j6                         5  t9               5  t        j:                   j2                   j0                   j<                   j>                        |_          jB                  t        d      tE        |j@                   jB                         d d d        d d d        |S |S # 1 sw Y   S xY w# 1 sw Y   fxY w# 1 sw Y   xY w# 1 sw Y   <xY w# 1 sw Y   |S xY w)Nz.t.unwrapped must not be None for batchedtensorz*t.level must not be None for batchedtensorz)t.bdim must not be None for batchedtensorz3t.unwrapped must not be None for gradtrackingtensorz/t.level must not be None for gradtrackingtensorT2t.unwrapped must not be None for functional tensorz6t.current_level must not be None for functional tensorr  c                 J    t        j                   j                  d      S rz  r  r  s   r3   r   zDMetaConverter.meta_tensor.<locals>._to_fake_tensor.<locals>.<lambda>r  s"    (;(;$)$+*+''+1	)" r5   r|  r  )#r   r   rL   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   r[  )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  s    -- {{2&4$T'" !"  !ww&4$P'" !"  !vv~&4$O'" !" "1!=B"#''C#$66D
 "'!1!1!=!=!c!c ! 1 1" " %)$?$?$22tS$A%""n  !c 44 {{2&4$Y'" !"  !ww&4$U'" !" 160J0J-!2!4 B%4Q[[%AB"#''C"&@@$&%*%5%5%A%A%g%g$%$5$5&" !& )-(C(C(-(;(;(J(J2s(S)&A!& '(iiG <?26p  !o "#$($8$8$;l  !k __ {{2&4$X'" !"  !6&4$\'" !" "&!1!1 ! ) (
 !' 0
"B !% ; ; 7AOO L!AB  !9  !xx/&45P&Q Q$%FFE&'hhG (!"!A  $~~%*]]_ !Fkm !F494G4G()()./gg/0xx	5&AM ()vv~.<,\/* )* %/q}}aff$E!F !F  !qo"n  !OB B!& !&h!F !F !F  !sI   3N 6N-:N:OA>OO N*-N7:OO	OOr   r  z0Expected non-functorch wrapped functional tensorr  )r  z'Expected StatelessSymbolicContext, got rn   )compute_unbacked_bindingsc                `    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   Fz.t.requires_grad must be True for non-leaf viewz0t.creation_meta must not be None for view tensorr  c                 J    t        j                   j                  d      S rz  r  r  s   r3   r   z+MetaConverter.meta_tensor.<locals>.<lambda>G  s"    E$7$7 % '&'gg'-	% r5   zt.storage must not be Nonez5r.real_tensor must not be None when copy_data is True)r  )in_kernel_invocation_managerr   r  rI   rX   )guard_or_falsez,Expected r to be a FakeTensor for nested int)nt_tensor_id)r2   r7   rZ  r  r  r  rs   z,tuple[tuple[int, ...], tuple[int, ...], int])r  r7   r  r  r  r  rs   rr   )r2   r7   r  r;  r  r;  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*  r:  r+  r:  rs   r  )~r  r  r   r  r  lenre  rD   r   _dispatch_tls_local_exclude_sethasDispatchKeyPythonrL   ri  
contextlibnullcontextsuppress_guardsro  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  rD  r   r   ri   r  r[  r   rk   r   r   r   r  _to_functional_tensor_mirror_autograd_meta_tor   rm   r  r  r1   r  _dynamor  r  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   rd  rj   rw  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_memors  rq  ),r   r2   r  	callback_r  r  r  msgr  r  r>   r   	batch_dimr  _storage_offsetr   base_symbolic_contextr  rm   r%  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_tensor|  s    <E;L;Lahh<
 >; $-c$2B2B.C-DEF
R 	 8833599%((:N:N:U:UV %%4 -7,B,B &66N !5	<"5	<%5	<5	< :5	<x !	(	+		 	6 !5;t	"t	't	 *t		t	 3t	 t	t5	&"5	&(5	& P5	& 4	5	&
 C5	&r P	P	"P	P	 P	 P	d "*)+&%%ann5 w	/;;iiG
 !	A ~~66>"0 P#  #]]_ @km @#21#5&45T&U U,7,?AM	@ @
 (?,G  MM$q~~"67*.w
 !77	B"..0 @MM$q~~*>?@ @0:iiGxxE$4$4e6F6F#GG<</"0 W#  ;;."0 V#  88+"0 S#  %&FFQ\\$9AKK$G	$%HHNN9q=9q=$Q	$&	xxE$4$4e6F6F#GG>>1"0 [#  '(nn&:&:>>1"0 [#  '(nn&:&: 	A ~~66>"0 P#  #]]_ @km @#21#5&45T&U U,7,?AM	@ @
 (?,G  *.w 003[[)H)H @ " ] #A$< 	 [[iiG
 9FC	' !A
 ~~"]]_ >km > vv~&4$T'" !"  !xx/&4$V'" !" $31#5&45T&U U,1,?,? !-AM  !vv~&4$T'" !" 'q}}aff='> >( (?,G  *.w 003++yyC%$a$'F(@"$	o! o!b (*A__o)M{{*,P  --,N  !% 0 0! (!I 3333I>A 2213G3GKYY vv~,-VWW,0) %5%A  **:<TU"0"I$O_J`Ia b#  ,==I4D4V4V1++! ,,77H-D .i>'2@K #((("Q"Q,,<<#K HHDD,,<<eK::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!@ !@ ()*8(X+& %& &+]]_ !&6N6P !&*.*E*E(,		$**(=+&C!& !& 56OO 1%*%6%6%8 !?(6sA(>A!?
 ??2"0 R#  **==aQHH!HH00@@+ %&HHAM  iiG //13J3J2222-gw	/ w	/r 9FDTU	&
 661%g %  >>!& B+- B#$66>*8(X+& %& $%88#3*8(Z+& %& (7q'9*8(G+& %& 160C0C$%FFAHHAGGAHH1" !+1==!&& A#B B& (?,G  *+//& !% 4 4Q 7A		Ay,-IJJtt4#4#44HHJ'1 ! 0 0 2n D --a1B1B1DE>>#21#5&45T&U U }}4&4$['" !" . ! 1 1 3Q]]5R5R5T #//H/E, '224 '
 (;1'='3-I,-WN"]]_ &n.> &!/ L !sNE7 KL#~~%*]]_ !&km !&+:1+=.<,K/* )* ()}}'<.<,c/* )* ()xx'7.<,^/* )* %&MM$6$6(9#(>()(8(8()()	%&!& !&	& &0 66%?
 "--! "662(AF ""1aii0!!!QXX.ow	/t ''QAGG7Q,Q  y!QdiX Myy$		!8K)L!!#++A.~~" ||'&q)()WXX$%KK$J$J!" %K %!
   A&,,Q//C@ @ @ @.@ @j@ @ @ @R> > > >d< <!@ !@!& !& !& !&
!? !? HH!HH00@@+NB B B BJL L!& !& !& !&	& & & &_w	/ w	/s~  4AAI?AE1AEAEBAI?,%AEF0AI?AE51AE(=AE5CAI?!AF,CAF.AF6J"AI?C(AG
AFAAG
AF)&4AGAG%+AF6AG-AG
AGAAG"BAI?AAI?AH1 B+AH$AH1FAI?'AI2/AI%2AH>	(AI%/AI	:B
AIAI	AI%AI2BAI?EAEEAEEAE	EAI?EAE%	E AI?E(AE2E-AE5E5AE?	E:AI?FAFFAFFAF	FAI?FAF&	F!AGF)AF3	F.AGF6AG F;AGGAG	GAGGAG	GAGGAAH!H!AI?H$AH.H)AH1H1AH;	H6AI?H>AIIAI%IAIIAI	IAI"IAI%I%AI/I*AI2I2AI<	I7AI?I?AJ	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t#        d      t%        d fd       t'        j(                         5 }|j+                  t        j,                  j.                  j1                                t3               }	|	7|j+                  t        j4                  j6                  j9                                 j;                  |||      }
d d d        t        |      t        j<                  j>                  u rd	
_         tC        |d
d      r$d	
_"        tG        |d      r|jH                  |
_$        
S # 1 sw Y   hxY w)Nr   r   Fr   z*source must not be None when trace is Truedescribe_sourcec                 `     j                   j                  j                  j                  dS )N)r  r   r  )rj  r   rO  )r   r  t_descs   r3   r   z(MetaConverter.__call__.<locals>.<lambda>=  s%    $(NN$5$5 ))$kk% r5   r   T
_is_buffer
persistent)%r  r1   rD   ru   r   r   is_quantizedrl   rn   r`   rg  rJ  rf  	overridesis_tensor_likerj  rw   rL   r#   r8  	ExitStackenter_context	_dispatchpythonsuspend_functionalizationr!   r   r   r   r  r   r   rO  rT   r_  r   r`  )r   r2   r  r  r  r  r   rR  
exit_stackstr   r^  s   `   `      @r3   r.  zMetaConverter.__call__  s    //I I a& '  !''"5!'':K:K		Q	%%A__++A.IINI!! H>E ///?~$%QRR! !!# 	z$$U__%;%;%U%U%WX')B~(($$00TTV    A	  7ehh((( AK 1lE*ALq,' || =	 	s   	BI  I	r  )rs   r  )r2   r7   rs   r?  r2  )r2   r7   rH  r9   rs   rt   )r   r   rs   r  )r   r   rH  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]rR  r1  r  Optional[Source]r  Optional[SymbolicContext]rs   r9   )r2   rr   r  rk  r  z'Optional[_MetaTensorCallback[_TensorT]]r  rl  r  rm  r   r  rs   r9   )r	  r
  r  r   rl  ro  rq  rs  ru  rw  r  classmethodr  r  r  r  r.  r   r5   r3   r`  r`    s\   ,1 B*/0#1$ C 
	2 ( (  6:/%/ 3/ 
	/ / * *@0@0 &@0 1	@0
 !@0 4@0 
@0J$ )-g
 =A#'6: gg &g
 :g !g 4g g 
gr5   r`  )r2   rL  rs   zTypeIs[FakeTensor])r2   (Union[MetaTensorDesc[Any], 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   ro  rp   rr   rY   r  rZ   r  rs   rt   )r2   rL  rs   zTypeGuard[torch.Tensor])rd   r<  rs   r  )r   ztype[_T]r   rL  rs   r8   )rm   r  rs   r  )rm   r  r   r  rs   rt   )rY  rr   rZ  r?  rs   rt   )rZ  rr   rs   r?  )m
__future__r   r8  rM  r  	threadingr  rb  abcr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   typing_extensionsr   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(   r)   torch._guardsr*   r0   r+   r,   r  r-   r.   r4   r   DimListru   r6   r8   r9   r;   rA   rJ   rM   rQ   localrU   rS   rW   rx   r{   r   rh   r   r   r   r   r  r   r   r   r   rv   r   r   r  r  r+  r3  r6  r   r[  r^  r`  torch._prims_common_prims_commonr'  r   r5   r3   <module>r     s   "        = !   B A  +    < + / F 0 30$H
 P% ~'<ellKT]:U\\2~U\\TJ,
 ioo #  + +  ;/;0; 	;
 ; ; 
;~HQ
7%
%.B%	% -~s+ ~s+ O T Tn $
 
 
 $8wx  8 8$ $
(<0 
 
$ $Ihx('(*; I I6(GL$9 %	 %8W\-B  $UWX& U UHIGH% IX* $r5   