
    8h                     X   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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@                  RB                  r"/ S	Qr#0 r$/ r%\RL                  RN                  RP                  r(S
 r)S r*\)" \(RV                  RX                  \(RV                  RZ                  \(R\                  RX                  \(R\                  RZ                  \(R^                  RX                  \(R^                  RZ                  \(R`                  RX                  \(R`                  RZ                  \(Rb                  RX                  \(Rb                  RZ                  \(Rd                  RX                  \(Rd                  Rf                  \(Rd                  Rh                  \(Rd                  RZ                  \(Rd                  Rj                  \(Rd                  Rl                  \(Rn                  RX                  \(Rn                  RZ                  \(Rp                  RX                  \(Rp                  RZ                  \(Rr                  RX                  \(Rr                  RZ                  \(Rt                  RX                  \(Rt                  RZ                  \(Rv                  RX                  \(Rv                  RZ                  \(Rx                  RX                  \(Rx                  RZ                  5      r=\)" \(R|                  RX                  \(R~                  RX                  \(R~                  RZ                  \(R                  RX                  \(R                  R                  \(R                  R                  \(R                  RX                  \(R                  RX                  \(R                  RZ                  \(R                  RX                  \(R                  RZ                  5      rG\(R                  4rIS rJ\ R                  S\4S j5       rLS\\\/\M4   \4   4S jrNS rOS rP\N" \$R                  5      S 5       rR\N" \L5      \N" / \=Q5      S 5       5       rS\N" \(R                  RX                  5      S 5       rT\N" \(R                  R                  5      \N" \(R                  R                  5      S 5       5       rUS rV\N" \V5      S 5       rW\N" \(R                  RX                  5      S 5       rX\N" \(R                  RX                  5      S 5       rY\N" S 5      S 5       rZ   SESS.S jjr[\N" \(R                  RX                  5       SES  j5       r]\N" \(R                  RX                  5       SES! j5       r^\N" \(R                  RX                  5      SFS" j5       r`\N" \(R                  Rf                  5      SGS# j5       rb\N" \RN                  RP                  R                  RX                  5      \N" \RN                  RP                  R                  RX                  5      S$ 5       5       re\N" \RN                  RP                  R                  RX                  5      S% 5       rf\N" \RN                  RP                  R                  RX                  5      S& 5       rg\N" \RN                  RP                  R                  RX                  5      SGS' j5       rh\N" \RN                  RP                  R                  RX                  5      S( 5       ri\N" \RN                  RP                  R                  RX                  5         SHSSS). SIS* jjj5       rk\N" S+ 5      S, 5       rlS- rmS. rn\)" S/S0S15      roS2 rpS3 rq\N" S4 5      S5 5       rr\N" \(R                  Rf                  5      S6 5       rt\N" \(R                  RX                  5      S7 5       rv\N" \(R                  RX                  5      \N" \(R                  RX                  5      \N" \(R                  RX                  5      \N" \(R                  RX                  5      S8 5       5       5       5       r{\N" \(R                  RZ                  5      \N" \(R                  RZ                  5      S9 5       5       r|\N" \(R                  RX                  5      \N" \(R                  RX                  5      S: 5       5       r\N" \(R~                  RX                  5      \N" \(R~                  RZ                  5      \N" \(GR                   RX                  5      \N" \(GR                  RX                  5      S; 5       5       5       5       r\N" \G V s/ s Hv  n U \(R                  RX                  \(R                  R                  \(R                  R                  \(R~                  RX                  \(R~                  RZ                  4;  d  Mt  U PMx     sn 5      S< 5       r\N" \(GR                  RX                  \(GR
                  RX                  /5      S= 5       r\N" \RN                  RP                  GR                  RX                  5      SJS> j5       r\N" \RN                  RP                  GR                  RX                  5      S? 5       r0 rS\4S@ jrSA r\GR                  4SB jrSKSC jr\ R                  SD 5       rgs  sn f )L    N)CallableUnion)no_python_dispatcher)
OpOverload)'definitely_contiguous_for_memory_format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    V/var/www/fran/franai/venv/lib/python3.13/site-packages/torch/_subclasses/fake_impls.pyordered_setr   2   s    ==%%    c                      U R                   S:g  $ )Nhpu)typedevices    r   is_noncontiguous_supportedr&   8   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>p   s      0*?Qa  *?s   )torch_C
TensorTypegetisSubtypeOfanycontainedTypes)r#   tensor_types     r   r*   r*   n   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>y   s     
G6Fs **6Fs   "$F   r   )
isinstancer   _schemar4   	argumentslenreturnsr#   r/   r0   r1   r2   )r7   schemas     r   _is_tensor_constructorrC   u   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oprD   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     )rD   rO   s   ` r   rJ   rJ      s     r    c                     U [         ;   $ r)   rG   rN   s    r   _is_op_registered_to_fake_rulerU      s    (((r    c                 |    U [         ;   a  [         U 	 [         H!  u  pXL d  M  [        R                  X45          g    g r)   )rG   r   remove)rN   checkimpls      r   _deregister_op_implrZ      s7    	$$#B'0;%,,e]; 1r    c                 (    [         U   " X/UQ70 UD6$ r)   rS   	fake_moder7   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cpurQ   r%   meta)	_non_kwarg_device_constructorsr   r   _like_tensor_constructorsr%   popr/   r   r   )	r]   r7   r^   r_   _
new_kwargsdefault_device
out_devicers	            r   constructorsrp      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rc   re   )r   rj   r   )r]   r7   r^   r_   rk   rl   inpro   s           r   non_kwarg_is_pinnedrt      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)NTrr   r%   re   rg   )r   r%   r/   rj   r   fake_tensor_converterfrom_meta_and_device)
r]   r7   r^   r_   rk   rl   input_devicern   rs   ro   s
             r   non_kwarg_tory      s     'FMA h'L!-:g3F3M3MJ <</Jx
..
!C	%i	0#
# 
1 **??1j  
1	0s    
B
Bc                     g)NFrQ   rT   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)   rQ   )r+   r   r   s     r   r-   1wordaround_stride_incorrect_op.<locals>.<genexpr>   s      
$JqKNN$Js   )	allow_fallback_kernelsr4   	itertoolschainvaluespytreetree_flattenr   r   )r]   r7   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)   )rp   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r7   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<   maxrf   )	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%   rL   rI   )r]   r7   r:   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]   r7   r:   r   r   r   s         r   unique2r   c  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]   r7   r:   r   r   r   r   s          r   
unique_dimr   j  s>     axS3sxx#33	 	r    c                 "    [        U UUUSUUSS9$ )NFTr   r   )r]   r7   r:   r   r   r   s         r   rk   rk   z  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]   r7   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]   r7   r:   ro   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]   r7   r:   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]   r7   r:   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]   r7   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]   r7   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    )r%   layoutc                   Ub/  UR                  5       U:X  d   SU SUR                  5        35       eUb/  UR                  5       U:X  d   SU SUR                  5        35       eUb'  UR                  U:X  d   SU SUR                   35       eUb+  UR                  U:X  d   SU SUR                  5        35       eUb(  UR                  U:X  d   SU SUR                   35       eg g )Nz!Tensor sizes mismatch! Expected: z, Got: z#Tensor strides mismatch! Expected: z!Tensor dtype mismatch! Expected: z"Tensor layout mismatch! Expected: z"Tensor device mismatch! Expected: )r   strider   r   r%   )r]   r7   tsizesstridesr   r%   r   s           r   assert_tensor_metadatar  5  s    FFH	H.ugWQVVXJG	HHHJ'!	N0	M	N!GGu	G.ugWQWWIF	GHH	L/xwqxxzlK	LHH	J/xwqxxjI	J r    c                 P    [         R                  R                  U R                  ;   $ r)   )r/   r   data_dependent_outputr   r   s    r   r   r   X  s    uyy>>$))Kr    c                     [        U5      er)   )r   r\   s       r   data_depr  X  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   )r7   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NTrb   re   )r   r%   r   r&   r   r   r   )r]   r7   r^   r_   rk   rl   rn   outs           r   )run_and_return_new_tensor_of_input_devicer  e  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_namespacesrT   s    r   
is_builtinr  x  s    <<111r    c                 ^    [         R                  R                  U R                  5       S5      $ )NMeta)r/   r0   ._dispatch_has_computed_kernel_for_dispatch_keynamer   s    r   r   r   |  s     88BB499;PVWWr    c                     [        U 5      =(       a1    U R                  5       R                  S5      =(       a    [        U 5      $ )Nzaten::_foreach_)r  r  
startswithr   r   s    r   r   r     s4    D! 		01r    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=   rH   rI   r@   r/   r   r   r   NotImplemented	enumerater   _find_common_devicerL   rv   rw   )r]   r7   r^   r_   r:   tensor_listsout_metaout_fakeimeta_ttlr%   rk   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_TensorTrb   re   )torch._meta_registrationsr)  r   r%   to)	r]   r7   r^   r_   r)  rk   rl   rn   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]   r7   r^   r_   r.  s        r   embedding_bagr/    s    <	!4262 
s   
)c                     [        XX#5      $ r)   )r  r\   s       r   multi_device_op_defaultr1    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]   r7   r^   r_   rk   rl   s         r   multi_device_op_outr3    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$ )NTrb   r   re   r   r<   c                  0   > ST  ST STR                    S3$ )NzMismatching z device between self (z) and values ()r$   )r7   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]   r7   r^   r_   rk   rl   r  r7  r   s	    `     @@r   index_put_implr;    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_unsupportedr=    s    
 '= r    c                 ,    U[         ;  d
   SU 35       eg )NzNYI: )_device_not_kwarg_opsr\   s       r   nyir@    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)NTrb   re   weightr   )has_hint   r   paddingdilation
transposedoutput_paddinggroups
bias_sizes)biasr   rE  rF  rG  rH  rI  rJ  c                 L   > U c  U $ Ub  U R                  US9n [        TU T5      $ )Nmemory_format)r+  r   )r   mem_fmtr%   r]   s     r   convertconv.<locals>.convert4  s2    9H7+A)Q//r    r<   r   rQ   )r   r   r   r   r   rC  	is_mkldnnis_xpur   convolutionr   r/   r0   _select_conv_backend%_conv_determine_backend_memory_formatr   )r]   r7   r^   r_   rk   kbatchrC  rO  conv_backendrP  r  r%   s   `           @r   convrZ    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" U5        [        R                  " XT:  5        UR                  U5      $ r   )	r   r   r   r   r   r   r/   r9  r   )r]   r7   inputsweights	minlengthnew_sizer   s          r   bincountr`  H  sk     	#""AA *$//""99;HOh'	LL&'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]   r7   r\  lengthsbatch_firstnew_batch_sizer   res_sizepacked_data
batch_sizes
             r   _pack_padded_sequenceri  Z  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)rM   r7   s    r   rO   -register_fast_op_impl.<locals>.impl_decoratory  s    (/%r    rQ   )r7   rO   s   ` r   register_fast_op_implrn  x  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_or_falser<   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 r6  rQ   )r$  sizeAsizeBs   r   r   infer_size.<locals>.<lambda>  s%    ,UG 4005w 7**+A/r    )r   rp  r@   r   ranger/   r9  rI   )abrp  dimsAdimsBr   expandedSizesoffsetdimAdimBr$  rs  rt  s             @@@r   
infer_sizer    s    DFEFEuDC$JM4!8R$Aqy6!qy6!19!19! 	5A:&V.!*DVQV/	
 %35A:$>$>5Ea1 %2 r    c                    ^ ^ U U4S jnU$ )Nc           
      B  >^ ^^ 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
T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      (       al  U Hf  n[        U[        R                  5      (       d  M$  U=(       a    [!        U[        R"                  S9nU=(       a    [!        U[        R$                  S9nMh     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 fastrQ   r   )rp  sym_eqz#both tensors nontrivially broadcastrf   FTtype_promotion_kindr<   errorrM  zfast is_contiguousrg   )r   r%   rN  r$   zfast channels_lastzno contiguity match)r   r=   r/   r   r   r  r   rp  r  r@   r%   r#   r   r   r   r&   r   contiguous_formatchannels_lastr   empty)r  r^   r_   r  operandsfinal_shaperN   r   rp  r  rf   common_devicecommon_dtypehas_different_input_dtypesrk   current_cpu_scalars_on_non_cpumax_cpu_scalars_on_non_cpudefinitely_contiguousdefinitely_channels_lastr  r  s   ```                r   fast_binary_impl/make_fast_binary_impl.<locals>.fast_binary_impl  s   	1 	1
 	N#  B *2u|| < <BHH"E"# %[8K  &&&P B2u||,,MS%55"6"((K#@AA  =>> ll5!%*"Bb%,,//-1*#BIINNe,C "		#!xx)-1*  & 1/BOA *+&%&"Bb%,,//#A"))s:J15OO=(.!3.m+G}$  !%#'  &m44!"ell33) ?%*A*A & - ?%*=*= )  !,-&!"'"9"9	 %	 	 $,-&!"'"5"5	 %	 	 )**r    rQ   )r  r  r  s   `` r   make_fast_binary_implr    s    F+P r    c                 v   [        5          [        U 5         [        R                  R                  R
                  R                  U5      nS S S 5        S S S 5        U(       a   [        U WUR                  UR                  S9$ [        U WUR                  5      $ ! , (       d  f       NT= f! , (       d  f       N]= f)N)real_tensor)
r   r   r/   r   r   detachr   r   r%   r  )r]   r   include_realr  s       r   fast_detachr  4  sw    		!=i!Hiinn##++A. "I	)S!((NNiahh//	 "I!H		s"   B*4BB*
B'	#B**
B8c                  Z   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                  [        R                  S95        [        U R                  R                  R                  R                  5      " [        5        [         $ )Nr   )r  )torch._refsrn  r   r   addr   r  _refssubmuldivr	   INT_TO_FLOATr  r   r  rl  )r/   s    r   r   r   <  s    %))..,,334ekkoo. %))..,,334ekkoo. %))..,,3345J5;;??5[\%))..,,334KKOO ? L L	
 %))..//778E""r    )TFF)FFNr)   )NNN)returnNr  )F)	functoolsr   r   r   typingr   r   r/   torch._custom_optorch._loggingtorch._dispatch.pythonr   
torch._opsr   torch._prims_commonr   r   r	   r
   r   r   torch._subclasses.fake_tensorr   r   r   r   r   r   torch.fx.operator_schemasr   torch.utils._statsr   utils_pytreer   __all__rG   r   _opsr   r   r   r&   
empty_liker   r  	full_like	ones_like	rand_like
randn_likerandint_liker   
Tensor_out	low_dtypelow_dtype_out
zeros_liker   r   new_full	new_zerosnew_onesri   _resize_output__nested_tensor_from_tensor_list
pin_memoryr+  r%   prim_Device	is_pinned_pin_memory_resize_outputr?  _list_to_tensorrh   r*   cacherC   r  rJ   rU   rZ   __contains__r`   rp   rt   ry   r   r   r   r   r   r   _unique2r   r   r   rk   r   r   item_local_scalar_denser   r   r   r   r   _assert_tensor_metadatar  r  r  r  r  r  r   r'  r   r,  _embedding_bagr/  _unsafe_index_putcopycopy_slice_scatterr1  r3  	index_putr:  r;  _nested_view_from_buffer_nested_view_from_buffer_copyr=  r@  rT  convolution_backwardrZ  r`  ri  rl  rn  r  DEFAULTr  r  r   r   s   0r   <module>r     s	      
 "    7 !   9 * 
		    zz~~&  (OOOONNNNNNNNNNNNOOOO  ##OOOONNNN""MMMMNNNNMMMM9 @ $  ((00((,,OOGGNNGGNN  #'"6"6!8    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&"R %))..88@@A
 
J J 
J BJD KL- M-42  %VWf= 2X
 

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  

   H #B"I"IK`0 # #I
s   >A3j'5j'