
    קgt)                   V   U d dl m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	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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(m)Z) d dl*m+Z+ erd dlm,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 eZ4d Z5d Z6d Z7dddd-dZ8d Z9d Z:d Z;d Z<e=Z>de?d<   e=Z@de?d <   d aA G d! d"          ZB ed#$           G d% d&                      ZC ed#$           G d' d(                      ZDd) ZEd* ZF G d+ d,          ZGd dlHmIZJ dS ).    )annotationsN)	dataclass)AnyCallableClassVarContextManagerDictListOptionalTupleTypeTYPE_CHECKINGUnion)	TypeAlias)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)trace_structured)no_dispatch)is_traceable_wrapper_subclass)WeakIdKeyDictionary)CInterpreter)Source)FakeTensorMode)ShapeEnvSymbolicContextc                4    	 | j         S # t          $ r Y dS w xY w)NF)is_leafRuntimeErrorts    X/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_subclasses/meta_utils.pysafe_is_leafr,   ;   s1    y   uus   	 
c                    t          j                    5  t          j        dd           | j        cd d d            S # 1 swxY w Y   d S )NignorezThe .grad attribute of a Tensor)warningscatch_warningsfilterwarningsgradr)   s    r+   	safe_gradr3   C   s    		 	"	"  *KLLLv                 s   =AAc                0    | |k    sJ |  d|             d S )Nz !=  )abs     r+   	assert_eqr8   I   s#    666a==Q==66666    Fskip_symbolic	skip_leafm1#Union[MetaTensorDesc, torch.Tensor]m2torch.Tensorc                    t          |t          j                  r!t                                          |          } fd ||          S )Nc                J    | j         |j                    s | j        |j                    | j        |j                   s | j        |j                    | j        |j                    | j        |                                            | 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                   d S d S N)dtypeshaperequires_gradr'   	is_sparseis_inferenceis_conjis_negr2   r3   layout	dense_dim
sparse_dimis_coalescedis_sparse_compressedstridestorage_offsetis_view_is_viewbase_base)r=   r?   r8   gor<   r;   s     r+   rV   zassert_metadata_eq.<locals>.goX   s   	"(BH%%% 	*Ibh)))	""B$4555 	.Ibj"*--- 		",---	"/2??#4#4555	"*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 &27BH%%%%%& &r9   )
isinstancetorchTensorMetaTensorDescriberdescribe_tensor)r8   r=   r?   r;   r<   rV   s   `  ``@r+   assert_metadata_eqr\   M   sp     "el## 7 ""22266!& !& !& !& !& !& !& !&L 2b"::r9   c                \    t          | t          j                  o| j        t          j        u S rC   )rW   rX   rY   rK   
sparse_coor)   s    r+   is_sparse_coor_      s#    a&&G18u7G+GGr9   c                b    | t           j        t           j        t           j        t           j        hv S rC   )rX   
sparse_csr
sparse_csc
sparse_bsr
sparse_bsc)rK   s    r+   is_sparse_compressed_layoutre      s,    	  r9   c                ^    t          | t          j                  ot          | j                  S rC   )rW   rX   rY   re   rK   r)   s    r+   rO   rO      s$    a&&P+Fqx+P+PPr9   c                >    t          |           pt          |           S rC   )r_   rO   r)   s    r+   is_sparse_anyrh      s    63A666r9   r   MetaStorageIdMetaTensorIdc                  L    e Zd ZdZdddZddZdd
ZddddZdddddZdS )rZ   a  
    Given a Tensor/Storage, generate a MetaTensorDesc/MetaStorageDesc
    for it, which is enough information to reconstruct a meta tensor/fake tensor
    corresponding to a Tensor as faithfully as possible.

    This is a stateful conversion object because we keep track of the IDs
    of the tensors/storages passed to us, so we can consistently give
    the same ID when we see the same tensor/storage.
    F	copy_datac                   t           | _        t           dz  a d| _        d| _        t	                      | _        t	                      | _        || _        t                      | _	        t                      | _
        d S )N   r   )DESCRIBER_NEXT_IDidnext_tensor_idnext_storage_idr    lookup_tensorlookup_storagerm   settraced_tensorstraced_storagesselfrm   s     r+   __init__zMetaTensorDescriber.__init__   se    #Q,-./022133"!ee"uur9   r*   r@   c                l    || j         vr| j        | j         |<   | xj        dz  c_        | j         |         S Nro   )rt   rr   rz   r*   s     r+   get_tensor_idz!MetaTensorDescriber.get_tensor_id   sB    D&&&$($7Dq!1$!!$$r9   storch.UntypedStoragec                l    || j         vr| j        | j         |<   | xj        dz  c_        | j         |         S r}   )ru   rs   rz   r   s     r+   get_storage_idz"MetaTensorDescriber.get_storage_id   sB    D'''%)%9D"  A%  "1%%r9   tracer   boolc                   t                               |          |                                 j        r|nd           |rBj         j        vr4t          d fd            j                            j                   S )N)rq   sizedatadescribe_storagec                 8                          j                  S rC   as_jsonrq   rrz   s   r+   <lambda>z6MetaTensorDescriber.describe_storage.<locals>.<lambda>       AIIdg$6$6 r9   metadata_fn)MetaStorageDescr   r   rm   rq   rx   r   add)rz   r   r   r   s   `  @r+   r   z$MetaTensorDescriber.describe_storage   s    ""1%% n.$
 
 
  	+QT!555"66666     $$QT***r9   Trecurser   r   c                   t                    }                                }j        }j        }j        }t                    }	t                    }
j        }t                    }t                    }t                    }|p|}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#} tI          d@i d %                              d	|d
&                                d|dj'        d(                                dj)        d|d|d|
d|d|d|d|d*                                d+                                dtY          t          j-        j.                  d|	d|d|v r|         j/        0                                nd d|d|dj        d1                                d |d!|d"te          tg          d#ti                                          d$j        stk                    r6                                nd d%j        stk                    r7                                nd d&j        r8                                nd d'|rIj        t          j9        t          j:        hv r*                     ;                                d()          nd d*|rIj        t          j9        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          j>        hv r*                     @                                d()          nd d-|r9tk                    r*                     A                                d()          nd d.t                    $                     t                              nd d/                                r$t          j        jC        D                              nd d0|d1|s|rt                    nd d2|rt                    nd d3|r7                                r#jG                             jG                  nd d4t          jH        jI        J                              d5jK        d6|d7|d8|d9|d:|d;|d< jL        rnd rBjM         jN        vr4t          d= fd>?            jN        P                    jM                   S )ANr   r   xlalazyzVCannot safely fakify a view because this process drops the view information right now.__tensor_flatten__c           	     \    i | ](}|                     t          |                     )S )r   )r[   getattr).0attrrz   r*   r   s     r+   
<dictcomp>z7MetaTensorDescriber.describe_tensor.<locals>.<dictcomp>.  sH        d**71d+;+;5*II  r9   )_tensor_symint_registryrq   storagerH   r'   rF   ndimrD   rG   	is_mkldnnis_functorch_wrappedr   r   r   rR   rI   rJ   is_parameterr   	is_nested
nested_intis_functionalrK   devicer   rP   rQ   dynamo_dynamic_indices_dynamo_dynamic_indicesrM   rL   rN   crow_indicesFr   col_indicesccol_indicesrow_indicesvaluesr2   creation_meta	unwrappedlevelbdimrT   	fake_mode	view_funcattrsctxtypefunctorch_stackautograd_meta_fromcurrent_levelr   r[   c                 8                          j                  S rC   r   r   s   r+   r   z5MetaTensorDescriber.describe_tensor.<locals>.<lambda>  r   r9   r   r5   )Qr,   rS   rG   rK   r   r   r   r   r   r   r   rX   _is_functional_tensorre   r   untyped_storagerQ   rP   r[   r   r   r   r(   _sync_from_functional_tensor_C$_functionalization_reapply_views_tlsr   
_functorchr   pyfunctorch#temporarily_clear_interpreter_stackhasattrr   $torch.nested._internal.nested_tensorr   MetaTensorDescr   rH   rF   dimrD   rI   rJ   rW   nn	Parameternoder   r   listr   rv   rO   rM   rL   rN   ra   rc   r   r   rb   rd   r   r   r   r3   	_autograd_get_creation_metar   r   rU   _subclassesfake_tensormaybe_get_fake_mode_view_func_unsaferm   rq   rw   r   r   )rz   r*   r   r   r'   rR   rG   rK   r   is_traceable_wrapper_subclass_vr   r   is_batchedtensor_vis_legacy_batchedtensor_vis_gradtrackingtensor_vis_functorch_batched_or_gradr   r   rQ   rP   r   r   r   reapply_viewsmaybe_functorch_stackr   r   type_v	raw_attrsr   r   s   `` `                          @r+   r[   z#MetaTensorDescriber.describe_tensor   s	    q//**,,K	K	*G*J*J':1==K	-a00$;A$>$>!"7":":'9'T=T$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 $ 	!-QQSS Wl               * 	12333331133NIs     %  E !WWFPPPPPP  g
 g
 g
!!!$$$g
Gg
 )))g
 G	g

 //g
 g
 ''g
  ig
  ig
  "6!5!g
" 0/#g
$ %>$=%g
& #:"9'g
( G)g
* IIKKK+g
, 88:::-g
. $Aux'9:::/g
0 +J*I1g
2  i3g
8 /// (*/::<<<;g
> (-?g
@ 6Ag
B 88Cg
D Eg
F 6Gg
H *>Ig
J $(3Lcee(T(T#U#U#UKg
N #$+R1Ea1H1HRdOg
R (){W6J16M6MWakkmmmSWSg
T ./[B)))dUg
`  xE,<e>N+OOO $$Q^^%5%5uE$RRRcg
j  xE,<e>N+OOO $$Q]]__e5$QQQmg
t  xE,<e>N+OOO $$Q^^%5%5uE$RRRwg
~  xE,<e>N+OOO $$Q]]__e5$QQQAg
H 3A66$$QXXZZe$LLLKg
R Q<<+ $$Yq\\$???Ug
Z =>JJLLR"55a888d[g
^  i_g
d &)@"""gg
j '9B"""dkg
p  zz||010C $$QWE$:::sg
v '3GGJJJwg
x ))yg
z %{g
| }g
~ g
F 21Gg
H  21Ig
J (-Kg
L n.$Mg
P  	*QT!444!66666    ##AD)))s   I--I14I1N)r*   r@   )r   r   )r   r   r   r   )r*   r@   r   r   r   r   )	__name__
__module____qualname____doc__r{   r   r   r   r[   r5   r9   r+   rZ   rZ      s          %* % % % % %% % % %& & & & JO      " 37eS S S S S S S Sr9   rZ   T)frozenc                  4    e Zd ZU ded<   ded<   ded<   d ZdS )	r   ri   rq   intr   zOptional[torch.UntypedStorage]r   c                ~    | j         |t          | j        t                    r| j        nt	          | j                  dS )N)rq   describer_idr   )rq   rW   r   r   repr)rz   r   s     r+   r   zMetaStorageDesc.as_json  s;    '(!+DIs!;!;PDIIdi
 
 	
r9   N)r   r   r   __annotations__r   r5   r9   r+   r   r     sH         III )(((
 
 
 
 
r9   r   c                     e Zd ZU 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d.ed/<   dZd.ed0<   dZ d.ed1<   dZ!d.ed2<   dZ"d.ed3<   dZ#d.ed4<   dZ$ded5<   dZ%d.ed6<   dZ&d7ed8<   dZ'd9ed:<   dZ(d.ed;<   g d<Z)d=ed><   dZ*d?ed@<   dZ+dAedB<   dZ,dCedD<   dZ-dEedF<   dZ.dedG<   dZ/dedH<   dZ0dIedJ<   dZ1dKedL<   dZ2dKedM<   dN Z3e4dO             Z5dS )Pr   rj   rq   r   r   ztorch.dtyperD   ztorch.devicer   zTuple[int, ...]r   z	List[int]r   ztorch.layoutrK   Fr   rH   r'   rF   rG   r   r   r   r   r   rR   r   NzOptional[int]r   r   r   rI   rJ   r   zOptional[Tuple[int, ...]]rP   r   rQ   zOptional[MetaStorageDesc]r   rM   rL   zOptional[bool]rN   zOptional[MetaTensorDesc]r   r   r   r   r   r   r   rT   z#Optional[Dict[str, MetaTensorDesc]]r   zOptional[CreationMeta]r   r2   )
r   r   r   r   r   r   r   r   r   r   zClassVar[List[str]]_UNSERIALIZABLEzOptional[object]r   zOptional[Type]r   zOptional[FakeTensorMode]r   znOptional[Callable[[torch.Tensor, Callable[[int], int], Callable[[torch.Tensor], torch.Tensor]], torch.Tensor]]r   r   r   zOptional[List[CInterpreter]]r   zOptional[torch.Tensor]r   r   c                     fd fdt          j                   D             }|                    d|i           |S )Nc                     dv rd S  t          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 r5   r5   )r   v1jsonks     r+   
<listcomp>z8MetaTensorDesc.as_json.<locals>.json.<locals>.<listcomp>;  s#    000Q000r9   r   c                $    i | ]\  }}||j         S r5   )rq   )r   k1r   s      r+   r   z8MetaTensorDesc.as_json.<locals>.json.<locals>.<dictcomp>A  s     :::fb"BE:::r9   )rv   r   r   r   rW   rX   r   rD   rK   SymInttupler   r   rq   r   strdictitems)r   vr   s   ` r+   r   z$MetaTensorDesc.as_json.<locals>.json/  s'    222tC67777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|::		::::Hr9   c           
         i | ]h}t          |j                  |j        u sJ|j        d k    rt          |j                  >|j         |j        t          |j                            iS r   )r   namedefault)r   fieldr   rz   s     r+   r   z*MetaTensorDesc.as_json.<locals>.<dictcomp>D  s~     

 

 

ej))U]::J":::#D%*55 ; JUZuz)B)BCC
 ;::r9   r   )dataclassesfieldsupdate)rz   r   r   r   s   `  @r+   r   zMetaTensorDesc.as_json.  ss    	 	 	 	 	*

 

 

 

 

$+D11

 

 

 	
.,/000r9   c                    | j         S rC   )r   rz   s    r+   rE   zMetaTensorDesc.shapeR  s
    yr9   )6r   r   r   r   rX   stridedrK   rH   r'   rF   rG   r   r   r   r   r   rR   r   r   r   r   rI   rJ   r   rP   rQ   r   rM   rL   rN   r   r   r   r   r   r   r   rT   r   r   r2   r   r   r   r   r   r   r   r   r   r   r   propertyrE   r5   r9   r+   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.... 	  	 	 	 	  E#'M''''48O8888155555
 $(D''''" " "H   X  r9   r   c                j    t          |          t          j        urd S |                     |           d S rC   )r   rX   rY   copy_)dstsrcs     r+   
_safe_copyr  c  s-    Cyy$$IIcNNNNNr9   c                d    t          |           t          j        urd S |                                 S rC   )r   rX   rY   clone)r  s    r+   _safe_cloner  i  s(    Cyy$$t99;;r9   c                  v    e Zd ZddddZd Zdd	Zdd
ZddZddZddZ	dd ddfd dZ
	 d!d dddddZdS )"MetaConverterFrl   rm   r   c                   t          j                    | _        t          j                    | _        d| _        d| _        d | _        d| _        || _        t          |          | _
        d S )Nr   rl   )weakrefWeakValueDictionarystorage_memotensor_memohitmissdel_hookarg_cntrm   rZ   	describerry   s     r+   r{   zMetaConverter.__init__w  sb    9@9T9V9V 9@8S8U8U	
 #,yAAAr9   c                .    | j         dk    o
| j        dk    S )Nr   )r  r  r  s    r+   
successfulzMetaConverter.successful  s    x!|.	Q.r9   r*   r   c                B    | j                             |j        d           S rC   )r  getrq   r~   s     r+   get_tensor_memozMetaConverter.get_tensor_memo  s    ##AD$///r9   c                $    || j         |j        <   d S rC   )r  rq   )rz   r*   r   s      r+   set_tensor_memozMetaConverter.set_tensor_memo  s    !"r9   r   r   c                B    | j                             |j        d           S rC   )r  r   rq   r   s     r+   get_storage_memozMetaConverter.get_storage_memo  s     $$QT4000r9   c                $    || j         |j        <   d S rC   )r  rq   )rz   r   r   s      r+   set_storage_memozMetaConverter.set_storage_memo  s    "#!$r9   c                   |                                 |fd                                          }| j        rxt          j                    5  t                      5  j        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 |                                S )Nc                 P    t          j         j        t           j        d          S NmetarD   r   )rX   emptyr   uint8)r   s   r+   r   z,MetaConverter.meta_storage.<locals>.<lambda>  s    AF%+fMMM r9   )
r%  r   rm   rX   no_gradr   r   r  real_storager'  )rz   r   callbackr_ss    `  r+   meta_storagezMetaConverter.meta_storage  sb      ##+(MMMM o  ~ 6 ]__ 6 6kmm 6 66---'(v||~~C$6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 !!!S)))J((+++s6   B+ (BB+B	B+B	B++B/2B/Nc                     |             S rC   r5   r)   s    r+   r   zMetaConverter.<lambda>      1133 r9   	shape_envOptional[ShapeEnv]sourceOptional[Source]symbolic_contextOptional[SymbolicContext]c                    !"#$%&'( &ddl m}  |dt           j                             t          j                                                            t          j        j        j	                  rJ  j
        } xj
        dz  c_
        t          j        %j        %fd.fd	(fd/(fd}fd0 fd#d0!fd!fd1!#% (fd}	                               ;dt	          j        j                  5  j        r4j        }
 fd          } j        rsj        J t	          j                    5  t-                      5  t/          j                  |_        d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t3          |          s
J d            |                    j                   j        rd|_        j        r[|
sY|                                }t	          j                    5  |                    j                   d d d            n# 1 swxY w Y   
nt?          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)        j*        $nj+        J j+        j*        $ "$fd          } j        rsj        J t	          j                    5  t-                      5  t/          j                  |_        d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t3          |          s
J d            j        rd|_        j        r/|
s-t	          j        j,        -                    dd          |          }nщj.        rj/        sddl0m1}  |d           nj2        rDj        }
 (          \  &'} &'fd          } j        rt	          j                    5  t-                      5  j3        J j4        J t	          j5        j3        j4        j*        j6                  |_        j        J to          |j        j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t3          |          s
J d            j        rd|_        j        r/|
s-t	          j        j,        -                    dd          |          }ndj8        r1j9        rddl0m1}  |d           d0  fd             }n,j:        roj6        j;        dvraj<        J j8        rJ  =                    j<                   }t	          j>        |          }t	          j?        j@        |           nj9        r.jA        J d }r(&dd!lBmC} t          |          sJ jE        jE        } =                    jA        t          jF        jG        H                    d"          |#          }d$ }t          j        I                    t          j        j        jJ                  }t          j        K                    t          j        j        jJ        d%           	 |j*        j*        k    rnp ||j*        j*                  rt	          jL        |          }nE |j*        |j*                  rt	          jM        |          }n|N                    j*                  }j        rDt	          j                    5   |	|          }d d d            n# 1 swxY w Y   j        |_        nމjA        j        j        k    r8t	          j                    5   |	|          }d d d            n# 1 swxY w Y   nj        sJ t	          j                    5  |N                    |j'                  }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   jO        J t          j        jP        Q                    |jO                   t          j        K                    t          j        j        jJ        |           n# t          j        K                    t          j        j        jJ        |           w xY wj        }
jR        sjS        sj8        sjT        rt          cd d d            S  (          \  &'}j/        r #&'&          }n &'fd'          } j        rt	          j                    5  t-                      5  j3        J j4        J t	          j5        j3        j4        j*        j6                  |_        to          |j        j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t3          |          s
J d            j        r;j        |_        |
s-t	          j        j,        -                    dd          |          }jV        }|J |jW         jX        vr|j.        s0|4                                'k    ry|Y                                |k    ra Z                    ||[                                            j        r0|j        [                                |[                                _\        nR ]                    |(          }t          j                    }dd)l^m_}m`}  ||          }| ||          }t	          j                    5   %            5  |5  |a                    ||&'           d d d            n# 1 swxY w Y    j        rt	          j                    5  t-                      5  |j        a                    |j\        jY        j3        j4                   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   jb        4dd*l mH}  =                    jb         |d+          #          |_b        t          j        c                    |jd                   t          j        e                    |jf                   d d d            n# 1 swxY w Y   jS        o
jg        k    }t          t          |d|,           jV        7jV        j3        dk    r'|[                                j                    d           jk        rd|_l        jm        %|jn        o                    jm        -          |_p         q                    |                                          S )2Nr   )ConstantSource__meta_utils_unknown_tensorro   r*   r   return,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             ||          S  j         j          j        fS )Nc              3  B   K   | ]}                     |          V  d S rC   #_maybe_specialize_sym_int_with_hint)r   szr6  s     r+   	<genexpr>zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  sE       # # "EEbII# # # # # #r9   c              3  B   K   | ]}                     |          V  d S rC   rC  )r   sdr6  s     r+   rF  zVMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<genexpr>  sE       % % "EEbII% % % % % %r9   c                "    g | ]}|j         v S r5   r   )r   dr*   s     r+   r   zWMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset.<locals>.<listcomp>   s!    NNN1a66NNNr9   )r:  )
rP   r   r6  r   rQ   r   rD  -_create_symbolic_sizes_strides_storage_offsetranger   )r*   r  r:  r   t_sizet_stridet_storage_offsetr6  s   `      r+    sym_sizes_strides_storage_offsetzCMetaConverter.meta_tensor.<locals>.sym_sizes_strides_storage_offset  s>    8'''$K	(Y-@I-M-M FAHa.>?? # # # # #"#&# # #  F  % % % % %"#(% % %    H (1'T'T(( ($ %RR (NNNNafNNN)9 S    !*:;;r9   inner_tc                `     | ||          \  }}}t          j        ||| j        d          S r*  rX   empty_stridedrD   )rQ  	inner_srcr:  inner_sizesinner_stridesinner_storage_offsetrP  s         r+   empty_createz/MetaConverter.meta_tensor.<locals>.empty_create  sN     10)EUVV	$&m	   r9   c                  	 ddl m ddlm} | j        J | j        J ||n| j        }||n| j        }|t          ||          sJ 	
fd	 	| |||||          }|j	        |k    sJ d| j         d| d|j	                     |                                |k    s*J d| j         d| d|                                             |S )	Nr   
AttrSource)SubclassSymbolicContextc           	     D   | j                             | |||          S i }| j                                         D ]A\  }}d }	||j        |         }	 ||          }
 ||j        |j        |	||
          }|||<   B| j                            || j        ||          S )Nr6  r1  r8  r:  )	r   meta_tensorr   inner_contextsr   rP   r   __tensor_unflatten__r   )r*   
outer_sizeouter_strider:  r1  r8  inner_tensorsr   meta_tensor_desccurrent_contextcurrent_sourcenew_empty_tensorr\  _empty_create_subclassrz   r6  s               r+   rj  zXMetaConverter.meta_tensor.<locals>.empty_create_subclass.<locals>._empty_create_subclass8  s    
 7?++"+!)%)9 ,    !#./gmmoo ; ;*D*&*O'3*:*I$*O%/Z%=%=N'='=((-(/' &( ($ +;M$''v22!15*l  r9   zExpected return value from z.__tensor_unflatten__() to have shape equal to z, but got: z/__tensor_unflatten__() to have stride equal to )
torch._dynamo.sourcer\  %torch.fx.experimental.symbolic_shapesr]  r   r   r   rP   rW   rE   )r*   rc  rd  r:  r1  r8  r]  subr\  rj  rz   r6  s           @@r+   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+++! ! ! ! ! ! ! !F )(:|-=x C 9
***Eaf E E",E E9<E E +** ::<<<///Kaf K K#/K K<?JJLLK K 0//
 Jr9   c                   ddl m} ddlm}m}m} d }| j        r&| j        J  | j         ||d          ||          }|j        g| j	        z  }	| j
        rv| j        J i }
| j                                        D ]7\  }}t          |t                    sJ  | |||          ||          |
|<   8 ||	d g| j	        z  |
||          }n ||	d g| j	        z  |          }|S )Nr   r[  )
DimDynamicStatelessSymbolicContextr]  rU   )dynamic_sizesconstraint_sizesra  tensor_sourceview_base_context)rr  rs  ru  )rk  r\  rl  rp  rq  r]  rR   rT   DYNAMICr   r   r   r   rW   r   )r*   r8  r6  r1  r\  rp  rq  r]  ru  t_dynamic_sizesra  r   innert_symbolic_contextall_dynamic_symbolic_contexts                 r+   rz  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& & &" &%r9   rT   r@   c                B    ||          \  }}}|j         sHt          |           s9             5  |                     |||          cd d d            S # 1 swxY w Y   ddlm ddlmm} fd}i |j         r_|j        J |j        J  |||          }	|		                                \  }
}|
D ]%}t          |	|          |j        |         j        <   &fd	fd}|j        J |                    | ||          }	t          j         ||	                                |                     t          j         ||	                                |                     t          j         ||	                                |                     |	S )
Nr   )EphemeralSource)rq  sym_eqc                    ddl m d uo/t                    ot          fdj        D                       }|s| S  d          }                    | |d           }                    || |          S )Nr   )rp  c              3  *   K   | ]}|j         u V  d S rC   )STATIC)r   xrp  s     r+   rF  z_MetaConverter.meta_tensor.<locals>.view_from_base.<locals>.symint_visitor_fn.<locals>.<genexpr>  s<        34Z..     r9   symint_visitor_fn)positive)hintr8  )rl  rp  rW   allrr  create_symbolcreate_symintnode)	r   all_static_sizes
sym_sourcesymbolrp  r|  rq  r6  r:  s	       @r+   r  zLMetaConverter.meta_tensor.<locals>.view_from_base.<locals>.symint_visitor_fn  s    LLLLLL %D0 "#35MNN    8H8V     ! $ y'8H -_-@AA
"00J0NN 226*2UUUr9   rc  rd  	visited_tr@   c                
   | d S 
j                             |           }	                    |d           }||S 
j                             |           } d          }
                    |||| ||||                    S )Ntensor_visitor_fnr8  r:  )r  r   r   r[   r`  )r  r6  r1  
visited_idfake_visited_tvisited_desctemp_sourcer|  rz  real_to_fake_mappingrz   s          r+   r  zLMetaConverter.meta_tensor.<locals>.view_from_base.<locals>.tensor_visitor_fn  s     $4 "^99)DD
!5!9!9*d!K!K!-))#~==iHH .o.ABB'' &%A%A$k9h& & (   r9   )r  r@   )r   
as_stridedrk  r|  rl  rq  r}  r   r   r   r   rq   r   rX   _checkr   rP   rQ   )rT   r*   r8  r6  sizesstridesrQ   r}  r  fake_tr   _r   r  r|  rq  r  rz  r1  rn  maybe_suppressrz   rP  r:  s      `          @@@r+   view_from_basez1MetaConverter.meta_tensor.<locals>.view_from_base  s    0P/O60 0,UG^ 3K5d;;K $^%% K K??5'>JJK K K K K K K K K K K K K K K K =<<<<<       
V V V V V V V V6 $& . Sw*** v))) /.%g   "4466q! S SD=DVT=R=R()9:: $!% % % % % % % % % %R ;*** [['8:KLLF
 Lu55666L99:::L 5 5 7 7HHIIIMs   AA!Ac                     t           j        j                             j         j         j         j        t           j        d          S )Nr+  )rD   rK   r   )	rX   opsaten_sparse_coo_tensor_with_dimsrM   rL   r   rD   r^   r)   s   r+   r   z+MetaConverter.meta_tensor.<locals>.<lambda>D  s>    	 K KLKF"#'#(#3#) !L ! ! r9   z)the callback you passed in doesn't detachT   r5   c            
         t           j        j                            dj        j         j        j        d          S )Nr   r+  )rK   rD   r   )rX   r  r  #_sparse_compressed_tensor_with_dimsrL   rE   rK   rD   )	blocksizeindex_dtyper*   s   r+   r   z+MetaConverter.meta_tensor.<locals>.<lambda>v  sA    	 R RKG%'#$8"#'#) !S 	! 	! r9   9Internal error: Tried to backward() through example input)unimplementedz;strided nested tensors are not supported by meta conversionc                 >    t          j         j        d          S r*  rS  r  r  r*   s   r+   r   z+MetaConverter.meta_tensor.<locals>.<lambda>  s$     3!7!'&! ! ! r9   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   nR 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|}nft          j        j                             j                  5  t          j        j                            ||          }d d d            n# 1 swxY w Y    j        } j        rt!          |          r	d|_        nY j        r/|s-t	          j        j                            dd          |          }n! j        rG 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 )NTr  ro   r_  c                 >    t          j         j        d          S r*  rS  r  s   r+   r   zDMetaConverter.meta_tensor.<locals>._to_fake_tensor.<locals>.<lambda>  s'    (;$)$+*+'+1	)" )" )" r9   r,  )"r   r   r   r   rX   r   r   %temporarily_restore_interpreter_stackr   r   r   r   _DisableFuncTorch_wrap_for_gradr'   rF   r,   
_functionsDelayedErrorr   r   r`  r   rP   r   rm   r/  r   rT  rD   r   real_tensorr   r  )r*   ftlvlr   r   disable_functorchr'   r  r  GRAD_TENSOR_SENTINEL_VALUE_to_fake_tensorr1  rz   r6  r8  r:  s   `      @@r+   r  z2MetaConverter.meta_tensor.<locals>._to_fake_tensor  s    - NF#$;#:#:#:#$7#6#6#6#$6#5#5#5!0!=!=B"#'C#$6D
 "'!1!=!c!c ! 1" " B B %32tS$A$AB B B B B B B B B B B B B B B 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&" &" !T !T ).(;(J(J2s(S(SA!T !T !T !T !T !T !T !T !T !T !T !T !T !T !T
 '(iG  "<?? "26!" " "$)H$7$D$D$_$%%" %" %&	%" %" _ &F#$;#:#:#:#$?#>#>#>!%!1!1 !*3)1
 (.1A "2 
" 
"B !8AO L LAA $%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++C/2C//&E!!E%(E%K (AK	=K 	K	K K	K  K$'K$r   r_  )rq  rU   r  c                Z    t          j        |           ot          j        |           |k    S rC   )utilsis_complex_dtypecorresponding_real_dtype)complex_dtype
real_dtypes     r+   	is_c_of_rz,MetaConverter.meta_tensor.<locals>.is_c_of_r>  s0    !2=AA * % >} M M)!*r9   Fr  c                 >    t          j         j        d          S r*  rS  r  s   r+   r   z+MetaConverter.meta_tensor.<locals>.<lambda>  s'    E$7 % '&'g'-	% % % r9   )r1  )in_kernel_invocation_managerr   r[  r2   r:   )nt_tensor_id)r*   r   r?  r@  )rQ  r   r*   r   )rT   r@   r*   r   )rrk  r=  lenr  rX   r   _dispatch_tls_local_exclude_sethasDispatchKeyPythonr  
contextlibnullcontextsuppress_guardsr!  inference_moderH   rG   r'   rm   r   r/  r   r  r  r,   _coalesced_rN   rF   r  enable_gradre   rK   rc   rd   rM   rL   r   r   rE   ra   r   rD   r   r  r  r   r   torch._dynamo.excr  r   r   rP   rT  r   r  r   rR   r   r   r   r`  _to_functional_tensor_mirror_autograd_meta_tor   rT   rl  rq  rW   ru  _dynamor8  r\  &_dispatch_tls_is_dispatch_key_excludedADInplaceOrView'_dispatch_tls_set_dispatch_key_excludedview_as_realview_as_complexviewr   r   _set_creation_metar   r   r   NotImplementedr   rq   r  rQ   r'  r   r0  r3  torch._subclasses.fake_tensorr  r   set_r2   	_set_conjrI   _set_negrJ   r   r\   r8   resize_r   	_is_paramr   r   create_symbolic_nested_intnested_int_memor#  ))rz   r*   r6  r1  r8  r:  r=  r  rY  r  r'   r   	batch_dimr  _storage_offsetr   base_symbolic_contextrq  rT   r  old_excludemidrQ   r   r2  maybe_fake_mgrr  r   mb_fake_moder\  r<   r  r  rz  r  rn  r  r  r  r  rP  s)   ``````                         @@@@@@@@@@r+   r`  zMetaConverter.meta_tensor  sM    >;;;;;; $^Ec$2B.C.CEE F 8;;==AAH '
 
 	
 	
 	
 ,4 -7,B &6N 6F 	<  	<  	<  	<  	<  	<  	<F BR	 	 	 	 	 	 	* .S	 S	 S	 S	 S	 S	 S	 S	r)	& )	& )	& )	& )	& )	&R ;AI~	 ~	 ~	 ~	 ~	 ~	 ~	 ~	 ~	 ~	 ~	 ~	 ~	@ ""*)+&%an55 _/ _/; O&iG
 !   	 	A ~ @ v111"]__ @ @kmm @ @,7,?,?AM@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @'??WW,WWWW MM!.111 /*. :w :
 GGII".00 : :MM!.999: : : : : : : : : : : : : : :0:: i&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 @ @,7,?,?AM@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @'??WW,WWWW /*. w !H/<<W    [ ~&)H ~& @?????!MU    [ u&iG6V6V67 73E7O
 !      A
 ~ >"]__ > >kmm > >#$6#5#5#5#$8#7#7#7,1,? !- - -AM $%6#5#5#5&q}af===> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > (??WW,WWWW /*. w !H/<<W    + X&y CCCCCC%Y  R! R! R! R! R! R! R! R! R! R! R! R!h (**AA_ x&o)M)M;222 5555 $ 0 0"+!)%)9 !1 ! !I 3I>>A213GKKKKY k& 6---,0)  
W%5%A       **:<TUUUUU ,=I4D4V1++! $}3>>vwOO)> ,  D   #(("Q"Q,<# #K HDD,<e  A:00 &Ytz17;; 6#(#5d#;#;DD&Yqw
;; 6#(#8#>#>DD
 $(99QW#5#5D& 9 ? "' < <$2N4$;$;< < < < < < < < < < < < < < < /0oAOO v3qFF%*%6%8%8 !@ !@(6tQ(?(?A!@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ () 6 6 6%*]__ !@ !@*.))DJ*?*?C!@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@ !@45O 1%*%6%8%8 !? !?(6sA(>(>A!? !? !? !? !? !? !? !? !? !? !? !? !? !? !?
  !:::*==aQQQHH!H0@+   HH!H0@+   
  iG /.343J.2. 2.  .
_/ _/ _/ _/ _/ _/ _/ _/J 98FDTUU	&
 6 B11%g   %H        > B!& B B+-- B B'(v'9'9'9'(x';';';050C$%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 !*+/& ! !& 3 @ @ [ !! !  !! !!A
 	A===t4#444 5 HHJJ'11 ! 0 0 2 2n D D --a1B1B1D1DEEE>  ! = = ? ? --//< #//H/EE* @J?U?W?W       
 (;':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 !& !&$%M$6$6(+(8()(8()()	%& %& %&!& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !& !&	
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 6%?????? "--! )z&&99)9 .  AF ""1ai000!!!QX..._/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/D 'QAG7Q,Q  y!QdiXXXX y$1)<)<!!##++A...~ #" |'$%K$J$J!" %K % %!   A&&&##A&&&s  Au)FF7FFF
FFu)F	u)!F	"A4u)H=1u)=I	u)I	Du)N N:NN

NN
Nu)N!	!u)$N!	%Cu)1T
 A'S3'T
3S77T
:S7;T
>u)
T	u)T	G9u)Bd'_ 4d _	d_	8d `d`	d `	! da(d(a,	,d/a,	0"db+d+b/	/d2b/	36d)6u)6e,u)Au)i/.Aii/ii/i i/#u)/i3	3u)6i3	7E,u)#s.r61p	
r6pr6pr6;r	
2r<r	rr	rr	r6r##r6&r#'r6*s6r::s=r:>su)s	u)s	Bu))u-0u-c                     |             S rC   r5   r)   s    r+   r   zMetaConverter.<lambda>9  r5  r9   T)r1  r8  r:  r   c                  
 t          |t          j                  rf|j        j        dk    s.|j        s'|                                r*|j        #|j        j        r xj	        dz  c_	        t          S  xj        dz  c_        n8t          j                            |          r xj	        dz  c_	        t          S |S d} j                            ||          
|rt!          d 
fd           t#          j                    5 }|                    t          j        j                                                   t/                      }|6|                    t          j        j                                                                        
|||          }	d d d            n# 1 swxY w Y   t	          |          t          j        j        u rd	|	_        |	S )
Nr   ro   Fr   describe_sourcec                 R     j         j        j                                        dS )N)r   rq   r8  )r  rq   r   )rz   r8  t_descs   r+   r   z(MetaConverter.__call__.<locals>.<lambda>j  s'    $(N$5 )$kkmm% % r9   r   r_  T)rW   rX   rY   r   r   is_quantizedrS   rU   rG   r  r  r  	overridesis_tensor_liker  r[   r   r  	ExitStackenter_context	_dispatchpythonsuspend_functionalizationr   r   r   r   r`  r   r   r  )rz   r*   r6  r1  r8  r:  r   
exit_stackstr   r  s   `   `     @r+   __call__zMetaConverter.__call__4  s6   $ 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     #!!1 !  A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  77eh((( AK s   BF**F.1F.)rm   r   r  )r   r   )r*   r   r6  r7  r8  r9  r:  r;  rC   )r   r   r   r{   r  r!  r#  r%  r'  r3  r`  r  r5   r9   r+   r  r  v  s       ,1 B B B B B B"/ / /0 0 0 0# # # #1 1 1 1$ $ $ $, , , ,6 )-#'6:C' C' C' C' C'P V
  V V V V V V Vr9   r  )r=   r>   r?   r@   )K
__future__r   r  r  r/   r  r   typingr   r   r   r   r	   r
   r   r   r   r   r   typing_extensionsr   rX   torch._C._autogradr   torch._C._functorchr   r   r   r   r   r   r   r   r   r   r   torch._loggingr   torch.utils._mode_utilsr   torch.utils._python_dispatchr   torch.utils.weakr    r!   torch._guardsr"   r  r#   rl  r$   r%   DimListr,   r3   r8   r\   r_   re   rO   rh   r   ri   r   rj   rp   rZ   r   r   r  r  r  torch._prims_common_prims_commonr  r5   r9   r+   <module>r     s   " " " " " " "           ! ! ! ! ! !                          ( ' ' ' ' '  + + + + + +                          , + + + + + / / / / / / F F F F F F 0 0 0 0 0 0  	P000000$$$$$$ =<<<<< POOOOOOO
    ! ! ! 1 1 1 1 1 1hH H H  Q Q Q7 7 7
           H H H H H H H HV $
 
 
 
 
 
 
 
 $Z Z Z Z Z Z Z ZR    T T T T T T T Tn  $ # # # # # # #r9   