
    %VjiT                   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mZ d dlZd dlmZ d d	l m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d d
l,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 er"d dl6m7Z7 d dl m8Z8 d dl9m:Z: d dl;m<Z<m=Z= d dl>m?Z?m@Z@ 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CallableClassVarGenericNewTypeOptionalProtocolTYPE_CHECKINGTypeVarUnion)override	TypedDict	TypeGuardTypeIsUnpack)CreationMeta)_add_batch_dim_unwrap_functional_tensor_wrap_functional_tensorget_unwrappedis_batchedtensoris_functorch_wrapped_tensoris_gradtrackingtensoris_legacy_batchedtensormaybe_get_bdimmaybe_get_levelpeek_interpreter_stack)enable_python_dispatcher)trace_structured)no_dispatch)is_traceable_wrapper_subclass)WeakIdKeyDictionary)	Generator)CInterpreter)Source)
FakeTensorFakeTensorMode)ShapeEnvSymbolicContexttobjectreturnTypeIs[FakeTensor]c                .    ddl m} t          | |          S )Nr   )r+   )torch._subclasses.fake_tensorr+   
isinstance)r/   r+   s     V/root/voice-cloning/.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   W   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_   h   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   r   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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>q  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"* h
 h
 h
!!!$$$h
Gh
 #=R!..BRBRh
 G	h

 //h
 h
 ''h
  ih
  ih
  "6!5!h
" 0/#h
$ %>$=%h
& #:"9'h
( G)h
* IIKKK+h
, 88:::-h
. $Aux'9:::/h
0 +J*I1h
2  i3h
8 /// (*/::<<<;h
> (-?h
@ 6Ah
B 88Ch
D Eh
F 6Gh
H *>Ih
J $(3Lcee(T(T#U#U#UKh
L #*!-Er"J"J"JMh
P #$+R1Ea1H1HRdQh
T (){W6J16M6MWakkmmmSWUh
V ./[B)))dWh
b  xE,<e>N+OOO $$Q^^%5%5uE$RRReh
l  xE,<e>N+OOO $$Q]]__e5$QQQoh
v  xE,<e>N+OOO $$Q^^%5%5uE$RRRyh
@  xE,<e>N+OOO $$Q]]__e5$QQQCh
J 3A66$$QXXZZe$LLLMh
T &aLL(D5 $$T$777Wh
\ =>JJLLR"55a888d]h
`  iah
f &)@"""ih
l '9B"""dmh
r  zz||010C $$QWE$:::uh
x '3GGJJJyh
z  i{h
| %}h
~ h
@ Ah
H 21Ih
J  21Kh
L (-Mh
N n.$Oh
R  	*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X X X X X X X X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  s0      ,7IIx*,=
 
 	
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.apply-  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__?  s    sr8   N)r8  r9  r   r:  r1   r>   r  r  r  r<  rW   r8   r6   r7  r7  >  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?  D  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__M  s	    
 sr8   N)r8  r9  rC  rD  r1   r>   r=  rW   r8   r6   rB  rB  L  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:   U  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_memo,  s    !"r8   r   r   r  c                B    | j                             |j        d           S rI   )rt  r  r   r   s     r6   get_storage_memozMetaConverter.get_storage_memo/  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_memo2  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>>  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_storage5  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_tK  s     {8Q'''r8   Nr9  r   "Optional[Union[torch.device, str]]c                <    |                       |                      S rI   )r  )r  r/   r   s      r6   _identity_callablez MetaConverter._identity_callableP  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_errorX  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                             t          j        	                                
                    t          j        j        j                  rJ  xj        dz  c_        t          j        &j        &fdAfd)fdB)fd}fdC# fd$dD!fd!fdE!#$& )fd!}                               cd"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   nYtK          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*           	nj7        r=j        }	 )          \  '(} #'(fd+          }
 j        rt          j                    5  t3                      5  j8        J j9        J t5          |
          sJ t          j:        j8        j9        j0        j        ,          |
_        j        J tw          |
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                    |
          }
n=j<        r1j=        rdd)l5m6}  |d-           dF # fd.             }
nj>        rj        j?        d/vrsj@        J j<        rJ  A                    j@        #          } "                    t          jB        |                    }
t          jC        jD        |
           n}j=        rjE        J d }r(&dd0lFmG} t          |          sJ jI        jI        } A                    jE        #t          jJ        jK        L                    d1          |          }dGd6}t          j        M                    t          j        j        jN                  }t          j        O                    t          j        j        jN        d7           	 |j0        j0        k    rn ||j0        j0                  r( "                    t          jP        |                    }nk |j0        |j0                  r( "                    t          jQ        |                    }n- "                    |R                    j0                            }j        rEt          j                    5   ||          }
d d d            n# 1 swxY w Y   j!        |
_!        njE        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   "                    |R                    |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   jT        J t          j        jU        V                    |
jT                   t          j        O                    t          j        j        jN        |           n9# t          j        O                    t          j        j        jN        |           w xY wj        |
_W        nǉj        }	jX        sjY        sj<        sjZ        rt          cd d d            S  )          \  '(}j4        r $'(8          }
n #'(fd9          }
 j        rt          j                    5  t3                      5  j8        J j9        J t5          |
          sJ t          j:        j8        j9        j0        j        ,          |
_        tw          |
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|
9                                (k    r|
_                                |k    r `                    ||
a                                            j        rSt5          |
          sJ |
j        J t          |
a                                |
j        a                                           n} c                    |#:          }t          j                    }dd;ldme}mf}  ||
          }| ||          }t          j                    5   &            5  |5  |
g                    ||'(           d d d            n# 1 swxY w Y    j        rt          j                    5  t3                      5  t5          |
          sJ |
j        J j9        J |
j        g                    t          |          j_        j8        j9                   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   ji        3dd<lmL}  A                    ji        # |d=                    |
_i        t          j        j                    |
jk                   t          j        l                    |
jm                   d d d            n# 1 swxY w Y   jY        o
jn        k    }t          t          |
d%|>           dd?lFmq} j\        @ |j\        j8        dk              r'|
a                                r                    d           js        rd%|
_t        ju        6t5          |
          sJ |
jv        w                    ju        @          |
_x         y                    |
            z                              S )HNr   r   )ConstantSource__meta_utils_unknown_tensorr   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_contextH  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                             |           }	                    |d           }||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$%O%ON%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    *++ E E3S3Sv4 40 7
9$??
 ())  #:: OOE7NKK         E E E E E E E E       
 A@@@@@       
        < (*$2 W7... 6--- (='<e'( ( (F  &88::HE1 % W WAHQUAVAV,QWT]-=>> "GO' ' ' ' ' ' ' ' ' 'V {... **t.0A  VVFKKMM599:::VVFMMOOW==>>>VVF$9$9$;$;^LLMMMKE E E E E E E E E E E E E E E E E E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>0  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>c  sA    	 R RKG%'#$8"#'#) !S 	! 	! r8   )unimplementedz;strided nested tensors are not supported by meta conversionc                 >    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;view functorch tensors are not supported by meta conversionc                     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   r.  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)r/  r0  s     r6   	is_c_of_rz,MetaConverter.meta_tensor.<locals>.is_c_of_r.  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<   )r/  rG  r0  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!  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   r7  r  set_r   rO   	_set_conjrn   _set_negro   r   r   rX   r8  resize_r   	_is_paramr   r   create_symbolic_nested_intnested_int_memor  r  )*r   r/   r  r  r  r  r  r  r  rC   r   	batch_dimr!  _storage_offsetr   base_symbolic_contextr  ry   r5  old_excludemidrv   r   r  maybe_fake_mgrr7  r  mb_fake_moder  rb   r8  r-  r.  r  r  r  r  r   r  r  r  r  s*   ``` ``                         @@@@@@@@@@@r6   r  zMetaConverter.meta_tensorg  s    2;1Bah2
 2
 2
 >;;;;;; $^Ec$2B.C.CEE F 8;;==AAH '
 
 	
 	
 
 	4 -7,B &6N !%	< %	< %	< %	< %	< %	< %	<X !	 	 	 	 	 	 	6 !5;g	 g	 g	 g	 g	 g	 g	 g	 g	Z0	& 0	& 0	& 0	& 0	& 0	&h L	 L	 L	 L	 L	 L	 L	 L	 L	 L	 L	 L	 L	 L	\ ""*)+&%an55 p/ p/; `&iG
 !   	 	A ~ @ v111"]__ @ @kmm @ @#21#5#555#5,7,?,?AM@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ (??WW,WWW? MM$q~"6"6777 /*. @w @
 !77		BB".00 @ @MM$q~*>*>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @0:: y&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? /*. 4w 4 0033[ P&)H P& @?????!MU    [ G&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? /*. 4w 4 0033+ j&y CCCCCC%Y  U! U! U! U! U! U! U! U! U! U! U! U!n (**AA_ G&o)M)M;222 5555 $ 0 0! (! !I 333I>> A 213GKKKKY x& 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%*]__ !& !&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.  .Wp/ p/ p/ p/ p/ p/ p/ p/b 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? 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...ap/ p/ p/ p/ p/ p/ p/ p/ p/ p/ p/ p/ p/ p/ p/f '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z"F?1+F(F?(F,,F?/F,0F?3z?G	zG	Bz(JzJ	zJ	Dz#P 2+O)P )O--P 0O-1P 4z P	zP	B4z<U&A8UU&UU&UU&z&U*	*z-U*	.G3z"Cg'6ag'a	g'a	9g'b)g')b-	-g'0b-	1 g'd1 .dd1dd1!d"d1%g'1d5	5g'8d5	9"g'e4(g'4e8	8g';e8	<6g'25z'6h:z$Az5mA/l?3m?mmmm
zm	zm	E7zw* w#t	<wtwtw-v<	<Av%v<	%v))v<	,v)-v<	0w<w  ww ww*ww*ww*z*w.	.z1w.	2Bzz	z	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                 R     j         j        j                                        dS )N)r  r   r  )rz  r   r]  )r   r  t_descs   r6   r   z(MetaConverter.__call__.<locals>.<lambda>p  s'    $(N$5 )$kkmm% % r8   r   T) r  r5   rJ   r|   r   r   is_quantizedrx   rz   rl   rw  rR  rv  	overridesis_tensor_likerz  r~   r$   r@  	ExitStackenter_context	_dispatchpythonsuspend_functionalizationr"   r   r   r   r  r   r  rW  )r   r/   r  r  r  r  r   r  
exit_stackstr   re  s   `   `      @r6   r<  zMetaConverter.__call__4  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  ra  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:/ / / / [/ * * * [*K0 K0 K0 K0` )-\
 =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   r@  r`  r  	threadingr  rr  abcr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   typing_extensionsr   r   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)   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_commonr2  rW   r8   r6   <module>r     sZ   " " " " " "                         = = = = = = = = ! ! ! ! ! !                        M L L L L L L L L L L L L L  + + + + + +                          < ; ; ; ; ; + + + + + + / / / / / / F F F F F F 0 0 0 0 0 0  
P))))))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 O O O O O O O Od $
 
 
 
 
 
 
 
 $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      E E E E EGH% E E EP$ $ # # # # # # #r8   