
    rh{                     0   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mZmZm	Z	m
Z
 d dlmZ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.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4 ddlm5Z5m6Z6m7Z7  e	d      Z8 ed      Z9e
ejt                  jv                  ejt                  jx                  f   Z=ee>d<    ej~                  e@      ZAej                  j                  ZCej                  j                  ZDej                  j                  ZEej                  j                  ZFej                  j                  ZG eg eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  eCj                  e(eCj                  eCj                  eCj                  eCj                  j                  eCj                  j                  eEj                  eFj                        Zsi  e       esZteCj                  eCj                  eCj                  eCj                  j                  eCj                  eCj                  eCj                  eCj:                  eCj                  eCj                  eCj                  eCj                   eCj                  j                  eCj                  eCj                  eCj
                  eCj                  gZee
ejt                  j                  ejt                  jx                  f      e>d<    eete       de
e=ee=   f   deee9e8f   gee9e8f   f   fdZ eeCj:                  g      dej                  dej                  dendendedej                  fd       Z eeCj                  j                  g      dej                  deddfd       Z eeCj"                  j                  g      dej                  deddfd        Z eeCj&                  j                  g      ddd!d"ej(                  d#eej*                  j,                     d$eej*                  j,                     ddfd%       Z eeCj.                  g      e 	 	 dd&ej                  d#eej*                  j,                     d$eej*                  j,                     dej                  fd'              Z eeCj0                  g      d(ee
enej(                  f      d)ej*                  j,                  d*edej                  fd+       Z eeCj                  g      dd,d&ej                  d-end.ej                  dej                  d/ej*                  j,                  dej                  fd0       Z} eeCj2                  j                  g      d(ee
enej(                  f      d1een   d*edej                  fd2       Z eeCj4                  g      dej                  d3ej                  d4ej                  d5een   d6e
eneen   f   d7e
eneen   f   d8e
eneen   f   d9ed:een   d;end<ee   deej                  ej                  ej                  f   fd=       Z eeCj8                  j:                  g      dd&ej                  d>endej                  fd?       Z eeCj>                  g      e	 dd@ej                  dAej                  dBeej@                     dej                  fdC              Z eeCjB                  g      e	 	 	 dd@ej                  dDej                  dEej                  dBeej@                     dFej*                  j,                  d/ej*                  j,                  dej                  fdG              Z eeCjD                  g      e	 dd@ej                  dHej                  dBeej@                     dej                  fdI              Z eeCjF                  j                  g      	 ddJeej                     d-endej                  fdK       Z eeCjH                  g      d&ej                  dej                  fdL       Z eeCjJ                  g      dd,d&ej                  dMej                  d/eej*                  j,                     dej                  fdN       Z eeCjL                  g      d@ej                  dej                  fdO       Z eeCjN                  eCjP                  g      d@ej                  dej                  fdP       Z eeCjR                  eDjR                  g      d@ej                  dQej                  dej                  fdR       Z eeCjT                  eDjT                  g      d@ej                  dQej                  dej                  fdS       Z eeCjV                        	 	 dd@ej                  d-een   dUedej                  fdV       Z eeCjX                        	 	 dd@ej                  d-een   dUedej                  fdW       Z eeCjZ                  g      d@ej                  d-endXendYendej                  f
dZ       Z eeCj\                  j                  g      d@ej                  d(ee
enej(                  f      dej                  fd[       Z eeCj\                  j@                  g      d@ej                  d\ej@                  dej                  fd]       Z	 ddej                  d^eejb                     dejb                  fd_Z eeCjf                        dddd`d@ej                  d\eej@                     daeejh                     d^eejb                     d*edej                  fdb       Z eeCjj                        dddd`d@ej                  d\eej@                     daeejh                     d^eejb                     d*edej                  fdc       Z eeCjl                        ddddTdTejn                  ddd@ej                  d)e
enef   d\eej@                     deeejr                     daeejh                     dfedged^ejb                  dej                  fdh       Z eeCjt                  j                        dddd`d@ej                  diend\eej@                     daeejh                     d^eejb                     d*edej                  fdj       Z eeCjt                  jv                        dddd`d@ej                  dkendiend\eej@                     daeejh                     d^eejb                     d*edej                  fdl       Z eeCjz                  j                        diend(ee
enej(                  f      d*edej                  fdm       Z eeEj                  j                        d3ej                  d4ej                  dnej                  dej                  fdo       Zq eeFj                  j                        d3ej                  dpej                  dqej                  d4ej                  drej                  dsej                  dnej                  dtej                  duej                  dvendej                  fdw       Zr eej                  j                  j|                        dxej                  dej                  fdy       Z eeCj                  g      e	 	 	 ddzej                  d{ej                  d|end}end~edej                  fd              Z eeCj                  j                        	 dd@eej                     deej                     deej                     dedeej                     f
d       Z eeCj                  j                        	 dd@eej                     deej                     deej                     dedeej                     f
d       Z eeCj                  j                        deej                     deej                     d4ej*                  j,                  deej                     fd       Z eeCj                  j                        deej                     deej                     deej*                  j,                     deej                     fd       ZeCj                  j                  j                  ej                  j                  j                         eeCj                        d3ej                  d4ej                  dne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def   f   fd       Zdeeedef   f   fdZ eeCj                        d@ej                  dej                  dej                  dej                  fd       Z eeGj                  j                        d3ej                  dendended\ej@                  deej                  ej                  f   fd       Z eeCj                        	 dd@ej                  d.ej                  dej                  dedej                  f
d       Z eeCj                        	 dd@ej                  d.ej                  dej                  dedej                  f
d       Z eeCj                  j                        edej                  dej                  d-endej@                  dej                  f
d              Zz eeCj                        ddd@ej                  d-end.ej                  dej                  dededej                  fd       Zd&ej                  deen   d6ee
eneen   f      d7e
eneen   f   d8e
eneen   f   ded-endeej                  ej                  f   fdZ eeCj                        	 	 	 	 dd&ej                  deen   d6ee
eneen   f      d7e
eneen   f   d8e
eneen   f   dedeej                  ej                  f   fd       Z eeCj                        	 	 	 	 dd&ej                  deen   d6ee
eneen   f      d7e
eneen   f   d8e
eneen   f   dedeej                  ej                  f   fd       Z eeCj                        d&ej                  deen   deej                  ej                  f   fd       Z eeCj                  j                        dTdTddddej                  d@ej*                  j,                  dededee   deej                     dej                  fd       Z eeCj                        	 	 	 	 dd@ej                  dej                  dedededeej                     deej                  ej                  f   fd       Zy)    N)AnyCallableOptionalTypeVarUnion)	ParamSpec	TypeAlias)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)guard_or_falseguard_size_obliviousstatically_known_true   )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     p/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/torch/_inductor/decomposition.pyr0   r0      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)r4   r5   r6   r7   r8   s        r2   _embedding_dense_backwardr>      s,     *Wk;8J r3   tensormsgc                      y r:    r?   r@   s     r2   assert_async_msg_decomprD          
r3   c                      y r:   rB   rC   s     r2   "functional_assert_async_msg_decomprG      rE   r3   )minmaxsymbolrH   rI   c                     y r:   rB   )rJ   rH   rI   s      r2   sym_constrain_range_for_sizerL      s     r3   xc                 R    || j                  |      } || j                  |      } | S r:   )	clamp_min	clamp_max)rM   rH   rI   s      r2   clamprQ      s/     KK
KKHr3   size
fill_valuekwargsc                     |j                  d      }|.t        t        |            |d<   t        j                  | |fi |S t
        S )Ndtype)getr   typetorchfullr<   )rR   rS   rT   rV   s       r2   rZ   rZ      sF     JJwE}'Z(89wzz$
5f55r3   alphadimindexr\   c                ~    t               s#| j                  t        j                  k(  rt        S t        | |||d|      S )NF)inplacer\   )r   rV   rY   bfloat16r<   r   )rM   r]   r^   r?   r\   s        r2   	index_addrb      s3     ;177enn4!S%eLLr3   physical_layoutc                     dgt        |       z  }t        |      D ]
  \  }}|||<    t        j                  |D cg c]  }| |   	 c}fi |j	                  |      S c c}w Nr   )len	enumeraterY   emptypermute)rR   rc   rT   permpls         r2   empty_permutedrm      se     3T?D/* 1Q;;9AQ9DVDLLTRR9s   Ainputweight
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    devicerX   r<   atensumr+   ranger]   convolution_backward)r4   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   	grad_biasgrad_inpgrad_weight_s                  r2   r~   r~      s     q>(:(:(?(?!@qcDq+//:K1L,M&MNI#88	QQ/ Hk1 k9--r3   decimalsc                 H    d|z  }t         j                  | |z        d|z  z  S )Ng      $@g      ?)r{   round)rM   r   ten_pow_decimalss      r2   	round_decr     s,    X~::a**+s5E/EFFr3   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   ry   r]   r   inductordecompose_bmmTr]   keepdim)r   coordinate_descent_tuningrz   rX   r   shape	unsqueezer|   rR   r   rY   squeezer<   )r   r   r   outs       r2   bmmr      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 r3   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      )rz   rX   r   rR   r   rY   r|   r   r   r   Tr<   )r   r   r   r   r   r\   r   s          r2   addmmr   :  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;,,r3   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(  rt	        | j                  d      dk(        rt	        | j                  d      dkD        rt	        |j                  d      dk(        r| j                  |j                  k(  rt        t        j                  |       t        j                  |      z   dk        rYt        d	   d
xx   dz  cc<   t        j                  t        | j                  d            D cg c]  }| |d d f   |z   c}      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 c c}w )Nr   r   r   ry   r   r   r       r   decompose_mmTr   )r   r   rz   rX   r   r   r   r|   rR   rV   r   rY   numelr   catr}   r   r<   )r   r   r   is       r2   mmr   X  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9951;NOad1a4j61OPP 1!238MKKOq 9
 Z 0A5099Q&.."44!Til  Ps   I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 )	NrM   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)rf   r   r   )rM   r]   s    r2   non_empty_tensorzcat.<locals>.non_empty_tensor  sW    " qww<1!5aggajAo!FQWW"6qwws|q7H"Ir3   r   type_promotion_kindr   rV   c              3   ,   K   | ]  }|d    u   yw)r   NrB   ).0tfiltered_tensorss     r2   	<genexpr>zcat.<locals>.<genexpr>  s!      )%&a  )s   )rY   Tensorboolr+   filterrf   r   r   DEFAULTrV   clonetor{   r   defaultallr   insertr   expandflattenr<   )r   r]   r   promoted_dtype
filtered_tinpr   r   s    `     @r2   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 r3   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   rV   rz   r   g        )
is_complexrY   whereisnanrealfloatatan2imagr   r   INT_TO_FLOATscalar_tensormathpirz   )rM   r   rV   r   rets        r2   angler     s    ||~{{KKuu{{166166/J
 	
 "	;HHHAu 
		TWWE!((	CB
++a!eR
%C;;u{{1~uU|S99r3   yc                v   t        j                  |       xr | j                         }t        j                  |      xr |j                         }|r|st        S |}|||z  }t        j                  | j
                  |j
                        }dt         j                  dt         j                  fd}| dz   } |dz   } || j                  | j                  j
                              } ||j                  |j                  j
                              }	t        j                  ||	z   d      j                  |      }
|
S )Nr?   r(   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]ry   r   zQThe size of the last dimension must be even to reshape it to [..., last_dim/2, 2])r   AssertionErrorview)r?   initial_dimslast_dim	new_shapereshaped_tensors        r2   reshape_tensor_complexz#add.<locals>.reshape_tensor_complex  s^     #),,x a<1 c 
 6l5HM515	 ++i0r3   r   )	start_dim)
rY   	is_tensorr   r<   promote_typesrV   r   r   r   r   )rM   r   r\   x_is_complex_tensory_is_complex_tensorzcomplex_typer   
x_reshaped
z_reshapedresults              r2   addr     s      //!,?//!,?&9	AAI&&qww8Lu||  $ 	
AA	AA'qvv||(<=J'qvv||(<=J]]:
2bAFF|TFMr3   c                 2    | j                         rt        S | S r:   )r   r<   r   s    r2   conj_physicalr     s    Kr3   c                     | S r:   rB   r   s    r2   liftr     s    Kr3   otherc                 b    t        j                  t        j                  |      || kD  z  | |      S r:   rY   r   r   r   r   s     r2   fminr     '    ;;u{{5)UT\:D%HHr3   c                 b    t        j                  t        j                  |      || k  z  | |      S r:   r   r   s     r2   fmaxr     r   r3   Fr   c                 x    | j                   t        j                  k(  rt        j                  | ||      S t        S Nr   )rV   rY   r   anyr<   r   r]   r   s      r2   amaxr     -     zzUZZyy388r3   c                 x    | j                   t        j                  k(  rt        j                  | ||      S t        S r   )rV   rY   r   r   r<   r   s      r2   aminr   "  r   r3   startlengthc                 N    t        j                  | |||      j                         S r:   )rY   narrowr   )r   r]   r   r   s       r2   narrow_copyr  -  s"     <<c5&17799r3   c                 J    t         j                  | |      j                         S r:   )r{   r   r   )r   rR   s     r2   view_copy_defaultr  7  s    
 99T4 &&((r3   rV   c                 @    | j                  |      j                         S r:   )r   r   )r   rV   s     r2   view_copy_dtyper  ?  s    
 775>!!r3   memory_formatc                 X    |t         j                  u s|t        j                  |       S |S r:   )rY   preserve_formatutilssuggest_memory_format)r?   r  s     r2   get_like_layoutr  G  s.    
 ---1F**622r3   )rV   rz   r  rz   c                    t        j                  g | j                         f|xs | j                  |xs | j                  d|j                  t        | |            S Nr   r  )rY   randrR   rV   rz   r   r  r   rV   rz   r  rT   s        r2   	rand_liker  R  s^     ::$))+!tzz$ 	
 	bt];b<=r3   c                    t        j                  g | j                         f|xs | j                  |xs | j                  d|j                  t        | |            S r  )rY   randnrR   rV   rz   r   r  r  s        r2   
randn_liker  c  s^     ;;$))+!tzz$ 	
 	bt];b<=r3   )rV   layoutrz   
pin_memoryrequires_gradr  r  r  r  c                    t        j                  g | j                         ||xs | j                  |xs | j                  |xs | j
                  |      j                  t        | |            S )N)rV   r  rz   r  r  )rY   rZ   rR   rV   r  rz   r   r  )r   rS   rV   r  rz   r  r  r  s           r2   	full_liker  t  sa     ::$))+!tzz$$# 	bt];b<=r3   highc                    t        j                  j                  d|g | j                         f|xs | j                  |xs | j
                  d|j                  t        | |            S )Nr   r   r  r{   randintlowrR   rV   rz   r   r  )r   r  rV   rz   r  rT   s         r2   randint_liker     sl     <<	$))+ !tzz$  	bt];b<=r3   r  c                    t        j                  j                  ||g | j                         f|xs | j                  |xs | j
                  d|j                  t        | |            S r  r  )r   r  r  rV   rz   r  rT   s          r2   randint_like_lowr"    sl     <<$))+ !tzz$  	bt];b<=r3   c                 F    t        j                  j                  d| |fi |S re   )r{   r  r  )r  rR   rT   s      r2   r  r    s"     <<AtT4V44r3   biasc                     t         j                  j                  j                  |      }t         j                  j                  j	                  | |||j                         d         S re   )rY   r'   
_quantized$wrapped_fbgemm_pack_gemm_matrix_fp16!wrapped_fbgemm_linear_fp16_weightrR   )rn   ro   r$  packed_weights       r2   #linear_dynamic_fp16_unpacked_weightr*    sO     II((MMfUM99AA}dFKKM!$4 r3   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:   )rY   r'   r&  _wrapped_linear_prepack#_wrapped_quantized_linear_prepacked)rn   r+  r,  ro   r-  r.  r$  r/  r0  r1  r)  s              r2   wrapped_quantized_linearr5    s\     II((@@/M 99CC r3   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   rY   int32)r   nr8  s     r2   r   zPq_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.<locals>.<genexpr>  s&     GQbajmmEKK0Gs   .1)r   r   ry      little   r      r;  )sys	byteorderr   rY   float32)r8  rM   r   r   ws   `    r2   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Xr3   .i)rY   r   r   rD  )r6  rF  scalesoffsetss       r2   "q_embedding_bag_byte_unpack_decomprJ    sz    Yell Yu|| Y vc2b5j12FsBCx 01G#ss(u}}-6@@r3   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  )rL  rM  rN  rO  _expand_grid)rz   rY   is_contiguouscontiguous_formatdecomp_grid_sampler_2d)rK  rL  rM  rN  rO  rQ  outputs          r2   grid_sampler_2drV    sm     	
ELL'' 	C!#	COO%*A*AOBL $	-!#!F Mr3   left_tensorsright_tensorsscalarc                     t         j                  j                  | t         j                  j                  ||      |      S Nr[   )r{   _foreach_addList_foreach_mulr   rW  rX  rY  s       r2   _foreach_addcmul_scalarr`    <     !!d$$\=A "  r3   c                     t         j                  j                  | t         j                  j                  ||      |      S r[  )r{   r\  r]  _foreach_divr_  s       r2   _foreach_addcdiv_scalarrd    ra  r3   start_tensorsend_tensorsc           	          t         j                  j                  | t         j                  j	                  t         j
                  j                  ||       |            S r:   )r{   r\  r]  r^  Scalar_foreach_sub)re  rf  ro   s      r2   _foreach_lerp_scalarrj  (  sL     !!  "";>	
 r3   scalarsc           	          t         j                  j                  | t         j                  j	                  t         j
                  j                  ||       |            S r:   )r{   r\  r]  r^  
ScalarListri  )re  rf  rk  s      r2   _foreach_lerp_scalarlistrn  6  sL     !!$$"";>	
 r3   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)rn   ro   r$  ro  rp  rq  rr  rs  rK  bcs              r2   miopen_batch_normrz  D  sl     $$"	GAq! 1ay	 r3   .c                      i t         t        S r:   )r,   r   rB   r3   r2   fast_random_decompsr|  d  s    5n5 455r3   c                  B    t         j                  rt        S t               S )z"decomps can change based on config)r   fallback_randomr,   r|  rB   r3   r2   select_decomp_tabler  k  s      r3   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   rM   s     r2   r   z!masked_scatter.<locals>.<genexpr>  s     ,WQQYY[,Ws   )codegen.commonr  r  rz   MASKED_SCATTER_WITH_INDEXr{   broadcast_tensorsreshapecumsum_unsafe_masked_indexrY   r   r   r   r<   )
r   r  r  r  r  
source_idx	self_flat	mask_flatsource_flatr   s
             r2   masked_scatterr  r  s     D4;;(P(PQ ++T4L9
d\\"%,,Q/!3
,W4vBV,W)	9k**;	J<QRS{{9fi8==djjIIr3   	quant_min	quant_maxepsc                    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:   )rY   aminmaxr   rI   r   r   r   intrQ   float64int64)	rn   r  r  r  rV   min_valmax_valscale
zero_points	            r2   choose_qparams_tensorr    s     }}U+GWw%	I(=">>EIIeU\\3%01EU[[59<<UYYGGJZI>J88EMM"JMM%++$>>>r3   
accumulatec                     | j                         }t        j                  ||g|j                  |j                        |      }|j                  | j                        S r:   )r   rY   	index_putr  r   )r   r^   r  r  	flatteneds        r2   putr    sL     IE7FNN5;;7I TZZ((r3   c                 V    t         j                  | |||      }| j                  |      S )N)r  )r{   r  copy_)r   r^   r  r  r   s        r2   put_r    s(     ((4:(
>C::c?r3   rU  input_dtypec                     | |z  }t        j                  ||d      }t        j                  | ||      }| j                  |k7  r|j                  |      }|j                         S )NTr   )rY   r|   r   fmarV   r   
contiguous)r4   rU  r]   r  new_grad_outputsum_new_grad
grad_inputs          r2   _softmax_backward_datar    sc     "F*O99_#tDL##VG\?KJ K']];/
  ""r3   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!   rV   is_floating_pointr   rY   	ones_likerb   
index_fill
zeros_likemasked_fillr"   r{   scatter_reduce_tworz   rX   r<   r   r   r}   ndimr   r  repeat_interleaver  ri   scatter_reduce)r   r]   r^   r  r  r  true_divisiononesr   countsrepeatsindex_shaperj   scatter_indexs                 r2   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	#				  !   r3   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   	functoolsreduceoperatormulrY   	_inductorlowering%should_fallback_max_pool_with_indicesiinfoint8rI   r<   prims!_low_memory_max_pool_with_offsets'_low_memory_max_pool_offsets_to_indicesr   )rM   r  rq   rr   rs   r  r]   window_sizevalsrI  r5   s              r2   _max_pool_with_indicesr    s     1}39!|#){C0KHc*H7C(G&#&F""8<<=K 	  FFs 	G 	
 UZZ0444;;	MD' ;;	G =r3   c           	      &    t        | |||||d      S )Nry   r   r  rM   r  rq   rr   rs   r  s         r2   max_pool2d_with_indicesr  -        "	;9! r3   c           	      &    t        | |||||d      S )Nr>  r   r  r  s         r2   max_pool3d_with_indicesr  ;  r  r3   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_emptyrY   r  r{   r  r<   )	rM   r  batchh_inw_inh_outw_outo_sizer  s	            r2   adaptive_max_pool2dr  I  s     UD$LE5zUaZ'5'%''{{6"AKKekkK$JJJe|qTE\Q.u}dem4++A{;;r3   	out_int32rightsidesortersorted_sequencer  r  r  r  c                ~    t         j                  | t        j                  |g| j                        ||||      d   S )N)rz   r  r   )r{   searchsortedrY   r?   rz   )r  r   r  r  r  r  s         r2   searchsorted_scalarr  [  sK     dVO$:$:;   	 	r3   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   ry   )r{   uniformrY   r   
leaky_relur   )r   r  r  r  rq  r  not_positiverrU  	noise_outnegative_slopes              r2   rrelu_with_noise_functionalr  o  s     qyLLueyLA\4!8T:KKa3	y  %-1,t^4ellnDDr3   )NNru  r:   )Nr   r   )NF)r   r   F)r   )F)Nr   r   F)g      ?gUUUUUU?FN)r  loggingr   r  rB  typingr   r   r   r   r   typing_extensionsr   r	   rY   torch._decomp_decompr/   torch._prims_common_prims_commonr
  $torch.ao.quantization.fx._decomposedr
   r   r   torch._decomp.decompositionsr   rT  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.fx.experimental.symbolic_shapesr   r   r    r   r   r    r!   r"   r#   r$   _opsOperatorBaseOpOverloadPacketr%   __annotations__	getLogger__name__r-   r'   r{   r  	quantizedr&  quantized_decomposed_adaptive_avg_pool2d_backwardindex_selectaddmvarange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_backwardrv  native_group_normnative_layer_normnll_loss2d_backwardpermute_copyrrelu_with_noise_backward_softmaxsin_sqrt__to_copytril_indicestriu_indicesunbind_copyr  upsample_bilinear2dvecr*  r5  inductor_decompositionsr,   _unsafe_indexr  #_unsafe_masked_index_put_accumulate+_scaled_dot_product_flash_attention_for_cpur   r  rP   rO   rb   gluselect_scatterslice_scattersplitr   r   r|   unbindbaddbmmr&   r+   
OpOverloadr0   r   r>   _assert_asyncr@   strrD   _functional_assert_asyncrG   rL   SymInttypesNumberrQ   rZ   rm   r~   tupler   r   r   r   rV   r   r   r   r   r   r   r   detach_r   r   r   r   r  	view_copyr  r  r  r  r  rz   r  r  r	  r   r  r   	low_dtyper"  r  embedding_bag_byte_unpackrJ  rV  _foreach_addcmulrh  r`  _foreach_addcdivrd  _foreach_lerprj  rm  rn  rz  py_impl_CDispatchKeyAutogradcachedictr|  r  r  choose_qparamsr?   r  r  r  r  r  r  r  r  r  r  r  	GeneratorrB   r3   r2   <module>r]     s       
  : : 2   # + 
  F ( ( 7 . 
  %  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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& ++//01ELL s t  2
 66::;<u|| # $  = ::BBCD )-(,	LL 
%++$$	% 
%++$$	%	
 
 E %# )-(,	||		%++$$	%	 
%++$$	%	 \\		 $ &	 $	
uS%,,&'
(	""	 	 \\		 %	 () !"M||M	M <<M LL	M ;;M \\M *M* ,,4456S
uS%,,&'
(S#YS S \\	S 7S 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&&'	*
 \\* $*Z ++,-   . 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" 48LLE//0  ' $(%)37=
,,= EKK = U\\"	=
 E//0= = \\= (=  ( $(%)37=
,,= EKK = U\\"	=
 E//0= = \\= )=  '
 $(%)%)).)>)>=
,,=c5j!= EKK 	=
 U\\"= U\\"= = = &&= \\= (=* ))112
 $(%)37=
,,=
= EKK 	=
 U\\"= E//0= = \\= 3=& ))334 $(%)37=
,,=	= =
 EKK = U\\"= E//0= = \\= 5=( ,,-5
5
uS%,,&'
(5 5 \\	5 .5 	EEMMN<<LL ,, \\	 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: ! ++,
,,
,, LL \\	 -$ ,;;BBC?<<?? ? 
	?
 ;;? 5<<%&? D? !
 	
)
,,
)<<
) LL
) 	
)
 \\
) "
) 		"
 	
,,<< LL 	
 \\ # 33;;<##LL# 
# 	#
 \\#  =#( ))* 1
,,1	1 <<1 
	1
 1 1 \\1 +1h1||1c1 U3S	>*+1 3S	>"	1
 CcN#1 1 
1 5<<%&1h 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r3   