
    קgz                     <   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	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 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'm(Z( ddl)m*Z*m+Z+ ddlm,Z,m-Z-m.Z.  ej/        e0          Z1ej2        j3        Z3ej2        j4        Z4ej2        j5        Z5ej2        j6        Z6ej2        j7        Z7 eg e3j8        e3j9        e3j:        e3j;        e3j<        e3j=        e3j>        e3j?        e3j@        e3jA        e3jB        e3jC        e3jD        e3jE        e3jF        e3jG        e3jH        e3jI        e3jJ        e3jK        e3jL        e3jM        e3jN        e3jO        e3jP        e3jQ        e3jR        e3jS        e3jT        e3jU        e3jV        e e3jW        e3jX        e3jY        e3jZ        j[        e5j\        e6j]                  Z^i  e            e^Z_e3j`        e3ja        e3jb        e3jc        jd        e3je        e3jf        e3jg        e3jh        e3ji        e3jj        e3jk        jl        e3jm        e3jn        e3jo        gZp ee_ep           deeejq        jr        ejq        js        f                  dedef         fdZt ete3ju        jv        g          dejl        dewddfd            Zx ete3jy        jv        g          dejl        dewddfd            Zz ete3j{        jd        g          ddddej|        de	ej}        j~                 de	ej}        j~                 ddfd            Z{ ete3j        g          e	 	 ddejl        de	ej}        j~                 de	ej}        j~                 dejl        fd                        Z ete3j        g          deeeej|        f                  dej}        j~        dedejl        fd             Z ete3j        jd        g          deeeej|        f                  d!ee         dedejl        fd"            Z ete3j        g          d#ejl        d$ejl        d%ejl        d&ee         d'eeee         f         d(eeee         f         d)eeee         f         d*ed+ee         d,ed-ee         de
ejl        ejl        ejl        f         fd.            Z ete3j        j        g          ddejl        d/edejl        fd0            Z ete3j        g          ed1ejl        d2ejl        dejl        fd3                        Z ete3j        g          e	 	 dd1ejl        d4ejl        d5ejl        d6ej}        j~        d7ej}        j~        dejl        fd8                        Z ete3j        g          ed1ejl        d9ejl        dejl        fd:                        Z ete3j        jd        g          	 dd;eejl                 d<edejl        fd=            Z ete3j        g          dejl        dejl        fd>            Z ete3j        g          dd?dejl        d@ejl        d7e	ej}        j~                 dejl        fdA            Z ete3j        g          d1ejl        dejl        fdB            Z ete3j        e3j        g          d1ejl        dejl        fdC            Z ete3j        jd        g          ddDd1ejl        dEe	ej                 dejl        fdF            Z ete3j        e4j        g          d1ejl        dGejl        dejl        fdH            Z ete3j        e4j        g          d1ejl        dGejl        dejl        fdI            Z ete3j                  	 	 dd1ejl        d<e	e         dKedejl        fdL            Z ete3j                  	 	 dd1ejl        d<e	e         dKedejl        fdM            Z ete3j        g          d1ejl        d<edNedOedejl        f
dP            Z ete3j        jd        g          d1ejl        deeeej|        f                  dejl        fdQ            Z ete3j        j        g          d1ejl        dRej        dejl        fdS            Z	 ddejl        dTe	ej                 dej        fdUZ ete3j                  ddddVd1ejl        dRe	ej                 dWe	ej                 dTe	ej                 dedejl        fdX            Z ete3j                  ddddVd1ejl        dRe	ej                 dWe	ej                 dTe	ej                 dedejl        fdY            Z ete3j                  ddddJdJej        dZd1ejl        deeef         dRe	ej                 d[e	ej                 dWe	ej                 d\ed]edTej        dejl        fd^            Z ete3j        jd                  ddddVd1ejl        d_edRe	ej                 dWe	ej                 dTe	ej                 dedejl        fd`            Z ete3j        j                  ddddVd1ejl        daed_edRe	ej                 dWe	ej                 dTe	ej                 dedejl        fdb            Z ete3j        jd                  d_edeeeej|        f                  dedejl        fdc            Z ete5j\        jd                  d$ejl        d%ejl        ddejl        dejl        fde            Z\ ete6j]        jd                  d$ejl        dfejl        dgejl        d%ejl        dhejl        diejl        ddejl        djejl        dkejl        dledejl        fdm            Z] etej2        j5        j                  dnejl        dejl        fdo            Z ete3j        g          e	 	 	 ddpejl        dqejl        dredsedtedejl        fdu                        Z ete3j        j                  	 dd1eejl                 dveejl                 dweejl                 dxedeejl                 f
dy            Z ete3j        j                  	 dd1eejl                 dveejl                 dweejl                 dxedeejl                 f
dz            Z ete3j        j                  d{eejl                 d|eejl                 d%ej}        j~        deejl                 fd}            Ze3j        jd                            ej        j        j                   ete3j                  d$ejl        d%ejl        ddej	        ejl                 d~ej	        ejl                 dej	        ejl                 dededede
ejl        ejl        ejl        f         fd                        Z e j        d          deeedef         f         fd            Zdeeedef         f         fdZ ete3j                  d1ejl        dejl        dejl        dejl        fd            Z ete7j        j                  d$ejl        dedededRej        de
ejl        ejl        f         fd            Z ete3j                  	 dd1ejl        dejl        dejl        dedejl        f
d            Z ete3j                  	 dd1ejl        dejl        dejl        dedejl        f
d            Z ete3je        jd                  ed#ejl        dejl        d<edej        dejl        f
d                        Ze ete3j                  ddd1ejl        d<edejl        dejl        dewdedejl        fd            Z ete3j                  	 	 	 	 ddejl        dee         d'e	eeee         f                  d(eeee         f         d)eeee         f         dede
ejl        ejl        f         fd            ZdS )    N)AnyCallableDictListOptionalTupleUnion)core_aten_decompositionsget_decompositionsremove_decompositions)_grid_sampler_2dpw_cast_for_opmath)extra_random_decomps)counters)	out_dtype)pad_listlike)elementwise_dtypesELEMENTWISE_TYPE_PROMOTION_KINDtype_to_dtype)definitely_trueguard_size_oblivious   )configinductor_prims)is_gpu,needs_fallback_due_to_atomic_add_limitationsuse_scatter_fallbackopsreturn.c                     t          |           r| gn| D ]&}|t          v rt                              d|            't	          j        | t                    S )Nzduplicate decomp: %s)callabledecompositionslogwarningdecompregister_decomposition)r   ops     Y/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_inductor/decomposition.pyr&   r&   r   sX      }}-see# 5 5KK.444(n===    tensormsgc                     d S N r*   r+   s     r(   assert_async_msg_decompr0   }       
Fr)   c                     d S r-   r.   r/   s     r(   "functional_assert_async_msg_decompr3      r1   r)   )minmaxsymbolr4   r5   c                    d S r-   r.   )r6   r4   r5   s      r(   sym_constrain_range_for_sizer8      s	     Fr)   xc                 b    ||                      |          } ||                     |          } | S r-   )	clamp_min	clamp_max)r9   r4   r5   s      r(   clampr=      s5     KK
KKHr)   size
fill_valuekwargsc                     |                     d          }|2t          t          |                    |d<   t          j        | |fi |S t
          S )Ndtype)getr   typetorchfullNotImplemented)r>   r?   r@   rB   s       r(   rF   rF      sS     JJwE}'Z(8(899wz$
55f555r)   physical_layoutc                      dgt                     z  }t          |          D ]
\  }}|||<   t          j         fd|D             fi |                    |          S )Nr   c                      g | ]
}|         S r.   r.   ).0lr>   s     r(   
<listcomp>z"empty_permuted.<locals>.<listcomp>   s    999AQ999r)   )len	enumeraterE   emptypermute)r>   rH   r@   permprL   s   `     r(   empty_permutedrT      sw     3T?D/**  1Q;9999999DDVDDLLTRRRr)   grad_outputinputweight
bias_sizesstridepaddingdilation
transposedoutput_paddinggroupsoutput_maskc                 b   |
d         rt          | j        j                  st          S t                              | dgt          t          d|                                                     z             }t          	                    | |||||||||	|
d         |
d         dg          \  }}}|||fS )N   r   r   F)
r   devicerD   rG   atensumlistrangedimconvolution_backward)rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   	grad_biasgrad_inpgrad_weight_s                  r(   rh   rh      s     q> (:(?!@!@ qcDq+//:K:K1L1L,M,M&MNNI#88	QQ/   Hk1 k9--r)   decimalsc                 R    d|z  }t                               | |z            d|z  z  S )Ng      $@g      ?)rc   round)r9   rm   ten_pow_decimalss      r(   	round_decrq      s/    X~::a**++s5E/EFFr)   selfbatch2c                    t           j        r}t          | j        d         dk              st          |j        d         dk              rA|                     d          |                    d          z                      d          }|S | j        j        dk    rt          |                     d          dk              rt          |                    d          dk              rnt          d         dxx         dz  cc<   t          j        |                     d          |                    d          z  dd	                              d          S t          S )
Nr   ra   rg   cpuinductordecompose_bmmTrg   keepdim)r   coordinate_descent_tuningr   shape	unsqueezerd   rb   rD   r>   r   rE   squeezerG   )rr   rs   outs      r(   bmmr      sJ    ' 
1 233 	7KLOq 8
 8
 	 >>"%%(8(8(;(;;@@Q@GGCJ{5  		! 122 	7KKKOOq 8
 8
 	 Z 111Q61119Q&.."4"44!T  ill r)   mat1mat2betaalphac                 *   | j         j        dk    r|t          |                    d          dk              rt          |                    d          dk              ryt          d         dxx         dz  cc<   t          j        |                    d          |                    d          z  dd                              d          }||z  || z  z   S t          |                    d          dk              rt          |                    d          d	k              rkt          |                    d          d	k              rEt          d         dxx         dz  cc<   |j
        |z                      dd          }||z  || z  z   S t          S )
Nrw   r   r   ru   rx   decompose_addmmTrz      )rb   rD   r   r>   r   rE   rd   r   r~   r   TrG   )rr   r   r   r   r   r   s         r(   addmmr      s    {5  		! 122 	-7KIIbMMQ8
 8
 	- Z !2333q8333)Q$,,r"2"224  ill  3;,, 1!233	-		! 233	-  		! 233	-
 Z !2333q83336D=%%!T%::C3;,,r)   input2c                     t           j        r{t           j        d         dk              st          j        d         dk              r?                     d                              d          z                      d          S  j        j        dk    rt                               d          dk              rt                               d          dk              rt                              d          dk              r j	        j	        k    rt          t          j                   t          j                  z   dk              r\t          d         d	xx         dz  cc<   t          j         fd
t                               d                    D                       S t                               d          dk              rt                              d          dk              rnt          d         d	xx         dz  cc<   t          j                             d                              d          z  dd                              d          S t"          S )Nr   r   ra   rv   rw   ru       rx   decompose_mmc                 .    g | ]}|d d f         z  S r-   r.   )rK   ir   rr   s     r(   rM   zmm.<locals>.<listcomp>.  s*    OOOad1aaa4j61OOOr)   Trz   )r   r|   r   r}   r~   rd   rb   rD   r>   rB   r   rE   numelr   catrf   r   rG   )rr   r   s   ``r(   mmr     sI    ' H
1 233 	H7KLOq 8
 8
 	H NN1%%(8(8(;(;;@@Q@GGG{5   2!!344	Q$TYYq\\A%566	Q %V[[^^q%899	Q v|++T!2!2U[5H5H!HR OPP , Z 000A50009OOOOO51;N;NOOOPPP		! 122 	7KKKOOq 8
 8
 	 Z 000A50009Q&.."4"44!T  ill r)   tensorsrg   c                 "   ddl m dt          j        dt          ffd}t          t          ||                     t                    dk    rd                                         S dt                    cxk     rt          |           k     r#n n t          j
                                      S t                    dk    rt          fdD                       rd         }t          |j                  }dk     rt          |j                  z   n|                    t                                |                              j        |                     dz                                             S t$          S )Nr   )r   r9   r   c                     t          | j                  dk    r | j        d         dk              rdS t          | j                  k     r | j                 dk              rdS dS )Nr   r   FT)rN   r}   )r9   rg   r   s    r(   non_empty_tensorzcat.<locals>.non_empty_tensorD  sq    " qw<<1!5!5agajAo!F!F5QW"6"6qws|q7H"I"I5tr)   r   c              3   ,   K   | ]}|d          u V  dS )r   Nr.   )rK   tfiltered_tensorss     r(   	<genexpr>zcat.<locals>.<genexpr>f  s?       ) )%&a  ) ) ) ) ) )r)   )%torch.fx.experimental.symbolic_shapesr   rE   Tensorboolre   filterrN   clonerc   r   defaultallr}   insertr~   expandflattenrG   )r   rg   r   inpr}   r   r   s    `   @@r(   r   r   =  s   
 KJJJJJEL T       2 F#3W==>>
!!"((***	
S!""	1	1	1	1S\\	1	1	1	1	1x 0#666 q  S ) ) ) )*:) ) ) & &  q!SY&)AggcC	NN""3S#.//000(s}}S!!(%088cAgFFLLNNN r)   c                    |                                  rWt          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)type_promotion_kindrB   rb   r   g        )
is_complexrE   whereisnanrealfloatatan2imagr   r   INT_TO_FLOATscalar_tensormathpirb   )r9   rl   rB   r   rets        r(   angler   s  s    ||~~ 
{Kuu{1616/J/J
 
 	
 "	;H  HAu 
	TWE!(	C	C	CB
+a!eR
%
%C;u{1~~uU||S999r)   r   yc                <   t          j        |           o|                                 }t          j        |          o|                                }|r|st          S |}|||z  }t          j        | j        |j                  }dt           j        dt           j        fd} ||                     | j        j                            } ||                    |j        j                            }	t          j	        ||	z   d                              |          }
|
S )Nr*   r   c                     | j         ^ }}|dz  dk    rt          d          g ||dz  dR }|                     |          }|S )zNReshape tensor from [*initial_dims, last_dim] to *initial_dims, last_dim/2, 2]ra   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        r(   reshape_tensor_complexz#add.<locals>.reshape_tensor_complex  sj     #),x a<1 c  
 6l5HM5155	 ++i00r)   )	start_dim)
rE   	is_tensorr   rG   promote_typesrB   r   r   r   r   )r9   r   r   x_is_complex_tensory_is_complex_tensorzcomplex_typer   
x_reshaped
z_reshapedresults              r(   addr     s     /!,,?/!,,? &9 	AAI&qw88Lu|     " ('qv|(<(<==J''qv|(<(<==J]:
2bAAAFF|TTFMr)   c                 B    |                                  r
J d            | S )NzTODO: implement this)r   rr   s    r(   conj_physicalr     s&      88"8888Kr)   c                     | S r-   r.   r   s    r(   liftr     s    Kr)   )	generatorr   c                    |J t          j        | t           j                  | k                         | j                  S )N)rB   )rE   	rand_likefloat32torB   )rr   r   s     r(   	bernoullir     s<     OD666=AA$*MMMr)   otherc                 `    t          j        t          j        |          || k    z  | |          S r-   rE   r   r   rr   r   s     r(   fminr     )    ;u{5))UT\:D%HHHr)   c                 `    t          j        t          j        |          || k     z  | |          S r-   r   r   s     r(   fmaxr     r   r)   Fr{   c                 h    | j         t          j        k    rt          j        | ||          S t          S Nrz   )rB   rE   r   anyrG   rr   rg   r{   s      r(   amaxr     0     zUZy38888r)   c                 h    | j         t          j        k    rt          j        | ||          S t          S r   )rB   rE   r   r   rG   r   s      r(   aminr     r   r)   startlengthc                 T    t          j        | |||                                          S r-   )rE   narrowr   )rr   rg   r   r   s       r(   narrow_copyr     s&     <c5&1177999r)   c                 \    t                               | |                                          S r-   )rc   r   r   )rr   r>   s     r(   view_copy_defaultr     s$    
 99T4  &&(((r)   rB   c                 P    |                      |                                          S r-   )r   r   )rr   rB   s     r(   view_copy_dtyper     s     
 775>>!!!r)   memory_formatc                 N    |t           j        u s|t          j        |           S |S r-   )rE   preserve_formatutilssuggest_memory_format)r*   r   s     r(   get_like_layoutr      s.    
 ---1F*6222r)   )rB   rb   r   rb   c                    t          j        g |                                 f|p| j        |p| j        d|                    t          | |                    S Nr   r   )rE   randr>   rB   rb   r   r   rr   rB   rb   r   r@   s        r(   r   r     sj     :$))++!tz$  	 
 	bt];;b<<=r)   c                    t          j        g |                                 f|p| j        |p| j        d|                    t          | |                    S r   )rE   randnr>   rB   rb   r   r   r   s        r(   
randn_liker     sj     ;$))++!tz$  	 
 	bt];;b<<=r)   )rB   layoutrb   
pin_memoryrequires_gradr   r  r  r  c                    t          j        g |                                 ||p| j        |p| j        |p| j        |                              t          | |                    S )N)rB   r  rb   r  r   )rE   rF   r>   rB   r  rb   r   r   )rr   r?   rB   r  rb   r  r  r   s           r(   	full_liker  -  sk     :$))++!tz$$#   	bt];;b<<=r)   highc                    t          j        j        d|g |                                 f|p| j        |p| j        d|                    t          | |                    S )Nr   r   r   rc   randintlowr>   rB   rb   r   r   )rr   r  rB   rb   r   r@   s         r(   randint_liker  C  su     <	$))++ !tz$    	bt];;b<<=r)   r
  c                    t          j        j        ||g |                                 f|p| j        |p| j        d|                    t          | |                    S r   r  )rr   r
  r  rB   rb   r   r@   s          r(   randint_like_lowr  W  su     <$))++ !tz$    	bt];;b<<=r)   c                 4    t          j        j        d| |fi |S Nr   )rc   r	  r
  )r  r>   r@   s      r(   r	  r	  l  s#     <AtT44V444r)   biasc                     t           j        j                            |          }t           j        j                            | |||                                d                   S r  )rE   r   
_quantized$wrapped_fbgemm_pack_gemm_matrix_fp16!wrapped_fbgemm_linear_fp16_weightr>   )rV   rW   r  packed_weights       r(   #linear_dynamic_fp16_unpacked_weightr  u  sO     I(MMfUUM9AA}dFKKMM!$4  r)   input_scaleinput_zero_pointweight_scaleweight_zero_point	out_scaleout_zero_pointout_channelc
           	          t           j        j                            ||||          }
t           j        j                            | |||
|||	          S r-   )rE   r   r  _wrapped_linear_prepack#_wrapped_quantized_linear_prepacked)rV   r  r  rW   r  r  r  r  r  r  r  s              r(   wrapped_quantized_linearr!    s\     I(@@/ M 9CC  r)   packedc                     dt           j        dt           j        fd} || dddf                   } || ddd f                   }| dd df                             t           j                  |z  |z   S )Nu8r   c                 &     fddD             \  }}}}t           j        dk    r7||dz  z   |dz  z   |dz  z                       t          j                  d         S |dz  |dz  z   |dz  z   |z                       t          j                  d         S )Nc              3   f   K   | ]+}d |f                              t          j                  V  ,dS .N)r   rE   int32)rK   nr$  s     r(   r   zPq_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.<locals>.<genexpr>  s9      GGQbajmmEK00GGGGGGr)   )r   r   ra      little   r      r'  )sys	byteorderr   rE   r   )r$  r9   r   r   ws   `    r(   bitcast_u8_to_f32z=q_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32  s    GGGG,GGG
1a=H$$aLAG,R8>>u}MMiXX"Wb)Q!V4q8>>u}MMiXXr)   .i)rE   r   r   r   )r"  r1  scalesoffsetss       r(   "q_embedding_bag_byte_unpack_decompr5    s    Yel Yu| Y Y Y Y vc2b5j122FsBCCx 011G#ss(u}--6@@r)   agridinterpolation_modepadding_modealign_cornersc                     | j         t          j         d          k    o%|dk    o|                     t          j                   }t	          | |||||          }|S )Nrw   r   r   )r7  r8  r9  r:  _expand_grid)rb   rE   is_contiguouscontiguous_formatdecomp_grid_sampler_2d)r6  r7  r8  r9  r:  r<  outputs          r(   grid_sampler_2drA    sv     	
EL''' 	C!#	COO%*AOBBL $	-!#!  F Mr)   left_tensorsright_tensorsscalarc                     t           j                            | t           j                            ||          |          S Nr   )rc   _foreach_addr   _foreach_mulrr   rB  rC  rD  s       r(   _foreach_addcmul_scalarrJ    >     !!d$$\=AA "   r)   c                     t           j                            | t           j                            ||          |          S rF  )rc   rG  r   _foreach_divrI  s       r(   _foreach_addcdiv_scalarrN    rK  r)   start_tensorsend_tensorsc           	          t           j                            | t           j                            t           j                            ||           |                    S r-   )rc   rG  r   rH  Scalar_foreach_sub)rO  rP  rW   s      r(   _foreach_lerp_scalarrT    sP     !!  "";>>	
 	
  r)   running_meanrunning_vartrainingexponential_average_factorepsilonc           
          t                               | |||||||          \  }}	}
|r||	|
fS ||                    d          |                    d          fS )Nr   )rc   native_batch_norm	new_zeros)rV   rW   r  rU  rV  rW  rX  rY  r6  bcs              r(   miopen_batch_normr`    s|     $$"	 	GAq!  1ay	 r)   c                  "    i t           t          S r-   )r"   r   r.   r)   r(   fast_random_decompsrb    s    5n5 455r)   c                  D    t           j        rt          S t                      S )z"decomps can change based on config)r   fallback_randomr"   rb  r.   r)   r(   select_decomp_tablere    s        r)   masksourcec                    ddl m}m}  || j        |j                  rt
                              | |g          \  } }|                    d                              d          dz
  }d | ||fD             \  }}}t
          	                    |||gd          }	t          j        ||	|                              | j                  S t          S )Nr   )BackendFeaturehas_backend_featureru   r   c              3   >   K   | ]}|                                 V  d S r-   )r   )rK   r9   s     r(   r   z!masked_scatter.<locals>.<genexpr>*  s*      ,W,WQQYY[[,W,W,W,W,W,Wr)   )codegen.commonri  rj  rb   MASKED_SCATTER_WITH_INDEXrc   broadcast_tensorsreshapecumsum_unsafe_masked_indexrE   r   r   r}   rG   )
rr   rf  rg  ri  rj  
source_idx	self_flat	mask_flatsource_flatr   s
             r(   masked_scatterrv    s     DCCCCCCC4;(PQQ J ++T4L99
d\\"%%,,Q//!3
,W,W4vBV,W,W,W)	9k**;	J<QRSS{9fi88==djIIIr)   	quant_min	quant_maxepsc                    t          j        |           \  }}||z
  t          ||z
            z  }t          j        |t          j        |g                    }|t          j        ||z                                t           j                  z
  }t          j        |||          }|                    t           j	                  |                    t           j
                  fS r-   )rE   aminmaxr   r5   r   ro   r   intr=   float64int64)	rV   rw  rx  ry  rB   min_valmax_valscale
zero_points	            r(   choose_qparams_tensorr  0  s     }U++GWw%	I(=">">>EIeU\3%0011EU[599<<UYGGGJZI>>J88EM""JMM%+$>$>>>r)   index
accumulatec                     |                                  }t          j        ||g|                    |j                  |          }|                    | j                  S r-   )r   rE   	index_putro  r}   )rr   r  rg  r  	flatteneds        r(   putr  @  sS     IE7FNN5;77 I TZ(((r)   c                 h    t                               | |||          }|                     |          S )N)r  )rc   r  copy_)rr   r  rg  r  r   s        r(   put_r  N  s-     ((4:(
>
>C::c??r)   r@  input_dtypec                     | |z  }t          j        ||d          }t          j        | ||          }| j        |k    r|                    |          }|                                S )NTrz   )rE   rd   r   fmarB   r   
contiguous)rU   r@  rg   r  new_grad_outputsum_new_grad
grad_inputs          r(   _softmax_backward_datar  Y  sm     "F*O9_#tDDDL#VG\?KKJ K'']];//
  """r)   Tinclude_selfsrcreduction_typer  c                   |dk    rt          | j                  s| j        j        p| j        j        }t	          j        |          }|r,| }t	          j        |                               |||          }	nZ|                     ||d          }t	          j        |                               |||          }	|		                    |	dk     d          }	|                    |||          }|r||	z  n||	z  S t          t          j        j        || j        |j        |j        j        d          rt           S | j        |dz   d                                          | j        d |                                         z  }
|                                g| j        |dz   d          | j        d |         R }g t'          | j        |z
  | j                  dt'          d| j        |z
            R }|                    t          j                                      |
                              |                              |          }|                     |||||          S )Nmeanr   r   Tr  )r   rB   is_floating_pointr   rE   	ones_like	index_add
index_fill
zeros_likemasked_fillr   rc   scatter_reduce_tworb   rD   rG   r}   r   rf   ndimr   r~  repeat_interleavero  rQ   scatter_reduce)rr   rg   r  r  r  r  true_divisiononesr   countsrepeatsindex_shaperR   scatter_indexs                 r(   index_reducer  o  sE    (T
) ) 
4M
8Ms## 	7C_T**44S%FFFF//#ua00C%d++55c5$GGF''
A66FmmC,,,?sV||#-? 
	
   jq#))++dj#.>.D.D.F.FFG;;==L4:cAgii#8L4:dsd;KLLKNU49s?DI..NNE!TY_4M4MNND		7	#	#					  !    r)   kernel_size	ceil_modec                 4   |dk    rddg}|dk    rddg}|s|}t          |d          }t          |d          }t          |d          }t          |d          }|d         |d         z  }t          j        j                            ||          s'|t          j        t          j                  j        k    rt          S t          
                    | |||||          \  }}t                              ||d         |                     d          ||          }	||	fS )Nr   r   ra   ru   )r   rE   	_inductorlowering'should_fallback_max_pool2d_with_indicesiinfoint8r5   rG   prims#_low_memory_max_pool2d_with_offsets)_low_memory_max_pool2d_offsets_to_indicesr>   )
r9   r  rY   rZ   r[   r  window_sizevalsr4  indicess
             r(   max_pool2d_with_indicesr    s4    1}}q6!||a& {A..KHa((H7A&&G&!$$Fa.;q>1K 	 HH	
 	
 UZ00444==	 MD' ==A	r

 G =r)   )NNr[  )r   r   )NFr-   )r   r   F)r   )F)Nr   r   F)	functoolsloggingr   r.  typingr   r   r   r   r   r   r	   rE   torch._decomp_decompr%   torch._prims_common_prims_commonr   $torch.ao.quantization.fx._decomposedr
   r   r   torch._decomp.decompositionsr   r?  r   $torch._decomp.decompositions_for_rngr   torch._dynamo.utilsr   !torch._higher_order_ops.out_dtyper   torch._inductor.utilsr   r   r   r   r   r   r    r   r   r   r   r   	getLogger__name__r#   r   rc   r  	quantizedr  quantized_decomposed_adaptive_avg_pool2d_backwardaddmvarangebitwise_and_bitwise_or_
clamp_min_dist
empty_likeflipgeluhardtanhindex_selectlcm
leaky_relu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native_layer_normnll_loss2d_backward_softmaxsin_sqrt__to_copytril_indicestriu_indicesupsample_bilinear2dvecr  r!  inductor_decompositionsr"   _unsafe_indexrq  #_unsafe_masked_index_put_accumulate+_scaled_dot_product_flash_attention_for_cpur   r  r<   r;   gluselect_scatterslice_scattersplitr   r   rd   unbinddecomps_to_exclude_opsOperatorBaseOpOverloadPacketr&   _assert_asyncr+   strr0   _functional_assert_asyncr3   r8   SymInttypesNumberr=   rF   r|  rT   rh   r   ro   rm   rq   r   r   r   r   r   r   r   r   detach_r   	Generatorr   r   r   r   r   	view_copyr   rB   r   r   r   r   rb   r   r  r   r   r  r  	low_dtyper  r	  embedding_bag_byte_unpackr5  rA  _foreach_addcmulrR  rJ  _foreach_addcdivrN  _foreach_lerprT  r`  py_impl_CDispatchKeyAutograd	lru_cacherb  re  rv  choose_qparamsr*   r  r  r  r  r  r.   r)   r(   <module>r     s         



  D D D D D D D D D D D D D D D D D D        # # # # # # + + + +         
        F E E E E E ( ( ( ( ( ( 7 7 7 7 7 7 . . . . . .         
 X W W W W W W W $ $ $ $ $ $ $ $          g!!y~	I	Y!
y5 ,,'*'
' 	' 		'
 	' 	' 		' 	' 		' 		' 	' 	' 	' 	' 	'  	!'" 	-#'$ 	%%'& 	0''( 	1)'* 	$+', 	/-'. 	"/'0 	 1'2 	3'4 	5'6 	7'8 	 9': 	;'< 		='> 	
?'@ 	A'B 	C'D 	E'F 	G'H 	 $I'J 	5K'L 	+M') ) T K,,..J2IJ
 	,4<NNHJLHK "  n&8 9 9 9>	eEJ+UZ-HHI	J>c3h> > > > +/011EL s t    21
 6:;<<u| # $    =< :BCDD )-(,	  L 
%+$	% 
%+$	%	
 
   ED %% )-(,	 	|		%+$	%	 
%+$	%	 \		 	 	  &%	 $$	
uS%,&'
(	"	 	 \		 	 	 %$	  ,4566S
uS%,&'
(S#YS S \	S S S 76S 2344..<. L. S		.
 #tCy.!. 3S	>". CcN#. . I. . d. 5<u|34. . . 54.@ ,-..G G G GU\ G G G /.G
 
##
,L \    $#* %%
  ! ! 
,
, , +
	
 ; \    &%6 	""
,L \    #"F )*++ 2 2%,2	2 \2 2 2 ,+2j %%:U\ :el : : : &%:& 
##
 +/	& & &|&|& EK&'	&
 \& & & $#&R +,--     .-
 DL122u|     32 /011 ,0N N N
,N (N \	N N N 21N EJ/00Iu| IEL IU\ I I I 10I EJ/00Iu| IEL IU\ I I I 10I 	""  
,	#  \	   #" 	""  
,	#  \	   #" )*++:
,:	: : 	:
 \: : : ,+: /011)
,)
uS%,&'
() \) ) ) 21) -.//"
,";" \" " " 0/" 48 LE/0     '' $(%)37= = =
,= EK = U\"	=
 E/0= = \= = = ('=  (( $(%)37= = =
,= EK = U\"	=
 E/0= = \= = = )(=  ''
 $(%)%)).)>= = =
,=c5j!= EK 	=
 U\"= U\"= = = &= \= = = ('=* )122
 $(%)37= = =
,=
= EK 	=
 U\"= E/0= = \= = = 32=& )344 $(%)37= = =
,=	= =
 EK = U\"= E/0= = \= = = 54=( ,--5
5
uS%,&'
(5 5 \	5 5 5 .-5 	EMNN<L , \	   ON 
;CDD< l L	
 , | , | L  \   ED4 	+EFF
Au| 
A 
A 
A 
A GF
A -.//   |
,  	
  \    0/: -455
 	 
u|
u|$ % 	
 
%,   65 -455
 	 
u|
u|$ % 	
 
%,   65 *122
%
el#
 K
 
%,	
 
 
 32
 ''(<(EFF.//<L /%,
' /%,/	
 .  !&  5<u|34   0/ GF< T6T#xS'9"9: 6 6 6 6!T#xS'9"9: ! ! ! ! +,,
,
, L \	   -,$ ,;BCC?<?? ? 
	?
 ;? 5<%&? ? ? DC? !!
 	
) 
)
,
)<
) L
) 	
)
 \
) 
) 
) "!
) 	""
 	 
,< L 	
 \   #" 3;<<##L# 
# 	#
 \# # #  =<#( )** 1 1 1
,1	1 <1 
	1
 1 1 \1 1 1 +*1h 455 /3%&&'/ /|/c/ U3S	>*+/ 3S	>"	/
 CcN#/ / 5<%&/ / / 65/ / /r)   