
    [Th                     n   S SK r S SKrS SKrS SKrS SKJrJr  S SKrS SKrS SK	rS SK
Jr  S SKJr  S SKJrJrJrJrJr  S SKJrJrJrJrJrJr  S SKJr  S SKJr  \R>                  R@                  r!/ S	Qr"0 r#/ r$\RJ                  RL                  RN                  r'S
 r(S r)\(" \'RT                  RV                  \'RT                  RX                  \'RZ                  RV                  \'RZ                  RX                  \'R\                  RV                  \'R\                  RX                  \'R^                  RV                  \'R^                  RX                  \'R`                  RV                  \'R`                  RX                  \'Rb                  RV                  \'Rb                  RX                  \'Rb                  Rd                  \'Rb                  Rf                  \'Rh                  RV                  \'Rh                  RX                  \'Rj                  RV                  \'Rj                  RX                  \'Rl                  RV                  \'Rl                  RX                  \'Rn                  RV                  \'Rn                  RX                  \'Rp                  RV                  \'Rp                  RX                  \'Rr                  RV                  \'Rr                  RX                  5      r:\(" \'Rv                  RV                  \'Rx                  RV                  \'Rx                  RX                  \'Rz                  RV                  \'R|                  R~                  \'R|                  R                  \'R                  RV                  \'R                  RV                  \'R                  RX                  \'R                  RV                  \'R                  RX                  5      rD\'R                  4rFS rG\ R                  " S5      S\4S j5       rIS\\\/\J4   \4   4S jrKS rLS rM\K" \#R                  5      S 5       rO\K" \I5      \K" / \:Q5      S 5       5       rP\K" \'R                  RV                  5      S 5       rQ\K" \'R|                  R                  5      \K" \'R|                  R~                  5      S 5       5       rRS rS\K" \S5      S 5       rT\K" \'R                  RV                  5      S 5       rU\K" \'R                  RV                  5      S 5       rV\K" S 5      S 5       rW   SCSS.S jjrX\K" \'R                  RV                  5       SCS  j5       rZ\K" \'R                  RV                  5       SCS! j5       r[\K" \'R                  RV                  5      SDS" j5       r]\K" \'R                  R                  5      SES# j5       r`\K" \RL                  RN                  R                  RV                  5      \K" \RL                  RN                  R                  RV                  5      S$ 5       5       rc\K" \RL                  RN                  R                  RV                  5      S% 5       rd\K" \RL                  RN                  R                  RV                  5      S& 5       re\K" \RL                  RN                  R                  RV                  5      SES' j5       rf\K" \RL                  RN                  R                  RV                  5      S( 5       rg\K" S) 5      S* 5       rhS+ riS, rj\(" S-S.S/5      rkS0 rlS1 rm\K" S2 5      S3 5       rn\K" \'R                  R                  5      S4 5       rp\K" \'R                  RV                  5      S5 5       rr\K" \'R                  RV                  5      \K" \'R                  RV                  5      \K" \'R                  RV                  5      \K" \'R                  RV                  5      S6 5       5       5       5       rw\K" \'R                  RX                  5      \K" \'R                  RX                  5      S7 5       5       rx\K" \'R                  RV                  5      \K" \'R                  RV                  5      S8 5       5       r{\K" \'Rx                  RV                  5      \K" \'Rx                  RX                  5      \K" \'R                  RV                  5      \K" \'R                  RV                  5      S9 5       5       5       5       r~\K" \D V s/ s Hv  n U \'R                  RV                  \'R|                  R~                  \'R|                  R                  \'Rx                  RV                  \'Rx                  RX                  4;  d  Mt  U PMx     sn 5      S: 5       r\K" \'GR                   RV                  \'GR                  RV                  /5      S; 5       r\K" \RL                  RN                  GR                  RV                  5      SFS< j5       r\K" \RL                  RN                  GR                  RV                  5      S= 5       r0 rS\4S> jrS? rS@ rSA r\ R                  " S5      SB 5       rgs  sn f )G    N)CallableUnion)no_python_dispatcher)
OpOverload)elementwise_dtypesELEMENTWISE_TYPE_PROMOTION_KINDis_boolean_dtypeis_float_dtypeis_integer_dtype)DataDependentOutputExceptionDynamicOutputShapeException
FakeTensorin_kernel_invocation_managerrun_fallback_kernelUnsupportedOperatorException)normalize_functioncount_label)op_implementations_checksget_fast_op_implsstride_incorrect_ophas_metac                  .    [         R                  U S5      $ )NT)dictfromkeys)itemss    T/var/www/auris/envauris/lib/python3.13/site-packages/torch/_subclasses/fake_impls.pyordered_setr   1   s    ==%%    c                      U R                   S:g  $ )Nhpu)typedevices    r   is_noncontiguous_supportedr%   7   s    ;;%r   c                     [         R                  R                  R                  5       nU R	                  U5      =(       d     [        S U R                  5        5       5      $ )Nc              3   8   #    U  H  n[        U5      v   M     g 7fN)contains_tensor_types).0es     r   	<genexpr>(contains_tensor_types.<locals>.<genexpr>m   s      0*?Qa  *?s   )torch_C
TensorTypegetisSubtypeOfanycontainedTypes)r"   tensor_types     r   r)   r)   k   sO    ((%%))+KK( C 0*.*=*=*?0 - r   funcc                 L   [        U [        5      (       d   eU R                  n[        S UR                   5       5      (       a  g[        UR                  5      S:H  =(       aA    UR                  S   R                  [        R                  R                  R                  5       L $ )Nc              3   L   #    U  H  n[        UR                  5      v   M     g 7fr(   )r)   r"   )r*   args     r   r,   )_is_tensor_constructor.<locals>.<genexpr>v   s     
G6Fs **6Fs   "$F   r   )
isinstancer   _schemar3   	argumentslenreturnsr"   r.   r/   r0   r1   )r6   schemas     r   _is_tensor_constructorrB   r   s|    dJ''''\\F

Gf6F6F
GGG 	FNNq XV^^A%6%;%;uxx?R?R?V?V?X%Xr   run_impl_checkc                    ^  U 4S jnU$ )Nc                 0  > [        T[        5      (       a  T[        ;  d
   ST 35       eU [        T'   U $ [        T[        [        45      (       a  T H  n[        U5      " U 5        M     U $ [        T5      (       d   e[        R                  TU 45        U $ )Nzduplicate registration: )	r<   r   op_implementations_dictlisttupleregister_op_implcallabler   append)op_imploprC   s     r   impl_decorator(register_op_impl.<locals>.impl_decorator   s    nj11&==;).)9:;=6=#N3  u66$ $W- %  N++++%,,ng-FGr    )rC   rN   s   ` r   rI   rI   ~   s     r   c                     U [         ;   $ r(   rF   rM   s    r   _is_op_registered_to_fake_rulerT      s    (((r   c                 |    U [         ;   a  [         U 	 [         H!  u  pXL d  M  [        R                  X45          g    g r(   )rF   r   remove)rM   checkimpls      r   _deregister_op_implrY      s7    	$$#B'0;%,,e]; 1r   c                 (    [         U   " X/UQ70 UD6$ r(   rR   	fake_moder6   argskwargss       r   #dispatch_to_op_implementations_dictr_      s    "4(J4J6JJr   c                    U[         ;  d   e[        XUSS9u  pESU;   a  [        S5      eU[        ;   a"  US   R                  nUR                  S5      4nO[        R                  " S5      nSnUR                  SS 5      nUb  UOUn[        R                  " S	5      US'   [        U 5         U" U0 UD6nS S S 5        [        U WU5      $ ! , (       d  f       N= f)
NTr]   r^   normalize_to_only_use_kwargsnamesz+torch.compile doesn't support named tensorsinputcpurP   r$   meta)	_non_kwarg_device_constructorsr   r   _like_tensor_constructorsr$   popr.   r   r   )	r\   r6   r]   r^   _
new_kwargsdefault_device
out_devicers	            r   constructorsro      s     5555&TMA &*9
 	
 ((#G,33w') e,$/J)5>J <</Jx 
&i	0$%*% 
1iJ// 
1	0s   ,	C


Cc                     [        XUSS9u  pEUR                  S5      n[        U 5         U" U5      nS S S 5        U$ ! , (       d  f       W$ = f)NTrb   rd   )r   ri   r   )r\   r6   r]   r^   rj   rk   inprn   s           r   non_kwarg_is_pinnedrs      sP    &FMA ..
!C 
&i	0I 
1H 
1	0Hs	   	=
Ac                 @   [        XUSS9u  pEUS   nU(       a  UOUS   R                  n[        R                  " S5      US'   UR                  S5      n[	        U 5         U" U40 UD6n	S S S 5        U R
                  R                  U W	U5      $ ! , (       d  f       N+= f)NTrq   r$   rd   rf   )r   r$   r.   ri   r   fake_tensor_converterfrom_meta_and_device)
r\   r6   r]   r^   rj   rk   input_devicerm   rr   rn   s
             r   non_kwarg_torx      s     'FMA h'L!-:g3F3M3MJ <</Jx
..
!C	%i	0#
# 
1 **??1j  
1	0s    
B
Bc                     g)NFrP   rS   s    r   r   r      s    r   c                   ^ S mU R                   (       ac  [        U4S j[        R                  " X#R	                  5       5       5       5      nU(       d%  [
        R                  X#45      u  pV[        XXVS 5      $ [        U5      e)Nc                     [        U [        5      (       a  U R                  $ [        U [        R                  [        R
                  [        R                  45      (       a  gg)NTF)r<   r   _has_symbolic_sizes_stridesr.   SymIntSymFloatSymBoolxs    r   is_symbolic3wordaround_stride_incorrect_op.<locals>.is_symbolic   sA    a$$000a%,,FGGr   c              3   4   >#    U  H  nT" U5      v   M     g 7fr(   rP   )r*   r   r   s     r   r,   1wordaround_stride_incorrect_op.<locals>.<genexpr>   s      
$JqKNN$Js   )	allow_fallback_kernelsr3   	itertoolschainvaluespytreetree_flattenr   r   )r\   r6   r]   r^   require_dynamic	flat_args	args_specr   s          @r   wordaround_stride_incorrect_opr      sm     '' 
$-OOD--/$J
 
 #)#6#6~#F I&y	dSS
&t
,,r   c                 ^    [        U 5         U" U0 UD6sS S S 5        $ ! , (       d  f       g = fr(   )r   r[   s       r   
resize_as_r      s#    	%i	0T$V$ 
1	0	0s   
,c                      [        X/UQ70 UD6$ r(   )ro   r[   s       r   (_sparse_coo_tensor_with_dims_and_tensorsr     s     	9$9&99r   c                     [         R                  R                  U R                  ;   =(       aP    U [        R
                  R                  [        R                  R                  [        R                  R                  4;  $ r(   )
r.   Tagdynamic_output_shapetagsatenindexTensornonzerodefaultrepeat_interleaver6   s    r   <lambda>r     sV    //499< TJJt||33T5K5K5R5RS	TTr   c                     [        U5      er(   )r   r[   s       r   	dyn_shaper     s     &d
++r   Funique_consecutivec                   U R                   b  U R                   R                  (       d  [        U5      eU(       a  UR                  OUR                  nUc  Uc  SSKJn	Jn
  U
" UR                  5       5      (       d  UR                  5       S:X  a  SnOoU R                   R                  5       n[        R                  S-
  nUc  UR                  5       OUR                  U5      nU
" U5      (       d  [        U5      nU	" XS9  Uc  U(       a  Xl        OXl        Uc  UR                  U45      /nO4UR                  " / UR                  S U QUPUR                  US-   S  Q76 /nUS L=(       a#    UR                   ["        R$                  " S5      :H  nU(       d  U(       a/  UR                  Uc  UR                  OUR                  U   45      nOUR                  S5      nUR'                  U5        U(       d  U(       a5  UR                  Uc  US   R                  OUS   R                  U   45      nOUR                  S5      nUR'                  U5        [)        U5      $ )Nr   _constrain_range_for_sizehas_free_symbolsr;   maxre   )	shape_envallow_dynamic_output_shape_opsr   unique_consecutive_memounique_memo%torch.fx.experimental.symbolic_shapesr   r   numelcreate_unbacked_symintsysmaxsizesizeint	new_emptyshapefake_devicer.   r$   rK   rH   )r\   r6   r9   dimsortedreturn_inversereturn_countsr   nnzr   r   maxvalr   retreturn_if_dim_and_cpuinversecountss                    r   _uniquer     s    	#""AA *$//);#
%
%C #+	

  		,,1A C%%<<>C[[1_F#&;CIIKCHHSME#E**U%c6;!.1+"%
{}}cV$%}}JciioJsJSYYsQwy5IJKtOV5<<PUCV0V.--S[		syy~>OP--"JJw-s{s1v||QcAR@TUq!JJv:r   c           	           [        XUS X4U5      $ r(   r   )r\   r6   r9   r   r   r   s         r   unique2r   `  s     9Cv}UUr   c           
      b    [        U UUUS:  a  UOU[        UR                  S5      -  UUU5      $ )Nr   r;   )r   r   ndim)r\   r6   r9   r   r   r   r   s          r   
unique_dimr   g  s>     axS3sxx#33	 	r   c                 "    [        U UUUSUUSS9$ )NFTr   r   )r\   r6   r9   r   r   r   s         r   rj   rj   w  s'    	 	r   c                     Uc[  U R                   b  U R                   R                  (       d  [        U5      eU R                   R                  5       nSSKJn  U" U5        UR                  U5      $ )Nr   r   r   r   r   r   r   r   r   )r\   r6   repeatsoutput_sizer   s        r   repeat_interleave_tensorr     sa    '&&EE-d33))@@B 	T!+.[))r   c                 *   UR                   =nb  U$ U R                  b,  U R                  R                  (       d  U R                  (       d  [        U5      e[	        UR
                  5      (       a  U R                  R                  5       nO[        UR
                  5      (       a  U R                  R                  5       nOM[        UR
                  5      (       a  U R                  R                  5       nO[        SUR
                   35      eX2l         U$ )Nz local_scalar_dense/item NYI for )	item_memor   allow_scalar_outputsr   r
   dtypecreate_unbacked_symfloatr   r   r	   create_unbacked_symboolNotImplementedError)r\   r6   r9   rn   s       r   local_scalar_denser     s     ]]'"44.. +400cii  88:	#))	$	$668	#))	$	$779!$DSYYK"PQQMHr   c                     [         R                  R                  R                  R	                  U5      R                  S5      $ )Nr;   )r.   opsr   r   r   unbind)r\   r6   r9   s      r   nonzero_numpyr     s,    99>>!!))#.55a88r   c                 h   U R                   b  U R                   R                  (       d  [        U5      eUR                  =nGc@  SSKJnJn  SSKJn  SSK	J
n  U" UR                  5       5      (       d  UR                  5       S:X  a  SnOU R                   R                  5       n[        R                  S-
  nU" UR                  5       5      (       d  [        UR                  5       5      nO[         R"                  " UR$                  5      R&                  n	U" U	R(                  U	R                   R*                  5      n
[-        U
R.                  U5      (       a  [        R                  S-
  nOU
R.                  nU" X8S9  X2l        UR1                  X2R3                  5       4SU4[4        R6                  S9$ )Nr   r   IntInfinitybound_sympyr;   r   )r   )r   r   r   nonzero_memor   r   r   torch.utils._sympy.numbersr   torch.utils._sympy.value_rangesr   r   r   r   r   r   mathprodr   nodeexprvar_to_ranger<   uppernew_empty_stridedr   r.   int64)r\   r6   r9   r   r   r   r   r   r   	prod_node
prod_ranges              r   r   r     sL    	#""AA *$//(	
 	;?		,,1A C%%<<>C[[1_F#CIIK00SYY[) IIcii055	(NNI$7$7$D$D
 j..<< [[1_F'--F%c6  #wwy!1As85;; OOr   c                    [        U5      S:X  d   eU(       d  U R                  b  U R                  R                  (       d  [        U5      eU R                  R	                  5       n[
        R                  S-
  nSSKJnJ	n  U" UR                  5       5      (       d  [        UR                  5       5      nU" USUS9  U/UR                  SS  Q7nUR                  U5      $ )Nr;   r   r   )minr      )r?   r   r   r   r   r   r   r   r   r   r   r   r   r   )	r\   r6   paddedoffsetstotal_Lr   r   r   output_shapes	            r   _padded_dense_to_jagged_forwardr     s     w<1'&&EE .d33%%<<>q	

  //(F!'qf=/fll12./LL))r   c                    U R                   b  U R                   R                  (       d  [        U5      eU R                   R                  5       n[        R
                  S-
  nSSKJnJn  SSK	J
n  SSKJn	  U" UR                  5       5      (       d  [        UR                  5       5      n
O[        R                   " UR"                  5      R$                  nU	" UR&                  UR                   R(                  5      n[+        UR,                  U5      (       a  [        R
                  S-
  n
OUR,                  n
U
S:  a  U
nU" XES9  UR/                  U45      $ )Nr;   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   r   r   )r\   r6   selfmaskr   r   r   r   r   r   num_elementsr   r   s                r   masked_selectr     s    	#""AA *$//



4
4
6C [[1_F 7;
 DJJL))4::<(IIdjj)..	 1D1D1Q1QR
j&&44;;?L%++Lac.>>3&!!r   c                 P    [         R                  R                  U R                  ;   $ r(   )r.   r   data_dependent_outputr   r   s    r   r   r   3  s    uyy>>$))Kr   c                     [        U5      er(   )r   r[   s       r   data_depr   3  s    
&t
,,r   c                     U HA  nUc  M  UR                   [        R                  [        R                  4;   d  M8  [	        U 5      e   g r(   )r   r.   booluint8r   )r6   r   indicesr   s       r   check_no_bool_index_tensorsr  :  s5    U[[0I!I-d33 r   c                    [        XUSS9u  pEUS   R                  n[        U 5         U" U0 UD6n[        U5      (       d  UR	                  UR
                  5      nS S S 5        WUS   L a  U$ [        XU5      $ ! , (       d  f       N$= fNTra   rd   )r   r$   r   r%   r   r   r   )r\   r6   r]   r^   rj   rk   rm   outs           r   )run_and_return_new_tensor_of_input_devicer  @  s    &TMA G$++J	%i	0D#F#)*55--		*C 
1
 j!!
ij11 
1	0s   4A::
Br   primsprimc                 (    U R                   [        ;   $ r(   )	namespace_is_builtin_namespacesrS   s    r   
is_builtinr  S  s    <<111r   c                 ^    [         R                  R                  U R                  5       S5      $ )NMeta)r.   r/   ._dispatch_has_computed_kernel_for_dispatch_keynamer   s    r   r   r   W  s     88BB499;PVWWr   c                 p    [        U 5      =(       a%    SU R                  5       ;   =(       a    [        U 5      $ )Nforeach)r  r  r   r   s    r   r   r   \  s%    D!Qi499;&>Q8D>Qr   c           	         [         R                  " X#R                  5       5       Vs/ s HX  n[        U[        [
        45      (       d  M   [        U5      (       d  M2  [        US   [        R                  5      (       d  MV  UPMZ     nn [        U 5         U" U0 UD6nS S S 5        W(       d  U$ U(       d   e/ n[        U5       H[  u  p[        R                  " X V
s/ s H  oU   PM	     sn
5      u  pUR                  U R                   R#                  X	U5      5        M]     U$ s  snf ! , (       d  f       N= f! [         a	    [        s $ f = fs  sn
f Nr   )r   r   r   r<   rG   rH   r?   r.   r   r   r   NotImplemented	enumerater   _find_common_devicerK   ru   rv   )r\   r6   r]   r^   r9   tensor_listsout_metaout_fakeimeta_ttlr$   rj   s                r    foreach_run_and_map_input_devicer  [  s)    ??499CcD%=) 	 H 	 s1vu||,	 	9  ))4T,V,H 5
 <Hx(	224,9W,BQ%,9WX	++@@6	
 ) O9 54  :XsM   D%
D% D% D%	D; 	D*D; E*
D84D; 8D; ;EEc                     SSK Jn  [        XUSS9u  pVUS   R                  nU    U" U0 UD6nUR	                  U5      sS S S 5        $ ! , (       d  f       g = f)Nr   )meta_index_TensorTra   rd   )torch._meta_registrationsr!  r   r$   to)	r\   r6   r]   r^   r!  rj   rk   rm   r  s	            r   index_tensorr$    sR    ;&TMA G$++J	00vvj! 
s   A
Ac                 X    SSK Jn  U    U" U0 UD6sS S S 5        $ ! , (       d  f       g = f)Nr   )meta_embedding_bag)r"  r&  )r\   r6   r]   r^   r&  s        r   embedding_bagr'    s    <	!4262 
s   
)c                     [        XX#5      $ r(   )r  r[   s       r   multi_device_op_defaultr)    s    
 5YdSSr   c                     [        U 5         U" U0 UD6  S S S 5        [        XUSS9u  pEUS   $ ! , (       d  f       N = fr  )r   r   )r\   r6   r]   r^   rj   rk   s         r   multi_device_op_outr+    sI     
&i	0df 
1 'TMA g 
1	0s   	/
=c                 `  ^^^ [        TX#SS9u  pEUS   mUS   R                  m[        R                  " TTR                  :H  =(       d)    TR                  S:H  =(       a    TR                  5       S:H  UUU4S j5        [        U TX#5      nT[        R                  R                  L a  US   $ U$ )NTra   r   rd   r   r;   c                  0   > ST  ST STR                    S3$ )NzMismatching z device between self (z) and values ()r#   )r6   self_devicer   s   r   r    index_put_impl.<locals>.<lambda>  s$    ,tf$:;-~V\VcVcUddefr   )
r   r   r.   _checkr   r   r  r   
index_put_r   )	r\   r6   r]   r^   rj   rk   r  r/  r   s	    `     @@r   index_put_implr3    s     '4TMA !FW%11K	LLv)))WfkkQ.>.V6<<>UVCVf
 4ItT
RCt&&&'""
r   c                     [        S5      e)Nz3torch.compile does not support strided NestedTensor)r   r[   s       r   nested_tensors_unsupportedr5    s    
 '= r   c                 ,    U[         ;  d
   SU 35       eg )NzNYI: )_device_not_kwarg_opsr[   s       r   nyir8    s      ,,<dVn<,r   c                   ^ ^ [        XUSS9u  pCUS   R                  mT    US   R                  nUS   R                  S   nSSKJn  U" U5      (       d  S nOUS:X  a+  US   R                  (       d  US   R                  (       d  S nOU[        R                  R                  L a!  [        R                  R                  " S0 UD6n	OA[        R                  R                  US   US   S US   US	   US
   US   US   US   US   S9
n	[        R                  R                  US   US   U	5      nS S S 5        UU 4S jn
[        T 5         U" S0 UD6nU[        R                  R                  L a  U
" UW5      sS S S 5        $ U
" US   W5      U
" US   U5      U
" US   S 5      4sS S S 5        $ ! , (       d  f       N= f! , (       d  f       g = f)NTra   rd   weightr   )has_hint   stridepaddingdilation
transposedoutput_paddinggroups
bias_sizes)biasr=  r>  r?  r@  rA  rB  rC  c                 L   > U c  U $ Ub  U R                  US9n [        TU T5      $ )Nmemory_format)r#  r   )tmem_fmtr$   r\   s     r   convertconv.<locals>.convert  s2    9H7+A)Q//r   r;   r   rP   )r   r   r   r   r   r;  	is_mkldnnis_xpur   convolutionr   r.   r/   _select_conv_backend%_conv_determine_backend_memory_formatr   )r\   r6   r]   r^   rj   kbatchr;  rI  conv_backendrJ  r  r$   s   `           @r   convrT    s   "TIA G_((F	8!!w%%a( 	C G!VF7O55fWo>T>TGt''///$xx<<FvF$xx<<7O8$!(+"9-#J/%l3#)*:#;!(+%l3  =   hhDDw!1<G= 
D0 
&i	0nVn4##+++3(	 
1	0 A(A(A% 
1	0S 
R 
1	0s   DF.
.F?"F?.
F<?
Gc                     U R                   b  U R                   R                  (       d  [        U5      eU R                   R                  5       nSSKJn  U" XTS9  UR                  U5      $ )Nr   r   )r   r   )r\   r6   inputsweights	minlengthnew_sizer   s          r   bincountrZ     s\     	#""AA *$//""99;HOh6H%%r   c                 T   U R                   b  U R                   R                  (       d  [        U5      eU R                   R                  5       nSSKJn  U" U5        U(       d  UR                  SS5      nUR                  SS  nUR                  U5      nUR                  U45      n	X4$ )Nr   r   r;   )	r   r   r   r   r   r   	transposer   r   )
r\   r6   rV  lengthsbatch_firstnew_batch_sizer   res_sizepacked_data
batch_sizes
             r   _pack_padded_sequencerc  1  s     	#""AA *$//((??ANOn-!!!Q'||ABH""8,K!!>"34J$$r   c                    ^  U 4S jnU$ )Nc                    > U [         T'   U $ r(   )FAST_OP_IMPLEMENTATIONS)rL   r6   s    r   rN   -register_fast_op_impl.<locals>.impl_decoratorP  s    (/%r   rP   )r6   rN   s   ` r   register_fast_op_implrh  O  s     r   c                   ^
^^ SSK Jn  [        U 5      n[        U5      n[        X45      nS/U-  n[	        US-
  SS5       H  m
US-
  T
-
  nUS-
  U-
  nUS-
  U-
  n	US:  a  X   OSmU	S:  a  X   OSm[
        R                  " U" TS:H  5      =(       d    U" TS:H  5      =(       d    TT:H  U
UU4S j5        U" TS:H  5      (       a  TOTUT
'   M     [        U5      $ )Nr   )guard_size_obliviousr;   c                     > ST ST ST  S3$ )NzThe size of tensor a (z#) must match the size of tensor b (z) at non-singleton dimension r.  rP   )r  sizeAsizeBs   r   r   infer_size.<locals>.<lambda>u  s%    ,UG 4005w 7**+A/r   )r   rj  r?   r   ranger.   r1  rH   )abrj  dimsAdimsBr   expandedSizesoffsetdimAdimBr  rm  rn  s             @@@r   
infer_sizery  X  s    JFEFEuDC$JM4!8R$Aqy6!qy6!19!19! 	 !, #EQJ/~/		
 %9!$D$D5%a5 %6 r   c                    ^  U 4S jnU$ )Nc           
      r  >^ ^^ UUU U4S jn[        S5        TnS nU H@  n[        U[        R                  5      (       a  UR                  OSnUc  Un[        XW5      nMB     Uc   eSSKJnJn	  U Hh  n[        U[        R                  5      (       d  M$  [        UR                  5      [        U5      :X  d  MH  U" U	" UR                  U5      5      (       d  Mh    O
   U" S5      $ [        R                  " S5      n
U
nS nSnU Hu  n[        U[        R                  5      (       d  S	nM&  X:X  a&  UR                  R                  S:X  d  UR                  nUc  UR                  nMb  XR                  :w  d  Ms  S	nMw     U(       a  [        US
[        R                  06u  pSnSnU H~  n[        U[        R                  5      (       d  M$  X:w  a;  UR!                  5       S:X  a'  UR                  U
:X  a  UU:  a
  U" S5      s  $ US-  nMd  UR                  U:w  d  Mv  U" S5      s  $    S	nS	n[#        U5      (       av  U Hp  n[        U[        R                  5      (       d  M$  U=(       a    UR%                  [        R&                  S9nU=(       a    UR%                  [        R(                  S9nMr     U(       a9  [        S5        [+        T [        R,                  " UUS[        R&                  S9US9$ U(       a9  [        S5        [+        T [        R,                  " UUS[        R(                  S9US9$ U" S5      $ )Nc                 j   > [        SU  35        T   T" T0 TD6sS S S 5        $ ! , (       d  f       g = f)Nzslow r   )msgr]   r^   modeslow_refs    r   slow=make_fast_binary_impl.<locals>.fast_binary_impl.<locals>.slow  s+    %u&00 s   $
2zattempt fastrP   r   )rj  sym_eqz#both tensors nontrivially broadcastre   FTtype_promotion_kindr;   errorrF  zfast is_contiguousrf   )r   r$   rG  r#   zfast channels_lastzno contiguity match)r   r<   r.   r   r   ry  r   rj  r  r?   r$   r"   r   r   r   DEFAULTr   r%   is_contiguouscontiguous_formatchannels_lastr   empty)r~  r]   r^   r  operandsfinal_shaperM   r   rj  r  re   common_devicecommon_dtypehas_different_input_dtypesrj   current_cpu_scalars_on_non_cpumax_cpu_scalars_on_non_cpur  is_channels_lastr  s   ```                r   fast_binary_impl/make_fast_binary_impl.<locals>.fast_binary_impl~  s   	1 	1
 	N#  B *2u|| < <BHH"E"# %[8K  &&&V B2u||,,MS%55(+)FGG  =>> ll5!%*"Bb%,,//-1*#BIINNe,C "		#!xx)-1*  & 1/N/V/VOA *+&%&"Bb%,,//#A"))s:J15OO=(.!3.m+G}$   &m44!"ell33 - !"2B2B"'"9"9 3C 3 $4 $8H8H"'"5"5 9I 9   ,-&!"'"9"9	 %	 	 ,-&!"'"5"5	 %	 	 )**r   rP   )r  r  s   ` r   make_fast_binary_implr  }  s    ~+@ r   c                 (   [        5          [        U 5         [        R                  R                  R
                  R                  U5      nS S S 5        S S S 5        [        U WUR                  5      $ ! , (       d  f       N-= f! , (       d  f       N6= fr(   )	r   r   r.   r   r   detachr   r   r$   )r\   r   r  s      r   fast_detachr    s[    		!=i!Hiinn##++A. "I	iahh// "I!H		s"   B4A2B2
B 	<B
Bc                  @   SS K n [        U R                  R                  R                  R
                  5      " [        U R                  R                  5      5        [        U R                  R                  R                  R
                  5      " [        U R                  R                  5      5        [        U R                  R                  R                  R
                  5      " [        U R                  R                  5      5        [        U R                  R                  R                  R
                  5      " [        U R                  R                  5      5        [        U R                  R                  R                  R                  5      " [        5        [        $ r  )torch._refsrh  r   r   addr   r  _refssubmuldivr  r   r  rf  )r.   s    r   r   r   	  s    %))..,,334ekkoo. %))..,,334ekkoo. %))..,,3345J5;;??5[\%))..,,334ekkoo. %))..//778E""r   )TFF)FFNr(   r  )	functoolsr   r   r   typingr   r   r.   torch._custom_optorch._loggingtorch._dispatch.pythonr   
torch._opsr   torch._prims_commonr   r   r	   r
   r   torch._subclasses.fake_tensorr   r   r   r   r   r   torch.fx.operator_schemasr   torch.utils._statsr   utils_pytreer   __all__rF   r   _opsr   r   r   r%   
empty_liker   r  	full_like	ones_like	rand_like
randn_likerandint_like	low_dtypelow_dtype_out
zeros_liker   r   new_full	new_zerosnew_onesrh   _resize_output__nested_tensor_from_tensor_list
pin_memoryr#  r$   prim_Device	is_pinned_pin_memory_resize_outputr7  _list_to_tensorrg   r)   	lru_cacherB   r   rI   rT   rY   __contains__r_   ro   rs   rx   r   r   r   r   r   r   _unique2r   r   r   rj   r   r   r   item_local_scalar_denser   r   r   r   r   r   r  r  r  r  r   r  r   r$  _embedding_bagr'  _unsafe_index_putcopycopy_slice_scatterr)  r+  	index_putr2  r3  _nested_view_from_buffer_nested_view_from_buffer_copyr5  r8  rN  convolution_backwardrT  rZ  rc  rf  rh  ry  r  r  r   r   s   0r   <module>r     sN	      
 "    7 !   9 * 
		    zz~~&  (OOOONNNNNNNNNNNNOOOO##OOOONNNN""MMMMNNNNMMMM5 < $  ((00((,,OOGGNNGGNN  #'"6"6!8  T  U8ZL$4F+G+S%T &) )667K 8K ().-./0 0 *08 $..(()	 *	 $''%%&$''..! " ' 
 %&- '-0 $//))*% +%
 $??GGH: I: T
,
, I IX $--''(KPV )V $//))*PU + $))112
 3
 $((//0* 1*$ %))..%%--.%))..44<<= > /* %))....6679 89 %))..((0010P 20Pf %))..@@HHI* J*> %))....667&" 8&"T KL- M-42  %VWf= 2X QF $**##$" %"  $%%--.3 /3 $((001$))##$$**$$%$$$,,-T . & % 2T
 $))-- $$$(() * ! $..(()$//))* + *& $66>>?$66::;$//778$44<<= > 9 < @  '&A NN""GGNNGG00880044

 	
&== 4##++T-F-F-N-NOP9 Q9x %))..))112& 3&  %))..66>>?% @%0  

 " JAL0 T# #s	s   A3h2
h2