
    iz                     x   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dl mZ d dlm	Z	m
Z
 d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z% d d	l&m'Z' d d
l(m)Z) ej                   jT                  Z+g dZ,i Z-g Z.ej^                  j`                  jb                  Z1d Z2d Z3 e2g e1jh                  jj                  e1jh                  jl                  e1jn                  jj                  e1jn                  jl                  e1jp                  jj                  e1jp                  jl                  e1jr                  jj                  e1jr                  jt                  e1jr                  jl                  e1jr                  jv                  e1jx                  jj                  e1jx                  jt                  e1jx                  jl                  e1jx                  jv                  e1jz                  jj                  e1jz                  jt                  e1jz                  j|                  e1jz                  j~                  e1jz                  j                  e1jz                  j                  e1jz                  jl                  e1jz                  jv                  e1jz                  j                  e1jz                  j                  e1jz                  j                  e1jz                  j                  e1j                  jj                  e1j                  jl                  e1j                  jj                  e1j                  jl                  e1j                  jj                  e1j                  jl                  e1j                  jj                  e1j                  jl                  e1j                  jj                  e1j                  jl                  e1j                  jj                  e1j                  jl                   ZL e2e1j                  jj                  e1j                  jj                  e1j                  jl                  e1j                  jj                  e1j                  j                  e1j                  j                  e1j                  jj                  e1j                  jj                  e1j                  jl                  e1j                  jj                  e1j                  jl                        ZVe1j                  fZXd ZYe j                  defd       Z[de
eege\f   ef   fdZ]d Z^d Z_ e]e-j                        d        Za e]e[       e]g eL      d               Zb e]e1j                  jj                        d        Zc e]e1j                  j                         e]e1j                  j                        d               Zdd Ze e]ee      d        Zf e]e1j                  jj                        d        Zg e]e1j                  jj                        d        Zh e]d       d        Zi	 	 	 dUdd d!Zj e]e1j                  jj                        	 dUd"       Zl e]e1j                  j                        d#        Zo e]e1j                  jj                        	 dUd$       Zp e]e1j                  jj                        dVd%       ZrdWd&Zsd' ZtdXd(Zu e]e1j                  jj                        d)        Zv e]e1j                  jj                         e]e1j                  jj                        d*               Zy e]e1j                  jj                        dd+d,       Z{ e]e1j                  j|                        dYd-       Z} e]ej`                  jb                  j                  jj                         e]ej`                  jb                  j                  jj                        d.               Z e]ej`                  jb                  j                  jj                        d/        Z e]ej`                  jb                  j                  jj                        d0        Z e]ej`                  jb                  j                  jj                        dYd1       Zd2 Z e]ej`                  jb                  j
                  j|                        	 	 	 	 dZd3end4e	en   d5e	en   d6enfd7       Z e]ej`                  jb                  j                  jj                        d8        Z e]ej`                  jb                  j                  jj                        	 	 	 d[ddd9	 d\d:       Z e]d;       d<        Zd= Zd> Z e2d?d@dA      ZdB ZdC Z e]dD       dE        Z e]e1j"                  j|                        dF        Z e]e1j&                  jj                        dG        Z e]e1j*                  jj                         e]e1j,                  jj                         e]e1j.                  jj                         e]e1j0                  jj                        dH                             Z e]e1j,                  jl                         e]e1j0                  jl                        dI               Z e]e1j6                  jj                         e]e1j8                  jj                        dJ               Z e]e1j                  jj                         e]e1j                  jl                         e]e1j<                  jj                         e]e1j>                  jj                        dK                             Z e]eVD  cg c]q  } | e1j                  jj                  e1j                  j                  e1j                  j                  e1j                  jj                  e1j                  jl                  fvr| s c}       dL        Z e]e1jD                  jj                  e1jF                  jj                  g      dM        Z e]ej`                  jb                  jJ                  jj                        d]dN       Z e]ej`                  jb                  jL                  jj                        dO        Zi ZdefdPZdQ ZejT                  fdRZdWdSZe j                  dT        Zyc c} w )^    N)Callable)reduce)OptionalUnion)no_python_dispatcher)
OpOverload)
canonicalize_dimelementwise_dtypesELEMENTWISE_TYPE_PROMOTION_KINDis_boolean_dtypeis_contiguous(is_contiguous_for_memory_format_or_falseis_contiguous_or_falseis_float_dtypeis_integer_dtypemake_contiguous_strides_for)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                  .    t         j                  | d      S )NT)dictfromkeys)itemss    V/var/www/html/engine/venv/lib/python3.12/site-packages/torch/_subclasses/fake_impls.pyordered_setr%   :   s    ==%%    c                      | j                   dk7  S )Nhpu)typedevices    r$   is_noncontiguous_supportedr,   @   s    ;;%r&   c                     t         j                  j                  j                         }| j	                  |      xs  t        d | j                         D              S )Nc              3   2   K   | ]  }t        |        y wN)contains_tensor_types).0es     r$   	<genexpr>z(contains_tensor_types.<locals>.<genexpr>   s      0%&a 0s   )torch_C
TensorTypegetisSubtypeOfanycontainedTypes)r)   tensor_types     r$   r0   r0      sO    ((%%))+KK( C 0*.*=*=*?0 - r&   funcc                 .   t        | t              sJ | j                  }t        d |j                  D              ryt        |j                        dk(  xrA |j                  d   j                  t        j                  j                  j                         u S )Nc              3   F   K   | ]  }t        |j                          y wr/   )r0   r)   )r1   args     r$   r3   z)_is_tensor_constructor.<locals>.<genexpr>   s     
Gs *
Gs   !F   r   )
isinstancer   _schemar9   	argumentslenreturnsr)   r4   r5   r6   r7   )r<   schemas     r$   _is_tensor_constructorrG      sv    dJ'''\\F

Gf6F6F
GG 	FNNq XV^^A%6%;%;uxx?R?R?V?V?X%Xr&   run_impl_checkc                       fd}|S )Nc                 
   t        t              rt        vs
J d        | t        <   | S t        t        t        f      rD ]  } t        |      |         | S t              sJ t        j                  | f       | S )Nzduplicate registration: )	rA   r   op_implementations_dictlisttupleregister_op_implcallabler   append)op_imploprH   s     r$   impl_decoratorz(register_op_impl.<locals>.impl_decorator   s    nj1!)@@ *>*:;@ 7>#N3  u6$ .$ $W-.  N+++%,,ng-FGr&    )rH   rS   s   ` r$   rN   rN      s     r&   c                     | t         v S r/   rK   rR   s    r$   _is_op_registered_to_fake_rulerX      s    (((r&   c                     t         j                  | d        t        D ]"  \  }}|| u st        j                  ||f        y  y r/   )rK   popr   remove)rR   checkimpls      r$   _deregister_op_implr^      sA    D)0 tB;%,,eT];r&   c                 (    t        |   | |g|i |S r/   rV   	fake_moder<   argskwargss       r$   #dispatch_to_op_implementations_dictrd      s    "4(DJ4J6JJr&   c                    |t         vsJ t        |||d      \  }}d|v rt        d      |t        v r"|d   j                  }|j                  d      f}nt        j                  d      }d}|j                  dd       }||n|}t        j                  d	      |d<   t        |       5   ||i |}d d d        t        | |      S # 1 sw Y   xY w)
NTrb   rc   normalize_to_only_use_kwargsnamesz+torch.compile doesn't support named tensorsinputcpurT   r+   meta)	_non_kwarg_device_constructorsr   r   _like_tensor_constructorsr+   rZ   r4   r   r   )	ra   r<   rb   rc   _
new_kwargsdefault_device
out_devicers	            r$   constructorsrs      s     5555&4TMAz &*9
 	
 ((#G,33w') e,$/J)5>J <</Jx 
&i	0 &$%*%&iJ//& &s   (	CCc                     t        |||d      \  }}|j                  d      }t        |       5   ||      }d d d        |S # 1 sw Y   S xY w)NTrg   ri   )r   rZ   r   )ra   r<   rb   rc   rn   ro   inprr   s           r$   non_kwarg_is_pinnedrw      sV    &dFMAz ..
!C 
&i	0 IHHs   	AAc                 4   t        |||d      \  }}|d   }|r|n|d   j                  }t        j                  d      |d<   |j                  d      }t	        |       5   ||fi |}	d d d        | j
                  j                  | 	|      S # 1 sw Y   &xY w)NTru   r+   ri   rk   )r   r+   r4   rZ   r   fake_tensor_converterfrom_meta_and_device)
ra   r<   rb   rc   rn   ro   input_devicerq   rv   rr   s
             r$   non_kwarg_tor|      s     'dFMAz h'L!-:g3F3M3MJ <</Jx
..
!C	%i	0 $#
#$ **??1j $ $s   
BBc                      y)NFrT   rW   s    r$   r   r      s    r&   c                     d | j                   rat        fdt        j                  ||j	                               D              }|s)t
        j                  ||f      \  }}t        | |||d       S t        |      )Nc                     t        | t              r| j                  S t        | t        j                  t        j
                  t        j                  f      ryy)NTF)rA   r   _has_symbolic_sizes_stridesr4   SymIntSymFloatSymBoolxs    r$   is_symbolicz3wordaround_stride_incorrect_op.<locals>.is_symbolic   s;    a$000a%,,FGr&   c              3   .   K   | ]  } |        y wr/   rT   )r1   r   r   s     r$   r3   z1wordaround_stride_incorrect_op.<locals>.<genexpr>  s      
 KN
s   )	allow_fallback_kernelsr9   	itertoolschainvaluespytreetree_flattenr   r   )ra   r<   rb   rc   require_dynamic	flat_args	args_specr   s          @r$   wordaround_stride_incorrect_opr      sw     '' 
$-OOD&--/$J
 
 #)#6#6f~#F Iy&y$	9dSS
&t
,,r&   c                 T    t        |       5   ||i |cd d d        S # 1 sw Y   y xY wr/   )r   r`   s       r$   
resize_as_r     s,    	%i	0 %T$V$% % %s   'c                 "    t        | |g|i |S r/   )rs   r`   s       r$   (_sparse_coo_tensor_with_dims_and_tensorsr     s     	49$9&99r&   c                     t         j                  j                  | j                  v xrO | t        j
                  j                  t        j                  j                  t        j                  j                  fvS r/   )
r4   Tagdynamic_output_shapetagsatenindexTensornonzerodefaultrepeat_interleaver<   s    r$   <lambda>r      sU    //499< TJJt||33T5K5K5R5RS	T r&   c                     t        |      r/   )r   r`   s       r$   	dyn_shaper     s     &d
++r&   Funique_consecutivec                V   | j                   | j                   j                  st        |      |r|j                  n|j                  }||ddlm}	m}
  |
|j                               s|j                         dk(  rd}nm| j                   j                         }t        j                  dz
  }||j                         n|j                  |      } |
|      st        |      } |	||       ||r||_        n||_        ||j                  |f      g}n4 |j                  g |j                  d | ||j                  |dz   d   g}|d uxr" |j                   t#        j$                  d      k(  }|s|r.|j                  ||j                  n|j                  |   f      }n|j                  d      }|j'                  |       |s|r4|j                  ||d   j                  n|d   j                  |   f      }n|j                  d      }|j'                  |       t)        |      S )Nr   _constrain_range_for_sizehas_free_symbolsr@   maxrj   )	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_devicer4   r+   rP   rM   )ra   r<   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%cv6;!.1+"%
{}}cV$%s}}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           	      $    t        | ||d |||      S r/   r   )ra   r<   r?   r   r   r   s         r$   unique2r   t  s     9dCv~}UUr&   c                    ddl m} |j                  rt        S |j	                         }t        j                  |dk7  d        |dk\  r|n||z   }|j                  |      }t        |j                               }t        |j                               }	d }
 ||dk\        r|j                         ||	|   z  z   }
n' ||dk        r|j                         ||z   |	|   z  z   }
|
S| j                  "| j                  j                  s| j                  st        |      | j                  j                         }
||= |	|= |
J |j                  ||	|
      S )Nr   guard_or_falsec                       y)Nz-select() cannot be applied to a 0-dim tensor.rT   rT   r&   r$   r   zmeta_select.<locals>.<lambda>  s    r&   )r   r   	is_sparseNotImplementedr   r4   _check_indexr   rL   stridestorage_offsetr   allow_scalar_outputsr   r   
as_strided)ra   r<   selfr   r   r   ndimr   new_size
new_stridenew_storage_offsets              r$   meta_selectr   {  sL   D~~88:D		?
 #sTzC99S>DDIIK Hdkkm$Jeqj!!002UZ_5LL			"!002edljQTo5UU!&##8822.t44 '00GGI3)))??8Z1CDDr&   c           
      `    t        | |||dk\  r|n|t        |j                  d      z  |||      S )Nr   r@   )r   r   r   )ra   r<   r?   r   r   r   r   s          r$   
unique_dimr     s>     axS3sxx#33	 	r&   c           
      (    t        | |||d||d      S )NFTr   r   )ra   r<   r?   r   r   r   s         r$   rn   rn     s'    	 	r&   c                 r   ddl mmm} fd}fd}t	        |       dk(  rdgt	        |      z  S t        t        j                  | d      } ||dk(        }|r | || |            r|S dgt	        |      z  }	|rUt        t	        |      dz
  dd      D ]7  }
|
t	        |      dz
  k(  rd|	|
<   t        ||
dz      d      |	|
dz      z  |	|
<   9 |	S t	        |      dz
  }
|d   }d}d}t        t	        |       dz
  dd      D ]  }|| |   z  }|dk(  s' || |dz
     dk7        s" |||dz
     ||z  k7        s7|
dk\  rN |||k        s |||
   dk(        r5||z  |	|
<   |||
   z  }|
dz  }
|
dk\  r |||k        r& |||
   dk(        r5 |||k7        r y |dkD  s||dz
     }d}d} |
dk7  ry |	S )Nr   )r   guard_or_truesym_eqc                     r |       S | S r/   rT   )r   r   size_obliviouss    r$   maybe_guard_or_falsez-_compute_stride.<locals>.maybe_guard_or_false  s    !!$$r&   c                     r |       S | S r/   rT   )r   r   r   s    r$   maybe_guard_or_truez,_compute_stride.<locals>.maybe_guard_or_true  s     ##r&   r@   )
r   r   r   r   rD   r   operatormulranger   )	old_shape
old_stride	new_shaper   r   r   r   r   
zero_numelr   view_dchunk_base_stridetensor_numel
view_numeltensor_dr   r   s      `           @@r$   _compute_strider     s<     9~sS^##8<<A.E%eqj1J*6)Y+GHs9~%JC	NQ.B7 	FY!++%&
6" 	&1*-q1Jvz4JJ 6"		 ^aF"2LJ#i.1,b"5 	(++q=	(Q, 71 <=#8a<(L;L,LL A+#J$=>'	&(9Q(>?%/2C%C
6"i//
! A+#J$=>'	&(9Q(>? #:#=>!|$.x!|$<! 
/0 |r&   c                     ddl m t        j                  |d      }t	        fd| j                         D              xs8 t	        fd| j                         D              xs t	        fd|D              S )Nr   has_hintFvalidatec              3   0   K   | ]  } |         y wr/   rT   r1   sr   s     r$   r3   z+_view_has_unbacked_input.<locals>.<genexpr>  s     .O.   c              3   0   K   | ]  } |         y wr/   rT   r   s     r$   r3   z+_view_has_unbacked_input.<locals>.<genexpr>  s     318A;3r   c              3   0   K   | ]  } |         y wr/   rT   r   s     r$   r3   z+_view_has_unbacked_input.<locals>.<genexpr>  s     .18A;.r   )r   r   utilsextract_shape_from_varargsr9   r   r   )ar   r   s     @r$   _view_has_unbacked_inputr     s_    >,,UUCE 	.QVVX.. 	/3
33	/...r&   c                     ddl m} ddlm}m} t        j                  d      t        j                   j                                j                  dk(  rO }D ]:  }t        j                  |dk(         t        j                  j                  |d      }< | u r |       S |S t              dk(  rY } j                  D ]:  }t        j                  |dk(         t        j                  j!                  |d      }< | u r |       S |S t#        t$        j&                  d      }t        j                   j                         |k(   fd       t              t         j                        k(  r! | | j                              r |       S |rt)               r)nt+               rt-              }	 j/                  |	      S t1         j3                          j5                         |	      }
|
 j/                  |
      S |rHt        j6                  j8                  j:                  j<                  st?               rtA         d
      S d j                   d j5                          d d}tC        |      )Nr   )view_ofr   r   Fr   r@   r   c                  *    d j                    d dS )Nz&Could not reshape a tensor with shape  as a tensor with shape !)r   )r   r   s   r$   r   z%_view_unbacked_meta.<locals>.<lambda>>  s    8	AYZ_Y``ab r&   )r   )size_oblivious_enabledz Cannot view a tensor with shape z and strides r  r  )"torch._primsr  r   r   r   r   r   
infer_sizer   r   r4   _check_refs	unsqueezerD   r   squeezer   r   r   r   r   r   r   r   r   r   fxexperimental_configbacked_size_obliviousr   _view_unbacked_meta
ValueError)r   r   r  r  r   r   _alengthshape_numelstridesnew_stridesmsgs   ``          r$   r  r    s)   $L ,,UUCE UAGGI.E 	vv{ 	/FLL1%&&r2.B	/ 71:I 5zQgg 	-FLL1%$$R,B	- 71:Iua0K	LL		[ b
 5zS\!nVE1775K&Lqz$:a a@P-e4||E7++!	!((*e4JK ||E;// %%;;#Au-"1eEJJ,QWWI]188:,Nfglfmmn
oC
S/r&   c                 R   |j                   s|j                  rt        S t        j                  g ||j                          }t        |      r.t        | ||g| }|j                  t        j                        S t        | ||j                  t        j                        g| S Nmemory_format)r   	is_mkldnnr   r   r	  r   r   
_view_metacloner4   contiguous_format)ra   r<   r   r   views        r$   _reshape_copyr#  ^  s    {{akk/e/QWWY/Ea )T15u5zz(?(?z@@tQWW53J3JWK
NS
 	
r&   c                     t         j                  j                  j                  j                  st        ||      rt        ||      S t        j                  j                  |g|ddiS )N
allow_copyF)	r4   r  r  r  r  r   r  r  _reshape_view_helper)ra   r<   r   r   s       r$   r  r  m  sX     xx$$::>V	5? #1e,,{{//LELeLLr&   )outc                T    t        | ||g| }||S t        j                  d |      S )Nc                 B    | j                  t        j                        S r  )r   r4   r!  r   s    r$   r   z!_view_meta_copy.<locals>.<lambda>  s    !''(?(?'@ r&   )r  r   tree_map)ra   r<   r   r'  r   results         r$   _view_meta_copyr,  x  s6    	43U3F
??@ r&   c                     |U| j                   | j                   j                  st        |      | j                   j                         }ddlm}  ||       |j                  |      S Nr   r   )r   r   r   r   r   r   r   )ra   r<   repeatsoutput_sizer   s        r$   repeat_interleave_tensorr2    sa    '&&EE-d33))@@B 	T!+.[))r&   c                    |j                   x}|S | j                  "| j                  j                  s| j                  st        |      t	        |j
                        r| j                  j                         }nxt        |j
                        r| j                  j                         }nHt        |j
                        r| j                  j                         }nt        d|j
                         ||_         |S )Nz local_scalar_dense/item NYI for )	item_memor   r   r   r   dtypecreate_unbacked_symfloatr   r   r   create_unbacked_symboolNotImplementedError)ra   r<   r?   rr   s       r$   local_scalar_denser9    s     ]]'"44.. +400cii 88:	#))	$668	#))	$779!$DSYYK"PQQCMHr&   c                     t         j                  j                  j                  j	                  |      j                  d      S )Nr@   )r4   opsr   r   r   unbind)ra   r<   r?   s      r$   nonzero_numpyr=    s,    99>>!!))#.55a88r&   c                 J   | j                   | j                   j                  st        |      |j                  x}4ddlm}m} ddlm} ddl	m
}  ||j                               s|j                         dk(  rd}n| j                   j                         }t        j                  dz
  } ||j                               st        |j                               }nt!        j"                  |j$                        j&                  }	 ||	j(                  |	j                   j*                        }
t-        |
j.                  |      rt        j                  dz
  }n|
j.                  } |||       ||_        |j1                  ||j3                         fd|ft4        j6                        S )Nr   r   IntInfinitybound_sympyr@   r   )r5  )r   r   r   nonzero_memor   r   r   torch.utils._sympy.numbersr@  torch.utils._sympy.value_rangesrB  r   r   r   r   r   mathprodr   nodeexprvar_to_rangerA   uppernew_empty_stridedr   r4   int64)ra   r<   r?   r   r   r   r@  rB  r   	prod_node
prod_ranges              r$   r   r     sI    	#""AA *$//(	
 	;?		,1A C%%<<>C[[1_F#CIIK0SYY[) IIcii055	(NNI$7$7$D$D
 j..< [[1_F'--F%cv6  #swwy!1As85;; OOr&   c                    t        |      dk(  sJ |s| j                  | j                  j                  st        |      | j                  j	                         }t
        j                  dz
  }ddlm}m	}  ||j                               st        |j                               } ||d|       |g|j                  dd  }|j                  |      S )Nr@   r   r   )minr      )rD   r   r   r   r   r   r   r   r   r   r   r   r   r   )	ra   r<   paddedoffsetstotal_Lr   r   r   output_shapes	            r$   _padded_dense_to_jagged_forwardrW    s     w<1'&&EE .d33%%<<>q	

  /(F!'qf=/fll12./LL))r&   c                     ddl m}m}  | ||dk\  || k              r|S  | ||dk  ||  k\              r|| z   S  |||  k        ry ||| kD        r| S y )Nr   )r   sym_and)r   r   rY  )r   r   r   rY  s       r$   _compute_slice_indexrZ    si    Mgeqj%4-89		5TE>:	;t|		&		%r&   r   startendstepc                    ddl m}m} | j                  }	|j	                         }
|
dk(  rt        d      t        |j	                         |      }t        |j                               }t        |j                               }|dk  rt        d      |dnt        ||   |      } ||t        j                  k(        s|||   nt        ||   |      }d }|)|' |||k\        r||z
  |z   dz
  |z  }n |||k\        rd}|C|	j                         }t        j                  |dk\         t        j                  |||   k         ||   |z  }||j!                         |||   z  z   }n(|	j                         }t        j                  |dk\         |||<   |||<   |j"                  rt%        d      |j'                  |||      S )Nr   )r   statically_known_truez,slice() cannot be applied to a 0-dim tensor.zslice step must be positiver@   z<Slice decomposition for quantized tensors aren't implemented)r   r   r_  r   r   RuntimeErrorr	   rL   r   r   rZ  r   r   r   r4   r
  r   is_quantizedr8  r   )ra   r<   r   r   r[  r\  r]  r   r_  r   r   sizesr  start_index	end_indexr   r   r   s                     r$   slice_forwardre    s   
 ##I88:DqyIJJ
488:s
+CE4;;=!Gqy899 }!*>uSz5*QK !!34 	c
!%*c2  H9#8){23!K/$6:tCHK945H 335X]#Xs+, $J ,,.ws|1KK"99;^q()E#JGCL!J
 	
 ug~>>r&   c                    | j                   | j                   j                  st        |      | j                   j                         }t        j
                  dz
  }ddlm}m} ddl	m
} ddlm}	  ||j                               st        |j                               }
nt        j                   |j"                        j$                  } |	|j&                  |j                   j(                        }t+        |j,                  |      rt        j
                  dz
  }
n|j,                  }
|
dkD  r|
} |||       |j/                  |f      S )Nr@   r   r   r?  rA  rR  r   )r   r   r   r   r   r   r   r   r   rD  r@  rE  rB  r   r   rF  rG  r   rH  rI  rJ  rA   rK  r   )ra   r<   r   maskr   r   r   r   r@  rB  num_elementsrN  rO  s                r$   masked_selectri  Z  s     	#""AA *$//



4
4
6C [[1_F 7;
 DJJL)4::<(IIdjj)..	 1D1D1Q1QR
j&&4;;?L%++Lacv.>>3&!!r&   )r+   layoutc                   |.|j                         |k(  sJ d| d|j                                 |.|j                         |k(  sJ d| d|j                                 |&|j                  |k(  sJ d| d|j                          |*|j                  |k(  sJ d| d|j                                 |'|j                  |k(  sJ d| d|j                          y y )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   r   r5  rj  r+   )ra   r<   trb  r  r5  r+   rj  s           r$   assert_tensor_metadatarm    s    vvx5  	
/wgaffhZH	
  xxzW$ 	
1''!((*N	
$ ww% 	
/wgaggYG	
 xx6! 	
0
|L	
! xx6! 	
0zJ	
! r&   c                 N    t         j                  j                  | j                  v S r/   )r4   r   data_dependent_outputr   r   s    r$   r   r     s    uyy>>$))K r&   c                     t        |      r/   )r   r`   s       r$   data_deprq    s    
&t
,,r&   c                     |D ]<  }||j                   t        j                  t        j                  fv s3t	        |        y r/   )r5  r4   booluint8r   )r<   r   indicesr   s       r$   check_no_bool_index_tensorsrv    s:     4U[[0I!I-d334r&   c                    t        |||d      \  }}|d   j                  }t        |       5   ||i |}t        |      s|j	                  |j
                        }d d d        |d   u r|S t        | ||      S # 1 sw Y   xY wNTrf   ri   )r   r+   r   r,   r   r   r   )ra   r<   rb   rc   rn   ro   rq   r'  s           r$   )run_and_return_new_tensor_of_input_devicery    s    &4TMAz G$++J	%i	0 +D#F#)*5--		*C+
 j!!
ij11+ +s   /A::Br   primsprimc                 &    | j                   t        v S r/   )	namespace_is_builtin_namespacesrW   s    r$   
is_builtinr    s    <<111r&   c                 ^    t         j                  j                  | j                         d      S )NMeta)r4   r5   ._dispatch_has_computed_kernel_for_dispatch_keynamer   s    r$   r   r     s     88BB499;PVWWr&   c                 t    t        |       xr, | j                         j                  d      xr t        |       S )Nzaten::_foreach_)r  r  
startswithr   r   s    r$   r   r     s4    D! 		01 r&   c           	      Z   t        j                  ||j                               D cg c]B  }t        |t        t
        f      r*t        |      rt        |d   t        j                        r|D }}	 t        |       5   ||i |}d d d        s|S |sJ g }t        |      D ][  \  }}	t        j                  ||D 
cg c]  }
|
|   	 c}
      \  }}|j                  | j                   j#                  | |	|             ] |S c c}w # 1 sw Y   xY w# t        $ r	 t        cY S w xY wc c}
w Nr   )r   r   r   rA   rL   rM   rD   r4   r   r   r8  r   	enumerater   _find_common_devicerP   ry   rz   )ra   r<   rb   rc   r?   tensor_listsout_metaout_fakeimeta_ttlr+   rn   s                r$    foreach_run_and_map_input_devicer    s*    ??49cD%=)Hs1vu||,	 	L ))4 	-T,V,H	-
 <Hx( 
	6224,9WB"Q%9WX	++@@66	

 O9	- 	-  :Xs6   AD1D <	DD <D(DD D%$D%c                     ddl m} t        |||d      \  }}|d   j                  }| 5   ||i |}|j	                  |      cd d d        S # 1 sw Y   y xY w)Nr   )meta_index_TensorTrf   ri   )torch._meta_registrationsr  r   r+   to)	ra   r<   rb   rc   r  rn   ro   rq   r'  s	            r$   index_tensorr    sa    ;&4TMAz G$++J	 "00vvj!" " "s   AAc                 N    ddl m} | 5   ||i |cd d d        S # 1 sw Y   y xY w)Nr   )meta_embedding_bag)r  r  )ra   r<   rb   rc   r  s        r$   embedding_bagr  	  s*    <	 3!42623 3 3s   $c                     t        | |||      S r/   )ry  r`   s       r$   multi_device_op_defaultr    s    
 5YdFSSr&   c                     t        |       5   ||i | d d d        t        |||d      \  }}|d   S # 1 sw Y    xY wrx  )r   r   )ra   r<   rb   rc   rn   ro   s         r$   multi_device_op_outr    sT     
&i	0 df '4TMAz g s   	4=c                 R   t        ||d      \  }}|d   |d   j                  t        j                  j                  k(  xs$ j                  dk(  xr j                         dk(  fd       t        | ||      }t        j                  j                  u r|d   S |S )NTrf   r   ri   r   r@   c                  0    d  d dj                    dS )NzMismatching z device between self (z) and values ()r*   )r<   self_devicer   s   r$   r   z index_put_impl.<locals>.<lambda>3  s&    ,tf$:;-~V\VcVcUddef r&   )
r   r   r4   r
  r   r   ry  r   
index_put_r   )	ra   r<   rb   rc   rn   ro   r'  r  r   s	    `     @@r$   index_put_implr  (  s     '4TMAz !FW%11K	LLv)))WfkkQ.>.V6<<>UVCVf
 4ItT6
RCt&&&'""
r&   c                     t        d      )Nz3torch.compile does not support strided NestedTensor)r   r`   s       r$   nested_tensors_unsupportedr  =  s    
 '= r&   c                 (    |t         vs
J d|        y )NzNYI: )_device_not_kwarg_opsr`   s       r$   nyir  G  s      ,,<dVn<,r&   c                     t        |||d      \  }}|d   j                   5  |d   j                  }|d   j                  d   }ddlm}  ||      sd }n|t        j                  j                  u r t        j                  j                  di |}	nDt        j                  j                  |d   |d   d |d   |d   |d	   |d
   |d   |d   |d   
      }	|dk(  r|d   j                  s|d   j                  s|d   j                         j                  d      |d<   |d   j                  d      |d<   t!        |d         dk(  rT|d   j#                  dd       |d   j#                  dd       |d	   j#                  dd       |d   j#                  dd       t        j                  j%                  |d   |d   |	      }|dk(  r|d   j                  s|d   j                  s|d   j'                  d      |d<   |d   j'                  d      |d<   t!        |d         dk(  rP|d   j)                  d       |d   j)                  d       |d	   j)                  d       |d   j)                  d       d d d         fd}
t+               5   |di |}|t        j                  j                  u r |
|      cd d d        S  |
|d          |
|d   |       |
|d   d       fcd d d        S # 1 sw Y   }xY w# 1 sw Y   y xY w)NTrf   ri   weightr   r   r   paddingdilation
transposedoutput_paddinggroups
bias_sizes)biasr   r  r  r  r  r  r     rR  r@   c                     | | S |i| j                         dk(  rD|t        j                  k(  r1| j                  d      j	                  |      j                  d      } n| j	                  |      } t        |       S )Nr  rR  r  )r   r4   channels_lastr  r  r  r   )rl  mem_fmtr+   ra   s     r$   convertzconv.<locals>.convert  sr    9Huuw!|5+>+> >KKN%%G%<DDQGDDwD/)Q//r&   rT   )r   r   r   r   r   r   r   convolutionr   r4   r5   _select_conv_backendr  is_xpu
contiguousr  rD   insert%_conv_determine_backend_memory_formatr  rZ   r   )ra   r<   rb   rc   rn   kbatchr   r  conv_backendr  r'  r+   s   `           @r$   convr  Z  s4   "4TIAv G_((F	 348!!w%%a( 	C Gt''///$xx<<FvF$xx<<7O8$!(+"9-#J/%l3#)*:#;!(+%l3  =   AvfWo77w@V@V"(/"<"<">"H"H"Kw#)(#3#=#=a#@x vh'(A-8$++Aq19%,,Q2:&--a3+,33Aq9hhDDw!1<G AvfWo77w@V@V"(/"9"9!"<w#)(#3#;#;A#>x vh'(A-8$((+9%))!,:&**1-+,003g34j	0 
&i	0 
nVn4##+++3(	
 
 A(A(A%
 
A34 34@
 
s   IK3-K?"K?3K<?Lc                     | j                   | j                   j                  st        |      | j                   j                         }ddlm}  ||       t        j                  ||k\         |j                  |      S r.  )	r   r   r   r   r   r   r4   r
  r   )ra   r<   inputsweights	minlengthr   r   s          r$   bincountr    sm     	#""AA *$//""99;HOh'	LLY&'H%%r&   c                 @   | j                   | j                   j                  st        |      | j                   j                         }ddlm}  ||       |s|j                  dd      }|j                  dd  }|j                  |      }|j                  |f      }	||	fS )Nr   r/  r@   )	r   r   r   r   r   r   	transposer   r   )
ra   r<   r  lengthsbatch_firstnew_batch_sizer   res_sizepacked_data
batch_sizes
             r$   _pack_padded_sequencer    s     	#""AA *$//((??ANOn-!!!Q'||ABH""8,K!!>"34J$$r&   c                       fd}|S )Nc                     | t         <   | S r/   )FAST_OP_IMPLEMENTATIONS)rQ   r<   s    r$   rS   z-register_fast_op_impl.<locals>.impl_decorator  s    (/%r&   rT   )r<   rS   s   ` r$   register_fast_op_implr    s     r&   c                   
 ddl m} t        |       }t        |      }t        ||      }dg|z  }t	        |dz
  dd      D ]|  
|dz
  
z
  }|dz
  |z
  }|dz
  |z
  }	|dk\  r| |   nd|	dk\  r||	   ndt        j                   |dk(        xs  |dk(        xs k(  
fd        |dk(        rn|
<   ~ t        |      S )Nr   r   r@   r   c                      d d d  dS )NzThe size of tensor a (z#) must match the size of tensor b (z) at non-singleton dimension r  rT   )r  sizeAsizeBs   r$   r   zinfer_size.<locals>.<lambda>  s'    ,UG 4005w 7**+A/ r&   )r   r   rD   r   r   r4   r
  rM   )r   br   dimsAdimsBr   expandedSizesoffsetdimAdimBr  r  r  s             @@@r$   r	  r	    s    DFEFEueDC$JM4!8R$ JAqy6!qy6!19$!19$! 	5A:&V.!*DVQV/	
 %35A:$>5Ea1J2 r&   c                       fd}|S )Nc           	           fd}t        d       }d }|D ]:  }t        |t        j                        r|j                  nd}||}t        ||      }< |J ddlm}m}	 |D ]Z  }t        |t        j                        st        |j                        t        |      k(  s@ | |	|j                  |            sZ n	  |d      S t        j                  d      }
|
}d }d}|D ]  }t        |t        j                        sd	} ||
k(  r%|j                  j                  dk7  r|j                  }|#t        j                  k7  rd	}b|j                  }o||j                  k7  sd	} |rt        |d
i\  }}d}d}|D ]r  }t        |t        j                        s||
k7  r7|j!                         dk(  r$|j                  |
k(  r||k\  r
 |d      c S |dz  }Z|j                  |k7  sj |d      c S  d	}d	}t#        |      r`|D ][  }t        |t        j                        s|xr t%        |t        j&                        }|xr t%        |t        j(                        }] |r>t        d       t+         t        j,                  ||dt        j&                        |      S |r>t        d       t+         t        j,                  ||dt        j(                        |      S  |d      S )Nc                 `    t        d|         5   i cd d d        S # 1 sw Y   y xY w)Nzslow r   )r  rb   rc   modeslow_refs    r$   slowz=make_fast_binary_impl.<locals>.fast_binary_impl.<locals>.slow  s6    %u& 1001 1 1s   $-zattempt fastrT   r   r  z#both tensors nontrivially broadcastrj   FTtype_promotion_kindr@   errorr  zfast is_contiguousrk   )r5  r+   r  r*   zfast channels_lastzno contiguity match)r   rA   r4   r   r   r	  r   r   r   rD   r+   r)   r   DEFAULTr5  r
   r   r,   r   r!  r  r   empty)r  rb   rc   r  operandsfinal_shaperR   r   r   r   rj   common_devicecommon_dtypehas_different_input_dtypesrn   current_cpu_scalars_on_non_cpumax_cpu_scalars_on_non_cpudefinitely_contiguousdefinitely_channels_lastr  r  s   ```                r$   fast_binary_implz/make_fast_binary_impl.<locals>.fast_binary_impl  s   	1
 	N#   	9B *2u|| <BHH"E"# %[%8K	9 &&&P  
	?B2u||,MS%55"6"((K#@A
	? =>> ll5!%*" 	2Bb%,,/-1*#		%(? "		#&*I*Q*QQ15.#%88L)-1*	2 & 1/BOA| *+&%&" 	%Bb%,,/#A"))s:J15OO=(.!3.m+G}$	% !%#' 
 &m4 !"ell3) @%*A*A & - @%*=*= ) !,-&!"'"9"9	 %	 	 $,-&!"'"5"5	 %	 	 )**r&   rT   )r  r  r  s   `` r$   make_fast_binary_implr  
  s    I+V r&   c                 ^   t               5  t        |       5  t        j                  j                  j
                  j                  |      }d d d        d d d        |r#t        | |j                  |j                        S t        | |j                        S # 1 sw Y   MxY w# 1 sw Y   QxY w)N)real_tensor)
r   r   r4   r;  r   detachr   r   r+   r  )ra   r   include_realr'  s       r$   fast_detachr    s    		 /!=i!H /iinn##++A./ /)S!((NNiahh//	/ / / /s"   B#4BB#B 	B##B,c                  `   dd l }  t        | j                  j                  j                  j
                        t        | j                  j                                t        | j                  j                  j                  j
                        t        | j                  j                                t        | j                  j                  j                  j
                        t        | j                  j                                t        | j                  j                  j                  j
                        t        | j                  j                  t        j                                t        | j                  j                  j                  j                        t               t         S )Nr   )r  )torch._refsr  r;  r   addr   r  r  subr   divr   INT_TO_FLOATr  r   r  r  )r4   s    r$   r   r     s   4%))..,,334ekkoo. 5%))..,,334ekkoo. 5%))..,,334ekkoo. 5%))..,,334KKOO ? L L	
 9%))..//778E""r&   )TFF)FFN)F)Tr/   )r   NNr@   )NNN)returnNr  )	functoolsr   rF  r   r   collections.abcr   r   typingr   r   r4   torch._custom_optorch._loggingtorch._prims_common_prims_commonr   torch._dispatch.pythonr   
torch._opsr   r	   r
   r   r   r   r   r   r   r   r   torch._subclasses.fake_tensorr   r   r   r   r   r   torch.fx.operator_schemasr   torch.utils._statsr   _pytreer   __all__rK   r   _opsr;  r   r%   r,   
empty_liker   r'  	full_like	ones_like	rand_like	generatorgenerator_out
randn_likerandint_liker   Tensor_generator
Tensor_outTensor_generator_out	low_dtypelow_generator_dtypelow_dtype_outlow_generator_dtype_out
zeros_liker   rL  new_full	new_zerosnew_onesrm   _resize_output__nested_tensor_from_tensor_list
pin_memoryr  r+   prim_Device	is_pinned_pin_memory_resize_outputr  _list_to_tensorrl   r0   cacherG   rs  rN   rX   r^   __contains__rd   rs   rw   r|   r   r   r   r   r   r   _unique2r   selectr   r   r   r   rn   r   r   r  r#  r"  _unsafe_viewr  	view_copyr,  r   r2  item_local_scalar_denser9  r=  r   rW  rZ  slicere  ri  _assert_tensor_metadatarm  rq  rv  ry  r~  r  r   r  r   r  _embedding_bagr  _unsafe_index_putcopycopy_slice_scatterr  r  	index_putr  r  _nested_view_from_buffer_nested_view_from_buffer_copyr  r  r  convolution_backwardr  r  r  r  r  r	  r  r  r  r   r   s   0r$   <module>r;     s       
 $  "    # 7 !    9 * 
		    zz~~&  ( 'OO'OO' 	NN' 	NN	'
 	NN' 	NN' 	NN' 	NN' 	NN' 	NN  ' 	OO' 	OO' 	OO' 	OO!!' 	'  	!'" 	#'$ 	&&%'& 	  ''( 	**)'* 	+', 	##-'. 	/'0 	))1'2 	##3'4 	--5'6 	OO7'8 	OO9': 	NN;'< 	NN='> 	""?'@ 	A'B 	MMC'D 	MME'F 	NNG'H 	NNI'J 	MMK'L 	MMM' T $  ((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 $++//"&E #&ER $//))*PU + $))112
 3
FR	BJ $$$,,-
 .
 $))##$$##++,M - %M $..(()48  * $((//0* 1*$ %))..%%--.%))..44<<= > /* %))....6679 89 %))..((0010P 20Pf %))..@@HHI* J*> %))..&&--.
 A? 
	A?
 C=A? 
#A? A? /A?H %))....667&" 8&"R %))..88@@A
 

 
 

 B
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 < @  ' NN""GGNNGG00880044

 	
== 4##++T-F-F-N-NOPP QPf %))..))112& 3&" %))..66>>?% @%0  

   H #B"I"INf0 # #}
s   A6r7