o
    eit                     @   s  U d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZ d dlmZ d dlZd dlmZ d dlmZ d dlZd dlmZmZmZ d dlmZmZmZm Z m!Z! d dl"m#Z# d dl$m%Z% d d	l&m'Z' d d
l(m)Z) d dl*m+Z+ d dlm,Z,m-Z-m.Z. d dl/m0Z1 d dl2m3Z3m4Z4 d dl5m6Z6 ddl7m8Z8m9Z9 ddlm:Z:m;Z;m<Z< edZ=edZ>eej?j@ej?jAf ZBe
eCd< eDeEZFejGjHZHejGjIZIejGjJZJejGjKZKejGjLZLeg eHjMeHjNeHjOeHjPeHjQeHjReHjSeHjTeHjUeHjVeHjWeHjXeHjYeHjZeHj[eHj\eHj]eHj^eHj_eHj`eHjaeHjbeHjceHjdeHjeeHjfeHjgeHj0eHjheHjieHjjeHjkeHjleHjme)eHjneHjoeHjpeHjqjreHjsjteJjueKjvZwi e ewZxeHjyeHjzeHj{eHj|j}eHj~eHjeHjeHjeHj0eHjeHjeHjeHjeHjeHjjeHjeHjeHjeHjgZeeej?jej?jAf  eCd< eexe deeBeeB f deee>e=f gee>e=f f fddZeeHjgdejdejderderdedejfd d!ZeeHj0d"ejd#ejd$e	ej d%e	ej d&edeejejejf fd'd(ZeeHjj}gddd)d*ejd+e	ejj d,e	ejj ddfd-d.ZeeHjge!		dd/ejd+e	ejj d,e	ejj dejfd0d1ZeeHjge d/ejdejfd2d3ZeeHjgd4eeerejf  d5ejjd6edejfd7d8ZeeHjgdd9d/ejd:erd;ejd<ejd=ejjdejfd>d?ZeeHjj}gd4eeerejf  d@eer d6edejfdAdBZeeHjgdejd"ejd$ejdCeer dDeereer f dEeereer f dFeereer f dGedHeer dIerdJee deejejejf fdKdLZeeHjjgdd/ejdMerdejfdNdOZeeHjge 	ddPejdQejdRe	ej dejfdSdTZeeHjge 			ddPejdUejdVejdRe	ej dWejjd=ejjdejfdXdYZeeHjge 	ddPejdZejdRe	ej dejfd[d\ZeeHjj}g	 dd]eej d:erdejfd^d_ZeeHjgd/ejdejfd`daZeeHjgdd9d/ejdbejd=e	ejj dejfdcddZeeHjgdPejdejfdedfZeeHjeHjgdPejdejfdgdhZeeHjeIjgdPejdiejdejfdjdkZeeHjeIjgdPejdiejdejfdldmZeeHj		nddPejd:e	er doedejfdpdqZeeHj		nddPejd:e	er doedejfdrdsZeeHjgdPejd:erdterduerdejf
dvdwZeeHjj}gdPejd4eeerejf  dejfdxdyZeeHjjgdPejdzejdejfd{d|ZdPejdeejejf fd}d~ZeeHjddddndnejddPejd5eeref dze	ej de	ej de	ej dededejdejfddZddejddedejf dPejdze	ej de	ej dejd6edejfddZeeHjdPejd6edejfddZeeHjdPejd6edejfddZeeHjj}dPejderd6edejfddZeeHjjdPejderderd6edejf
ddZeeHjj}derd4eeerejf  d6edejfddZeeJjuj}	dd"ejd$ejd%e	ej dejfddZueeKjvj}d"ejdejdejd$ejdejdejd%ejdejdejderdejfddZveejGjJjdejdejfddZeeHjge 	 	 	nddejdejderderdedejfddZeeHjjŃ	d dPeej deej deej dedeej f
ddZeeHjjŃ	d dPeej deej deej dedeej f
ddZeeHjjŃdeej deej d$ejjdeej fddZeeHjj˃deej deej deejj deej fddZeHjj}ejjjѡeeHj̓d"ejd$ejd%ej	ej dej	ej dej	ej dedededeejejejf fddZe jdeeedef f fddÄZdeeedef f fddńZeeHjփdPejdejdejdejfddɄZeeLjj؃d"ejderderd&edzejdeejejf fdd̈́ZeeHjڃ	nd	dPejd;ejdejdedejf
ddЄZeeHjۃ	nd	dPejd;ejdejdedejf
dd҄ZeeHj~j}e dejdejd:erdejdejf
ddքZ~eeHj܃dd؜dPejd:erd;ejdejdededejfdd݄Zd/ejdeer dDe	eereer f  dEeereer f dFeereer f ded:erdeejejf fddZeeHj߃		 		nd
d/ejdeer dDe	eereer f  dEeereer f dFeereer f dedeejejf fddZeeHj		 		nd
d/ejdeer dDe	eereer f  dEeereer f dFeereer f dedeejejf fddZeeHjd/ejdeer deejejf fddZeeHjjŃdndnddddejdPejjdedede	e de	ej dejfddZeeHjjŃdndnddPejjdejdededejf
ddZeeHj			n	ddPejdejdededede	ej deejejf fddZeeHjj	ddejde	er dejfddZ		 		 	dd"ejd$ejd%e	ej dDeer dEeer dFeer dIerdejfddZdS (      N)Callable)AnyOptional	TypeAliasTypeVarUnion)	ParamSpec)core_aten_decompositionsget_decompositionsremove_decompositions)_grid_sampler_2d
_index_addembedding_dense_backwardpw_cast_for_opmath"pw_cast_for_opmath_non_tensor_args)extra_random_decomps)counters)	is_fbcode)	out_dtype)pad_listlike)elementwise_dtypesELEMENTWISE_TYPE_PROMOTION_KINDtype_to_dtype)native_layer_norm)guard_or_falsestatically_known_true)
OrderedSet   )configinductor_prims)is_gpu,needs_fallback_due_to_atomic_add_limitationsuse_scatter_fallback_T_P_GenericOperatordecomps_to_excludeopsreturnc                 C   s:   t | tr| n| gD ]}|tv rtd|  q
t| tS )Nzduplicate decomp: %s)
isinstancelistdecompositionslogwarningdecompregister_decomposition)r'   op r1   g/var/www/addictedbytheproject.nl/epg/venv/lib/python3.10/site-packages/torch/_inductor/decomposition.pyr/      s
   r/   grad_outputindicesnum_weightspadding_idxscale_grad_by_freqc                 C      | j rtS t| ||||S N)is_xpuNotImplementeddecomp_embedding_dense_backward)r3   r4   r5   r6   r7   r1   r1   r2   _embedding_dense_backward   s
   

r=   inputnormalized_shapeweightbiasepsc                 C   r8   r9   )is_mtiar;   decomp_native_layer_norm)r>   r?   r@   rA   rB   r1   r1   r2   _native_layer_norm   s   rE   )minmaxsymbolrF   rG   c                C   s   d S r9   r1   )rH   rF   rG   r1   r1   r2   sym_constrain_range_for_size   s   rI   xc                 C   s(   |d ur	|  |} |d ur| |} | S r9   )	clamp_min	clamp_max)rJ   rF   rG   r1   r1   r2   clamp   s
   

rM   c                 C   s   | d|      S )Nr   )negexprJ   r1   r1   r2   silu   s   rQ   size
fill_valuekwargsc                 K   s:   | d}|d u rtt||d< tj| |fi |S tS )Ndtype)getr   typetorchfullr;   )rR   rS   rT   rU   r1   r1   r2   rY      s
   
rY   alphadimindextensorr[   c                C   s*   t  s| jtjkrtS t| |||d|dS )NF)inplacer[   )r   rU   rX   bfloat16r;   r   )rJ   r\   r]   r^   r[   r1   r1   r2   	index_add   s   ra   physical_layoutc                    s|   t |t tt|k}|rtj fi |S dgt  }t|D ]\}}|||< q"tj fdd|D fi ||S )Nr   c                    s   g | ]} | qS r1   r1   .0lrR   r1   r2   
<listcomp>  s    z"empty_permuted.<locals>.<listcomp>)r*   rangelenrX   empty	enumeratepermute)rR   rb   rT   is_identitypermpre   r1   rf   r2   empty_permuted   s   
&rp   
bias_sizesstridepaddingdilation
transposedoutput_paddinggroupsoutput_maskc                 C   st   |
d r
t | jjstS t| dgttd|   }t	| |||||||||	|
d |
d dg\}}}|||fS )N   r   r   F)
r    devicerW   r;   atensumr*   rh   r\   convolution_backward)r3   r>   r@   rq   rr   rs   rt   ru   rv   rw   rx   	grad_biasgrad_inpgrad_weight_r1   r1   r2   r}   	  s"    

r}   decimalsc                 C   s   d| }t | | d|  S )Ng      $@g      ?)r{   round)rJ   r   ten_pow_decimalsr1   r1   r2   	round_dec*  s   r   selfbatch2r   c                 C   s   t jr+| jjdvr+t| jd dkst|jd dkr+| d|d jdd}|S | jjdkr`t| ddkr`t|ddkr`t	d d  d7  < t
j| d|d dd	d
dS tS )Ncpumpsr   ry   r\   r   inductordecompose_bmmTr\   keepdim)r   coordinate_descent_tuningrz   rW   r   shape	unsqueezer|   rR   r   rX   squeezer;   )r   r   r   outr1   r1   r2   bmm0  s"   	r   mat1mat2betac                 C   s   | j jdkrtt|ddkr=t|ddkr=td d  d7  < tj|d|d dddd}|| ||   S t|ddkrtt	|dd	krtt	|dd	krttd d  d7  < |j
| jddd}|| ||   S tS )
Nr   r   r   r   r   decompose_addmmTr      )rz   rW   r   rR   r   rX   r|   r   r   r   Tr;   )r   r   r   r   r   r[   r   r1   r1   r2   addmmJ  s*   
r   input2c                 C   s:  t jr)| jjdvr)t| jd dkst|jd dkr)| d|d jddS | jjdkrt| ddkrlt| ddkrlt|ddkrl| j	|j	krlt
t| t| dkrltd	 d
  d7  < | | S t| ddkrt|ddkrtd	 d
  d7  < tj| d|d ddddS tS )Nr   r   r   ry   r   r   r       r   decompose_mmTr   )r   r   rz   rW   r   r   r   r|   rR   rU   r   rX   numelr   r   r;   )r   r   r   r1   r1   r2   mmh  s6   r   tensorsc                    s  dt jdtf fdd}tt|| tdkr6t| dtjid }d }||j	kr0|
 S |j|dS dt  k rDt| k rMn ntj S tdkrtfd	d
D rd }t|j} dk rr t|j n  | t | j|   d 
 S tS )NrJ   r(   c                    sL   t | jdkrt| jd dkrdS  t | jk r$t| j  dkr$dS dS )Nr   r   FT)ri   r   r   rP   r   r1   r2   non_empty_tensor  s
     zcat.<locals>.non_empty_tensorr   type_promotion_kindr   rU   c                 3   s    | ]	}| d  u V  qdS )r   Nr1   )rd   t)filtered_tensorsr1   r2   	<genexpr>  s    
zcat.<locals>.<genexpr>)rX   Tensorboolr*   filterri   r   r   DEFAULTrU   clonetor{   catdefaultallr   insertr   expandflattenr;   )r   r\   r   promoted_dtype
filtered_tinpr   r1   )r\   r   r2   r     s6   

 
 r   c                 C   s~   |   rtt| jtdt| j| jS t| t	j
d\}}tjtj|| jd}t| dk |d}tt| td|S )Nnan)r   rU   rz   r   g        )
is_complexrX   whereisnanrealfloatatan2imagr   r   INT_TO_FLOATscalar_tensormathpirz   )rJ   r   rU   r   retr1   r1   r2   angle  s   
r   yc                C   s2  t | o|  }t |o| }|r|stS dt jdtfdd}d}| jdkr0|jdkr0d}| jdkr:| d} |jdkrD|d}|}|d urN|| }t | j	|j	}|| s^||r`tS dt jdt jfd	d
}	| d } |d }|	| 
| jj	}
|	|
|jj	}t j|
| dd
|}|r|d S |S )Nr^   r(   c                 S   s   | j dkrdS |  d dkS )Nr   Fr   r   )ndimrr   )r^   r1   r1   r2   _requires_fallback  s   
zadd.<locals>._requires_fallbackFr   Tr   c                 S   sD   | j ^ }}|d dkrtdg ||d dR }| |}|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_tensorr1   r1   r2   reshape_tensor_complex	  s   
z#add.<locals>.reshape_tensor_complex)	start_dim)rX   	is_tensorr   r;   r   r   r   reshapepromote_typesrU   r   r   r   )rJ   r   r[   x_is_complex_tensory_is_complex_tensorr   output_size_zerozcomplex_typer   
x_reshaped
z_reshapedresultr1   r1   r2   add  s6   



r   c                 C   s   |   rtS | S r9   )r   r;   r   r1   r1   r2   conj_physical'  s   r   c                 C   s   | S r9   r1   r   r1   r1   r2   lift.  s   r   otherc                 C   s   t t ||| kB | |S r9   rX   r   r   r   r   r1   r1   r2   fmin3     r   c                 C   s   t t ||| k B | |S r9   r   r   r1   r1   r2   fmax8  r   r   Fr   c                 C       | j tjkrtj| ||dS tS Nr   )rU   rX   r   anyr;   r   r\   r   r1   r1   r2   amax=     r   c                 C   r   r   )rU   rX   r   r   r;   r   r1   r1   r2   aminH  r   r   startlengthc                 C   s   t | |||jt jdS )Nmemory_format)rX   narrowr   contiguous_format)r   r\   r   r   r1   r1   r2   narrow_copyS  s   	r   c                 C   s   t | | S r9   )r{   r   r   )r   rR   r1   r1   r2   view_copy_defaulta  s   r   rU   c                 C   s   |   |S r9   )r   r   )r   rU   r1   r1   r2   view_copy_dtypei  s   r   c                    sP   t  \}} fdd|D }dgt| }t|D ]\}}|||< q||fS )Nc                    s   g | ]} j | qS r1   )r   rc   r   r1   r2   rg   u  s    z/_get_shape_permutation_like.<locals>.<listcomp>r   )utils3compute_elementwise_output_logical_to_physical_permri   rk   )r   rb   r   r   permutationro   re   r1   r   r2   _get_shape_permutation_likeq  s   
r   )rU   layoutrz   
pin_memoryrequires_gradr   r   rz   r   r   r   c             	   C   s   |d u r| j n|}|d u r| jn|}|d u r| jn|}|tjkr3tj| j||||||d}|j|dS |tjks:J t	| \}	}
tj|	||||||d}|
t
tt|
krX|S ||
 S )N)rU   r   rz   r   r   r   )rU   r   rz   rX   preserve_formatrY   r   r   stridedr   r*   rh   ri   rl   r   )r   rS   rU   r   rz   r   r   r   r   r   r   r1   r1   r2   	full_like~  s8   
		r  )rU   rz   r   rand_fn.c          	      K   s   |d u r|j n|}|d u r|jn|}|tjkr'| |jf||d|j|dS t|\}}| |f||d|}|ttt	|krD|S |
| S )Nr   r   )rU   rz   rX   r   r   r   r   r*   rh   ri   rl   r   )	r  r   rU   rz   r   rT   r   r   r   r1   r1   r2   
_rand_like  s2   	
r  c                 K      t tj| fi |S r9   )r  rX   randr   rT   r1   r1   r2   	rand_like     r  c                 K   r  r9   )r  rX   randnr  r1   r1   r2   
randn_like  r	  r  highc                 K   s    t ttjjd|| fi |S Nr   r  	functoolspartialr{   randintlow)r   r  rT   r1   r1   r2   randint_like  s    r  r  c                 K   s    t ttjj||| fi |S r9   r  )r   r  r  rT   r1   r1   r2   randint_like_low  s    r  c                 K   s   t jjd| |fi |S r  )r{   r  r  )r  rR   rT   r1   r1   r2   r    s   r  c                 C   s*   t jj|}t jj| ||| d S r  )rX   r'   
_quantized$wrapped_fbgemm_pack_gemm_matrix_fp16!wrapped_fbgemm_linear_fp16_weightrR   )r>   r@   rA   packed_weightr1   r1   r2   #linear_dynamic_fp16_unpacked_weight  s   r  input_scaleinput_zero_pointweight_scaleweight_zero_point	out_scaleout_zero_pointout_channelc
              	   C   s.   t jj||||}
t jj| |||
|||	S r9   )rX   r'   r  _wrapped_linear_prepack#_wrapped_quantized_linear_prepacked)r>   r  r  r@   r  r  rA   r  r  r   r  r1   r1   r2   wrapped_quantized_linear  s   r#  packedc                 C   s^   dt jdt jfdd}|| dddf }|| ddd f }| dd df t j| | S )Nu8r(   c                    st    fdddD \}}}}t jdkr&||d>  |d>  |d>  tjd S |d> |d>  |d>  | tjd S )	Nc                 3   s$    | ]} d |f  tjV  qdS .N)r   rX   int32)rd   nr%  r1   r2   r     s   " zPq_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.<locals>.<genexpr>)r   r   ry      little   r      r&  )sys	byteorderr   rX   float32)r%  rJ   r   r   wr1   r)  r2   bitcast_u8_to_f32  s   
((z=q_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.i)rX   r   r   r0  )r$  r2  scalesoffsetsr1   r1   r2   "q_embedding_bag_byte_unpack_decomp  s    r6  agridinterpolation_modepadding_modealign_cornersc                 C   s@   | j t dko|dko| jtjd }t| |||||d}|S )Nr   r   r   )r8  r9  r:  r;  _expand_grid)rz   rX   is_contiguousr   decomp_grid_sampler_2d)r7  r8  r9  r:  r;  r<  outputr1   r1   r2   grid_sampler_2d  s   r@  left_tensorsright_tensorsscalarc                 C      t jj| t j|||dS NrZ   )r{   _foreach_addList_foreach_mulr   rA  rB  rC  r1   r1   r2   _foreach_addcmul_scalarA     rJ  c                 C   rD  rE  )r{   rF  rG  _foreach_divrI  r1   r1   r2   _foreach_addcdiv_scalarM  rK  rM  start_tensorsend_tensorsc              	   C   "   t j| t jt j|| |S r9   )r{   rF  rG  rH  Scalar_foreach_sub)rN  rO  r@   r1   r1   r2   _foreach_lerp_scalarY     rS  scalarsc              	   C   rP  r9   )r{   rF  rG  rH  
ScalarListrR  )rN  rO  rU  r1   r1   r2   _foreach_lerp_scalarlistg  rT  rW  running_meanrunning_vartrainingexponential_average_factorepsilonc              
   C   sB   t | |||||||\}}	}
|r||	|
fS ||d|dfS )Nr   )r{   native_batch_norm	new_zeros)r>   r@   rA   rX  rY  rZ  r[  r\  r7  bcr1   r1   r2   miopen_batch_normu  s    

rb  c                   C   s   i t tS r9   )r+   r   r1   r1   r1   r2   fast_random_decomps  s   rc  c                     s|   t jrtS t jrttjjjj	d tS t
 } t jr<ttjtjjtjjg dtdtf fddfdd|  D } | S )z"decomps can change based on configNr0   r(   c                    s$   |  v rdS t | dr| j v S dS )NToverloadpacketF)hasattrrd  )r0   )ops_to_skipr1   r2   should_skip  s
   

z(select_decomp_table.<locals>.should_skipc                    s   i | ]\}} |s||qS r1   r1   )rd   kv)rg  r1   r2   
<dictcomp>  s    z'select_decomp_table.<locals>.<dictcomp>)r   fallback_randomr+   "fallback_embedding_bag_byte_unpackpoprX   r'   	quantizedembedding_bag_byte_unpackr   rc  emulate_precision_castsr   r{   addcmul_foreach_addcmulrQ  _foreach_addcdivr   r   items)r   r1   )rf  rg  r2   select_decomp_table  s    	ru  masksourcec           
      C   s   ddl m}m} || j|jrCt| |g\} }|ddd }dd | ||fD \}}}t	|||gd}	t
||	|| jS tS )Nr   )BackendFeaturehas_backend_featurer   r   c                 s   s    | ]}|  V  qd S r9   )r   )rd   rJ   r1   r1   r2   r     s    z!masked_scatter.<locals>.<genexpr>)codegen.commonrx  ry  rz   MASKED_SCATTER_WITH_INDEXr{   broadcast_tensorsr   cumsum_unsafe_masked_indexrX   r   r   r   r;   )
r   rv  rw  rx  ry  
source_idx	self_flat	mask_flatsource_flatr   r1   r1   r2   masked_scatter  s   r  	quant_min	quant_maxc           	      C   sv   t | \}}|| t||  }t |t |g}|t || t j }t |||}|t j	|t j
fS r9   )rX   aminmaxr   rG   r   r   r   intrM   float64int64)	r>   r  r  rB   rU   min_valmax_valscale
zero_pointr1   r1   r2   choose_qparams_tensor  s   r  
accumulatec                 C   s.   |   }t||g||j|}|| jS r9   )r   rX   	index_putr   r   )r   r]   rw  r  	flattenedr1   r1   r2   put  s
   r  c                 C   s   t j| |||d}| |S )N)r  )r{   r  copy_)r   r]   rw  r  r   r1   r1   r2   put_  s   
r  r?  input_dtypec                 C   sD   | | }t j||dd}t| ||}| j|kr||}| S )NTr   )rX   r|   r   fmarU   r   
contiguous)r3   r?  r\   r  new_grad_outputsum_new_grad
grad_inputr1   r1   r2   _softmax_backward_data  s   

r  Tinclude_selfsrcreduction_typer  c                C   sr  |dkrOt | jsO| jjp| jj}t|}|r%| }t| |||}	n| ||d}t| |||}	|		|	dk d}	||||}|rK||	 S ||	 S t
tjj|| j|j|jjdr`tS | j|d d   | jd |   }
| g| j|d d  | jd | R }g t| j| | jdtd| j| R }|tj|
||}| j|||||dS )Nmeanr   r   Tr  )r!   rU   is_floating_pointr   rX   	ones_likera   
index_fill
zeros_likemasked_fillr"   r{   scatter_reduce_tworz   rW   r;   r   r   rh   r   r   r  repeat_interleaver   rl   scatter_reduce)r   r\   r]   r  r  r  true_divisiononesr   countsrepeatsindex_shapern   scatter_indexr1   r1   r2   index_reduce  sJ   


(,,
r  kernel_size	ceil_modec                 C   s   |dkr	dg| }|dkrdg| }|s|}t ||}t ||}t ||}t ||}ttj|}tjjj||dsC|t	tj
jkrEtS t| |||||\}}	t|	|| j| d  |||}
||
fS )Nr   r   )n_dim)r   r  reduceoperatormulrX   	_inductorlowering%should_fallback_max_pool_with_indicesiinfoint8rG   r;   prims!_low_memory_max_pool_with_offsets'_low_memory_max_pool_offsets_to_indicesr   )rJ   r  rr   rs   rt   r  r\   window_sizevalsr5  r4   r1   r1   r2   _max_pool_with_indicesI  sD   	





r  c              	   C      t | |||||ddS )Nry   r   r  rJ   r  rr   rs   rt   r  r1   r1   r2   max_pool2d_with_indices     	r  c              	   C   r  )Nr*  r   r  r  r1   r1   r2   max_pool3d_with_indices  r  r  output_sizec           	      C   s   | j ^ }}}|\}}|dks|dkr(g |||}| || j|tjdfS || dkrB|| dkrB|| || g}t| |S tS )Nr   r   )r   	new_emptyrX   r  r{   r  r;   )	rJ   r  batchh_inw_inh_outw_outo_sizer  r1   r1   r2   adaptive_max_pool2d  s   r  	out_int32rightsidesortersorted_sequencer  r  r  r  c                C   s(   t j| tj|g| jd||||dd S )Nrz   r  r   )r{   searchsortedrX   r^   rz   )r  r   r  r  r  r  r1   r1   r2   searchsorted_scalar  s   
r  r  r  
boundariesc                C   s&   t jtj| g|jd|||ddS )Nr  r  r   )r{   	bucketizerX   r^   rz   r   )r   r  r  r  r1   r1   r2   bucketize_scalar  s   r        ?UUUUUU?noiselowerupper	generatorc                 C   sf   |r#| dk}t j| |||d}t|| | | }t||d}	||	fS || d }
t | |
t fS )Nr   )r  r   ry   )r{   uniformrX   r   
leaky_relur   )r   r  r  r  rZ  r  not_positiverr?  	noise_outnegative_sloper1   r1   r2   rrelu_with_noise_functional  s   	r  repeatc                 C   s   t jjrtS |d u st|turtS | jjdkrtS | jtj	tj
fv s%J | jdks,J | d}tj|| jd}tj||| jtj	kdd}tj|| dd dS )Nr   r   r   r  Tr  )rG   )r   tritonautotune_at_compile_timer;   rW   r  rz   rU   rX   r'  r  r   r}  aranger  rM   rR   )r  r  r}  posr4   r1   r1   r2   repeat_interleave_Tensor  s   
r  r   r]  c           
   	   C   s|   |   dkr|  dksJ d|d }|d }|d }| d}|d}tjj||||df|df|df|d}	|	dS )Nr*  z,Expect (N,C_in,L) and (C_out,C_in//groups,K)r   r   r   )rr   rs   rt   rw   )r\   r   r{   conv2dr   r   )
r>   r@   rA   rr   rs   rt   rw   input_2d	weight_2dout_2dr1   r1   r2   conv1d_to_conv2d  s$   


r  )NNr9   )Nr   r   )NF)r   r   F)F)Nr   r   F)r  r  FN)Nr  r]  r  r   )r  loggingr   r  r.  typingcollections.abcr   r   r   r   r   r   typing_extensionsr   rX   torch._decomp_decompr.   torch._prims_common_prims_commonr   $torch.ao.quantization.fx._decomposedr	   r
   r   torch._decomp.decompositionsr   r>  r   r   r<   r   r   $torch._decomp.decompositions_for_rngr   torch._dynamo.utilsr   torch._environmentr   !torch._higher_order_ops.out_dtyper   torch._inductor.utilsr   r   r   r   torch._refsr   rD   %torch.fx.experimental.symbolic_shapesr   r   torch.utils._ordered_setr    r   r   r    r!   r"   r#   r$   _opsOperatorBaseOpOverloadPacketr%   __annotations__	getLogger__name__r,   r'   r{   r  rn  r  quantized_decomposed_adaptive_avg_pool2d_backwardindex_selectaddmvr  bitwise_and_bitwise_or_
clamp_min_distelu
empty_likeflipgeluhardtanhlcmr  linalg_vector_norm_log_softmax max_pool2d_with_indices_backward_native_batch_norm_legit#_native_batch_norm_legit_functional$_native_batch_norm_legit_no_training_batch_norm_with_update"_batch_norm_with_update_functional_batch_norm_no_updatebatch_norm_backwardr^  native_group_normnll_loss2d_backwardpermute_copyrrelu_with_noise_backward_softmaxsin_sqrt__to_copytril_indicestriu_indicesunbind_copyr  upsample_bilinear2dvecr  r#  inductor_decompositionsr+   _unsafe_indexr~  #_unsafe_masked_index_put_accumulate+_scaled_dot_product_flash_attention_for_cpur   r  rL   rK   ra   gluselect_scatterslice_scatterrQ   splitr   r   r|   unbindbaddbmmr&   r*   
OpOverloadr/   r   r=   	ShapeTyper   tuplerE   rI   SymInttypesNumberrM   rY   rp   r}   r   r   r   r   rU   r   r   r   r   r   r   r   detach_r   r   r   r   r   	view_copyr   r   
StrideTyper   r  r   r   rz   r   r  r  r  r  	low_dtyper  r  ro  r6  r@  rr  rQ  rJ  rs  rM  _foreach_lerprS  rV  rW  rb  py_impl_CDispatchKeyAutogradcachedictrc  ru  r  choose_qparamsr^   r  r  r  r  strr  r  r  r  r  r  r  r  r  	Generatorr  r  r  r1   r1   r1   r2   <module>   sx  

	
 !"#$%&'()*. 


	


	





	
  


'
=


C




	
0
 
 



	


 






	 %


5
8


