
    9i[                   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@ dedZAeBZC eddejD                  ZE ed          ZF edejD                  ZG edejD        d           ZHdfd#ZIdgd%ZJdhd&ZKdid*ZL ejM                    ZNd+eN_O        edjd-            ZPd+d+d.dkd6ZQdld8ZRdmd;ZSdld<ZTdld=ZUdndAZVdodDZWdpdF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                               ZfdqdaZgdrdbZh G dc ddeeG                   Zid dljmkZl dS )s    )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     O/var/www/icac/venv/lib/python3.11/site-packages/torch/_subclasses/meta_utils.py_is_fake_tensorr7   =   s$    888888a$$$    _TensorLikeTMetaTensorDesc_T_TensorT)bound_TensorT_covT)r=   	covariant#Union[MetaTensorDesc, 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                ,    t          |           }|J |S rI   )rP   )r/   rO   s     r6   _expect_safe_gradrR   X   s    Q<<DKr8   abNonec                0    | |k    sJ |  d|             d S )Nz !=  )rS   rT   s     r6   	assert_eqrX   ^   s#    666a==Q==66666r8   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_   i   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   rU   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        r*| j        J |j        J  | j        |j                   d S d S )Nr[   F)dtypeshaperequires_gradrC   	is_sparser\   r]   is_inferenceis_conjis_negrO   rP   rR   layout	dense_dim
sparse_dimis_coalescedis_sparse_compressedstridestorage_offsetis_view_is_viewbase_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 &w***x+++27BH%%%%%& &r8   )rd   r:   re   rf   r1   rU   )r5   rJ   TensorMetaTensorDescriberdescribe_tensor)rX   rd   re   ra   rb   r{   s   `  ``@r6   assert_metadata_eqr   s   s~     b%,''	--b111 && && && && && && && && &&V 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                `    t          ||           sJ d|  dt          |                       |S )Nz	expected z	 but got )r5   type)r   r   s     r6   _checked_castr      s<    c2DD DB D Dc D DDDD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   rU   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               0     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 }|	rHtA          d          sJ !                                \  }} fd|D             }t+                    }ddl"m#} tH          %                              }tM          tN          dd	          }tQ          dCi d
 )                              d|d|rd	n*                                d|dj+        d,                                dj-        d|d|d|
d|d|d|d|d.                                d/                                dta          t          j1        j2                  d|	d|d|v r|         j3        4                                nd d|d|d j        d!5                                d"|d#|d$tm          tM          d%to                                          d&tM          d'i           d(j        stq                    r9                                nd d)j        stq                    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          j@        t          jA        hv r*                     B                                d	,          nd d/|rIj        t          j@        t          jA        hv r*                     C                                d	,          nd d0|r9tq                    r*                     D                                d	,          nd d1t                    x}                     |          nd d2                                r$t          j        jF        G                              nd d3|d4|s|rt                    nd d5|rt                    nd d6|r7                                r#jJ                             jJ                  nd d7t          jK        jL        M                              d8|d9|d:|d;|d<|d=|d>|d? jN        rnd  rB jO         jP        vr4t          d@  fdAB            jP        R                     jO                    S )DNr   r   xlalazyzVCannot safely fakify a view because this process drops the view information right now.__tensor_flatten__c           	     \    i | ](}|                     t          |                     )S )r   )r~   r\   ).0attrr   r/   r   s     r6   
<dictcomp>z7MetaTensorDescriber.describe_tensor.<locals>.<dictcomp>r  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   rW   )SrF   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hasattrr   $torch.nested._internal.nested_tensorr   ViewFuncfrom_tensorr\   r]   r:   r   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  s1
    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3331133NIs     %  E !WWFPPPPPP((++	 &-S2JE%R%R"* i
 i
 i
!!!$$$i
Gi
 #=R!..BRBRi
 G	i

 //i
 i
 ''i
  ii
  ii
  "6!5!i
" 0/#i
$ %>$=%i
& #:"9'i
( G)i
* IIKKK+i
, 88:::-i
. $Aux'9:::/i
0 +J*I1i
2  i3i
8 /// (*/::<<<;i
> (-?i
@ 6Ai
B 88Ci
D Ei
F 6Gi
J *>Ki
L $(3Lcee(T(T#U#U#UMi
N #*!-Er"J"J"JOi
R #$+R1Ea1H1HRdSi
V (){W6J16M6MWakkmmmSWWi
X ./[B)))dYi
d  xE,<e>N+OOO $$Q^^%5%5uE$RRRgi
n  xE,<e>N+OOO $$Q]]__e5$QQQqi
x  xE,<e>N+OOO $$Q^^%5%5uE$RRR{i
B  xE,<e>N+OOO $$Q]]__e5$QQQEi
L 3A66$$QXXZZe$LLLOi
V &aLL(D5 $$T$777Yi
^ =>JJLLR"55a888d_i
b  ici
h &)@"""ki
n '9B"""doi
t  zz||010C $$QWE$:::wi
z '3GGJJJ{i
|  i}i
~ %i
@ Ai
B Ci
J 21Ki
L  21Mi
N (-Oi
P n.$Qi
T  	*QT!444!66666    ##AD)))s   I))I-0I-Nr   rA   r1   rU   )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~   rW   r8   r6   r}   r}      s          -2 / / / / / /% % % %& & & & 9>     & 37eY Y Y Y Y Y Y Y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   rW   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   rW   r   r/   r"  r#  r%  s        r6   applyzViewFunc.apply  s	     3r8   rf   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   rW   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+   r-  r(  s        r6   r)  z_FakeTensorViewFunc.apply  s1      ,7II
 
 	
r8   r.  )
r/   rf   r"  rf   r#  r$  r%  r1  r1   r+   )r  r  r  r   r)  rW   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   )r4  r(  s        r6   r)  z_CustomViewFunc.apply3  s     yy#46GHHHr8   r.  )
r/   rf   r"  rf   r#  r$  r%  r&  r1   r<   )r  r  r  r   r   r)  rW   r8   r6   r,  r,  (  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   rW   )r   r8  r   s      r6   __call__z_MetaTensorCallback.__call__E  s    sr8   N)r8  r9  r   r:  r1   r>   r  r  r  r<  rW   r8   r6   r7  r7  D  s(             r8   r7  c                      e Zd ZU ded<   dS )_MetaTensorCallbackKwargsr:  r   N)r  r  r  r   rW   r8   r6   r?  r?  J  s         $$$$$$r8   r?  )totalc                      e Zd Zd	dZdS )
_MetaTensorCallbackOptDevicer8  r9  kwargs!Unpack[_MetaTensorCallbackKwargs]r1   r>   c                   d S rI   rW   )r   r8  rC  s      r6   r<  z%_MetaTensorCallbackOptDevice.__call__S  s	    
 sr8   N)r8  r9  rC  rD  r1   r>   r=  rW   r8   r6   rB  rB  R  s(             r8   rB  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]r   r   r   r   r   r   r   ry   z#Optional[dict[str, MetaTensorDesc]]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]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 rW   rW   )r   v1jsonrM  s     r6   
<listcomp>z8MetaTensorDesc.as_json.<locals>.json.<locals>.<listcomp>  s#    000Q000r8   r   c                $    i | ]\  }}||j         S rW   )r   )r   k1rR  s      r6   r   z8MetaTensorDesc.as_json.<locals>.json.<locals>.<dictcomp>  s     :::fb"BE:::r8   )r:   rJ  r  r5   rJ   r   ri   rp   SymInttupler  r   r   r   rN  dictitems)rM  rO  rS  s   ` r6   rS  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   fieldrS  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  )rM  rN  rO  r0   r1   r0   )dataclassesfieldsupdate)r   r  r   rS  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   rH  )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   rJ  r   r   r   r   r   r   r   r   r   r   propertyrj   rW   r8   r6   r:   r:   [  s        III %%%%)))) =F((((LGMII!&&&&&"""""$)))))"'''''GI !%J$$$$*/!////MGFL(,F,,,,N
 *.G---- $J$$$$#I#####'L''''-1L1111,0K0000-1L1111,0K0000'+F++++*.I....D%)D))))15E5555,0M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   dstsrcrK  c                j    t          |          t          j        urd S |                     |           d S rI   )r   rJ   r|   copy_)rg  rh  s     r6   
_safe_copyrk    s-    Cyy$$IIcNNNNNr8   c                d    t          |           t          j        urd S |                                 S rI   )r   rJ   r|   clone)rh  s    r6   _safe_clonern    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   rU   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   )rv  rw  rd  s    r6   
successfulzMetaConverter.successful'  s    x!|.	Q.r8   r/   r:   rK  c                B    | j                             |j        d           S rI   ru  getr   r   s     r6   get_tensor_memozMetaConverter.get_tensor_memo*  s    ##AD$///r8   r<   c                N    | j                             |j        d           }|J |S rI   r~  )r   r/   r   s      r6   _checked_get_tensor_memoz&MetaConverter._checked_get_tensor_memo-  s*      t,,}}}r8   rO  c                $    || j         |j        <   d S rI   )ru  r   )r   r/   rO  s      r6   set_tensor_memozMetaConverter.set_tensor_memo2  s    !"r8   r   r   r  c                B    | j                             |j        d           S rI   )rt  r  r   r   s     r6   get_storage_memozMetaConverter.get_storage_memo5  s     $$QT4000r8   r   c                $    || j         |j        <   d S rI   )rt  r   )r   r   rO  s      r6   set_storage_memozMetaConverter.set_storage_memo8  s    "#!$r8   callback0Callable[[Callable[[], torch.Tensor]], _TensorT]c                   |                                x} |fd                                          }| j        rt          j                    5  t                      5  j        J 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>D  s    AF%+fMMM r8   )
r  r   r   rJ   no_gradr$   r   r   rm  r  )r   r   r  memor_ss    `   r6   meta_storagezMetaConverter.meta_storage;  s`    ))!,,,D5(MMMM o  ~ ; ]__ ; ;kmm ; ;6---%c16<<>>:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; !!!S)))JKs6   B6"1BB6B#	#B6&B#	'B66B:=B:rf   c                6    t          j        t          |          S rI   )typingcastr<   )clsr/   s     r6   _checked_cast_tensor_tz$MetaConverter._checked_cast_tensor_tQ  s     {8Q'''r8   Nr9  r   "Optional[Union[torch.device, str]]c                <    |                       |                      S rI   )r  )r  r/   r   s      r6   _identity_callablez MetaConverter._identity_callableV  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_error^  sC    #00G
 
 eAhh{8S)))r8   	shape_envOptional[ShapeEnv]	callback__MetaTensorCallback[_TensorT]sourceOptional[Source]symbolic_contextOptional[SymbolicContext]c                T    !"#$%&'()* t          j        |j                  $&ddlm}  |dt           j                             d}t          j        	                                
                    t          j        j        j                  r
J |             xj        dz  c_        t          j        'j        'fdDfd*fdE*fd}fdF$ fd%dG"fd "fdH"$%' *fd"}	                               d# t          j        j                  5  j        rrj        }
 $fd$          } j        rj        J t          j                    5  t3                      5  t5          |          sJ t7          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
J d%            |                    t?          j                              j!        rd&|_!        j!        r{|
sy "                    |#                                          }t          j$                    5  |                    t?          j                              d d d            n# 1 swxY w Y   n{tK          j&                  rj        }
j&        t          j'        t          j(        hv rMj)        J j*        J j+        J j,        j)        z
  j*        z
  }j+        j-        |dz   |d'z            #nd(#j&        t          j.        t          j'        hv rj/        J j/        j0        &nj1        J j1        j0        & $#&fd)          } j        rj        J t          j                    5  t3                      5  t5          |          sJ t7          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
J d%            j!        rd&|_!        j!        r|
s 2                    |          }	nŉj3        r+j4        s$dd*l5m6}  |d+to                    d,g -           	nj8        r=j        }
 *          \  ()} $()fd.          } j        rt          j                    5  t3                      5  j9        J j:        J t5          |          sJ t          j;        j9        j:        j0        j        /          |_        j        J ty          |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
J d%            j!        rd&|_!        j!        r|
s 2                    |          }nNj=        rBj>        r"dd*l5m6}  |d0to                    d,g -           dI !$ fd1! !          }nj?        rj        j@        d2vrsjA        J j=        rJ  B                    jA        $          } "                    t          jC        |                    }t          jD        jE        |           n}j>        rjF        J d }r(&dd3lGmH} t          |          sJ jJ        jJ        } B                    jF        $t          jK        jL        M                    d4          |          }dJd9}t          j        N                    t          j        j        jO                  }t          j        P                    t          j        j        jO        d:           	 |j0        j0        k    rn ||j0        j0                  r( "                    t          jQ        |                    }nk |j0        |j0                  r( "                    t          jR        |                    }n- "                    |S                    j0                            }j        rEt          j                    5   |	|          }d d d            n# 1 swxY w Y   j!        |_!        njF        j!        j!        k    r8t          j$                    5   |	|          }d d d            n# 1 swxY w Y   nʉj!        sJ t          j                    5  t                      5   "                    |S                    |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   jU        J t          j        jV        W                    |jU                   t          j        P                    t          j        j        jO        |           n9# t          j        P                    t          j        j        jO        |           w xY wj        |_X        nǉj        }
jY        sjZ        sj=        sj[        rt          cd d d            S  *          \  ()}j4        r %();          }n $()fd<          } j        rt          j                    5  t3                      5  j9        J j:        J t5          |          sJ t          j;        j9        j:        j0        j        /          |_        ty          |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
J d%            j!        r#j!        |_!        |
s 2                    |          }j]        }|J |j^         j_        vr|j3        s0|:                                )k    r|`                                |k    r a                    ||b                                            j        rSt5          |          sJ |j        J t          |b                                |j        b                                           n} d                    |$=          }t          j                    }dd>lemf}mg}  ||          }| ||          }t          j                    5   '            5  |5  |h                    ||()           d d d            n# 1 swxY w Y    j        rt          j                    5  t3                      5  t5          |          sJ |j        J j:        J |j        h                    t          |          j`        j9        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   jj        3dd?lmM}  B                    jj        $ |d@                    |_j        t          j        k                    |jl                   t          j        m                    |jn                   d d d            n# 1 swxY w Y   jZ        o
jo         k    }t          t          |d&|A           ddBlGmr} j]        @ |j]        j9        dk              r'|b                                s                    d           jt        rd&|_u        jv        6t5          |          sJ |jw        x                    jv        C          |_y         z                    |            {                              S )KN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:   rh  torch._guards.Sourcer  ?Optional[torch.fx.experimental.symbolic_shapes.SymbolicContext]r1   ,tuple[tuple[int, ...], tuple[int, ...], int]c           	          j         J  j        }||j        u r 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 )Nc              3  B   K   | ]}                     |          V  d S rI   #_maybe_specialize_sym_int_with_hint)r   szr  s     r6   	<genexpr>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   sdr  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 rW   r\  )r   dr/   s     r6   rT  zWMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<listcomp>  s!    NNN1a66NNNr8   )r  hint_overrides)ru   r   r  r   rv   rX  r  -_create_symbolic_sizes_strides_storage_offsetranger   r   )r/   rh  r  r   t_sizet_stridet_storage_offsetr  s   `      r6    sym_sizes_strides_storage_offsetzCMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset  sD    8'''$K	(Y-@I-M-M 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_sizerH  outer_strider  Optional[torch._guards.Source]r<   c                   ddl m ddlm | j        J | j        J ||n| j        }||n| j        }|t          |          sJ d
fd|J  | |||	|          }|j	        |k    sJ d| j         d| d|j	                     |                                |k    s*J d| j         d| d|                                             |S )Nr   
AttrSource)SubclassSymbolicContextr/   r:   r  rI  r  r  r  r  &_MetaTensorCallbackOptDevice[_TensorT]r  r  r1   r<   c           	        | j                             | |||          S i }| j                                         D ]\  }}d }	|Kt          |          sJ |j        |         x}
	 )t          t          j        j        j	        j
        |
          }	 ||          }t          j        ||j                  } ||j        |j        |	||          }|||<   | j        J | j                            || j        ||          S )Nr  )r   meta_tensorrZ  r5   inner_contextsr   rJ   fxexperimentalsymbolic_shapesr.   	functoolspartialr   r   ru   r   __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  sZ    7?++! (   !#./gmmoo ; ;*D*&*O'3)*:<STTTTT0@0OPT0UU,!%& /< % 5 E U 0/ /O
 &0Z%=%=N%.%6 )9)@& & &N (>'=((-(/'&&( ($ +;M$''v)))v22!15*l  r8   z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  rI  r  rI  r  r  r  r  r  r  r1   r<   )
torch._dynamo.sourcer  %torch.fx.experimental.symbolic_shapesr  r   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7&&&6%%% (2'=16J+7+C<<L#+z "90 0+++3 3 3 3 3 3 3 3 3 3j %%%((:|-=x C 9
***Eaf E E",E E9<E E +** ::<<<///Kaf K K#/K K<?JJLLK K 0//
 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        r&| j        J  | j         ||d          ||          }|j        g| j	        z  }	| j
        rv| j        J i }
| j                                        D ]7\  }}t          |t                    sJ  | |||          ||          |
|<   8 ||	d g| j	        z  |
||          }n ||	d g| j	        z  |          }|S )Nr   r  )
DimDynamicStatelessSymbolicContextr  rz   )dynamic_sizesconstraint_sizesr  tensor_sourceview_base_context)r  r  r  )r  r  r  r  r  r  rw   ry   DYNAMICr   r%   r   rZ  r5   rN  )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_contextQ  s    877777            y v)))$@$@FJJvw77H% %!
  *12QV;O. w***   $%7==??  KD%%dC00000+G+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        r_|j	        J |j
        J  |||          }|                                \  }	}
|	D ]%}t          ||          |j	        |         j        <   &fdfd}|j        J |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  	visited_trf   r  r  r  r  c                   | d S 
j                             |           }	                    |          }||S 
j                             |           } d          }
                    |||| ||||                    S )Nr%  )rz  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   )r   r  r1   r  )r  rf   r  r  r  r  r1   rf   )r"   r%   r  
as_stridedr  r  r  r  r  r   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  sn    *++ F F3S3Sv4 40 7
9$??
 ())  #:: OOE7NKK         F F F F F F F F       
 A@@@@@       
        < (*$2 W7... 6--- (='<e'( ( (F  &88::HE1 % W WAHQUAVAV,QWT]-=>> "GO( ( ( ( ( ( ( ( ( (X {... **t.0A  VVFKKMM599:::VVFMMOOW==>>>VVF$9$9$;$;^LLMMMMF F F F F F F F F F F F F F F F F Fs6   1G"*B/G"B	G"B	EG""G&)G&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>:  s>    	 K KLKF"#'#(#3#) !L ! ! r8   z)the callback you passed in doesn't detachT   rW   c            
         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>m  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   r  z;attempted to apply meta conversion to view functorch tensorc                     j         r j        J  j        J  j        J  
 j                  } j        } j        }t          j        j                             j                  5  	                    t          |||                    }d d d            n# 1 swxY w Y   n_ j        r$ j        J  j        J 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|_        nS j        r|s                    |          }n3 j        rY j        J  j        J                      j                  }	                    t-          | j                            }nӉ j        J  j         j          fd          }j        rt	          j                    5  t7                      5  t	          j         j         j         j         j                  |_         j         J tC          |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 )NTc                 >    t          j         j        d          S r  r  r'  s   r6   r   zDMetaConverter.meta_tensor.<locals>._to_fake_tensor.<locals>.<lambda>  s'    (;$)$+*+'+1	)" )" )" r8   r  )"r   r   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   rk  )r/   ftlvlr   r   disable_functorchrC   r  r  GRAD_TENSOR_SENTINEL_VALUE_to_fake_tensorr  r   r  r  r  s   `      @@r6   r2  z2MetaConverter.meta_tensor.<locals>._to_fake_tensor  s    - PF#$;#:#:#:#$7#6#6#6#$6#5#5#5!0!=!=B"#'C#$6D
 "'!1!=!c!c ! 1" " " " %)$?$?$22tS$A$A%" %"" " " " " " " " " " " " " " " 4 ?F#$;#:#:#:#$7#6#6#605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$;$;_ )F#$;#:#:#:#$?#>#>#>!%!1!1 ! ) (
 !' 0
" 
"B !% ; ; 7AO L L! !AA
 $%8#7#7#7$%FE&'hG (!" !" !" !" !" !"! !A  $~ 	F%*]__ !F !Fkmm !F !F494G()()./g/0x	5& 5& 5&AM ,-6+=+=+=$.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   .%BB#&B#!C>>DD9FFF9L AK)L )K-	-L 0K-	1L  LLr   )r  rz   complex_dtyperG  
real_dtyperA   c                Z    t          j        |           ot          j        |           |k    S rI   )utilsis_complex_dtypecorresponding_real_dtype)r3  r4  s     r6   	is_c_of_rz,MetaConverter.meta_tensor.<locals>.is_c_of_rB  s2     "2=AA * % >} M M)!*r8   Fr  c                 >    t          j         j        d          S r  r  r'  s   r6   r   z+MetaConverter.meta_tensor.<locals>.<lambda>  s'    E$7 % '&'g'-	% % % r8   )r  )in_kernel_invocation_managerr  r  rO   r`   )guard_or_false)nt_tensor_id)r/   r:   rh  r  r  r  r1   r  )r  r:   r  r  r  r  r1   rf   )r/   r:   r  rH  r  rH  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<   )r3  rG  r4  rG  r1   rA   )|r  r  r   r  r  lenru  rJ   r   _dispatch_tls_local_exclude_sethasDispatchKeyPythonry  
contextlibnullcontextsuppress_guardsr  inference_moderm   rl   rC   r   r   r  r$   r7   rn  r-  rF   _coalesced_rA   rs   rk   r  rm  enable_gradr   rp   r   r   rr   rq   r   r   rj   r   r   ri   r   r  r   r%   torch._dynamo.excr!  rN  r   r   ru   r  rk  r   rw   r   r   r   r  _to_functional_tensor_mirror_autograd_meta_tor   ry   r  r  r5   r  _dynamor  r  &_dispatch_tls_is_dispatch_key_excludedADInplaceOrView'_dispatch_tls_set_dispatch_key_excludedview_as_realview_as_complexviewr"   r   r  _set_creation_metafake_devicer   r   r   NotImplementedr   r   rt  rv   r  r   r   r  r4   r;  r  set_r   rO   	_set_conjrn   _set_negro   r   r   rX   r<  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   r9  old_excludemidrv   r   r  maybe_fake_mgrr;  r  mb_fake_moder  rb   r<  r1  r2  r  r  r  r  r   r  r  r  r  s+   ``` ``                          @@@@@@@@@@@r6   r  zMetaConverter.meta_tensorm  s    2;1Bah2
 2
 2
 >;;;;;; $^Ec$2B.C.CEE F
R 	 8;;==AAH '
 
 	 		 	 	 	4 -7,B &6N !%	< %	< %	< %	< %	< %	< %	<X !	 	 	 	 	 	 	6 !5;h	 h	 h	 h	 h	 h	 h	 h	 h	\0	& 0	& 0	& 0	& 0	& 0	&h M	 M	 M	 M	 M	 M	 M	 M	 M	 M	 M	 M	 M	 M	^ ""*)+&%an55 / /; l&iG
 !   	 	A ~ @ v111"]__ @ @kmm @ @#21#5#5555,7,?,?AM@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ (??WW,WWWW MM$q~"6"6777 /*. @w @
 !77		BB".00 @ @MM$q~*>*>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @0:: E&iGxE$4e6F#GGG |777 {666 x333$%FQ\$9AK$G	$%HN9q=9q=3P$Q		$&	xE$4e6F#GGG ~999&'n&: ~999&'n&: 	 	 	 	 	 	 A ~ @ v111"]__ @ @kmm @ @#21#5#5555,7,?,?AM@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ (??WW,WWWW /*. 4w 4 0033[ [&)H [& @????? "M ] #A$< 	     [ N&iG
 98FCC	' !      A
 ~ 	>"]__ > >kmm > >#$6#5#5#5#$8#7#7#7#21#5#5555,1,? !- - -AM $%6#5#5#5&q}af===> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > (??WW,WWWW /*. 4w 4 0033+ p&y CCCCCC%$a$'FF(@"$	   V! V! V! V! V! V! V! V! V! V! V! V!p (**AA_ I&o)M)M;222 5555 $ 0 0! (! !I 333I>> A 213GKKKKY z& 6---,0)  
W%5%A       **:<TUUUUU ,=I4D4V1++! ,77HH- D    #(("Q"Q,<# #K HDD,<e  E: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!@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ () 6 6 6%*]__ !& !&6N6P6P !& !&*.*E*E(,		$*(=(=+& +&C!& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& 56O 1%*%6%8%8 !? !?(6sA(>(>A!? !? !? !? !? !? !? !? !? !? !? !? !? !? !?
  !:::*==aQQQHH!H0@+   HH!H0@+    %&HAMM  iG /.343J.2. 2.
  .m/ / / / / / / /x 98FDTUU	&
 6 B11%g   %H        > B!& B B+-- B B'(v'9'9'9'(x';';';'6q'9'9 9 9 9050C$%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 (??WW,WWWW 8*+/& 8 !% 4 4Q 7 7A	A===t4#444 5 HHJJ'11 ! 0 0 2 2n D D --a1B1B1D1DEEE> #21#5#5555#$=#<#<#<- ! 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+=+=$=$=$=+,=+D+D+D+,8+?+?+?$%M$6$6(9#(>(>()(8()()	%& %& %&		!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!& 	!&	& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & 6%??????
 "--! "
6622( AF ""1ai000!!!QX.../ / / / / / / / / / / / / / /D 'QAG7Q,Q  y!QdiXXXX MLLLLLy$	!8K)L)L$!!##++A...~ #" |'&q)))))$%K$J$J!" %K % %!
   A&&&,,Q///s  +Az1,G	;+F2&G	2F66G	9F6:G	=z1	G	z1G	Bz1%(Jz1J	z1 J	!Dz1-P
<+O3'P
3O77P
:O7;P
>z1
P	z1P	Cz1V&A8U*V*U..V1U.2V5z1V	z1V		Hz1Ch"a;/h;a?	?ha?	9h<c	hc	hc	 h=e.e:ee

ee
ehe!	!h$e!	%"hf h f$	$h'f$	(6h5z16i		:z1Az1!n0A/m+n+m//n2m/3n6z1n	z1	n	
E7z1xw?t4	(w?4t88w?;t8<w?w(	(Aww(	ww(	ww(	w?(w,,w?/w,0w?3x?xxxx
z1x	z1x	Bz11z58z5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J t#          d fd           t%          j                    5 }|                    t          j        j                                                   t1                      }	|	6|                    t          j        j                                                                        |||          }
d d d            n# 1 swxY w Y   t          |          t          j        j        u rd|
_        |
S )	Nr   r   Fr   describe_sourcec                 8     j         j        j        j        dS )N)r  r   r  )rz  r   r]  )r   r  t_descs   r6   r   z(MetaConverter.__call__.<locals>.<lambda>  s!    $(N$5 )$k% % r8   r   T) r  r5   rJ   r|   r   r   is_quantizedrx   rz   rl   rw  rV  rv  	overridesis_tensor_likerz  r~   r#   rD  	ExitStackenter_context	_dispatchpythonsuspend_functionalizationr!   r   r   r   r  r   r  r[  )r   r/   r  r  r  r  r   r  
exit_stackstr   rj  s   `   `      @r6   r<  zMetaConverter.__call__S  sT    /II I a&& 	 ''  (  ( #$'"5!':K"5		Q		%%A_++A.. 	IINII!! H>E ///?? 		%%%!         !## 	z$$U_%;%U%U%W%WXXX'))B~(($0TTVV       A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  77eh((( AK s   BF99F= F=r  )r1   rA   )r/   r:   r1   rK  r>  )r/   r:   rO  r<   r1   rU   )r   r   r1   r  )r   r   rO  r   r1   rU   )r   r   r  r  r1   r   )r/   rf   r1   r<   rI   )r/   r9  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  rf  r  r  r  r  r   rA   r1   r<   )r  r  r  r   r|  r  r  r  r  r  r  classmethodr  r  r  r  r<  rW   r8   r6   rp  rp    s       ,1 B B B B B B*/ / / /0 0 0 0   
# # # #1 1 1 1$ $ $ $   , ( ( ( [(  6:/ / / / [/ * * * [*d0 d0 d0 d0R )-^
 =A#'6: ^ ^ ^ ^ ^ ^ ^ ^r8   rp  )r/   r0   r1   r2   )r/   r@   r1   rA   )r/   r9   r1   rG   )r/   r9   r1   r9   )rS   r;   rT   r;   r1   rU   )r1   rY   )rX   rc   rd   r@   re   rf   ra   rA   rb   rA   r1   rU   )r/   r0   r1   r   )rp   r   r1   rA   )r   r   r   r0   r1   r;   )ry   r   r1   r   )ry   r   r   r   r1   rU   )rg  rf   rh  rK  r1   rU   )rh  rf   r1   rK  )m
__future__r   rD  r`  r  	threadingr  rr  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   rR   rX   localr]   r[   r_   r   r   r   rt   r   r   r   r   r  r   r   r   r   r}   r   r   r+  r,  r7  r?  rB  r:   rk  rn  rp  torch._prims_common_prims_commonr6  rW   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~'7FFWT]]7:U\222w~U\TJJJ         ! ! ! ! io #  + + + +  9 9 9 9 9 9zH H H H   Q Q Q Q
7 7 7 7   
   % % % % --w~s++ w~s++ LOO P P P P P P P Pf $
 
 
 
 
 
 
 
 $8 8 8 8 8wx  8 8 8$ $
 
 
 
 
(<0 
 
 
$ $I I I I Ihx('(*; I I I6    (GL$9   % % % % %	 % % % %    8W\-B    $S S S S SWX& S S SD      ` ` ` ` `GH% ` ` `F% $ # # # # # # #r8   