
    9iz                        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        j*        Z+g dZ,i Z-g Z.ej/        j0        j1        Z1d Z2d Z3 e2g e1j4        j5        e1j4        j6        e1j7        j5        e1j7        j6        e1j8        j5        e1j8        j6        e1j9        j5        e1j9        j:        e1j9        j6        e1j9        j;        e1j<        j5        e1j<        j:        e1j<        j6        e1j<        j;        e1j=        j5        e1j=        j:        e1j=        j>        e1j=        j?        e1j=        j@        e1j=        jA        e1j=        j6        e1j=        j;        e1j=        jB        e1j=        jC        e1j=        jD        e1j=        jE        e1jF        j5        e1jF        j6        e1jG        j5        e1jG        j6        e1jH        j5        e1jH        j6        e1jI        j5        e1jI        j6        e1jJ        j5        e1jJ        j6        e1jK        j5        e1jK        j6        R  ZL e2e1jM        j5        e1jN        j5        e1jN        j6        e1jO        j5        e1jP        jQ        e1jP        jR        e1jS        j5        e1jT        j5        e1jT        j6        e1jU        j5        e1jU        j6                  ZVe1jW        fZXd ZYe jZ        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]e1jS        j5                  d             Zc e]e1jP        jR                   e]e1jP        jQ                  d                         Zdd Ze e]ee          d             Zf e]e1jg        j5                  d             Zg e]e1jh        j5                  d             Zh e]d           d             Zi	 	 	 dYd d!d"Zj e]e1jk        j5                  	 dYd#            Zl e]e1jm        jn                  d$             Zo e]e1jp        j5                  	 dYd%            Zp e]e1jq        j5                  dZd&            Zrd[d'Zsd( Ztd\d)Zu e]e1jv        j5                  d*             Zv e]e1jw        j5                   e]e1jx        j5                  d+                         Zy e]e1jz        j5                  dd,d-            Z{ e]e1j|        j>                  d]d.            Z} e]ej0        j1        j~        j5                   e]ej0        j1        j        j5                  d/                         Z e]ej0        j1        j        j5                  d0             Z e]ej0        j1        j        j5                  d1             Z e]ej0        j1        j        j5                  d]d2            Zd3 Z e]ej0        j1        j        j>                  	 	 	 	 d^d5end6e	en         d7e	en         d8enfd9            Z e]ej0        j1        j        j5                  d:             Z e]ej0        j1        j        j5                  	 	 	 d_ddd;	 d`d=            Z e]d>           d?             Zd@ ZdA Z e2dBdCdD          ZdE ZdF Z e]dG           dH             Z e]e1j        j>                  dI             Z e]e1j        j5                  dJ             Z e]e1j        j5                   e]e1j        j5                   e]e1j        j5                   e]e1j        j5                  dK                                                 Z e]e1j        j6                   e]e1j        j6                  dL                         Z e]e1j        j5                   e]e1j        j5                  dM                         Z e]e1jN        j5                   e]e1jN        j6                   e]e1j        j5                   e]e1j        j5                  dN                                                 Z e]dO eVD                       dP             Z e]e1j        j5        e1j        j5        g          dQ             Z e]ej0        j1        j        j5                  dadR            Z e]ej0        j1        j        j5                  dS             Zi ZdefdTZdU Zej        fdVZd[dWZe jZ        dX             ZdS )b    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                  8    t                               | d          S )NT)dictfromkeys)itemss    O/var/www/icac/venv/lib/python3.11/site-packages/torch/_subclasses/fake_impls.pyordered_setr%   :   s    ==%%%    c                     | j         dk    S )Nhpu)typedevices    r$   is_noncontiguous_supportedr,   @   s    ;%r&   c                     t           j        j                                        }|                     |          p*t          d |                                 D                       S )Nc              3   4   K   | ]}t          |          V  d S N)contains_tensor_types).0es     r$   	<genexpr>z(contains_tensor_types.<locals>.<genexpr>   s<       0 0%&a  0 0 0 0 0 0r&   )torch_C
TensorTypegetisSubtypeOfanycontainedTypes)r)   tensor_types     r$   r0   r0      sg    (%))++KK(( C 0 0*.*=*=*?*?0 0 0 - - r&   funcc                    t          | t                    sJ | j        }t          d |j        D                       rdS t          |j                  dk    o4|j        d         j        t          j	        j
                                        u S )Nc              3   >   K   | ]}t          |j                  V  d S r/   )r0   r)   r1   args     r$   r3   z)_is_tensor_constructor.<locals>.<genexpr>   s-      
G
Gs **
G
G
G
G
G
Gr&   F   r   )
isinstancer   _schemar9   	argumentslenreturnsr)   r4   r5   r6   r7   )r<   schemas     r$   _is_tensor_constructorrH      s    dJ'''''\F

G
Gf6F
G
G
GGG u 	FNq XV^A%6%;ux?R?V?V?X?X%Xr&   run_impl_checkc                       fd}|S )Nc                 B   t          t                    r!t          vsJ d             | t          <   ngt          t          t          f          rD ]} t          |          |            n-t                    sJ t                              | f           | S )Nzduplicate registration: )	rB   r   op_implementations_dictlisttupleregister_op_implcallabler   append)op_imploprI   s     r$   impl_decoratorz(register_op_impl.<locals>.impl_decorator   s    nj11 
	H!)@@@@;>;; A@@ 7>#N33u66 	H$ . .$ $$W----. N+++++%,,ng-FGGGr&    )rI   rT   s   ` r$   rO   rO      s$         r&   c                     | t           v S r/   rL   rS   s    r$   _is_op_registered_to_fake_rulerY      s    (((r&   c                     t                               | d            t          D ](\  }}|| u rt                              ||f            d S )d S r/   )rL   popr   remove)rS   checkimpls      r$   _deregister_op_implr_      sb    D)))0  tB;;%,,eT];;;EE  r&   c                 0    t          |         | |g|R i |S r/   rW   	fake_moder<   argskwargss       r$   #dispatch_to_op_implementations_dictre      s'    "4(DJ4JJJ6JJJr&   c                    |t           vsJ t          |||d          \  }}d|v rt          d          |t          v r$|d         j        }|                    d          f}nt          j        d          }d}|                    dd           }||n|}t          j        d	          |d<   t          |           5   ||i |}d d d            n# 1 swxY w Y   t          | ||          S )
NTrc   rd   normalize_to_only_use_kwargsnamesz+torch.compile doesn't support named tensorsinputcpurU   r+   meta)	_non_kwarg_device_constructorsr   r   _like_tensor_constructorsr+   r[   r4   r   r   )	rb   r<   rc   rd   _
new_kwargsdefault_device
out_devicers	            r$   constructorsrt      s`    55555&4T  MAz &*9
 
 	
 (((#G,3w'') e,,$//J)5>J <//Jx 
&i	0	0 & &D$%*%%& & & & & & & & & & & & & & &iJ///s   :	CCCc                     t          |||d          \  }}|                    d          }t          |           5   ||          }d d d            n# 1 swxY w Y   |S )NTrh   rj   )r   r[   r   )rb   r<   rc   rd   ro   rp   inprs   s           r$   non_kwarg_is_pinnedrx      s    &dF  MAz ..
!
!C 
&i	0	0  DII              Hs   AAAc                 P   t          |||d          \  }}|d         }|r|n|d         j        }t          j        d          |d<   |                    d          }t	          |           5   ||fi |}	d d d            n# 1 swxY w Y   | j                            | |	|          S )NTrv   r+   rj   rl   )r   r+   r4   r[   r   fake_tensor_converterfrom_meta_and_device)
rb   r<   rc   rd   ro   rp   input_devicerr   rw   rs   s
             r$   non_kwarg_tor}      s
    'dF  MAz h'L!-M:g3F3MJ <//Jx
..
!
!C	%i	0	0 $ $D##
##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ *??1j  s   +
BBBc                     dS )NFrU   rX   s    r$   r   r      s    5r&   c                    d | j         rtt          fdt          j        ||                                          D                       }|s2t
                              ||f          \  }}t          | |||d           S t          |          )Nc                     t          | t                    r| j        S t          | t          j        t          j        t          j        f          rdS dS )NTF)rB   r   _has_symbolic_sizes_stridesr4   SymIntSymFloatSymBoolxs    r$   is_symbolicz3wordaround_stride_incorrect_op.<locals>.is_symbolic   sF    a$$ 	100a%,FGG 	4ur&   c              3   .   K   | ]} |          V  d S r/   rU   )r1   r   r   s     r$   r3   z1wordaround_stride_incorrect_op.<locals>.<genexpr>  s<       
 
 KKNN
 
 
 
 
 
r&   )	allow_fallback_kernelsr9   	itertoolschainvaluespytreetree_flattenr   r   )rb   r<   rc   rd   require_dynamic	flat_args	args_specr   s          @r$   wordaround_stride_incorrect_opr      s       ' T 
 
 
 
$-OD&--//$J$J
 
 
 
 
  	T#)#6#6f~#F#F Iy&y$	9dSSS
&t
,
,,r&   c                 d    t          |           5   ||i |cd d d            S # 1 swxY w Y   d S r/   )r   ra   s       r$   
resize_as_r     s    	%i	0	0 % %tT$V$$% % % % % % % % % % % % % % % % % %s   %))c                 $    t          | |g|R i |S r/   )rt   ra   s       r$   (_sparse_coo_tensor_with_dims_and_tensorsr     s$     	49$999&999r&   c                     t           j        j        | j        v o3| 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      s>    /49< TJt|3T5K5RS	T r&   c                      t          |          r/   )r   ra   s       r$   	dyn_shaper     s     &d
+
++r&   TFunique_consecutivec                v   | j         | j         j        st          |          |r|j        n|j        }||ddlm}	m}
  |
|                                          s|                                dk    rd}nz| j         	                                }t          j        dz
  }||                                n|                    |          } |
|          st          |          } |	||           ||r||_        n||_        ||                    |f          g}n/ |j        g |j        d |         ||j        |dz   d          R  g}|d uo|j        t#          j        d          k    }|s|r+|                    ||j        n|j        |         f          }n|                    d          }|                    |           |s|r7|                    ||d         j        n|d         j        |         f          }n|                    d          }|                    |           t)          |          S )Nr   _constrain_range_for_sizehas_free_symbolsrA   maxrk   )	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+   rQ   rN   )rb   r<   r@   dimsortedreturn_inversereturn_countsr   nnzr   r   maxvalr   retreturn_if_dim_and_cpuinversecountss                    r$   _uniquer   (  s}    	#"A 	$ *$///);
P#
%
%C #+	
 	
 	
 	
 	
 	
 	
 	

  		,, 	71A1A CC%<<>>C[1_F#&;CIIKKKCHHSMME##E** $U%%cv6666;! &.1++"%
{}}cV$$%s}JcioJsJSYsQwyy5IJJJKtOV5<PUCVCV0V #. #--S[		sy~>OPP--""JJw "- "s{s1v||QcAR@TUUq!!JJv::r&   c           	      ,    t          | ||d |||          S r/   r   )rb   r<   r@   r   r   r   s         r$   unique2r   t  s     9dCv~}UUUr&   c                    ddl m} |j        rt          S |                                }t          j        |dk    d            |dk    r|n||z   }|                    |          }t          |                                          }t          |	                                          }	d }
 ||dk              r!|
                                ||	|         z  z   }
n2 ||dk               r#|
                                ||z   |	|         z  z   }
|
B| j        | j        j        s| j        st          |          | j                                        }
||= |	|= |
J |                    ||	|
          S )Nr   guard_or_falsec                      dS )Nz-select() cannot be applied to a 0-dim tensor.rU   rU   r&   r$   r   zmeta_select.<locals>.<lambda>  s    ? r&   )r   r   	is_sparseNotImplementedr   r4   _check_indexr   rM   stridestorage_offsetr   allow_scalar_outputsr   r   
as_strided)rb   r<   selfr   r   r   ndimr   new_size
new_stridenew_storage_offsets              r$   meta_selectr   {  s   DDDDDD~ 88::D		??  
 ##sTzC99S>>DDIIKK  Hdkkmm$$J~eqj!! V!0022UZ_5LL			"	" V!0022edljQTo5UU!&#8 '2 ' /t444 '0GGII3)))??8Z1CDDDr&   c           
      h    t          | |||dk    r|n|t          |j        d          z  |||          S )Nr   rA   )r   r   r   )rb   r<   r@   r   r   r   r   s          r$   
unique_dimr     sH     axxS3sx#3#33	 	 	r&   c           
      0    t          | |||d||d          S )NFTr   r   )rb   r<   r@   r   r   r   s         r$   ro   ro     s1    	 	 	 	r&   c                 J   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  }	|rjt          t	          |          dz
  dd          D ]F}
|
t	          |          dz
  k    rd|	|
<   t          ||
dz            d          |	|
dz            z  |	|
<   G|	S t	          |          dz
  }
|d         }d}d}t          t	          |           dz
  dd          D ]}|| |         z  }|dk    s3 || |dz
           dk              r |||dz
           ||z  k              r|
dk    rf |||k               s |||
         dk              rB||z  |	|
<   |||
         z  }|
dz  }
|
dk    r$ |||k               - |||
         dk              B |||k              r d S |dk    r||dz
           }d}d}|
dk    rd S |	S )Nr   )r   guard_or_truesym_eqc                 "    r |           S | S r/   rU   )r   r   size_obliviouss    r$   maybe_guard_or_falsez-_compute_stride.<locals>.maybe_guard_or_false  s      	%!>!$$$r&   c                 "    r |           S | S r/   rU   )r   r   r   s    r$   maybe_guard_or_truez,_compute_stride.<locals>.maybe_guard_or_true  s      	$ =###r&   rA   )
r   r   r   r   rE   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11J **66)Y+G+GHH s9~~%J C	NNQ.B77 	 	FY!+++%&
6"" 	&1*-q11Jvz4JJ 6"" ^^aF"2LJ#i..1,b"55  	(++q==	(Q, 71 <== ##8a<(L;L,LL   A++##J$=>> ''	&(9Q(>??  &02C%C
6"i//
! A++##J$=>> ''	&(9Q(>??  #":#=>> tt!||$.x!|$<! 
||tr&   c                 &   ddl m t          j        |d          }t	          fd|                                 D                       pGt	          fd|                                 D                       pt	          fd|D                       S )Nr   has_hintFvalidatec              3   0   K   | ]} |           V  d S r/   rU   r1   sr   s     r$   r3   z+_view_has_unbacked_input.<locals>.<genexpr>  s-      ..O......r&   c              3   0   K   | ]} |           V  d S r/   rU   r   s     r$   r3   z+_view_has_unbacked_input.<locals>.<genexpr>  s-      33188A;;333333r&   c              3   0   K   | ]} |           V  d S r/   rU   r   s     r$   r3   z+_view_has_unbacked_input.<locals>.<genexpr>  s-      ..188A;;......r&   )r   r   utilsextract_shape_from_varargsr9   r   r   )ar   r   s     @r$   _view_has_unbacked_inputr     s    >>>>>>,UUCCCE 	....QVVXX..... 	/3333

33333	/.........r&   c                 V    ddl m} ddlm}m} t          j        d          t          j                                                    j	        dk    rP }D ]:}t          j        |dk               t          j                            |d          };| u r |           S |S t                    dk    rU } j        D ]:}t          j        |dk               t          j                            |d          };| u r |           S |S t#          t$          j        d          }t          j                                         |k     fd           t                    t           j                  k    r% | | j                            r |           S |rt)                     r5nt+                     r%t-                    }	                     |	          S t1                                                                            |	          }
|
                     |
          S |r=t          j        j        j        j        st?                     rtA           d
          S d j         d                                  d d}tC          |          )Nr   )view_ofr   r   Fr   rA   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    bbbZ_bb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	unsqueezerE   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LLLLLLL ,UUCCCE UAGGII..E 	v{{ 	/ 	/FL1%%%&&r2..BB7771::I 5zzQg 	- 	-FL1%%%$$R,,BB7771::Iua00K	L			[ bbbbb  
 5zzS\\!!nnVVE175K5K&L&L!wqzz$: ,a   , ,a@P@P ,-e44||E7+++!	!((**e4J  K ||E;///  K%;K#Au--K #1eEJJJJ
oQW
o
o188::
o
ogl
o
o
oC
S//r&   c                 L   |j         s|j        rt          S t          j        g ||                                R  }t          |          r/t          | ||g|R  }|                    t          j
                  S t          | ||                    t          j
                  g|R  S Nmemory_format)r   	is_mkldnnr   r   r	  r   r   
_view_metacloner4   contiguous_format)rb   r<   r   r   views        r$   _reshape_copyr#  ^  s    { ak /e/QWWYY///Ea   
)T15u555zz(?z@@@tQWW53JWKK
NS
 
 
 	
r&   c                     t           j        j        j        j        st          ||          rt          ||          S t          j        j        |g|R ddiS )N
allow_copyF)	r4   r  r  r  r  r   r  r  _reshape_view_helper)rb   r<   r   r   s       r$   r  r  m  se     x$: M>V	5? ? M #1e,,,{/LELLLeLLLr&   )outc                `    t          | ||g|R  }||S t                              d |          S )Nc                 B    |                      t          j                  S r  )r   r4   r!  r   s    r$   r   z!_view_meta_copy.<locals>.<lambda>  s    !''(?'@@ r&   )r  r   tree_map)rb   r<   r   r'  r   results         r$   _view_meta_copyr,  x  sD    	43U333F
??@@  r&   c                     |L| j         | j         j        st          |          | j                                         }ddlm}  ||           |                    |          S Nr   r   )r   r   r   r   r   r   r   )rb   r<   repeatsoutput_sizer   s        r$   repeat_interleave_tensorr2    s}    '&E ( .d333)@@BB 	TSSSSS!!+...[)))r&   c                    |j         x}|S | j        | j        j        s| j        st          |          t	          |j                  r| j                                        }nst          |j                  r| j                                        }nEt          |j                  r| 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)rb   r<   r@   rs   s       r$   local_scalar_denser9    s     ]'"4 #. #
 +4000ci   R88::	#)	$	$ R6688	#)	$	$ R7799!"PSY"P"PQQQCMHr&   c                 z    t           j        j        j                            |                              d          S )NrA   )r4   opsr   r   r   unbind)rb   r<   r@   s      r$   nonzero_numpyr=    s+    9>!))#..55a888r&   c                 "   | j         | j         j        st          |          |j        x},ddlm}m} ddlm} ddl	m
}  ||                                          s|                                dk    rd}n| j                                         }t          j        dz
  } ||                                          s"t          |                                          }net!          j        |j                  j        }	 ||	j        |	j         j                  }
t-          |
j        |          rt          j        dz
  }n|
j        } |||           ||_        |                    ||                                fd|ft4          j                  S )Nr   r   IntInfinitybound_sympyrA   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_rangerB   uppernew_empty_stridedr   r4   int64)rb   r<   r@   r   r   r   r@  rB  r   	prod_node
prod_ranges              r$   r   r     s    	#"A 	$ *$///(	
 	
 	
 	
 	
 	
 	
 	
 	;:::::??????		,, 	71A1A CC%<<>>C[1_F##CIIKK00 
.SYY[[)) Ici005	([NI$7$D 
 j.<< . [1_FF'-F%%cv6666  #swwyy!1As85; OOOr&   c                    t          |          dk    sJ |s| j        | j        j        st          |          | j                                        }t
          j        dz
  }ddlm}m	}  ||
                                          s!t          |
                                          } ||d|           |g|j        dd          R }|                    |          S )NrA   r   r   )minr      )rE   r   r   r   r   r   r   r   r   r   r   r   r   r   )	rb   r<   paddedoffsetstotal_Lr   r   r   output_shapes	            r$   _padded_dense_to_jagged_forwardrW    s
    w<<1 >'&E ( .d333%<<>>q	
 	
 	
 	
 	
 	
 	
 	

  // 	)((F!!'qf====/fl122.//LL)))r&   c                     ddl m}m}  | ||dk    || k                        r|S  | ||dk     ||  k                        r|| z   S  |||  k               rdS  ||| k              r| S d S )Nr   )r   sym_and)r   r   rY  )r   r   r   rY  s       r$   _compute_slice_indexrZ    s    MMMMMMMM~ggeqj%4-8899 		5TE>::	;	; t|		&	& q		%	% 4r&   rA   r   startendstepc                 .   ddl m}m} | j        }	|                                }
|
dk    rt          d          t          |                                |          }t          |                                          }t          |	                                          }|dk    rt          d          |dnt          ||         |          } ||t          j        k              s|||         nt          ||         |          }d }|1|/ |||k              r||z
  |z   dz
  |z  }n |||k              rd}|J|	                                }t          j        |dk               t          j        |||         k               ||         |z  }|!|                                |||         z  z   }n,|	                                }t          j        |dk               |||<   |||<   |j        rt%          d          |                    |||          S )Nr   )r   statically_known_truez,slice() cannot be applied to a 0-dim tensor.zslice step must be positiverA   z<Slice decomposition for quantized tensors aren't implemented)r   r   r_  r   r   RuntimeErrorr	   rM   r   r   rZ  r   r   r   r4   r
  r   is_quantizedr8  r   )rb   r<   r   r   r[  r\  r]  r   r_  r   r   sizesr  start_index	end_indexr   r   r   s                     r$   slice_forwardre    sa          
 #I88::DqyyIJJJ
488::s
+
+CE4;;==!!Gqyy8999 }!!*>uSz5*Q*QK ! !344	38; 	c

!%*c22  H9#8>){233 	!K/$6:tCHH^K9455 	H 3355X]###Xs+,,, $J ,,..ws|1KK"99;;^q()))E#JGCL ?!J
 
 	
 ug~>>>r&   c                 \   | j         | j         j        st          |          | j                                         }t          j        dz
  }ddlm}m} ddl	m
} ddlm}	  ||                                          s"t          |                                          }
net          j        |j                  j        } |	|j        |j         j                  }t+          |j        |          rt          j        dz
  }
n|j        }
|
dk    r|
} |||           |                    |f          S )NrA   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  rB   rK  r   )rb   r<   r   maskr   r   r   r   r@  rB  num_elementsrN  rO  s                r$   masked_selectri  Z  s_    	#"A 	$ *$///


4
4
6
6C [1_F        766666;;;;;;
 DJJLL)) ,4::<<((Idj)).	 [1D1QRR
j&44 	,;?LL%+Lacv....>>3&!!!r&   )r+   layoutreturnc                   |:|                                 |k    s"J d| d|                                              |:|                                |k    s"J d| d|                                             | |j        |k    sJ d| d|j                     |-|j        |k    s"J d| d|                                             | |j        |k    sJ d| d|j                     d S d S )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+   )rb   r<   trb  r  r5  r+   rj  s           r$   assert_tensor_metadatarn    sF    vvxx5   HHHaffhhHH !   xxzzW$$$N'NN!((**NN %$$ w%GGGagGG   x6!!!LLL

LL "!! x6!!!JJJJJ "!! !!r&   c                 2    t           j        j        | j        v S r/   )r4   r   data_dependent_outputr   r   s    r$   r   r     s    uy>$)K r&   c                      t          |          r/   )r   ra   s       r$   data_deprr    s    
&t
,
,,r&   c                 p    |D ]2}|.|j         t          j        t          j        fv rt	          |           3d S r/   )r5  r4   booluint8r   )r<   r   indicesr   s       r$   check_no_bool_index_tensorsrw    sE     4 4U[0I!I!I-d3334 4r&   c                 2   t          |||d          \  }}|d         j        }t          |           5   ||i |}t          |          s|                    |j                  }d d d            n# 1 swxY w Y   ||d         u r|S t          | ||          S NTrg   rj   )r   r+   r   r,   r   r   r   )rb   r<   rc   rd   ro   rp   rr   r'  s           r$   )run_and_return_new_tensor_of_input_devicerz    s    &4T  MAz G$+J	%i	0	0 + +dD#F##)*55 	+--	**C+ + + + + + + + + + + + + + +
 j!!!
ij111s   2A11A58A5r   primsprimc                     | j         t          v S r/   )	namespace_is_builtin_namespacesrX   s    r$   
is_builtinr    s    <111r&   c                 f    t           j                            |                                 d          S )NMeta)r4   r5   ._dispatch_has_computed_kernel_for_dispatch_keynamer   s    r$   r   r     s#    8BB499;;PVWWWr&   c                     t          |           o5|                                                     d          ot          |           S )Nzaten::_foreach_)r  r  
startswithr   r   s    r$   r   r     s>    D!! 		011 r&   c                   
 d t          j        ||                                          D             }	 t          |           5   ||i |}d d d            n# 1 swxY w Y   n# t          $ r
 t
          cY S w xY w|s|S |sJ g }t          |          D ]X\  
}t          j        |
fd|D                       \  }}	|	                    | j
                            | ||                     Y|S )Nc                     g | ]O}t          |t          t          f          t          |          -t          |d          t          j                  M|PS )r   )rB   rM   rN   rE   r4   r   r?   s     r$   
<listcomp>z4foreach_run_and_map_input_device.<locals>.<listcomp>  sf       cD%=)) HH	
 s1vu|,,  r&   c                      g | ]
}|         S rU   rU   )r1   tlis     r$   r  z4foreach_run_and_map_input_device.<locals>.<listcomp>  s    9W9W9WB"Q%9W9W9Wr&   )r   r   r   r   r8  r   	enumerater   _find_common_devicerQ   rz   r{   )rb   r<   rc   rd   tensor_listsout_metaout_fakemeta_tr+   ro   r  s             @r$    foreach_run_and_map_input_devicer    s~    ?499  L))44 	- 	-tT,V,,H	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-     Hx(( 
 
	6249W9W9W9W,9W9W9WXX	+@@66 	
 	
 	
 	
 Os5   A$ 	AA$ AA$ A A$ $A87A8c                     ddl m} t          |||d          \  }}|d         j        }| 5   ||i |}|                    |          cd d d            S # 1 swxY w Y   d S )Nr   )meta_index_TensorTrg   rj   )torch._meta_registrationsr  r   r+   to)	rb   r<   rc   rd   r  ro   rp   rr   r'  s	            r$   index_tensorr    s    ;;;;;;&4T  MAz G$+J	 " "000vvj!!" " " " " " " " " " " " " " " " " "s   AAAc                 V    ddl m} | 5   ||i |cd d d            S # 1 swxY w Y   d S )Nr   )meta_embedding_bag)r  r  )rb   r<   rc   rd   r  s        r$   embedding_bagr  	  s    <<<<<<	 3 3!!426223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   ""c                 &    t          | |||          S r/   )rz  ra   s       r$   multi_device_op_defaultr    s    
 5YdFSSSr&   c                     t          |           5   ||i | d d d            n# 1 swxY w Y   t          |||d          \  }}|d         S ry  )r   r   )rb   r<   rc   rd   ro   rp   s         r$   multi_device_op_outr    s     
&i	0	0  df               '4T  MAz gs   	%))c                 H   t          ||d          \  }}|d         |d         j        t          j        j        k    p"j        dk    o                                dk    fd           t          | ||          }t          j        j	        u r|d         S |S )NTrg   r   rj   r   rA   c                  &    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'    ftff;ffV\Vcfff r&   )
r   r   r4   r
  r   r   rz  r   
index_put_r   )	rb   r<   rc   rd   ro   rp   r'  r  r   s	    `     @@r$   index_put_implr  (  s     '4T  MAz !FW%1K	Lv))WfkQ.>.V6<<>>UVCVffffff  
 4ItT6
R
RCt&&&'""
r&   c                      t          d          )Nz3torch.compile does not support strided NestedTensor)r   ra   s       r$   nested_tensors_unsupportedr  =  s    
 '=  r&   c                     g | ]X}|t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        fvV|YS rU   )r   	is_pinnedr   r  r+   prim_Device_nested_tensor_from_tensor_listr'  )r1   r   s     r$   r  r  H  se        N"GNG0804

 
 	

 
 
r&   c                 2    |t           vsJ d|             d S )NzNYI: )_device_not_kwarg_opsra   s       r$   nyir  G  s*      ,,,,ndnn,,,,,r&   c                 4    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 |}	n_t          j
                            |d         |d         d |d         |d         |d	         |d
         |d         |d         |d         
  
        }	|dk    r|d         j        s|d         j        s|d                                                             d          |d<   |d                             d          |d<   t!          |d                   dk    rp|d                             dd           |d                             dd           |d	                             dd           |d                             dd           t          j
                            |d         |d         |	          }|dk    r|d         j        s|d         j        s|d                             d          |d<   |d                             d          |d<   t!          |d                   dk    rl|d                             d           |d                             d           |d	                             d           |d                             d           d d d            n# 1 swxY w Y    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xY w Y   d S )NTrg   rj   weightr   r   r   paddingdilation
transposedoutput_paddinggroups
bias_sizes)biasr   r  r  r  r  r  r     rR  rA   c                 (   | | S |{|                                  dk    rM|t          j        k    r=|                     d                              |                              d          } n|                     |          } t          |           S )Nr  rR  r  )r   r4   channels_lastr  r  r  r   )rm  mem_fmtr+   rb   s     r$   convertzconv.<locals>.convert  s    9Huuww!||5+> > >KKNN%%G%<<DDQGGDDwD//)Q///r&   rU   )r   r   r   r   r   r   r   convolutionr   r4   r5   _select_conv_backendr  is_xpu
contiguousr  rE   insert%_conv_determine_backend_memory_formatr  r[   r   )rb   r<   rc   rd   ro   kbatchr   r  conv_backendr  r'  r+   s   `           @r$   convr  Z  s   "4T  IAv G_(F	 34 348!w%a( 	CBBBBBx +	4 GGt'///$x<FFvFF$x<<7O8$!(+"9-#J/%l3#)*:#;!(+%l3  =     AvvfWo7vw@Vv"(/"<"<">">"H"H"K"Kw#)(#3#=#=a#@#@x vh'((A--8$++Aq1119%,,Q222:&--a333+,33Aq999hDDw!1< G AvvfWo7vw@Vv"(/"9"9!"<"<w#)(#3#;#;A#>#>x vh'((A--8$((+++9%))!,,,:&**1---+,00333g34 34 34 34 34 34 34 34 34 34 34 34 34 34 34j	0 	0 	0 	0 	0 	0 
&i	0	0 
 
dnnVnn4#+++73((	
 
 
 
 
 
 
 
 A((A((A%%
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s*   KK88K<?K<'N4NNNc                     | j         | j         j        st          |          | j                                         }ddlm}  ||           t          j        ||k               |                    |          S r.  )	r   r   r   r   r   r   r4   r
  r   )rb   r<   inputsweights	minlengthr   r   s          r$   bincountr    s     	#"A 	$ *$///"99;;HOOOOOOh'''	LY&'''H%%%r&   c                 F   | j         | j         j        st          |          | j                                         }ddlm}  ||           |s|                    dd          }|j        dd          }|                    |          }|                    |f          }	||	fS )Nr   r/  rA   )	r   r   r   r   r   r   	transposer   r   )
rb   r<   r  lengthsbatch_firstnew_batch_sizer   res_sizepacked_data
batch_sizes
             r$   _pack_padded_sequencer    s     	#"A 	$ *$///(??AANOOOOOOn--- (!!!Q''|ABBH""8,,K!!>"344J$$r&   c                       fd}|S )Nc                     | t           <   | S r/   )FAST_OP_IMPLEMENTATIONS)rR   r<   s    r$   rT   z-register_fast_op_impl.<locals>.impl_decorator  s    (/%r&   rU   )r<   rT   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              p |dk              pk    
fd            |dk              rn|
<   t          |          S )Nr   r   rA   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  rU   )r  sizeAsizeBs   r$   r   zinfer_size.<locals>.<lambda>  s5     /U / /05/ /*+/ / / r&   )r   r   rE   r   r   r4   r
  rN   )r   br   dimsAdimsBr   expandedSizesoffsetdimAdimBr  r  r  s             @@@r$   r	  r	    sQ   DDDDDDFFEFFEueDC$JM4!8R$$ J JAqy6!qy6!199$!199$! 	N5A:&&V..!*D*DVQV/ / / / / /	
 	
 	
 %3N5A:$>$>I55Ear&   c                       fd}|S )Nc           	           fd}t          d           }d }|D ]9}t          |t          j                  r|j        nd}||}t          ||          }:|J ddlm}m}	 |D ]]}t          |t          j                  rAt          |j                  t          |          k    r | |	|j        |                    r n^ |d          S t          j
        d          }
|
}d }d}|D ]f}t          |t          j                  sd	}||
k    r|j
        j        dk    r|j
        }|t          j        k    rd	}Q|j        }Y||j        k    rd	}g|rt          |d
i\  }}d}d}|D ]w}t          |t          j                  s||
k    r<|                                dk    r$|j
        |
k    r||k    r |d          c S |dz  }_|j
        |k    r |d          c S xd	}d	}t#          |          rZ|D ]W}t          |t          j                  s|ot%          |t          j                  }|ot%          |t          j                  }X|rAt          d           t+           t          j        ||dt          j                  |          S |rAt          d           t+           t          j        ||dt          j                  |          S  |d          S )Nc                 p    t          d|             5   i cd d d            S # 1 swxY w Y   d S )Nzslow r   )r  rc   rd   modeslow_refs    r$   slowz=make_fast_binary_impl.<locals>.fast_binary_impl.<locals>.slow  s    &&& 1 1x0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   +//zattempt fastrU   r   r  z#both tensors nontrivially broadcastrk   FTtype_promotion_kindrA   errorr  zfast is_contiguousrl   )r5  r+   r  r*   zfast channels_lastzno contiguity match)r   rB   r4   r   r   r	  r   r   r   rE   r+   r)   r   DEFAULTr5  r
   r   r,   r   r!  r  r   empty)r  rc   rd   r  operandsfinal_shaperS   r   r   r   rk   common_devicecommon_dtypehas_different_input_dtypesro   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 	1 	1 	1 	1 	1 	1 	1
 	N###   	9 	9B *2u| < <DBHH"E"# %[%88KK&&&PPPPPPPP  
	? 
	?B2u|,,MMS%5%555"N66"(K#@#@AA 6  4=>>> l5!!%*" 	2 	2Bb%,// -1*##	%(?(? "	#&*I*QQQ15..#%8LL))-1*% 	 1/B OA| *+&%&" 	% 	%Bb%,// ##A")s:J:J15OOO4==(((.!3..m++tG}}$$$ , !%#' 
 &m44 	  !"el33 ) @%*A   & - @%*=   )( ! 	,---&!"'"9	   %	 	 	 	 $ 	,---&!"'"5	   %	 	 	 	 t)***r&   rU   )r  r  r  s   `` r$   make_fast_binary_implr  
  s1    I+ I+ I+ I+ I+ I+V r&   c                 X   t                      5  t          |           5  t          j        j        j                            |          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |rt          | ||j        |j	                  S t          | ||j                  S )N)real_tensor)
r   r   r4   r;  r   detachr   r   r+   r  )rb   r   include_realr'  s       r$   fast_detachr    s   			 / /!=i!H!H / /in#++A../ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / O)S!(NNNNiah///s4   A,*A	A,A	A,A	A,,A03A0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44eko..   5%).,344eko..   5%).,344eko..   5%).,344KO ? L	
 	
 	
   9%)./788EEE""r&   )TFF)FFN)F)Tr/   )r   NNrA   )NNN)rk  N)Nr   )	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__rL   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_onesrn   _resize_output_r  
pin_memoryr  r+   r  r  _pin_memory_resize_outputr  _list_to_tensorrm   r0   cacherH   rt  rO   rY   r_   __contains__re   rt   rx   r}   r   r   r   r   r   r   _unique2r   selectr   r   r   r   ro   r   r   r  r#  r"  _unsafe_viewr  	view_copyr,  r   r2  item_local_scalar_denser9  r=  r   rW  rZ  slicere  ri  _assert_tensor_metadatarn  rr  rw  rz  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   rU   r&   r$   <module>r>     s             



 $ $ $ $ $ $       " " " " " " " "          # # # # # # 7 7 7 7 7 7 ! ! ! ! ! !                                       9 8 8 8 8 8 * * * * * * 
	      z~& & &      (K 'O'O' 	N' 	N	'
 	N' 	N' 	N' 	N' 	N' 	N ' 	O' 	O' 	O' 	O!' 	'  	!'" 	#'$ 	&%'& 	 ''( 	*)'* 	+', 	#-'. 	/'0 	)1'2 	#3'4 	-5'6 	O7'8 	O9': 	N;'< 	N='> 	"?'@ 	A'B 	MC'D 	ME'F 	NG'H 	NI'J 	MK'L 	MM' ' ' T $ (0(,OGNGN   #'"6!8        U8ZL$4F+G+S%T    &) ) )   )677K K 87K ()).-.//0 0 0/ *)08 $.())	 	 *)	 $'%&&$'.!!  "! '&   
 %&&- - '&-0 $/)**% % +*%
 $?GHH: : IH: T T 
, , 
, I I I I I IX $-'((KPV V V )(V $+/""&E &E #"&ER $/)**PU   +* $)122
 
 
 32
F F F FR	 	 	B B B BJ $$,--
 
 .-
 $)#$$$#+,,M M -, %$M $.())48     *) $(/00* * * 10*$ %).%-..%).4<==  >= /.* %)..6779 9 879 %).(0110P 0P 210Pf %).@HII* * * JI*>   %).&-..
 A? A? 
	A?
 C=A? 
#A? A? A? A? /.A?H %)..677&" &" 87&"R %).8@AA
 

 
 
 

 
 
 BA
D KKLL- - ML-4 4 42 2 2  %VWf== 2 2 2X X X
   
  
F $*#$$" " %$"  $%-..3 3 /.3 $(011$)#$$$*$%%$$,--T T .- &% %$ 21T
 $)-  $$())  *) !  $.())$/)**  +* *)& $6>??$6:;;$/788$4<==  >= 98 <; @?  &   = = = 4#+T-F-NOPPP P QPPf %).)122& & & 32&" %).6>??% % @?%0  

            H #B"IN N N Nf0 0 0 0 # # # # #r&   