
    /j	                   j   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@ dfdZAeBZC eddejD                  ZE ed          ZF edejD                  ZG edejD        d           ZHdgd#ZIdhd%ZJdid&ZKdjd*ZL ejM                    ZNd+eN_O        edkd-            ZPd+d+d.dld6ZQdmd8ZRdnd;ZSdmd<ZTdmd=ZUdodAZVdpdDZWdqdFZX edGeY          ZZ edHeY          Z[ edIeY          Z\ e\d           a] G dJ dK          Z^ edL           G dM dN                      Z_ edL           G dO dPeeG                               Z` edL           G dQ dRe`dS                               Za edL           G dT dUe`eG         eeG                               Zb G dV dWeeeH                   Zc G dX dYed+Z          Zd G d[ d\eeeH                   Ze edL           G d] d^eeG                               ZfdrdbZgdsdcZh G dd deeeG                   Zid dljmkZl dS )t    )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SymbolicContexttobjectreturnTypeIs[FakeTensor]c                .    ddl m} t          | |          S )Nr   )r+   )torch._subclasses.fake_tensorr+   
isinstance)r/   r+   s     a/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/_subclasses/meta_utils.py_is_fake_tensorr7   =   s$    888888a$$$    _TensorLikeTMetaTensorDesc[Any]_T_TensorT)bound_TensorT_covT)r=   	covariant(Union[MetaTensorDesc[Any], torch.Tensor]boolc                4    	 | j         S # t          $ r Y dS w xY w)NF)is_leafRuntimeErrorr/   s    r6   safe_is_leafrF   J   s1    y   uus   	 
Optional[_TensorLikeT]c                    t           j                            t           j        j        j                  5  | j        cd d d            S # 1 swxY w Y   d S N)torch_logginghide_warnings	_internalsafe_grad_filtergradrE   s    r6   	safe_gradrP   R   s    		%	%en&>&O	P	P  v                 s   AAAc                F    t          |           }|t          d          |S )Nz3Expected tensor to have a gradient but grad is None)rP   AssertionError)r/   rO   s     r6   _expect_safe_gradrS   X   s&    Q<<D|RSSSKr8   abNonec                :    | |k    rt          |  d|           d S )Nz != )rR   )rT   rU   s     r6   	assert_eqrX   _   s*    Avv]]q]]+++ vr8   FGenerator[None, None, None]c               #     K   t          t          dd          } dt          _        	 d V  | t          _        d S # | t          _        w xY w)Ndisable_inference_modeFT)getattrtlsr[   )priors    r6   $disable_inference_mode_for_fake_propr_   k   sP      C1599E!%C+%*"""U"****s	   8 Askip_symbolic	skip_leafrX    Callable[[object, object], None]m1m2torch.Tensorra   rb   c                    t          |t          j                  r!t                                          |          n|}d fd ||          S )	Nrd   r:   re   rf   r1   rV   c                    | j         |j                    s | j        |j                    | j        |j                   s | j        |j                    | j        |j                   t          t          dd          s$ | j        |                                           n | j        d            | j        |                                            | j	        |	                                            | j
        d ut          |          d u           | j
         | j
        t          |                     | j        r | j        |j                    | j        |                                            | j        |                                            | j        |                                           d S t#          |           r^ | j        |j                    | j        |                                            | j        |                                           d S sF | j        |                                            | j        |                                            | j        |                                           | j        rD| j        t/          d          |j        t/          d           | j        |j                   d S d S )Nr[   Fz*m1.base must not be None for a view tensorz+m2._base must not be None for a view tensor)dtypeshaperequires_gradrC   	is_sparser\   r]   is_inferenceis_conjis_negrO   rP   rS   layout	dense_dim
sparse_dimis_coalescedis_sparse_compressedstridestorage_offsetis_view_is_viewbaserR   _base)rd   re   rX   gorb   ra   s     r6   r{   zassert_metadata_eq.<locals>.go   s   	"(BH%%% 	*Ibh)))	""B$4555 	.Ibj"*--- 		",---s4e<< 	.Ibor'8'89999Ibou---	"*bjjll+++	")RYY[[)))	"'%y}}D'@AAA7Brw)"--... < 	&Ibi+++IblBLLNN333IbmR]]__555Ibor'8'899999!"%% 	&Ibi+++IblBLLNN333IbmR]]__55555  B	")RYY[[111	"+R->->-@-@AAAIbj"++--000z &7?()UVVV8#()VWWW27BH%%%%%& &r8   )rd   r:   re   rf   r1   rV   )r5   rJ   TensorMetaTensorDescriberdescribe_tensor)rX   rd   re   ra   rb   r{   s   `  ``@r6   assert_metadata_eqr   u   s~     b%,''	--b111 (& (& (& (& (& (& (& (& (&Z 2b"::r8   TypeGuard[torch.Tensor]c                \    t          | t          j                  o| j        t          j        u S rI   )r5   rJ   r|   rp   
sparse_coorE   s    r6   is_sparse_coor      s#    a&&G18u7G+GGr8   rp   torch.layoutc                b    | t           j        t           j        t           j        t           j        hv S rI   )rJ   
sparse_csr
sparse_csc
sparse_bsr
sparse_bsc)rp   s    r6   is_sparse_compressed_layoutr      s,    	  r8   c                ^    t          | t          j                  ot          | j                  S rI   )r5   rJ   r|   r   rp   rE   s    r6   rt   rt      s$    a&&P+Fqx+P+PPr8   c                >    t          |           pt          |           S rI   )r   rt   rE   s    r6   is_sparse_anyr      s    63A666r8   tytype[_T]objc                j    t          ||           s"t          d|  dt          |                     |S )Nz	expected z	 but got )r5   rR   type)r   r   s     r6   _checked_castr      s?    c2 CAAAd3iiAABBBJr8   ry   torch.UntypedStoragec                    | j         S rI   real_storage)ry   s    r6   _get_real_storager      s    r8   r   c                    || _         d S rI   r   )ry   r   s     r6   _set_real_storager      s     %Dr8   MetaStorageIdMetaTensorId_DescriberIdc                  N    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dS ) r}   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_datar   rA   r1   rV   c               B   t           | _        t          t           dz             a t          d          | _        t          d          | _        t                      | _        t                      | _	        || _
        t                      | _        t                      | _        d S )N   r   )DESCRIBER_NEXT_IDidr   r   next_tensor_idr   next_storage_idr&   lookup_tensorlookup_storager   settraced_tensorstraced_storagesselfr   s     r6   __init__zMetaTensorDescriber.__init__   s|    #():Q)>??,8OO.;A.>.>022133"(+),r8   r/   rf   r   c                    || j         vr+| j        | j         |<   t          | j        dz             | _        | j         |         S Nr   )r   r   r   r   r/   s     r6   get_tensor_idz!MetaTensorDescriber.get_tensor_id   sF    D&&&$($7Dq!".t/BQ/F"G"GD!!$$r8   sr   r   c                    || j         vr+| j        | j         |<   t          | j        dz             | _        | j         |         S r   )r   r   r   r   r   s     r6   get_storage_idz"MetaTensorDescriber.get_storage_id  sF    D'''%)%9D"#01E1I#J#JD "1%%r8   tracer   MetaStorageDescc                   t                               |          |                                 j        r|nd           |rBj         j        vr4t          d fd            j                            j                   S )N)r   sizedatadescribe_storagec                 8                          j                  S rI   as_jsonr   rr   s   r6   <lambda>z6MetaTensorDescriber.describe_storage.<locals>.<lambda>      AIIdg$6$6 r8   metadata_fn)r   r   r   r   r   r   r#   add)r   r   r   r   s   `  @r6   r   z$MetaTensorDescriber.describe_storage	  s     ""1%% n.$
 
 
  	+QT!555"66666     $$QT***r8   Trecurser   r   r:   c               J     t                    }                                }j        }j        }j        }t                    }	t                    }
j        }t                    }t                    }t                    }t          j                  }d }d}|sVt          |          sG|r|	rC|sA|
s?|s=                                                               }                                }d }|s't          |          s|r|	r                                }d }d }d }|s|r%                     t'                              }n|rىj        j        dvrˉ                                rt-          d          |
s@t          j                                        t          j                            }}nft          j                                        }                     t7          |                    }t          j        j                                        }d }|
r<t          j        j                                        5 }	 d d d            n# 1 swxY w Y   d }d }d }|	rUtA          d          stC          d          "                                \  }} fd|D             }t+                    }ddl#m$} tJ          &                              }tO          tP          d	d
          }tS          dDi d *                              d|d|rd
n+                                d|dj,        d-                                dj.        d|d|d|
d|d|d|d|d/                                d0                                dtc          t          j2        j3                  d|	d|d|v r|         j4        5                                nd d|d |d!j        d"6                                d#|d$|d%to          tO          d&tq                                          d'tO          d(i           d)j        sts                    r:                                nd d*j        sts                    r;                                nd d+j        r<                                nd d,|rIj        t          j=        t          j>        hv r*                     ?                                d
-          nd d.|rIj        t          j=        t          j>        hv r*                     @                                d
-          nd d/|rIj        t          jA        t          jB        hv r*                     C                                d
-          nd d0|rIj        t          jA        t          jB        hv r*                     D                                d
-          nd d1|r9ts                    r*                     E                                d
-          nd d2t                    x}                     |          nd d3                                r$t          j        jG        H                              nd d4|d5|s|rt                    nd d6|rt                    nd d7|r7                                r#jK                             jK                  nd d8t          jL        jM        N                              d9|d:|d;|d<|d=|d>|d?|d@ jO        rnd  rB jP         jQ        vr4t          dA  fdBC            jQ        S                     jP                    S )ENr   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__ methodc           	     \    i | ](}|                     t          |                     )S )r   )r~   r\   ).0attrr   r/   r   s     r6   
<dictcomp>z7MetaTensorDescriber.describe_tensor.<locals>.<dictcomp>z  sH        d**71d+;+;5*II  r8   )_tensor_symint_registryr[   Fr   storagerm   rC   rk   ndimri   rl   	is_mkldnnis_functorch_wrappedr   r   r   rw   rn   ro   is_parameterr%   	is_nested
nested_intis_functionalrp   devicer   ru   rv   dynamo_dynamic_indices_dynamo_dynamic_indicesdynamo_hint_overrides_dynamo_hint_overridesrr   rq   rs   crow_indicesr   col_indicesccol_indicesrow_indicesvaluesrO   creation_meta	unwrappedlevelbdimry   	fake_mode	view_funcattrsctxr   functorch_stackautograd_meta_fromcurrent_levelr   r~   c                 8                          j                  S rI   r   r   s   r6   r   z5MetaTensorDescriber.describe_tensor.<locals>.<lambda>  r   r8   r    )TrF   rx   rl   rp   r   r%   r   r   r   r   r   rJ   _is_functional_tensorr   r   untyped_storagerv   ru   r~   r   r   r   rD   _sync_from_functional_tensor_C$_functionalization_reapply_views_tlsr   
_functorchr   pyfunctorch#temporarily_clear_interpreter_stackhasattrrR   r   $torch.nested._internal.nested_tensorr   ViewFuncfrom_tensorr\   r]   MetaTensorDescr   rm   rk   dimri   rn   ro   r5   nn	Parameternoder   r   listr   rt   rr   rq   rs   r   r   r   r   r   r   r   r   r   rP   	_autograd_get_creation_metar    r   rz   _subclassesfake_tensormaybe_get_fake_moder   r   r   r#   r   )!r   r/   r   r   rC   rw   rl   rp   r   is_traceable_wrapper_subclass_vr   r   is_batchedtensor_vis_legacy_batchedtensor_vis_gradtrackingtensor_vr   r   rv   ru   r   r   r   reapply_viewsmaybe_functorch_stackr   r   type_v	raw_attrsr   r   is_inference_mode_disabledrO   r   s!   `` `                            @r6   r~   z#MetaTensorDescriber.describe_tensor  sD
    q//**,,K	K	*G*J*J':1==K	-a00$;A$>$>!"7":":3A66 	0*622	0 	0 #B	0 		0 $	0 )	0 ++A,=,=,?,?u+MMG--//N	 *622	  	  #B	  XXZZF
 	! 	D!8 	D,,]1-=-=U,KKII  	Dqx}OCCzz|| "l   ( DA 001!44E 1  	 &'"" % M M O O 00-a??u 1  	 !& 3 A A C C $ 	 ,PPRR&              
 * 
	1233 $T   1133NIs     %  E !WWFPPPPPP((++	 &-S2JE%R%R"!/ j"
 j"
 j"
!!!$$$j"
Gj"
 #=R!..BRBRj"
 G	j"

 //j"
 j"
 ''j"
  ij"
  ij"
  "6!5!j"
" 0/#j"
$ %>$=%j"
& #:"9'j"
( G)j"
* IIKKK+j"
, 88:::-j"
. $Aux'9:::/j"
0 +J*I1j"
2  i3j"
8 /// (*/::<<<;j"
> (-?j"
@ 6Aj"
B 88Cj"
D Ej"
F 6Gj"
J *>Kj"
L $(3Lcee(T(T#U#U#UMj"
N #*!-Er"J"J"JOj"
R #$+R1Ea1H1HRdSj"
V (){W6J16M6MWakkmmmSWWj"
X ./[B)))dYj"
d  xE,<e>N+OOO $$Q^^%5%5uE$RRRgj"
n  xE,<e>N+OOO $$Q]]__e5$QQQqj"
x  xE,<e>N+OOO $$Q^^%5%5uE$RRR{j"
B  xE,<e>N+OOO $$Q]]__e5$QQQEj"
L 3A66$$QXXZZe$LLLOj"
V &aLL(D5 $$T$777Yj"
^ =>JJLLR"55a888d_j"
b  icj"
h &)@"""kj"
n '9B"""doj"
t  zz||010C $$QWE$:::wj"
z '3GGJJJ{j"
|  i}j"
@ %Aj"
B Cj"
D Ej"
L 21Mj"
N  21Oj"
P (-Qj"
R n.$Sj"
V  	*QT!444!66666    ##AD)))s   I))I-0I-Nr   rA   r1   rV   )r/   rf   r1   r   )r   r   r1   r   )r   r   r   rA   r1   r   )r/   rf   r   rA   r   rA   r1   r:   )	__name__
__module____qualname____doc__r   r   r   r   r~   r   r8   r6   r}   r}      s          -2 / / / / / /% % % %& & & & 9>     & 37e] ] ] ] ] ] ] ]r8   r}   )frozenc                  6    e Zd ZU ded<   ded<   ded<   ddZdS )r   r   r   intr   Optional[torch.UntypedStorage]r   describer_idr   r1   dict[str, object]c                ~    | j         |t          | j        t                    r| j        nt	          | j                  dS )N)r   r  r   )r   r5   r   r  repr)r   r  s     r6   r   zMetaStorageDesc.as_json  s;    '(!+DIs!;!;PDIIdi
 
 	
r8   Nr  r   r1   r  )r  r  r  __annotations__r   r   r8   r6   r   r     sM         III )(((
 
 
 
 
 
r8   r   c                  D    e Zd Ze	 	 ddd
            Zedd            ZdS )r   Nr/   r<   new_basesymint_visitor_fnOptional[Callable[[int], int]]tensor_visitor_fn,Optional[Callable[[torch.Tensor], _TensorT]]r1   c                    d S rI   r   r   r/   r$  r%  r'  s        r6   applyzViewFunc.apply  s	     3r8   rf   ViewFunc[Any]c                d    t          |           rt                      S t          | j                  S rI   )r7   _FakeTensorViewFunc_CustomViewFunc_view_func_unsaferE   s    r6   r   zViewFunc.from_tensor  s/    1 	8&((("1#6777r8   NN)
r/   r<   r$  r<   r%  r&  r'  r(  r1   r<   )r/   rf   r1   r,  )r  r  r  r   r+  staticmethodr   r   r8   r6   r   r     s`        
 =AJN    ^ 8 8 8 \8 8 8r8   r   c                  ,    e Zd Ze	 	 ddd            ZdS )r.  Nr/   rf   r$  r%  r&  r'  .Optional[Callable[[torch.Tensor], FakeTensor]]r1   r+   c                Z    t           j        j        j                            ||||          S rI   )rJ   r  r	  r+   r0  r*  s        r6   r+  z_FakeTensorViewFunc.apply   s1      ,7II
 
 	
r8   r1  )
r/   rf   r$  rf   r%  r&  r'  r4  r1   r+   )r  r  r  r   r+  r   r8   r6   r.  r.    s@        
 =ALP
 
 
 
 X
 
 
r8   r.  r+   c                  8    e Zd ZU ded<   e	 	 ddd            ZdS )r/  zpCallable[[torch.Tensor, Optional[Callable[[int], int]], Optional[Callable[[torch.Tensor], _TensorT]]], _TensorT]funcNr/   rf   r$  r%  r&  r'  r(  r1   r<   c                0    |                      |||          S rI   )r7  r*  s        r6   r+  z_CustomViewFunc.apply<  s     yy#46GHHHr8   r1  )
r/   rf   r$  rf   r%  r&  r'  r(  r1   r<   )r  r  r  r"  r   r+  r   r8   r6   r/  r/  1  s_             
 =AJNI I I I XI I Ir8   r/  c                      e Zd Zd	dZdS )
_MetaTensorCallbackargCallable[[], torch.Tensor]r   Union[torch.device, str]r1   r>   c                  d S rI   r   )r   r;  r   s      r6   __call__z_MetaTensorCallback.__call__N  s    sr8   N)r;  r<  r   r=  r1   r>   r  r  r  r?  r   r8   r6   r:  r:  M  s(             r8   r:  c                      e Zd ZU ded<   dS )_MetaTensorCallbackKwargsr=  r   N)r  r  r  r"  r   r8   r6   rB  rB  S  s         $$$$$$r8   rB  )totalc                      e Zd Zd	dZdS )
_MetaTensorCallbackOptDevicer;  r<  kwargs!Unpack[_MetaTensorCallbackKwargs]r1   r>   c                   d S rI   r   )r   r;  rF  s      r6   r?  z%_MetaTensorCallbackOptDevice.__call__\  s	    
 sr8   N)r;  r<  rF  rG  r1   r>   r@  r   r8   r6   rE  rE  [  s(             r8   rE  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<   dVdTZ3e4dWdU            Z5dS )Xr   r   r   r  r   torch.dtyperi   ztorch.devicer   tuple[int, ...]r   z	list[int]r   zdict[int, int]r   r   rp   FrA   rm   rC   rk   rl   r   r   r   r   r   rw   r   NzOptional[int]r   r%   r   rn   ro   r   Optional[tuple[int, ...]]ru   r   rv   zOptional[MetaStorageDesc]r   rr   rq   zOptional[bool]rs   zOptional[MetaTensorDesc[Any]]r   r   r   r   r   r   r   ry   z(Optional[dict[str, MetaTensorDesc[Any]]]r   zOptional[CreationMeta]r   rO   >
   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   r  r   r1   r  c                     d	fd fdt          j                   D             }|                    d|i           |S )
Nkstrvr0   r1   c                x     dv rd S  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 fd|D             S t          |t          t           f          r|j        S t          |t                    rt          |          S  dk    r3t          |t                    rd |                                D             S |S )N)r   r   c                (    g | ]} |          S r   r   )r   v1jsonrP  s     r6   
<listcomp>z8MetaTensorDesc.as_json.<locals>.json.<locals>.<listcomp>  s#    000Q000r8   r   c                $    i | ]\  }}||j         S r   )r   )r   k1rU  s      r6   r   z8MetaTensorDesc.as_json.<locals>.json.<locals>.<dictcomp>  s     :::fb"BE:::r8   )r   rM  r   r5   rJ   r   ri   rp   SymInttupler  r   r   r   rQ  dictitems)rP  rR  rV  s   ` r6   rV  z$MetaTensorDesc.as_json.<locals>.json  s    222tN222Aww!elEKFGG Aww!U\** Aww!eT]++ 100000a0000!o~>?? t!\** 1vvG||
1d 3 3|::		::::Hr8   c           
         i | ]h}t          |j                  |j        u sJ|j        d k    rt          |j                  >|j         |j        t          |j                            iS r   )r\   namedefault)r   fieldrV  r   s     r6   r   z*MetaTensorDesc.as_json.<locals>.<dictcomp>  s~     

 

 

ej))U]::J":::#D%*55 ; JUZuz)B)BCC
 ;::r8   r  )rP  rQ  rR  r0   r1   r0   )dataclassesfieldsupdate)r   r  r   rV  s   `  @r6   r   zMetaTensorDesc.as_json  sx    	 	 	 	 	 	*

 

 

 

 

$+D11

 

 

 	
.,/000r8   c                    | j         S rI   )r   r   s    r6   rj   zMetaTensorDesc.shape  s
    yr8   r!  )r1   rK  )6r  r  r  r"  rJ   stridedrp   rm   rC   rk   rl   r   r   r   r   r   rw   r   r   r%   r   rn   ro   r   ru   rv   r   rr   rq   rs   r   r   r   r   r   r   r   ry   r   r   rO   rM  r   r   r   r   r   r   r   r   r   r   propertyrj   r   r8   r6   r   r   d  s        III %%%%)))) =F((((LGMII!&&&&&"""""$)))))"'''''GI !%J$$$$*/!////MGFL(,F,,,,N
 *.G---- $J$$$$#I#####'L''''26L666615K555526L666615K5555,0F0000/3I3333D*.D.... 
     -1M0000*.D....+ + +O     !C    D*.I....)-I----  E#'M''''48O8888155555
 $(D''''" " " "H    X  r8   r   dstsrcrN  c                j    t          |          t          j        urd S |                     |           d S rI   )r   rJ   r|   copy_)rj  rk  s     r6   
_safe_copyrn  	  s-    Cyy$$IIcNNNNNr8   c                d    t          |           t          j        urd S |                                 S rI   )r   rJ   r|   clone)rk  s    r6   _safe_clonerq    s(    Cyy$$t99;;r8   c                      e Zd Zddd0dZd1dZd2dZd3dZd4dZd5dZd6dZ	d7dZ
ed8d            Ze	 d9d:d             Zed;d!            Zd<d*Z	 d9dddd+d,d=d/ZdS )>MetaConverterFr   r   rA   r1   rV   c                   t          j                    | _        t          j                    | _        d| _        d| _        d | _        d| _        || _        t          |          | _
        d S )Nr   r   )weakrefWeakValueDictionarystorage_memotensor_memohitmissdel_hookarg_cntr   r}   	describerr   s     r6   r   zMetaConverter.__init__  sk     ')) 	 ')) 	 	
 #,yAAAr8   c                .    | j         dk    o
| j        dk    S )Nr   )ry  rz  rg  s    r6   
successfulzMetaConverter.successful2  s    x!|.	Q.r8   r/   r:   rN  c                B    | j                             |j        d           S rI   )rx  getr   r   s     r6   get_tensor_memozMetaConverter.get_tensor_memo5  s    ##AD$///r8   r<   c                z    | j                             |j        d           }|t          d|j         d          |S )NzTensor memo for id z is None)rx  r  r   rR   )r   r/   r   s      r6   _checked_get_tensor_memoz&MetaConverter._checked_get_tensor_memo8  sB      t,,9 !Eqt!E!E!EFFFr8   rR  c                $    || j         |j        <   d S rI   )rx  r   )r   r/   rR  s      r6   set_tensor_memozMetaConverter.set_tensor_memo>  s    !"r8   r   r   r  c                B    | j                             |j        d           S rI   )rw  r  r   r   s     r6   get_storage_memozMetaConverter.get_storage_memoA  s     $$QT4000r8   r   c                $    || j         |j        <   d S rI   )rw  r   )r   r   rR  s      r6   set_storage_memozMetaConverter.set_storage_memoD  s    "#!$r8   callback0Callable[[Callable[[], torch.Tensor]], _TensorT]c                   |                                x} |fd                                          }| j        rt          j                    5  t                      5  j        t          d          t          |j        	                                           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | 
                    |           |S |S )Nc                 P    t          j         j        t           j        d          S Nmetari   r   )rJ   emptyr   uint8)r   s   r6   r   z,MetaConverter.meta_storage.<locals>.<lambda>P  s    AF%+fMMM r8   z.s.data must not be None when copy_data is True)r  r   r   rJ   no_gradr$   r   rR   r   rp  r  )r   r   r  memor_ss    `   r6   meta_storagezMetaConverter.meta_storageG  sp    ))!,,,D5(MMMM o  ~ ; ]__ ; ;kmm ; ;v~,L   &c16<<>>:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; !!!S)))JKs6   C">B, C,B0	0C3B0	4CC
Crf   c                6    t          j        t          |          S rI   )typingcastr<   )clsr/   s     r6   _checked_cast_tensor_tz$MetaConverter._checked_cast_tensor_t`  s     {8Q'''r8   Nr<  r   "Optional[Union[torch.device, str]]c                <    |                       |                      S rI   )r  )r  r/   r   s      r6   _identity_callablez MetaConverter._identity_callablee  s     ))!!##...r8   c                    t           j        j                            dd          } ||          }t	          j        t          |          S )Nz9Internal error: Tried to backward() through example inputr   )rJ   r   
_functionsDelayedErrorr  r  r<   )r  r/   errfnerrs       r6   _backward_errorzMetaConverter._backward_errorm  sC    #00G
 
 eAhh{8S)))r8   	shape_envOptional[ShapeEnv]	callback__MetaTensorCallback[_TensorT]sourceOptional[Source]symbolic_contextOptional[SymbolicContext]c                "   !"#$%&'()*+ t          j        |j                  %&ddlm}  |dt           j                             d}t          j        	                                
                    t          j        j        j                  rt          |           xj        dz  c_        t          j        (j        (fdWfd+fdX+fd}fdY% fd&dZ#fd #fd[#%&( +fd"}	                               4d#!t          j        j                  5  j        rj        }
 %fd$          } j        rj        t          d%          t          j                    5  t5                      5  t7          |          st          d&          t9          j                  |_        d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t=          |          st          d'          |                    tA          j!                             j"        rd(|_"        j"        r{|
sy #                    |$                                          }t          j%                    5  |                    tA          j!                             d d d            n# 1 swxY w Y   ntM          j'                  rj        }
j'        t          j(        t          j)        hv rtj*        t          d)          j+        t          d*          j,        t          d+          j-        j*        z
  j+        z
  }j,        j.        |dz   |d,z            $nd-$j'        t          j/        t          j(        hv r#j0        t          d.          j0        j1        'n"j2        t          d/          j2        j1        ' %$'fd0          } j        rj        t          d%          t          j                    5  t5                      5  t7          |          st          d&          t9          j                  |_        d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t=          |          st          d'          j"        rd(|_"        j"        r|
s 3                    |          }
nj4        r+j5        s$dd1l6m7}  |d2tq                    d3g 4           
nj9        rvj        }
 +          \  )*} %)*fd5          } j        rt          j                    5  t5                      5  j:        t          d6          j;        t          d7          t7          |          st          d&          t          j<        j:        j;        j1        j        8          |_        j        t          d%          t{          |j        j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t=          |          st          d'          j"        rd(|_"        j"        r|
s 3                    |          }	n8j>        rBj?        r"dd1l6m7}  |d9tq                    d3g 4           d\!"% fd:" "          }nj@        rj        jA        d;vrjB        t          d<          j>        rt          d=           C                    jB        %          } #                    t          jD        |                    }t          jE        jF        |           nMj?        rjG        t          d>          d }rECdd?lHmI} t          |          st          d@t                               jK        jK        } C                    jG        %t          jL        jM        N                    dA          |          }ddBlHmO}  ||           d]dG}t          j        P                    t          j        j        jQ                  }t          j        R                    t          j        j        jQ        dH           	 |j1        j1        k    rn ||j1        j1                  r( #                    t          jS        |                    }nk |j1        |j1                  r( #                    t          jT        |                    }n- #                    |U                    j1                            }j        rEt          j                    5   |	|          }d d d            n# 1 swxY w Y   j"        |_"        n$jG        j"        j"        k    r8t          j%                    5   |	|          }d d d            n# 1 swxY w Y   n׉j"        st          dI          t          j                    5  t                      5   #                    |U                    |j.                            }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   j"        |_"        t          j%                    5   |	|          }d d d            n# 1 swxY w Y   jW        t          dJ          t          j        jX        Y                    |jW                   t          j        R                    t          j        j        jQ        |           n9# t          j        R                    t          j        j        jQ        |           w xY wj        |_Z        nAj        }
j[        sj\        sj>        sj]        rt          cd d d            S  +          \  )*}j5        r &)*K          }n %)*fdL          } j        rt          j                    5  t5                      5  j:        t          d6          j;        t          d7          t7          |          st          d&          t          j<        j:        j;        j1        j        8          |_        t{          |j        j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t=          |          st          d'          j"        r#j"        |_"        |
s 3                    |          }j_        }|t          dM          |j`         ja        vr|j4        s0|;                                *k    r|b                                |k    r c                    ||d                                            j        rmt7          |          st          d&          |j        t          dN          t          |d                                |j        d                                           n f                    |%O          }t          j                    }ddPlgmh}mi}  ||          }| ||          }t          j                    5   (            5  |5  |j                    ||)*           d d d            n# 1 swxY w Y    j        rt          j                    5  t5                      5  t7          |          st          d&          |j        t          dN          j;        t          d7          |j        j                    t          |          jb        j:        j;                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   jl        3ddQlmN}  C                    jl        % |dR                    |_l        t          j        m                    |jn                   t          j        o                    |jp                   d d d            n# 1 swxY w Y   j\        o
jq        !k    }t          t          |d(|S           ddTlHmt}  j_        @ | j_        j:        dk              r'|d                                u                    d           jv        rd(|_w        jx        Ct7          |          st          dU          |jy        z                    jx        V          |_{         |                    |            }                              S )^N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   r/   r:   rk  torch._guards.Sourcer  ?Optional[torch.fx.experimental.symbolic_shapes.SymbolicContext]r1   ,tuple[tuple[int, ...], tuple[int, ...], int]c           	         ddl m  j        t          d          	) j        }t          fd j        D                       p/t          fd j        D                       p  j                  }||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                  }	                    ||| fdt           j                  D             || j        	          S  j         j         j        fS )
Nr   )is_symbolict.stride must not be Nonec              3  .   K   | ]} |          V  d S rI   r   )r   szr  s     r6   	<genexpr>zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s+      99BB999999r8   c              3  .   K   | ]} |          V  d S rI   r   )r   sdr  s     r6   r  zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  s+      >>r;;r??>>>>>>r8   c              3  B   K   | ]}                     |          V  d S rI   #_maybe_specialize_sym_int_with_hint)r   r  r  s     r6   r  zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  sE       # # "EEbII# # # # # #r8   c              3  B   K   | ]}                     |          V  d S rI   r  )r   r  r  s     r6   r  zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  sE       % % "EEbII% % % % % %r8   c                "    g | ]}|j         v S r   r_  )r   dr/   s     r6   rW  zWMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<listcomp>  s!    NNN1a66NNNr8   )r  hint_overrides)%torch.fx.experimental.symbolic_shapesr  ru   rR   r   anyr   rv   r  r[  r  -_create_symbolic_sizes_strides_storage_offsetranger   r   )
r/   rk  r  r   has_symbolict_sizet_stridet_storage_offsetr  r  s
   `       @r6    sym_sizes_strides_storage_offsetzCMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset  s    JIIIIIx$%@AAA$K	9999!&99999 5>>>>QX>>>>>5"{1#344 
 (Y-@I-M-M FAHa.>??)( *(0FAHa.>?? # # # # #"#&# # #  F  % % % % %"#(% % %    H (1'T'T(( ($ %RR (NNNNafNNN)9'('> S    !*:;;r8   inner_t	inner_srcrf   c                `     | ||          \  }}}t          j        ||| j        d          S r  rJ   empty_stridedri   )r  r  r  inner_sizesinner_strides_inner_storage_offsetr  s         r6   empty_createz/MetaConverter.meta_tensor.<locals>.empty_create  sN     10)EUVV	%&m	   r8   
outer_sizerK  outer_strider  Optional[torch._guards.Source]r<   c           	     J   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
        |k    r"t          d| j         d| d|j
                   |                                |k    r/t          d| j         d| d|                                           |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 r/   r:   r  rL  r  r  r  r  &_MetaTensorCallbackOptDevice[_TensorT]r  r  r1   r<   c           	     Z   | j                             | |||          S i }| j                                         D ]\  }}d }	|ht          |          st	          dt          |                     |j        |         x}
	 )t          t          j	        j
        j        j        |
          }	 ||          }t          j        ||j                  } ||j        |j        |	||          }|||<   | j        t	          d          | j                            || j        ||          S )Nz&Expected SubclassSymbolicContext, got r  r  )r   meta_tensorr]  r5   rR   r   inner_contextsr   rJ   fxexperimentalsymbolic_shapesr.   	functoolspartialr   r   ru   __tensor_unflatten__r   )r/   r  r  r  r  r  inner_tensorsr   meta_tensor_desccurrent_contextcurrent_context_current_sourceinner_callbacknew_empty_tensorr  r  _empty_create_subclassr   r  s                 r6   r  zXMetaConverter.meta_tensor.<locals>.empty_create_subclass.<locals>._empty_create_subclass(  s    7?++! (   !#./gmmoo ; ;*D*&*O'3)*:<STT "0 aN^I_I_ a a# #  1A0OPT0UU,!%& /< % 5 E U 0/ /O
 &0Z%=%=N%.%6 )9)@& & &N (>'=((-(/'&&( ($ +;M$''6>()OPPPv22!15*l  r8   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 )r/   r:   r  rL  r  rL  r  r  r  r  r  r  r1   r<   )torch._dynamo.sourcer  r  r  r   rR   r   r   ru   r5   rj   )r/   r  r  r  r  subr  r  r  r  r   r  s         @@@r6   empty_create_subclassz8MetaConverter.meta_tensor.<locals>.empty_create_subclass  s    877777UUUUUUw$%LMMMv~$%KLLL (2'=16J+7+C<<L+J "95 5+ %]TJZE[E[]]  7 7 7 7 7 7 7 7 7 7r ~$%>???((:|-=x C yJ&&$I!& I I&0I I=@YI I   zz|||++$O!& O O'3O O@C

O O  
 Jr8   r  8Optional[torch.fx.experimental.symbolic_shapes.ShapeEnv]r  r  5torch.fx.experimental.symbolic_shapes.SymbolicContextc                <   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                                        D ]T\  }}t          |t                    st          dt!          |                      | |||          ||          |
|<   U ||	d g| j
        z  |
||          }n ||	d g| j
        z  |	          }|S )
Nr   r  )
DimDynamicStatelessSymbolicContextr  't.base must not be None for view tensorrz   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  rw   ry   rR   DYNAMICr   r%   r   r]  r5   rQ  r   )r/   r  r  r  r  r  r  r  r  t_dynamic_sizesr  r   innert_symbolic_contextall_dynamic_symbolic_contexts                 r6   r  z?MetaConverter.meta_tensor.<locals>.all_dynamic_symbolic_context{  s    877777            y 6>()RSSS$@$@FJJvw77H% %!
  *12QV;O. 7?()PQQQ   $%7==??  KD%%dC00 ,HDJJHH   ,H+Gzz&$77H, ,N4(( &=%<"1&*Vaf_#1"(&7& & &"" &>%="1&*Vaf_&7& & &" &%r8   ry   c           	     ,   t                      5   |          \  }}}|j        sgt          |           sX             5                      |                     |||                    cd d d            cd d d            S # 1 swxY w Y   ddlm ddlmm} dfd}i |j        ry|j	        t          d          |j        t          d	           |||
          }|                                \  }	}
|	D ]%}t          ||          |j	        |         j        <   &fdfd}|j        t          d          |j                            || ||          }t#          j         ||                                |                     t#          j         ||                                |                     t#          j         ||                                |                     |cd d d            S # 1 swxY w Y   d S )Nr   )EphemeralSource)r  sym_eqr   r  r1   c                    ddl m d uo/t                    ot          fdj        D                       }|s| S  d          }                    | |d           }                    || |          S )Nr   )r  c              3  *   K   | ]}|j         u V  d S rI   )STATIC)r   xr  s     r6   r  z_MetaConverter.meta_tensor.<locals>.view_from_base.<locals>.symint_visitor_fn.<locals>.<genexpr>  s?           ! !22           r8   r%  )positive)hintr  )r  r  r5   allr  create_symbolcreate_symintnode)	r   all_static_sizes
sym_sourcesymbolr  r  r  r  r  s	       @r6   r%  zLMetaConverter.meta_tensor.<locals>.view_from_base.<locals>.symint_visitor_fn  s    PPPPPP )4 &'79QRR        %5%C        % ( !9+<  "11D!E!EJ&44Q
T4RRF$66Qz 7   r8   r  r  r  r  	visited_trf   r  r  r  r  c                   | d S 
j                             |           }	                    |          }||S 
j                             |           } d          }
                    |||| ||||                    S )Nr'  )r}  r   r  r~   r  )r  r  r  
visited_idfake_visited_tvisited_desctemp_sourcer  r  real_to_fake_mappingr   s          r6   r'  zLMetaConverter.meta_tensor.<locals>.view_from_base.<locals>.tensor_visitor_fn%  s     !(#t "&!=!=i!H!HJ%9%=%=j%I%IN%1--#'>#A#A)#L#LL #2/2E"F"FK++$! #44(+y(   r8   z,t.view_func must not be None for view replay)r   r  r1   r  )r  rf   r  r  r  r  r1   rf   )r"   r%   r  
as_stridedr  r  r  r  r  r   rR   r   r   r\   r   r   r+  rJ   _checkr   ru   rv   )ry   r/   r  sizesstridesrv   r  r%  fake_tr   _r   r'  r  r  r  r  r  r  maybe_suppressr   r  r  r  s     `          @@@r6   view_from_basez1MetaConverter.meta_tensor.<locals>.view_from_base  s    *++ I I3S3Sv4 40 7
9$??
 ())  #:: OOE7NKK         I I I I I I I I       
 A@@@@@       
        < (*$2 Ww,-TUUU v~,-STTT (='<e'( ( (F  &88::HE1 % W WAHQUAVAV,QWT]-=>> "GO( ( ( ( ( ( ( ( ( (X ;&()WXXX **t.0A  VVFKKMM599:::VVFMMOOW==>>>VVF$9$9$;$;^LLMMMSI I I I I I I I I I I I I I I I I Is6   1H	*B/H	B	H	B	E,H		HHc                     t           j        j                             j         j         j         j        t           j        d          S )Nr  )ri   rp   r   )	rJ   opsaten_sparse_coo_tensor_with_dimsrr   rq   r   ri   r   rE   s   r6   r   z+MetaConverter.meta_tensor.<locals>.<lambda>l  s>    	 K KLKF"#'#(#3#) !L ! ! r8   .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                            dj        j         j        j        d          S )Nr   r  )rp   ri   r   )rJ   r$  r%  #_sparse_compressed_tensor_with_dimsrq   rj   rp   ri   )	blocksizeindex_dtyper/   s   r6   r   z+MetaConverter.meta_tensor.<locals>.<lambda>  sA    	 R RKG%'#$8"#'#) !S 	! 	! r8   )unimplementedz;attempted to apply meta conversion to strided nested tensorzThis is not supported.)gb_typecontextexplanationhintsc                 >    t          j         j        d          S r  r  r  r  r/   s   r6   r   z+MetaConverter.meta_tensor.<locals>.<lambda>  s$     3!7!'&! ! ! r8   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	                  5  
                    t          |||                    }d d d            n# 1 swxY w Y   n j        r> j        t          d           j        t          d          t
          j        j        } |            5   
 j                  }d d d            n# 1 swxY w Y    j        }|	k    r|}nyt
          j        j                             j	                  5  
                    t
          j        j                            ||                    }d d d            n# 1 swxY w Y    j        } j        rt%          |          r	d|_        n j        r|s                    |          }ng j        rs j        t          d           j        t          d                               j                  }
                    t/          | j                            }n j        t          d	           j         j          fd
          }j        rt          j                    5  t9                      5  t          j         j         j         j         j                  |_          j!        t          d          tE          |j          j!                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |S )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                 >    t          j         j        d          S r  r  r3  s   r6   r   zDMetaConverter.meta_tensor.<locals>._to_fake_tensor.<locals>.<lambda>r  s'    (;$)$+*+'+1	)" )" )" r8   r  r'  )#r   r   rR   r   r   rJ   r   r   %temporarily_restore_interpreter_stackr   r  r   r   r   _DisableFuncTorch_wrap_for_gradrC   rk   rF   r  r   r   r  r   ru   r   r   r  r$   r  ri   r   real_tensorr   rn  )r/   ftlvlr   r   disable_functorchrC   r  r  GRAD_TENSOR_SENTINEL_VALUE_to_fake_tensorr  r   r  r  r  s   `      @@r6   r?  z2MetaConverter.meta_tensor.<locals>._to_fake_tensor  s_    - iF {2&4$T'" '" !"  !w&4$P'" '" !"  !v~&4$O'" '" !" "1!=!=B"#'C#$6D
 "'!1!=!c!c ! 1" " " " %)$?$?$22tS$A$A%" %"" " " " " " " " " " " " " " " 4 OF {2&4$Y'" '" !"  !w&4$U'" '" !" 160J-!2!2!4!4 B B%4_Q[%A%AB B B B B B B B B B B B B B B"#'C"&@@@$&%*%5%A%g%g$%$5&" &" !& !& )-(C(C(-(;(J(J2s(S(S)& )&A!& !& !& !& !& !& !& !& !& !& !& !& !& !& !& '(iG  <<?? <26!" < <$($8$8$;$;_ 3F {2&4$X'" '" !"  !6&4$\'" '" !" "&!1!1 ! ) (
 !' 0
" 
"B !% ; ; 7AO L L! !AA
  !x/&45P&Q&Q Q$%FE&'hG (!" !" !" !" !" !"! !A  $~ F%*]__ !F !Fkmm !F !F494G()()./g/0x	5& 5& 5&AM ()v~.<,\/* /* )* %/q}af$E$E$E!F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F !F  !sm   %CC
C
"D??EE9GGG!M50A"MM5M"	"M5%M"	&M55M9<M9r   r5  z0Expected non-functorch wrapped functional tensorr  )r  z'Expected StatelessSymbolicContext, got rz   )compute_unbacked_bindingscomplex_dtyperJ  
real_dtyperA   c                Z    t          j        |           ot          j        |           |k    S rI   )utilsis_complex_dtypecorresponding_real_dtype)rA  rB  s     r6   	is_c_of_rz,MetaConverter.meta_tensor.<locals>.is_c_of_r  s2     "2=AA * % >} M M)!*r8   Fz.t.requires_grad must be True for non-leaf viewz0t.creation_meta must not be None for view tensorr  c                 >    t          j         j        d          S r  r  r3  s   r6   r   z+MetaConverter.meta_tensor.<locals>.<lambda>G  s'    E$7 % '&'g'-	% % % r8   zt.storage must not be Nonez5r.real_tensor must not be None when copy_data is True)r  )in_kernel_invocation_managerr
  r  rO   r`   )guard_or_falsez,Expected r to be a FakeTensor for nested int)nt_tensor_id)r/   r:   rk  r  r  r  r1   r  )r  r:   r  r  r  r  r1   rf   )r/   r:   r  rK  r  rK  r  r  r  r  r1   r<   )
r/   r:   r  r  r  r  r  r  r1   r  )ry   r<   r/   r:   r  r  r1   r<   r/   r:   r1   r<   )rA  rJ  rB  rJ  r1   rA   )~r  r  r   r  r  lenrx  rJ   r   _dispatch_tls_local_exclude_sethasDispatchKeyPythonrR   r|  
contextlibnullcontextsuppress_guardsr  inference_moderm   rl   rC   r   r   r  r$   r7   rq  r:  rF   _coalesced_rA   rs   rk   r  rp  enable_gradr   rp   r   r   rr   rq   r   r   rj   r   r   ri   r   r  r   r%   torch._dynamo.excr-  rQ  r   r   ru   r  rn  r   rw   r   r   r   r  _to_functional_tensor_mirror_autograd_meta_tor   ry   r  r  r5   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   rw  rv   r  r   r   r  r4   rI  r
  set_r   rO   	_set_conjrn   _set_negro   r   r   rX   rJ  resize_r   	_is_paramr   r   create_symbolic_nested_intnested_int_memor  r  ),r   r/   r  r  r  r  r  msgr  r!  rC   r   	batch_dimr-  _storage_offsetr   base_symbolic_contextr  ry   r@  rG  old_excludemidrv   r   r  maybe_fake_mgrrI  r
  mb_fake_moder  rb   rJ  r>  r?  r  r+  r  r  r,  r   r  r  r  s,   ``` ``                           @@@@@@@@@@@r6   r  zMetaConverter.meta_tensor|  s?    <E;Lah<
 <
 <
 >;;;;;; $^Ec$2B.C.CEE F
R 	 8335599%(:N:UVV 	& %%%4 -7,B &6N !5	< 5	< 5	< 5	< 5	< 5	< 5	<x !	 	 	 	 	 	 	6 !5;t	 t	 t	 t	 t	 t	 t	 t	 t	t5	& 5	& 5	& 5	& 5	& 5	&r P	 P	 P	 P	 P	 P	 P	 P	 P	 P	 P	 P	 P	 P	d ""*)+&%an55 w	/ w	/; d	&iG
 !   	 	A ~ 
@6>"0 P# #  #]__ @ @kmm @ @#21#5#5 V&45T&U&U U,7,?,?AM	@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 (?? ,G   MM$q~"6"6777 /*. @w @
 !77		BB".00 @ @MM$q~*>*>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @0:: u&iGxE$4e6F#GGG</"0 W# #  ;."0 V# #  8+"0 S# #  %&FQ\$9AK$G	$%HN9q=9q=3P$Q		$&	xE$4e6F#GGG>1"0 [# #  '(n&:>1"0 [# #  '(n&: 	 	 	 	 	 	 A ~ 
@6>"0 P# #  #]__ @ @kmm @ @#21#5#5 V&45T&U&U U,7,?,?AM	@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 (?? ,G    /*. 4w 4 0033[ u&)H u& @????? "M ] #A$< 	     [ h&iG
 98FCC	' !      A
 ~ >"]__ > >kmm > > v~&4$T'" '" !"  !x/&4$V'" '" !" $31#5#5 V&45T&U&U U,1,? !- - -AM  !v~&4$T'" '" !" 'q}af==='> > > > > > > > > > > > > > > > > > > > > > > > > > > > > >( (?? ,G    /*. 4w 4 0033+ }&y CCCCCC%$a$'FF(@"$	   o! o! o! o! o! o! o! o! o! o! o! o!b (**AA_ }&o)M)M{*,P   - ,N   !% 0 0! (! !I 333I>> A 213GKKKKY h& v~,-VWWW,0)  W%5%A       **:<TUU "0 b$O_J`J` b b# #  ,=I4D4V1++! ,77HH- D      .-i>>>    #(("Q"Q,<# #K HDD,<e  K:00 &Ytz17;; 
S#'#>#>u?QRV?W?W#X#XDD&Yqw
;; S#'#>#> % 5d ; ;$ $DD $(#>#>tyy?Q?Q#R#RD& 9 ? "' < <$2N4$;$;< < < < < < < < < < < < < < < /0oAOO v3qFF%*%6%8%8 !@ !@(6tQ(?(?A!@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ () !&*8(X+& +& %& &+]__ !& !&6N6P6P !& !&*.*E*E(,		$*(=(=+& +&C!& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& 56O 1%*%6%8%8 !? !?(6sA(>(>A!? !? !? !? !? !? !? !? !? !? !? !? !? !? !?
 ?2"0 R# #  *==aQQQHH!H0@+   HH!H0@+    %&HAMM  iG /.343J.2. 2.
  .gw	/ w	/ w	/ w	/ w	/ w	/ w	/ w	/r 98FDTUU	&
 6 B11%g   %H        > B!& B B+-- B B#$6>*8(X+& +& %& $%8#3*8(Z+& +& %& (7q'9'9 !&*8(G+& +& %& 160C$%FAHAGAH1" 1" 1" !+1=!& A A A#B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B& (?? ,G    8*+/& 8 !% 4 4Q 7 7A	Ay,-IJJJt4#444 5 HHJJ'11 ! 0 0 2 2n D D --a1B1B1D1DEEE> 	#21#5#5 V&45T&U&U U }4&4$['" '" !" . ! 1 1 3 3Q]5R5R5T5T   #//H/EE, '244 '       
 (;':1'='='3-I-I,-W-WN"]__ & &nn.>.> & &!/ L L !sNE7 K K KL L L L L L L L L L L L L L L#~ &%*]__ !& !&kmm !& !&+:1+=+= %*.<,K/* /* )* ()}'<.<,c/* /* )* ()x'7.<,^/* /* )* %&M$6$6(9#(>(>()(8()()	%& %& %&!& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !&	& & & & & & & & & & & & & & & & & & & & & & & & & & & & & &0 6%??????
 "--! "
6622( AF ""1ai000!!!QX...ow	/ w	/ w	/ w	/ w	/ w	/ w	/ w	/ w	/ w	/ w	/ w	/ w	/ w	/ w	/t 'QAG7Q,Q  y!QdiXXXX MLLLLLy$	!8K)L)L$!!##++A...~ #" |'&q)) Y()WXXX$%K$J$J!" %K % %!
   A&&&,,Q///s  0AAA>G(8GG(GG(GG(AA(G,	,AA/G,	0BAA	(J=1AA=K	AAK	EAAR	.8Q2&R	2Q66R	9Q6:R	=AA	R	AAR	C
AAX9*B,X"X9"X&&X9)X&*X9-AA9X=	=AA X=	IAA!Cm 5fm f	m f	9m g(m (g,	,m /g,	0-m i=,.i&i=&i**i=-i*.i=1m =j	m j	"m 'k 4m  k	m k	Am 5AA 6m66:AA=AAAsBr?3s?ssss
AAs	AAs	F#AA~=~&z4	(~&4z88~&;z8<~&~	(B}8,~	8}<<~	?}< ~	~&~~&~~&~=&~**~=-~*.~=1AA=	AA	BAAAAAAAAT)r  r  r  r   'Optional[_MetaTensorCallback[_TensorT]]r   c               \    | j         }n|}t          |t          j                  rf|j        j        dk    s.|j        s'|                                r*|j        #|j        j	        r xj
        dz  c_
        t          S  xj        dz  c_        n8t          j                            |          r xj
        dz  c_
        t          S |S d} j                            ||          |r't#          d          t%          d fd           t'          j                    5 }|                    t          j        j                                                   t3                      }	|	6|                    t          j        j                                                                        |||          }
d d d            n# 1 swxY w Y   t          |          t          j        j        u rd	|
_         tC          |d
d          r#d	|
_"        tG          |d          r|j$        |
_$        |
S )Nr   r   Fr   z*source must not be None when trace is Truedescribe_sourcec                 8     j         j        j        j        dS )N)r  r   r  )r}  r   r`  )r   r  t_descs   r6   r   z(MetaConverter.__call__.<locals>.<lambda>=  s!    $(N$5 )$k% % r8   r   T
_is_buffer
persistent)%r  r5   rJ   r|   r   r   is_quantizedrx   rz   rl   rz  rd  ry  	overridesis_tensor_liker}  r~   rR   r#   rR  	ExitStackenter_context	_dispatchpythonsuspend_functionalizationr!   r   r   r   r  r  r  ri  r\   ry  r   rz  )r   r/   r  r  r  r  r   r  
exit_stackstr   rx  s   `   `      @r6   r?  zMetaConverter.__call__  s    /II I a&& 	 ''  (  ( #$'"5!':K"5		Q		%%A_++A.. 	IINII!! H>E ///?? 
	~$%QRRR!         !## 	z$$U_%;%U%U%W%WXXX'))B~(($0TTVV       A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  77eh((( AK 1lE** 	,ALq,'' , | s   $BGG
G
r  )r1   rA   )r/   r:   r1   rN  rL  )r/   r:   rR  r<   r1   rV   )r   r   r1   r  )r   r   rR  r   r1   rV   )r   r   r  r  r1   r   )r/   rf   r1   r<   rI   )r/   r<  r   r  r1   r<   )r/   r<   r1   r<   )r/   r:   r  r  r  r  r  r  r  r  r1   r<   )r/   rf   r  r  r  rt  r  r  r  r  r   rA   r1   r<   )r  r  r  r   r  r  r  r  r  r  r  classmethodr  r  r  r  r?  r   r8   r6   rs  rs    s       ,1 B B B B B B*/ / / /0 0 0 0   # # # #1 1 1 1$ $ $ $   2 ( ( ( [(  6:/ / / / [/ * * * [*@0 @0 @0 @0J$ )-g
 =A#'6: g g g g g g g gr8   rs  )r/   r0   r1   r2   )r/   r@   r1   rA   )r/   r9   r1   rG   )r/   r9   r1   r9   )rT   r;   rU   r;   r1   rV   )r1   rY   )rX   rc   rd   r@   re   rf   ra   rA   rb   rA   r1   rV   )r/   r0   r1   r   )rp   r   r1   rA   )r   r   r   r0   r1   r;   )ry   r   r1   r   )ry   r   r   r   r1   rV   )rj  rf   rk  rN  r1   rV   )rk  rf   r1   rN  )m
__future__r   rR  rc  r  	threadingr  ru  abcr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   typing_extensionsr   r   r   r   rJ   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*   r4   r+   r,   r  r-   r.   r7   r  DimListr|   r9   r;   r<   r>   rF   rP   rS   rX   localr]   r[   r_   r   r   r   rt   r   r   r   r   r  r   r   r   r   r}   r   r   r.  r/  r:  rB  rE  r   rn  rq  rs  torch._prims_common_prims_commonrD  r   r8   r6   <module>r     sZ   " " " " " "                         = = = = = = = = ! ! ! ! ! !                        B A A A A A A A A A A A  + + + + + +                          < ; ; ; ; ; + + + + + + / / / / / / F F F F F F 0 0 0 0 0 0  
P33333333000000$$$$$$HHHHHHHH
 POOOOOOO% % % % w~'<elKKWT]]7:U\222w~U\TJJJ         , , , ,
 io #  + + + +  ; ; ; ; ; ;~H H H H   Q Q Q Q
7 7 7 7      % % % % --w~s++ w~s++ LOO T T T T T T T Tn $
 
 
 
 
 
 
 
 $8 8 8 8 8wx  8 8 8$ $
 
 
 
 
(<0 
 
 
$ $I I I I Ihx('(*; I I I6    (GL$9   % % % % %	 % % % %    8W\-B    $U U U U UWX& U U UH      I I I I IGH% I I IX* $ # # # # # # #r8   