
    PhL                          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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mZ  ej:                  e      Zej@                  jB                  Z!ej@                  jD                  Z"ej@                  jF                  Z# ee!jH                  e!jJ                  e!jL                  e!jN                  e!jP                  e!jR                  e!jT                  e!jV                  e!jX                  e!jZ                  e!j\                  e!j^                  e!j`                  e!jb                  e!jd                  e!jf                  e!jh                  e!jj                  e!jl                  e!jn                  e!jp                  e!jr                  e!jt                  e!jv                  e!jx                  ee!jz                  e!j|                  e!j~                  e!j                  j                  g      ZBi  e       eBZCe!j                  e!j                  j                  e!j                  e!j                  e!j                  e!j                  j                  e!j                  e!j                  e!j                  g	ZO eeCeO       d
 ZP ePe!j                  j                  g      d        ZS ePe!j                  j                  g      d        ZU ePe!j                  j                  g      dddd       ZV ePe!j                  g      edUd              ZW ePe!j                  g      d        ZX ePe!j                  j                  g      d        ZY ePe!j                  g      d        ZZ ePe!j                  g      d        Z[ ePe!j                  j                  g      dVd       Z^ ePe!j                  g      ed               Z_ ePe!j                  g      edWd              Z` ePe!j                  g      ed               Za ePe!j                  j                  g      dVd       Zb ePe!j                  g      d        Zc ePe!j                  g      ddd       Zd ePe!j                  g      d        Ze ePe!j                  e!j                  g      d        Zf ePe!j                  j                  g      ddd       Zh ePe!j                  e"j                  g      d         Zi ePe!j                  e"j                  g      d!        Zj ePe!j                        dXd#       Zk ePe!j                        dXd$       Zl ePe!j                  g      d%        Zm ePe!j                  g      d"d&d'       Zn ePe!j                  j                  g      d(        Zp ePe!j                  j                  g      d)        Zrd*ej                  d+eej                     d,ej                  fd-Zt ePe!j                        dddd.d/       Zu ePe!j                        dddd.d0       Zv ePe!j                        dddd"d"ej                  d1d2       Zw ePe!j                  j                        dddd.d3       Zy ePe!j                  j                        dddd.d4       Z{ ePe!j                  j                        d5        Z| ePe#j                  j                        d6ej                  d7e~d8ed9ed:ed;ej                  d,ej                  fd<       Z ePe#j                  j                        d6ej                  d7e~d8ed9ed:ed;ej                  d,ej                  fd=       Z ePe#j                  j                        d6ej                  d7ej                  d8ej                  d9ed:ed;ej                  d,ej                  fd>       Z ePe#j                  j                        d6ej                  d7ej                  d8ej                  d9ed:ed;ej                  d,ej                  fd?       Z ePej@                  j                  j                        d@        Z ePe!j                  g      e	 	 	 dYdAej                  dBej                  dCedDedEed,ej                  fdF              Z ePe!j                  j                        dZdG       Z ePe!j                  j                        dZdH       Z ePe!j                   j                        dI        Ze!j$                  j                  j'                  ej(                  j*                  j,                         ePe!j$                        d6ej                  dJej                  dKej
                  ej                     dLej
                  ej                     dMej
                  ej                     dNedOe~dPe~fdQ              Z e j.                  d      dR        ZdS Z ePe!j4                        dT        Zy)[    N)Optional)core_aten_decompositionsget_decompositionsremove_decompositions)_grid_sampler_2dpw_cast_for_opmath)extra_random_decomps)	out_dtype)type_to_dtype   )configinductor_primsc                     t        |       r| gn| D ]!  }|t        v st        j                  d|        # t	        j
                  | t              S )Nzduplicate decomp: %s)callabledecompositionslogwarningdecompregister_decomposition)opsops     hC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_inductor/decomposition.pyr   r   U   sE    }se#-KK.4 . ((n==    c                      y N tensormsgs     r   assert_async_msg_decompr    ^       
r   c                      y r   r   r   s     r   "functional_assert_async_msg_decompr#   d   r!   r   )minmaxc                     y r   r   )symbolr$   r%   s      r   sym_constrain_range_for_sizer(   i   r!   r   c                 R    || j                  |      } || j                  |      } | S r   )	clamp_min	clamp_max)xr$   r%   s      r   clampr-   n   s/     KK
KKHr   c                     |j                  d      }|.t        t        |            |d<   t        j                  | |fi |S t
        S )Ndtype)getr   typeatenfullNotImplemented)size
fill_valuekwargsr/   s       r   r3   r3   x   sD    JJwE}'Z(89wyyz4V44r   c                     dgt        |       z  }t        |      D ]
  \  }}|||<    t        j                  |D cg c]  }| |   	 c}fi |j	                  |      S c c}w Nr   )len	enumeratetorchemptypermute)r5   physical_layoutr7   permpls         r   empty_permutedrC      sb    3T?D/*1Q +;;9AQ9DVDLLTRR9s   Ac                 "   |
d   r| j                   j                  dk7  rt        S t        j	                  | dgt        t        d| j                                     z         }t        j                  | |||||||||	|
d   |
d   dg      \  }}}|||fS )N   cudar   r   F)	devicer1   r4   r2   sumlistrangedimconvolution_backward)grad_outputinputweight
bias_sizesstridepaddingdilation
transposedoutput_paddinggroupsoutput_mask	grad_biasgrad_inpgrad_weight_s                  r   rL   rL      s     q>[//44>qcDq+//:K1L,M&MNI#88	QQ/ Hk1 k9--r   c                 ^    t        j                  |       dt        j                  d      z  z  S )N      ?g       @)r<   r   mathr,   s    r   log2r`      s"    99Q<3#.//r   c                 H    d|z  }t         j                  | |z        d|z  z  S )Ng      $@r]   )r2   round)r,   decimalsten_pow_decimalss      r   	round_decre      s,    X~::a**+s5E/EFFr   c                    t         j                  rG| j                  d   dk(  r5| j                  d      |j                  d      z  j	                  d      }|S | j
                  j                  dk(  rp| j                  d      dk(  r\|j                  d      dk(  rHt        j                  | j                  d      |j                  d      z  dd      j                  d      S t        S )Nr   rE   rK   cpuTrK   keepdim)r   coordinate_descent_tuningshape	unsqueezerH   rG   r1   r5   r<   squeezer4   )selfbatch2outs      r   bmmrs      s     ''::a=A>>"%(8(8(;;@@Q@GCJ{{5 99Q<1RA!599Q&.."44!Til r   c                    | j                   j                  dk(  r|j                  d      dk(  rg|j                  d      dk(  rSt        j                  |j                  d      |j                  d      z  dd      j                  d      }||z  || z  z   S |j                  d      dk(  rS|j                  d      dk  r?|j                  d      dk  r+|j                  |z  j	                  dd      }||z  || z  z   S t        S )Nri   r   r   rg   Trj      )	rG   r1   r5   r<   rH   ro   rn   Tr4   )rp   mat1mat2betaalpharr   s         r   addmmr{      s     {{5 99Q<12!!3))Q$,,r"224il  3;,,99Q<11!3		!8J66D=%%!T%:C3;,,r   c           	         t         j                  rW| j                  d   dk(  s|j                  d   dk(  r3| j                  d      |j                  d      z  j	                  d      S | j
                  j                  dk(  r8| j                  d      dk(  r| j                  d      dkD  r|j                  d      dk(  r| j                  |j                  k(  rst        j                  |       t        j                  |      z   dk  rEt        j                  t        | j                  d            D cg c]  }| |d d f   |z   c}      S | j                  d      dk(  r\|j                  d      dk(  rHt        j                  | j                  d      |j                  d      z  dd	      j                  d      S t        S c c}w )
Nr   r   rE   rh   ri   rg       Trj   )r   rl   rm   rn   rH   rG   r1   r5   r/   r<   numelcatrJ   ro   r4   )rp   input2is      r   mmr      sh   
 ''::a=AaA!5NN1%(8(8(;;@@Q@GG{{5 IIbMQ		!q A!#v||+++d#ekk&&99b@9951;NO;Nad1a4j61;NOPP99Q<1RA!599Q&.."44!Til  Ps   0G c                 
   d }t        t        ||             }t        |      dk(  r|d   j                         S dt        |      cxk  rt        |       k  r(n t        S t        j
                  j                  ||      S t        S )Nc                 Z    t        | j                        dkD  xs | j                  d   dkD  S )Nr   r   )r:   rm   r_   s    r   non_empty_tensorzcat.<locals>.non_empty_tensor   s(     177|a11771:>1r   r   r   )rI   filterr:   cloner2   r   defaultr4   )tensorsrK   r   filtered_tensorss       r   r   r      s}    2
 F#3W=>
!"((**	
S!"	1S\	1  xx 0#66r   c                    | j                         ret        j                  t        j                  | j                        t        d      t        j                  | j                  | j                              S t        j                  | dk  t        j                  d      }t        j                  t        j                  |       t        d      d      }||z   S )Nnanr   g        )

is_complexr<   whereisnanrealfloatatan2imagr^   pi)r,   retr   s      r   angler     s    ||~{{KKuu{{166166/J
 	
 kk!a%#.kk%++a.%,<Syr   rz   c                   t        j                  |       xr | j                         }t        j                  |      xr |j                         }|r|st        S |}|||z  }t        j                  | j
                  |j
                        }| j                  | j                  j
                        |j                  |j                  j
                        z   j                  |      S r   )r<   	is_tensorr   r4   promote_typesr/   viewr   )r,   yrz   x_is_complex_tensory_is_complex_tensorzcomplex_types          r   addr     s    //!,?//!,?&9	AAI&&qww8LFF166<< 166!&&,,#77==lKKr   c                 4    | j                         rJ d       | S )NzTODO: implement this)r   rp   s    r   conj_physicalr     s     8"88 Kr   c                     | S r   r   r   s    r   liftr   $  s    Kr   )	generatorc                Z    |J t        j                  | t         j                        | k  S )N)r/   )r<   	rand_likefloat32)rp   r   s     r   	bernoullir   )  s(    ??4u}}5<<r   c                 b    t        j                  t        j                  |      || kD  z  | |      S r   r<   r   r   rp   others     r   fminr   /  '    ;;u{{5)UT\:D%HHr   c                 b    t        j                  t        j                  |      || k  z  | |      S r   r   r   s     r   fmaxr   4  r   r   Fc                 x    | j                   t        j                  k(  rt        j                  | ||      S t        S Nrj   )r/   r<   boolanyr4   rp   rK   rk   s      r   amaxr   9  +    zzUZZyy388r   c                 x    | j                   t        j                  k(  rt        j                  | ||      S t        S r   )r/   r<   r   allr4   r   s      r   aminr   @  r   r   c                 N    t        j                  | |||      j                         S r   )r<   narrowr   )rp   rK   startlengths       r   narrow_copyr   G  s     <<c5&17799r   implicitc                N    t         j                  | ||      j                         S )Nr   )r2   expandr   )rp   r5   r   s      r   expand_copyr   L  s     ;;tTH;5;;==r   c                 J    t         j                  | |      j                         S r   )r2   r   r   )rp   r5   s     r   view_copy_defaultr   Q  s    99T4 &&((r   c                 @    | j                  |      j                         S r   )tor   )rp   r/   s     r   view_copy_dtyper   V  s    775>!!r   r   memory_formatreturnc                 X    |t         j                  u s|t        j                  |       S |S r   )r<   preserve_formatutilssuggest_memory_format)r   r   s     r   get_like_layoutr   [  s.     ---1F**622r   )r/   rG   r   c                    t        j                  g | j                         f|xs | j                  |xs | j                  d|j                  t        | |            S Nr/   rG   r   )r<   randr5   r/   rG   r   r   rp   r/   rG   r   r7   s        r   r   r   e  s\    ::$))+!tzz$ 	
 	bt];b<=r   c                    t        j                  g | j                         f|xs | j                  |xs | j                  d|j                  t        | |            S r   )r<   randnr5   r/   rG   r   r   r   s        r   
randn_liker   o  s\    ;;$))+!tzz$ 	
 	bt];b<=r   )r/   layoutrG   
pin_memoryrequires_gradr   c                    t        j                  g | j                         ||xs | j                  |xs | j                  |xs | j
                  |      j                  t        | |            S )N)r/   r   rG   r   r   )r<   r3   r5   r/   r   rG   r   r   )rp   r6   r/   r   rG   r   r   r   s           r   	full_liker   y  sa     ::$))+!tzz$$# 	bt];b<=r   c                    t        j                  j                  d|g | j                         f|xs | j                  |xs | j
                  d|j                  t        | |            S )Nr   r   r   r2   randintlowr5   r/   rG   r   r   )rp   highr/   rG   r   r7   s         r   randint_liker     sj    <<	$))+ !tzz$  	bt];b<=r   c                    t        j                  j                  ||g | j                         f|xs | j                  |xs | j
                  d|j                  t        | |            S r   r   )rp   r   r   r/   rG   r   r7   s          r   randint_like_lowr     sl     <<$))+ !tzz$  	bt];b<=r   c                 F    t        j                  j                  d| |fi |S r9   )r2   r   r   )r   r5   r7   s      r   r   r     s     <<AtT4V44r   rN   scale
zero_point	quant_min	quant_maxr/   c                    | j                   t        j                  k(  r| j                  t        j                        } d|z  }t        j
                  t        j                  | |z        |z   ||      j                  |      S Nr]   r/   r<   bfloat16r   r   r-   rb   rN   r   r   r   r   r/   	inv_scales          r   'quantize_per_tensor_default_decomp_implr     c     {{enn$'eI;;EI%&3Y	bir   c                 L    | j                  t        j                        |z
  |z  S r   r   r<   r   rN   r   r   r   r   r/   s         r   )dequantize_per_tensor_default_decomp_implr     !     HHU]]#j0E99r   c                    | j                   t        j                  k(  r| j                  t        j                        } d|z  }t        j
                  t        j                  | |z        |z   ||      j                  |      S r   r   r   s          r   &quantize_per_tensor_tensor_decomp_implr     r   r   c                 L    | j                  t        j                        |z
  |z  S r   r   r   s         r   (dequantize_per_tensor_tensor_decomp_implr     r   r   c                     d } || dddf         } || ddd f         }| dd df   j                  t        j                        |z  |z   S )Nc                      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).0nu8s     r   	<genexpr>zPq_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.<locals>.<genexpr>  s'     G,QbajmmEKK0,s   .1)r   r   rE      little   ru      r  )sys	byteorderr   r<   r   )r  r,   r   r   ws   `    r   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Xr   .ir   )packedr  scalesoffsetss       r   "q_embedding_bag_byte_unpack_decompr    sb    Y vc2b5j12FsBCx 01G#ss(u}}-6@@r   agridinterpolation_modepadding_modealign_cornersc                     | j                   t        j                   d      k(  xr' |dk(  xr  | j                  t        j                         }t	        | |||||      }|S )Nri   r   r   )r  r  r  r  _expand_grid)rG   r<   is_contiguouscontiguous_formatdecomp_grid_sampler_2d)r  r  r  r  r  r  outputs          r   grid_sampler_2dr!    sm     	
ELL'' 	C!#	COO%*A*AOBL $	-!#!F Mr   c                     t         j                  j                  | t         j                  j                  ||      |      S Nr   )r2   _foreach_addList_foreach_mulrp   left_tensorsright_tensorsscalars       r   _foreach_addcmul_scalarr+    :    !!d$$\=A "  r   c                     t         j                  j                  | t         j                  j                  ||      |      S r#  )r2   r$  r%  _foreach_divr'  s       r   _foreach_addcdiv_scalarr/     r,  r   c           	          t         j                  j                  | t         j                  j	                  t         j
                  j                  ||       |            S r   )r2   r$  r%  r&  Scalar_foreach_sub)start_tensorsend_tensorsrO   s      r   _foreach_lerp_scalarr5  '  sJ    !!  "";>	
 r   rO   biasrunning_meanrunning_vartrainingexponential_average_factorepsilonc           
          t         j                  | |||||||      \  }}	}
|r||	|
fS ||j                  d      |j                  d      fS )Nr   )r2   native_batch_norm	new_zeros)rN   rO   r6  r7  r8  r9  r:  r;  r  bcs              r   miopen_batch_normrB  1  sl     $$"	GAq! 1ay	 r   c                      i t         t        S r   )r   r	   r   r   r   fast_random_decompsrD  Q  s    5n5 455r   c                  B    t         j                  rt        S t               S )z"decomps can change based on config)r   fallback_randomr   rD  r   r   r   select_decomp_tablerG  V  s      r   c                     | j                   j                  dk(  rUt        j                  | |g      \  } }|j	                  d      j                  d      dz
  }t        j                  | |||      S t        S )NrF   rg   r   r   )	rG   r1   r2   broadcast_tensorsreshapecumsumr   masked_scatter_with_indexr4   )rp   masksource
source_idxs       r   masked_scatterrP  ]  sj    {{6! ++T4L9
d\\"%,,Q/!3
77dJPVWWr   )NNr=  )r   r   )NF)r   r   F)r   )	functoolsloggingr^   r  typingr   r<   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._higher_order_ops.out_dtyper
   r    r   r   	getLogger__name__r   r   r2   primsquantized_decomposed_adaptive_avg_pool2d_backward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_trainingr>  native_group_normnative_layer_norm_softmaxsin_sqrt__to_copytril_indicestriu_indicesupsample_bilinear2dvecinductor_decompositionsr   _unsafe_index#_scaled_dot_product_flash_attentionr   r+   r*   glusplitTensorro   rH   unbinddecomps_to_excluder   _assert_asyncr   r    _functional_assert_asyncr#   r(   r-   r3   rC   rL   r`   rb   rc   re   rs   r{   r   r   r   r   r   r   detach_r   r   r   r   r   r   r   	view_copyr   r/   r   r   r   r   r   r   r   r   	low_dtyper   r   quantize_per_tensorr   intr   dequantize_per_tensorr   r   r   r   	quantizedembedding_bag_byte_unpackr  r!  r   _foreach_addcmulr1  r+  _foreach_addcdivr/  _foreach_lerpr5  rB  py_impl_CDispatchKeyAutograd	lru_cacherD  rG  rP  r   r   r   <module>r     s
      
     # + 
 F 7 - $g!yy~~		yy55 ,**						--%%0011		

  $$=! D K,.J2IJ
 	,,44NNNNHHJJLLHHKK
  n&8 9> ++//01 2
 66::;< = ::BBCD04$  E %  & $ % ,,4456S 7S 2234. 5.@ $0 %0 ,,-.G /G
 
#
  $
 %
  &
 	"  #, ))*+ ," % & 
# 	L $	L ++,- .
 DLL12 3 //01!% = 2=
 EJJ/0I 1I EJJ/0I 1I 		" # 		" # ))*+: ,: ))*+(- > ,> //01) 2) --./" 0"LL)1%2E2E)F
 '!$d = (= ("4t = )= '
 ''= (=* ))112&*4t = 3= ))334"4t
= 5
= ,,-5 .5 ,@@HHI<<  	
  ;; \\ J$ ,BBJJK:<<:: : 	:
 : ;;: \\: L: ,@@GGH<<<<  	
  ;; \\ I  ,BBIIJ:<<:<<: : 	:
 : ;;: \\: K: 		++EEF
A G
A --./  ||
,,  	
  \\  0: --445 6 --445 6 **112 3 ''(<(<(E(EF../<<LL //%,,
' //%,,/	
 .  !&  0 G< T6 6! ++, -r   