
    it                     2   U d dl Z 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m	Z	m
Z
mZmZ d dlmZ d dlZd dlmZ d dlmZ d dlZd dlmZmZmZ d dlmZmZmZm Z m!Z! d dl"m#Z# d dl$m%Z% d d	l&m'Z' d d
l(m)Z) d dl*m+Z+ d dlm,Z,m-Z-m.Z. d dl/m0Z1 d dl2m3Z3m4Z4 d dl5m6Z6 ddl7m8Z8m9Z9 ddlm:Z:m;Z;m<Z<  ed      Z= ed      Z>eej~                  j                  ej~                  j                  f   ZBe
eCd<    ej                  eE      ZFej                  j                  ZHej                  j                  ZIej                  j                  ZJej                  j                  ZKej                  j                  ZL eg eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj`                  eHj                  eHj                  eHj                  eHj                  eHj                  eHj                  e)eHj                  eHj                  eHj                  eHj                  j                  eHj                  j                  eJj                  eKj                        Zwi  e       ewZxeHj                  eHj                  eHj                  eHj                  j                  eHj                  eHj                  eHj                   eHj<                  eHj`                  eHj                  eHj                  eHj                  eHj                  eHj
                  eHj                  j                  eHj                  eHj                  eHj                  eHj                  gZeeej~                  j                  ej~                  j                  f      eCd<    eexe       deeBeeB   f   deee>e=f   gee>e=f   f   fdZ eeHj<                  g      dej                  dej                  derderdedej                  fd       Z eeHj`                        d ej                  d!ej$                  d"e	ej                     d#e	ej                     d$edeej                  ej                  ej                  f   fd%       Z eeHj,                  j                  g      ddd&d'ej.                  d(e	ej0                  j2                     d)e	ej0                  j2                     ddfd*       Z eeHj4                  g      e!	 	 dd+ej                  d(e	ej0                  j2                     d)e	ej0                  j2                     dej                  fd,              Z eeHj
                  g      e d+ej                  dej                  fd-              Z eeHj6                  g      d.eeerej.                  f      d/ej0                  j2                  d0edej                  fd1       Z eeHj                  g      dd2d+ej                  d3erd4ej                  d5ej                  d6ej0                  j2                  dej                  fd7       Z eeHj8                  j                  g      d.eeerej.                  f      d8eer   d0edej                  fd9       Z eeHj:                  g      dej                  d ej                  d"ej                  d:eer   d;eereer   f   d<eereer   f   d=eereer   f   d>ed?eer   d@erdAee   deej                  ej                  ej                  f   fdB       Z eeHj<                  j>                  g      dd+ej                  dCerdej                  fdD       Z eeHjB                  g      e 	 ddEej                  dFej                  dGe	ejD                     dej                  fdH              Z eeHjF                  g      e 	 	 	 ddEej                  dIej                  dJej                  dGe	ejD                     dKej0                  j2                  d6ej0                  j2                  dej                  fdL              Z eeHjH                  g      e 	 ddEej                  dMej                  dGe	ejD                     dej                  fdN              Z eeHjJ                  j                  g      	 ddOeej                     d3erdej                  fdP       Z eeHjL                  g      d+ej                  dej                  fdQ       Z eeHjN                  g      dd2d+ej                  dRej                  d6e	ej0                  j2                     dej                  fdS       Z eeHjP                  g      dEej                  dej                  fdT       Z eeHjR                  eHjT                  g      dEej                  dej                  fdU       Z eeHjV                  eIjV                  g      dEej                  dVej                  dej                  fdW       Z eeHjX                  eIjX                  g      dEej                  dVej                  dej                  fdX       Z eeHjZ                        	 	 ddEej                  d3e	er   dZedej                  fd[       Z eeHj\                        	 	 ddEej                  d3e	er   dZedej                  fd\       Z eeHj^                  g      dEej                  d3erd]erd^erdej                  f
d_       Z eeHj`                  j                  g      dEej                  d.eeerej.                  f      dej                  fd`       Z eeHj`                  jD                  g      dEej                  daejD                  dej                  fdb       ZdEej                  deej$                  ejf                  f   fdcZ eeHjj                        ddddYdYejl                  dddEej                  d/eeref   dae	ejD                     dee	ejn                     dfe	ejp                     dgedhediejr                  dej                  fdj       Zddejl                  dkdledmej                  f   dEej                  dae	ejD                     dfe	ejp                     diejr                  d0edej                  fdnZ eeHjv                        dEej                  d0edej                  fdo       Z eeHjx                        dEej                  d0edej                  fdp       Z eeHjz                  j                        dEej                  dqerd0edej                  fdr       Z eeHjz                  j|                        dEej                  dserdqerd0edej                  f
dt       Z eeHj                  j                        dqerd.eeerej.                  f      d0edej                  fdu       Z eeJj                  j                        	 dd ej                  d"ej                  d#e	ej                     dej                  fdv       Zu eeKj                  j                        d ej                  dwej                  dxej                  d"ej                  dyej                  dzej                  d#ej                  d{ej                  d|ej                  d}erdej                  fd~       Zv eej                  j                  j                        dej                  dej                  fd       Z eeHj                  g      e 	 	 	 ddej                  dej                  derderdedej                  fd              Z eeHj                  j                        	 ddEeej                     deej                     deej                     dedeej                     f
d       Z eeHj                  j                        	 ddEeej                     deej                     deej                     dedeej                     f
d       Z eeHj                  j                        deej                     deej                     d"ej0                  j2                  deej                     fd       Z eeHj                  j                        deej                     deej                     deej0                  j2                     deej                     fd       ZeHj                  j                  j                  ej                  j                  j                         eeHj                        d ej                  d"ej                  d#ej                  ej                     dej                  ej                     dej                  ej                     dedededeej                  ej                  ej                  f   fd              Ze j                  deeedmef   f   fd       Zdeeedmef   f   fdZ eeHj                        dEej                  dej                  dej                  dej                  fd       Z eeLj                  j                        d ej                  derderd$edaejD                  deej                  ej                  f   fd       Z eeHj                        	 ddEej                  d4ej                  dej                  dedej                  f
d       Z eeHj                        	 ddEej                  d4ej                  dej                  dedej                  f
d       Z eeHj                  j                        e dej                  dej                  d3erdejD                  dej                  f
d              Z~ eeHj                        dddEej                  d3erd4ej                  dej                  dededej                  fd       Zd+ej                  deer   d;e	eereer   f      d<eereer   f   d=eereer   f   ded3erdeej                  ej                  f   fdZ eeHj                        	 	 	 	 dd+ej                  deer   d;e	eereer   f      d<eereer   f   d=eereer   f   dedeej                  ej                  f   fd       Z eeHj                        	 	 	 	 dd+ej                  deer   d;e	eereer   f      d<eereer   f   d=eereer   f   dedeej                  ej                  f   fd       Z eeHj                        d+ej                  deer   deej                  ej                  f   fd       Z eeHj                  j                        dYdYddddej                  dEej0                  j2                  dedede	e   de	ej                     dej                  fd       Z eeHj                  j                        dYdYddEej0                  j2                  dej                  dededej                  f
d       Z eeHj                        	 	 	 	 ddEej                  dej                  dededede	ej                     deej                  ej                  f   fd       Z eeHj                  j                        	 ddej                  de	er   dej                  fd       Z	 	 	 	 	 dd ej                  d"ej                  d#e	ej                     d;eer   d<eer   d=eer   d@erdej                  fdńZy)    N)Callable)AnyOptional	TypeAliasTypeVarUnion)	ParamSpec)core_aten_decompositionsget_decompositionsremove_decompositions)_grid_sampler_2d
_index_addembedding_dense_backwardpw_cast_for_opmath"pw_cast_for_opmath_non_tensor_args)extra_random_decomps)counters)	is_fbcode)	out_dtype)pad_listlike)elementwise_dtypesELEMENTWISE_TYPE_PROMOTION_KINDtype_to_dtype)native_layer_norm)guard_or_falsestatically_known_true)
OrderedSet   )configinductor_prims)is_gpu,needs_fallback_due_to_atomic_add_limitationsuse_scatter_fallback_T_P_GenericOperatordecomps_to_excludeopsreturnc                     t        | t              r| n| gD ]!  }|t        v st        j	                  d|        # t        j                  | t              S )Nzduplicate decomp: %s)
isinstancelistdecompositionslogwarningdecompregister_decomposition)r(   ops     n/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/torch/_inductor/decomposition.pyr1   r1      sL      T*c 5KK.45 ((n==    grad_outputindicesnum_weightspadding_idxscale_grad_by_freqc                 D    | j                   rt        S t        | ||||      S N)is_xpuNotImplementeddecomp_embedding_dense_backward)r5   r6   r7   r8   r9   s        r3   _embedding_dense_backwardr?      s,     *Wk;8J r4   inputnormalized_shapeweightbiasepsc                 D    | j                   rt        S t        | ||||      S r;   )is_mtiar=   decomp_native_layer_norm)r@   rA   rB   rC   rD   s        r3   _native_layer_normrH      s%     }}#E+;VT3OOr4   )minmaxsymbolrI   rJ   c                     y r;    )rK   rI   rJ   s      r3   sym_constrain_range_for_sizerN      s     r4   xc                 R    || j                  |      } || j                  |      } | S r;   )	clamp_min	clamp_max)rO   rI   rJ   s      r3   clamprS      s/     KK
KKHr4   c                 J    | d| j                         j                         z   z  S )Nr   )negexp)rO   s    r3   silurW      s      AEEGKKM!""r4   size
fill_valuekwargsc                     |j                  d      }|.t        t        |            |d<   t        j                  | |fi |S t
        S )Ndtype)getr   typetorchfullr=   )rX   rY   rZ   r\   s       r3   r`   r`      sF     JJwE}'Z(89wzz$
5f55r4   alphadimindextensorrb   c                ~    t               s#| j                  t        j                  k(  rt        S t        | |||d|      S )NF)inplacerb   )r   r\   r_   bfloat16r=   r   )rO   rc   rd   re   rb   s        r3   	index_addri      s3     ;177enn4!S%eLLr4   physical_layoutc                 H   t        |      t        t        t        |                  k(  }|rt        j                  | fi |S dgt        |       z  }t        |      D ]
  \  }}|||<    t        j                  |D cg c]  }| |   	 c}fi |j                  |      S c c}w Nr   )r,   rangelenr_   empty	enumeratepermute)rX   rj   rZ   is_identitypermpls          r3   empty_permutedrv      s     '4c/6J0K+LLK{{4*6**sSYo. 	DAqDG	{{_=DG=HHPPQUVV=s   <B
bias_sizesstridepaddingdilation
transposedoutput_paddinggroupsoutput_maskc                 .   |
d   rt        | j                  j                        st        S t        j                  | dgt        t        d| j                                     z         }t        j                  | |||||||||	|
d   |
d   dg      \  }}}|||fS )N   r   r   F)
r!   devicer^   r=   atensumr,   rm   rc   convolution_backward)r5   r@   rB   rw   rx   ry   rz   r{   r|   r}   r~   	grad_biasgrad_inpgrad_weight_s                  r3   r   r   	  s     q>(:(:(?(?!@qcDq+//:K1L,M&MNI#88	QQ/ Hk1 k9--r4   decimalsc                 H    d|z  }t         j                  | |z        d|z  z  S )Ng      $@g      ?)r   round)rO   r   ten_pow_decimalss      r3   	round_decr   *  s,    X~::a**+s5E/EFFr4   selfbatch2r   c                    t         j                  r| j                  j                  dvrkt	        | j
                  d   dk(        st	        |j
                  d   dk(        r5| j                  d      |j                  d      z  j                  d      }|S | j                  j                  dk(  rt	        | j                  d      dk(        ryt	        |j                  d      dk(        r\t        d   dxx   dz  cc<   t        j                  | j                  d      |j                  d      z  dd	
      j                  d      S t        S )Ncpumpsr   r   rc   r   inductordecompose_bmmTrc   keepdim)r   coordinate_descent_tuningr   r^   r   shape	unsqueezer   rX   r   r_   squeezer=   )r   r   r   outs       r3   bmmr   0  s    ''DKK,<,<N,R A!!348MLLOq 9
 >>"%(8(8(;;@@Q@GCJ{{5  1!238MKKOq 9
 Z 1Q6199Q&.."44!Til r4   mat1mat2betac                    | j                   j                  dk(  r7t        |j                  d      dk(        rt        |j                  d      dk(        rgt        d   dxx   dz  cc<   t        j                  |j                  d      |j                  d      z  dd      j                  d      }||z  || z  z   S t        |j                  d      dk(        ryt        |j                  d      d	k        r\t        |j                  d      d	k        r?t        d   dxx   dz  cc<   |j                  |z  j                  dd      }||z  || z  z   S t        S )
Nr   r   r   r   r   decompose_addmmTr      )r   r^   r   rX   r   r_   r   r   r   r   Tr=   )r   r   r   r   r   rb   r   s          r3   addmmr   J  s2    {{5  1!238MIIbMQ9
 Z !23q83))Q$,,r"224il  3;,,!$))A,!"34tyy|r12tyy|r12Z !23q8366D=%%!T%:C3;,,r4   input2c                    t         j                  r| j                  j                  dvrit	        | j
                  d   dk(        st	        |j
                  d   dk(        r3| j                  d      |j                  d      z  j                  d      S | j                  j                  dk(  rVt	        | j                  d      dk(        rt	        | j                  d      dkD        rt	        |j                  d      dk(        ri| j                  |j                  k(  rPt        t        j                  |       t        j                  |      z   dk        rt        d	   d
xx   dz  cc<   | |z  S t	        | j                  d      dk(        ryt	        |j                  d      dk(        r\t        d	   d
xx   dz  cc<   t        j                  | j                  d      |j                  d      z  dd      j                  d      S t        S )Nr   r   r   r   r   r   r       r   decompose_mmTr   )r   r   r   r^   r   r   r   r   rX   r\   r   r_   numelr   r   r=   )r   r   r   s      r3   mmr   h  s    ''DKK,<,<N,R A!!348MLLOq 9
 NN1%(8(8(;;@@Q@GG{{5 !$))B-1"45%diilQ&67%fkk!n&9:v||+D 1EKK4G GBNOZ 0A50&=  1!238MKKOq 9
 Z 0A5099Q&.."44!Til r4   tensorsc                    dt         j                  dt        ffd}t        t	        ||             t              dk(  rRt        | dt        j                  id   }d   }||j                  k(  r|j                         S |j                  |      S dt              cxk  rt        |       k  r#n n t        j                  j                        S t              dkD  rt        fdD              rd   }t        |j                         }dk  rt        |j                         z   n|j#                  t                      |j%                        j&                  | j)                  dz         j                         S t*        S )	NrO   r)   c                     t        | j                        dk(  rt        | j                  d   dk(        ryt        | j                        k  rt        | j                     dk(        ryy)Nr   r   FT)rn   r   r   )rO   rc   s    r3   non_empty_tensorzcat.<locals>.non_empty_tensor  sU    " qww<1
a!@QWW.1B"Cr4   r   type_promotion_kindr   r\   c              3   ,   K   | ]  }|d    u   yw)r   NrM   ).0tfiltered_tensorss     r3   	<genexpr>zcat.<locals>.<genexpr>  s!      )%&a  )s   )r_   Tensorboolr,   filterrn   r   r   DEFAULTr\   clonetor   catdefaultallr   insertr   expandflattenr=   )r   rc   r   promoted_dtype
filtered_tinpr   r   s    `     @r3   r   r     s   
ELL T 2 F#3W=>
!+
 ? G G
  &a(
 !1!11 	
 ^4	

 
S!"	1S\	1xx 0#66 q S )*:) & q!SYY&)AgcC		N"3S#./0(s}}S!((%088cAgFLLNN r4   c                 "   | j                         ret        j                  t        j                  | j                        t        d      t        j                  | j                  | j                              S t        | t        j                        \  }}t        j                  t        j                  || j                        }t        j                  | dk  |d      }t        j                  t        j                  |       t        d      |      S )Nnan)r   r\   r   r   g        )
is_complexr_   whereisnanrealfloatatan2imagr   r   INT_TO_FLOATscalar_tensormathpir   )rO   r   r\   r   rets        r3   angler     s    ||~{{KKuu{{166166/J
 	
 "	;HHHAu 
		TWWE!((	CB
++a!eR
%C;;u{{1~uU|S99r4   yc                   t        j                  |       xr | j                         }t        j                  |      xr |j                         }|r|st        S dt         j                  dt
        fd}d}| j                  dk(  r|j                  dk(  rd}| j                  dk(  r| j                  d      } |j                  dk(  r|j                  d      }|}|||z  }t        j                  | j                  |j                        } ||       s ||      rt        S dt         j                  dt         j                  fd}	| dz   } |dz   } |	| j                  | j                  j                              }
 |	|j                  |j                  j                              }t        j                  |
|z   d	
      j                  |      }|r|d   S |S )Nre   r)   c                 N    | j                   dk(  ry| j                         d   dk7  S )Nr   Fr   r   )ndimrx   )re   s    r3   _requires_fallbackzadd.<locals>._requires_fallback  s'    ;;!}}r"a''r4   Fr   Tr   c                     | j                   ^ }}|dz  dk7  rt        d      g ||dz  d}| j                  |      }|S )zNReshape tensor from [*initial_dims, last_dim] to *initial_dims, last_dim/2, 2]r   r   zQThe size of the last dimension must be even to reshape it to [..., last_dim/2, 2])r   AssertionErrorview)re   initial_dimslast_dim	new_shapereshaped_tensors        r3   reshape_tensor_complexz#add.<locals>.reshape_tensor_complex	  s^     #),,x a<1 c 
 6l5HM515	 ++i0r4   )	start_dim)r_   	is_tensorr   r=   r   r   r   reshapepromote_typesr\   r   r   r   )rO   r   rb   x_is_complex_tensory_is_complex_tensorr   output_size_zerozcomplex_typer   
x_reshaped
z_reshapedresults                r3   addr     s     //!,?//!,?&9(5<< (D ( vv{qvv{vv{IIaLvv{IIaL	AAI&&qww8L! 21 5u||  $ 	
AA	AA'qvv||(<=J'qvv||(<=J]]:
2bAFF|TFayMr4   c                 2    | j                         rt        S | S r;   )r   r=   r   s    r3   conj_physicalr   '  s    Kr4   c                     | S r;   rM   r   s    r3   liftr   .  s    Kr4   otherc                 b    t        j                  t        j                  |      || kD  z  | |      S r;   r_   r   r   r   r   s     r3   fminr   3  '    ;;u{{5)UT\:D%HHr4   c                 b    t        j                  t        j                  |      || k  z  | |      S r;   r   r   s     r3   fmaxr   8  r   r4   Fr   c                 x    | j                   t        j                  k(  rt        j                  | ||      S t        S Nr   )r\   r_   r   anyr=   r   rc   r   s      r3   amaxr  =  -     zzUZZyy388r4   c                 x    | j                   t        j                  k(  rt        j                  | ||      S t        S r  )r\   r_   r   r   r=   r  s      r3   aminr  H  r  r4   startlengthc                 n    t        j                  | |||      j                  t         j                        S )Nmemory_format)r_   narrowr   contiguous_format)r   rc   r  r	  s       r3   narrow_copyr  S  s4     <<c5&177-- 8  r4   c                 J    t         j                  | |      j                         S r;   )r   r   r   )r   rX   s     r3   view_copy_defaultr  a  s    
 99T4 &&((r4   r\   c                 @    | j                         j                  |      S r;   )r   r   )r   r\   s     r3   view_copy_dtyper  i  s    
 ::<U##r4   c                     t        j                  |       \  }}|D cg c]  }| j                  |    }}dgt        |      z  }t	        |      D ]
  \  }}|||<    ||fS c c}w rl   )utils3compute_elementwise_output_logical_to_physical_permr   rn   rp   )r   rj   r   ru   r   permutationrt   s          r3   _get_shape_permutation_liker  q  sx     RRSWXOQ$34qTZZ]4E4#E
"K/* 1A ; 5s   A )r\   layoutr   
pin_memoryrequires_gradr  r  r   r  r  r  c          	         || j                   n|}|| j                  n|}|| j                  n|}|t        j                  k7  r8t        j
                  | j                  ||||||      }|j                  |      S |t        j                  k(  sJ t        |       \  }	}
t        j
                  |	||||||      }|
t        t        t        |
                  k(  r|S |j                  |
      j                         S )N)r\   r  r   r  r  r  )r\   r  r   r_   preserve_formatr`   r   r   stridedr  r,   rm   rn   rq   r   )r   rY   r\   r  r   r  r  r  r   r   r  s              r3   	full_liker  ~  s      -DJJUE"NT[[F"NT[[F---JJ!'
 yy}y55 &&&8>{!'
 $uS%5677M~~k*0022r4   )r\   r   r  rand_fn.c                j   ||j                   n|}||j                  n|}|t        j                  k7  r& | |j                  f||d|j                  |      S t        |      \  }} | |f||d|}|t        t        t        |                  k(  r|S |j                  |      j                         S )Nr   r  )r\   r   r_   r  r   r   r  r,   rm   rn   rq   r   )	r   r   r\   r   r  rZ   r   r  r   s	            r3   
_rand_liker"    s      -DJJUE"NT[[F---JJ

 	

 "="
)	* 5T:E; 	F d5[!1233>>+&,,..r4   c                 8    t        t        j                  | fi |S r;   )r"  r_   randr   rZ   s     r3   	rand_liker&    s    ejj$1&11r4   c                 8    t        t        j                  | fi |S r;   )r"  r_   randnr%  s     r3   
randn_liker)    s    ekk42622r4   highc                 v    t        t        j                  t        j                  j
                  d|      | fi |S rl   r"  	functoolspartialr   randintlow)r   r*  rZ   s      r3   randint_liker1    s-    i''(8(8!TBDSFSSr4   r0  c                 v    t        t        j                  t        j                  j
                  ||      | fi |S r;   r,  )r   r0  r*  rZ   s       r3   randint_like_lowr3    s/     i''(8(8#tDdUfUUr4   c                 F    t        j                  j                  d| |fi |S rl   )r   r/  r0  )r*  rX   rZ   s      r3   r/  r/    s"     <<AtT4V44r4   c                     t         j                  j                  j                  |      }t         j                  j                  j	                  | |||j                         d         S rl   )r_   r(   
_quantized$wrapped_fbgemm_pack_gemm_matrix_fp16!wrapped_fbgemm_linear_fp16_weightrX   )r@   rB   rC   packed_weights       r3   #linear_dynamic_fp16_unpacked_weightr:    sO     II((MMfUM99AA}dFKKM!$4 r4   input_scaleinput_zero_pointweight_scaleweight_zero_point	out_scaleout_zero_pointout_channelc
           	          t         j                  j                  j                  ||||      }
t         j                  j                  j	                  | |||
|||	      S r;   )r_   r(   r6  _wrapped_linear_prepack#_wrapped_quantized_linear_prepacked)r@   r;  r<  rB   r=  r>  rC   r?  r@  rA  r9  s              r3   wrapped_quantized_linearrE    s\     II((@@/M 99CC r4   packedc                     dt         j                  dt         j                  fd} || dddf         } || ddd f         }| dd df   j                  t         j                        |z  |z   S )Nu8r)   c                      fddD        \  }}}}t         j                  dk(  r4||dz  z   |dz  z   |dz  z   j                  t        j                        d   S |dz  |dz  z   |dz  z   |z   j                  t        j                        d   S )Nc              3   f   K   | ](  }d |f   j                  t        j                         * yw.N)r   r_   int32)r   nrH  s     r3   r   zPq_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.<locals>.<genexpr>  s&     GQbajmmEKK0Gs   .1)r   r   r      little   r      rK  )sys	byteorderr   r_   float32)rH  rO   r   r   ws   `    r3   bitcast_u8_to_f32z=q_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32  s    G,G
1a==H$aLAG,R8>>u}}MiXX"Wb)Q!V4q8>>u}}MiXXr4   .i)r_   r   r   rT  )rF  rV  scalesoffsetss       r3   "q_embedding_bag_byte_unpack_decomprZ    sz    Yell Yu|| Y vc2b5j12FsBCx 01G#ss(u}}-6@@r4   agridinterpolation_modepadding_modealign_cornersc                     | j                   t        j                   d      k(  xr' |dk(  xr  | j                  t        j                         }t	        | |||||      }|S )Nr   r   r  )r\  r]  r^  r_  _expand_grid)r   r_   is_contiguousr  decomp_grid_sampler_2d)r[  r\  r]  r^  r_  ra  outputs          r3   grid_sampler_2dre    sm     	
ELL'' 	C!#	COO%*A*AOBL $	-!#!F Mr4   left_tensorsright_tensorsscalarc                     t         j                  j                  | t         j                  j                  ||      |      S Nra   )r   _foreach_addList_foreach_mulr   rf  rg  rh  s       r3   _foreach_addcmul_scalarro  A  <     !!d$$\=A "  r4   c                     t         j                  j                  | t         j                  j                  ||      |      S rj  )r   rk  rl  _foreach_divrn  s       r3   _foreach_addcdiv_scalarrs  M  rp  r4   start_tensorsend_tensorsc           	          t         j                  j                  | t         j                  j	                  t         j
                  j                  ||       |            S r;   )r   rk  rl  rm  Scalar_foreach_sub)rt  ru  rB   s      r3   _foreach_lerp_scalarry  Y  sL     !!  "";>	
 r4   scalarsc           	          t         j                  j                  | t         j                  j	                  t         j
                  j                  ||       |            S r;   )r   rk  rl  rm  
ScalarListrx  )rt  ru  rz  s      r3   _foreach_lerp_scalarlistr}  g  sL     !!$$"";>	
 r4   running_meanrunning_vartrainingexponential_average_factorepsilonc           
          t         j                  | |||||||      \  }}	}
|r||	|
fS ||j                  d      |j                  d      fS )Nr   )r   native_batch_norm	new_zeros)r@   rB   rC   r~  r  r  r  r  r[  bcs              r3   miopen_batch_normr  u  sl     $$"	GAq! 1ay	 r4   c                      i t         t        S r;   )r-   r   rM   r4   r3   fast_random_decompsr    s    5n5 455r4   c                  8   t         j                  rt        S t         j                  rHt        j	                  t
        j                  j                  j                  j                  d       t        S t               } t         j                  rt        t        j                  t        j                  j                   t        j"                  j                   g      dt$        dt&        ffd}| j)                         D ci c]  \  }} ||      r|| } }}| S c c}}w )z"decomps can change based on configNr2   r)   c                 D    | v ryt        | d      r| j                  v S y)NToverloadpacketF)hasattrr  )r2   ops_to_skips    r3   should_skipz(select_decomp_table.<locals>.should_skip  s-    [ r+,((K77r4   )r   fallback_randomr-   "fallback_embedding_bag_byte_unpackpopr_   r(   	quantizedembedding_bag_byte_unpackr   r  emulate_precision_castsr   r   addcmul_foreach_addcmulrw  _foreach_addcdivr   r   items)r   r  kvr  s       @r3   select_decomp_tabler    s    00599..HHPPRVW "F%% !%%,,%%,,
	C 	D 	 $*<<>H41aQ!Q$HHM Is   ;DDmasksourcec                    ddl m}m}  || j                  |j                        rt
        j                  | |g      \  } }|j                  d      j                  d      dz
  }d | ||fD        \  }}}t
        j                  |||gd      }	t        j                  ||	|      j                  | j                        S t        S )Nr   )BackendFeaturehas_backend_featurer   r   c              3   <   K   | ]  }|j                           y wr;   )r   )r   rO   s     r3   r   z!masked_scatter.<locals>.<genexpr>  s     ,WQQYY[,Ws   )codegen.commonr  r  r   MASKED_SCATTER_WITH_INDEXr   broadcast_tensorsr   cumsum_unsafe_masked_indexr_   r   r   r   r=   )
r   r  r  r  r  
source_idx	self_flat	mask_flatsource_flatr   s
             r3   masked_scatterr    s     D4;;(P(PQ ++T4L9
d\\"%,,Q/!3
,W4vBV,W)	9k**;	J<QRS{{9fi8==djjIIr4   	quant_min	quant_maxc                    t        j                  |       \  }}||z
  t        ||z
        z  }t        j                  |t        j                  |g            }|t        j
                  ||z        j                  t         j                        z
  }t        j                  |||      }|j                  t         j                        |j                  t         j                        fS r;   )r_   aminmaxr   rJ   r   r   r   intrS   float64int64)	r@   r  r  rD   r\   min_valmax_valscale
zero_points	            r3   choose_qparams_tensorr    s     }}U+GWw%	I(=">>EIIeU\\3%01EU[[59<<UYYGGJZI>J88EMM"JMM%++$>>>r4   
accumulatec                     | j                         }t        j                  ||g|j                  |j                        |      }|j                  | j                        S r;   )r   r_   	index_putr   r   )r   rd   r  r  	flatteneds        r3   putr    sL     IE7FNN5;;7I TZZ((r4   c                 V    t         j                  | |||      }| j                  |      S )N)r  )r   r  copy_)r   rd   r  r  r   s        r3   put_r    s(     ((4:(
>C::c?r4   rd  input_dtypec                     | |z  }t        j                  ||d      }t        j                  | ||      }| j                  |k7  r|j                  |      }|j                         S )NTr   )r_   r   r    fmar\   r   
contiguous)r5   rd  rc   r  new_grad_outputsum_new_grad
grad_inputs          r3   _softmax_backward_datar    sc     "F*O99_#tDL##VG\?KJ K']];/
  ""r4   Tinclude_selfsrcreduction_typer  c                   |dk(  rt        | j                        s| j                  j                  xs | j                  j                  }t	        j
                  |      }|r)| }t	        j
                  |       j                  |||      }	nN| j                  ||d      }t	        j                  |       j                  |||      }	|	j                  |	dk  d      }	|j                  |||      }|r||	z  S ||	z  S t        t        j                  j                  || j                  |j                  |j                  j                  d      rt         S | j"                  |dz   d  j%                         | j"                  d | j%                         z  }
|j%                         g| j"                  |dz   d  | j"                  d | }g t'        | j(                  |z
  | j(                        dt'        d| j(                  |z
        }|j+                  t        j,                        j/                  |
      j1                  |      j3                  |      }| j5                  |||||      S )Nmeanr   r   Tr  )r"   r\   is_floating_pointr   r_   	ones_likeri   
index_fill
zeros_likemasked_fillr#   r   scatter_reduce_twor   r^   r=   r   r   rm   r   r   r  repeat_interleaver   rq   scatter_reduce)r   rc   rd   r  r  r  true_divisiononesr   countsrepeatsindex_shapers   scatter_indexs                 r3   index_reducer    s    (T

) 

44M

8M8Ms#C__T*44S%FF//#ua0C%%d+55c5$GF''
A6FmmC,,sV|?#-?  

		

  jjq#))+djj#.>.D.D.FFG;;=L4::cAgi#8L4::ds;KLKNU499s?DII.NNE!TYY_4MND		7	#				  !   r4   kernel_size	ceil_modec                 2   |dk(  rdg|z  }|dk(  rdg|z  }|s|}t        ||      }t        ||      }t        ||      }t        ||      }t        j                  t        j                  |      }t
        j                  j                  j                  ||      s0|t        j                  t
        j                        j                  kD  rt        S t        j                  | |||||      \  }}	t        j                  |	|| j                   | d  |||      }
||
fS )Nr   r   )n_dim)r   r-  reduceoperatormulr_   	_inductorlowering%should_fallback_max_pool_with_indicesiinfoint8rJ   r=   prims!_low_memory_max_pool_with_offsets'_low_memory_max_pool_offsets_to_indicesr   )rO   r  rx   ry   rz   r  rc   window_sizevalsrY  r6   s              r3   _max_pool_with_indicesr  I  s"    1}39!|#) {C0KHc*H7C(G&#&F""8<<=K 	  FFs 	G 	
 UZZ0444;;	MD' ;;	G =r4   c           	      &    t        | |||||d      S )Nr   r   r  rO   r  rx   ry   rz   r  s         r3   max_pool2d_with_indicesr          "	;9! r4   c           	      &    t        | |||||d      S )NrN  r   r  r  s         r3   max_pool3d_with_indicesr    r  r4   output_sizec                     | j                   ^ }}}|\  }}|dk(  s|dk(  r:g |||}| j                  |      | j                  |t        j                        fS ||z  dk(  r(||z  dk(  r ||z  ||z  g}t        j                  | |      S t        S )Nr   r   )r   	new_emptyr_   r  r   r  r=   )	rO   r  batchh_inw_inh_outw_outo_sizer  s	            r3   adaptive_max_pool2dr    s     UD$LE5zUaZ'5'%''{{6"AKKekkK$JJJe|qTE\Q.u}dem4++A{;;r4   	out_int32rightsidesortersorted_sequencer  r  r  r  c                ~    t         j                  | t        j                  |g| j                        ||||      d   S )Nr   r  r   )r   searchsortedr_   re   r   )r	  r   r  r  r  r  s         r3   searchsorted_scalarr    sK     dVO$:$:;   	 	r4   r  r  
boundariesc                    t         j                  t        j                  | g|j                        |||      j                  d      S )Nr  r  r   )r   	bucketizer_   re   r   r   )r   r  r  r  s       r3   bucketize_scalarr    sD     >>dVJ$5$56	  
 gajr4   noiselowerupper	generatorc                    |rS| dk  }t         j                  | |||      }t        j                  || |z  |       }t        j                  ||d      }	||	fS ||z   dz  }
t         j	                  | |
      t        j
                         fS )Nr   )r  r   r   )r   uniformr_   r   
leaky_relur   )r   r  r  r  r  r  not_positiverrd  	noise_outnegative_slopes              r3   rrelu_with_noise_functionalr    s     qyLLueyLA\4!8T:KKa3	y  %-1,t^4ellnDDr4   repeatc                 N   t         j                  j                  rt        S |t	        |      t
        urt        S | j                  j                  dk(  rt        S | j                  t        j                  t        j                  fv sJ | j                  dk(  sJ | j                  d      }t        j                  || j                        }t        j                  ||| j                  t        j                  k(  d      }t        j                  || j!                  d      dz
        S )Nr   r   r   r  Tr  )rJ   )r   tritonautotune_at_compile_timer=   r^   r  r   r\   r_   rL  r  r   r  aranger  rS   rX   )r  r  r  posr6   s        r3   repeat_interleave_Tensorr%    s    
 }}-- d;/s:}}U"<<EKK5555;;!]]1F
,,{6==
9C   ;DG ;;wFKKNQ$677r4   r   r  c           	      8   | j                         dk(  r|j                         dk(  sJ d       |d   }|d   }|d   }| j                  d      }|j                  d      }t        j                  j	                  ||||df|df|df|      }	|	j                  d      S )NrN  z,Expect (N,C_in,L) and (C_out,C_in//groups,K)r   r   r   )rx   ry   rz   r}   )rc   r   r   conv2dr   r   )
r@   rB   rC   rx   ry   rz   r}   input_2d	weight_2dout_2ds
             r3   conv1d_to_conv2dr,    s     99;!

 1 61
 AYFajG{H r"H  $I [[  {!A ! F >>"r4   )NNr;   )Nr   r   )NF)r   r   F)F)Nr   r   F)g      ?gUUUUUU?FN)Nr&  r  r&  r   )r-  loggingr   r  rR  typingcollections.abcr   r   r   r   r   r   typing_extensionsr	   r_   torch._decomp_decompr0   torch._prims_common_prims_commonr  $torch.ao.quantization.fx._decomposedr
   r   r   torch._decomp.decompositionsr   rc  r   r   r>   r   r   $torch._decomp.decompositions_for_rngr   torch._dynamo.utilsr   torch._environmentr   !torch._higher_order_ops.out_dtyper   torch._inductor.utilsr   r   r   r   torch._refsr   rG   %torch.fx.experimental.symbolic_shapesr   r   torch.utils._ordered_setr    r   r    r!   r"   r#   r$   r%   _opsOperatorBaseOpOverloadPacketr&   __annotations__	getLogger__name__r.   r(   r   r  r  r6  quantized_decomposed_adaptive_avg_pool2d_backwardindex_selectaddmvr#  bitwise_and_bitwise_or_
clamp_min_distelu
empty_likeflipgeluhardtanhlcmr  linalg_vector_norm_log_softmax max_pool2d_with_indices_backward_native_batch_norm_legit#_native_batch_norm_legit_functional$_native_batch_norm_legit_no_training_batch_norm_with_update"_batch_norm_with_update_functional_batch_norm_no_updatebatch_norm_backwardr  native_group_normnll_loss2d_backwardpermute_copyrrelu_with_noise_backward_softmaxsin_sqrt__to_copytril_indicestriu_indicesunbind_copyr  upsample_bilinear2dvecr:  rE  inductor_decompositionsr-   _unsafe_indexr  #_unsafe_masked_index_put_accumulate+_scaled_dot_product_flash_attention_for_cpur   r  rR   rQ   ri   gluselect_scatterslice_scatterrW   splitr   r   r   unbindbaddbmmr'   r,   
OpOverloadr1   r   r?   	ShapeTyper   tuplerH   rN   SymInttypesNumberrS   r`   rv   r   r   r   r   r   r\   r   r   r   r   r   r   r   detach_r   r   r  r  r  	view_copyr  r  
StrideTyper  r  r  r  r   r  r"  r&  r)  r1  	low_dtyper3  r/  r  rZ  re  r  rw  ro  r  rs  _foreach_lerpry  r|  r}  r  py_impl_CDispatchKeyAutogradcachedictr  r  r  choose_qparamsre   r  r  r  r  strr  r  r  r  r  r  r  r  r  	Generatorr  r%  r,  rM   r4   r3   <module>r     s       
  $ ; ; '   # + 
  F ( ( 7 . 
 F W / $  T]t_#	JJUZZ888 )  g!yy~~		II	YY!!
yy55 ,+**++ 	

+ 		+
 	+ 	+ 	+ 			+ 	+ 	+ 			+ 			+ 	+ 	+ 	+  	!+" 	#+$ 	--%+& 	%%'+( 	00)+* 	11++, 	$$-+. 	///+0 	""1+2 	  3+4 	5+6 	7+8 	9+: 	  ;+< 	=+> 	&&?+@ 	A+B 			C+D 	

E+F 	G+H 	I+J 	K+L 	M+N 	O+P 	  $$Q+R 	55S+T 	++U+- \ K,.J2IJ
 	,,44<<NNNN!!NNHHIIJJLLHHKKLL'W Duzz44ejj6Q6QQRS , n&8 9>	&6!77	8>xB (2r6"223> 6678\\  	
  \\ 9" ../
P<<
Poo
P U\\"
P 5<<
 	
P
 

P 5<<u||34
P 0
P ::BBCD )-(,	LL 
%++$$	% 
%++$$	%	
 
 E %# )-(,	||		%++$$	%	 
%++$$	%	 \\		 $ &	 $#ELL #U\\ #  %# $	
uS%,,&'
(	""	 	 \\		 %	 () !"M||M	M <<M LL	M ;;M \\M *M* ,,4456W
uS%,,&'
(W#YW W \\	W 7W  2234..<<. LL. S		.
 #tCy.!. 3S	>". CcN#. . I. . d. 5<<u||34. 5.@ ,,-.G G GU\\ G /G
 
# (,
,,LL $ \\	  $0 %
 (,  !
,,
,, ,, $	
 ++

 ;; \\  &8 	" (, 
,, LL  $  \\	   # N ))*+ :%,,:	: \\: ,:z %:U\\ :ell : &:& 
#
 +/	@||@||@ EKK&&'	@
 \\@ $@F ++,-   . DLL12u||   3 EJJ/0Iu|| IELL IU\\ I 1I EJJ/0Iu|| IELL IU\\ I 1I 		" 
,,	#  \\	 # 		" 
,,	#  \\	 # ))*+

,,
	
 
 	

 \\
 ,
 //01)
,,)
uS%,,&'
() \\) 2) --./$
,,$;;$ \\$ 0$
 
,,
 
5??E,,,-
  '
 $(%)%)).)>)>)3
,,)3c5j!)3 EKK 	)3
 U\\")3 U\\")3 )3 )3 &&)3 \\)3 ()3` $(%)).)>)>/c5<<'(/
,,/ EKK 	/
 U\\"/ &&/ / \\/@ '2ELL 2C 2ELL 2 (2 (3U\\ 3S 3U\\ 3 )3 ))112Tu|| T3 T# T%,, T 3T ))334V
,,V V(+V7:V
\\V 5V ,,-5
5
uS%,,&'
(5 5 \\	5 .5 	EEMMN $(<<LL 5<<
  \\	 O 
;;CCD<< ll LL	
 ,, || ,, || LL  \\ E4 		++EEF
Au|| 
A 
A G
A --./  ||
,,  	
  \\  0@ --445
 	
u||
u||$ % 	
 
%,, 6 --445
 	
u||
u||$ % 	
 
%,, 6 **112
%
ell#
 KK
 
%,,	
 3
 **556
%
ell#
 %++$$%
 
%,,	
 7
 ''(<(<(E(EF../<<LL //%,,
' //%,,/	
 .  !&  5<<u||34 0 G< 6T#xS'9"9: 6 6"T#xS'9"9: "J ++,
,,
,, LL \\	 -$ ,;;BBC?<<?? ? 
	?
 ;;? 5<<%&? D? !
 	
)
,,
)<<
) LL
) 	
)
 \\
) "
) 		"
 	
,,<< LL 	
 \\ # 33;;<##LL# 
# 	#
 \\#  =#( ))* 2
,,2	2 <<2 
	2
 2 2 \\2 +2j5||5c5 U3S	>*+5 3S	>"	5
 CcN#5 5 
5 5<<%&5p 445 /3%&&'
||
c
 U3S	>*+
 3S	>"	

 CcN#
 
 5<<%&
 6
 445 /3%&&'
||
c
 U3S	>*+
 3S	>"	

 CcN#
 
 5<<%&
 6
 001||"&s)
5<<%& 2" ))001
 %)	\\	
++

	 		
 	 3-	 U\\"	 \\	 2	& --.
 
++

 	
  \\ / 889 %+/E
,,E<<E E 	E
 E (E 5<<%&E :E& ..556 "&8LL8#8 \\8 784 $()<<)LL) 5<<
 ) #J	)
 3Z) Cj) ) \\)r4   