o
    j9:j                     @   sH  U 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
 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,m-Z- d dl.m/Z0 d dl1m2Z2m3Z3 ddl4m5Z5m6Z6 ddlm7Z7m8Z8m9Z9 e
dZ:edZ;ej<j=ej<j>B Z?e	e@d< eAeBZCejDjEZEejDjFZFejDjGZGejDjHZHejDjIZIeg eEjJeEjKeEjLeEjMeEjNeEjOeEjPeEjQeEjReEjSeEjTeEjUeEjVeEjWeEjXeEjYeEjZeEj[eEj\eEj]eEj^eEj_eEj`eEjaeEjbeEjceEjdeEj/eEjeeEjfeEjgeEjheEjieEjje'eEjkeEjleEjmeEjnjoeEjpjqeEjreGjseHjtZui e euZveEjweEjxeEjyeEjzj{eEj|eEj}eEj~eEjeEj/eEjeEjeEjeEjeEjeEjjeEjeEjeEjeEjeEjeEjeEjjeEjeEjeEjeEjjeEjeEjeEjgZeej<jej<j>B  e@d< eeve de?ee? B deee;e:f gee;e:f f fddZeeEjjgdejdejdedejfddZeeEjjgdejdejdejdejfdd ZeeEjgd!ejd"ejd#eod$eod%edejfd&d'ZeeEj/d(ejd)ejdejdB d*ejdB d+edeejejejf fd,d-ZeeEjj{gddd.d/ejd0ejjdB d1ejjdB ddfd2d3ZeeEjge		dd4ejd0ejjdB d1ejjdB dejfd5d6ZeeEjged4ejdejfd7d8ZeeEjgd9eeoejB  d:ejjd;edejfd<d=ZeeEjgdd>d4ejd?eod@ejdAejdBejjdejfdCdDZeeEjj{gd9eeoejB  dEeeo d;edejfdFdGZeeEjgd!ejd(ejdejdHeeo dIeoeeo B dJeoeeo B dKeoeeo B dLedMeeo dNeodOee deejejejf fdPdQZeeEjjgdd4ejdReodejfdSdTZeeEjge	ddUejdVejdWejdB dejfdXdYZeeEjge			ddUejdZejd[ejdWejdB d\ejjdBejjdejfd]d^ZeeEjge	ddUejd_ejdWejdB dejfd`daZeeEjj{g	 ddbeej d?eodejfdcddZeeEjgd4ejdejfdedfZeeEjgdd>d4ejdgejdBejjdB dejfdhdiZeeEjgdUejdejfdjdkZeeEjeEjgdUejdejfdldmZeeEjeFjgdUejdnejdejfdodpZeeEjeFjgdUejdnejdejfdqdrZeeEj		sddUejd?eodB dtedejfdudvZeeEj		sddUejd?eodB dtedejfdwdxZeeEjgdUejd?eodeodyeodejf
dzd{ZeeEjj{gdUejd9eeoejB  dejfd|d}ZeeEjjgdUejd~ejdejfddZdUejdeejejf fddZeeEjddddsdsejddUejd:eoeB d~ejdB dejdB dejdB dededejdejfddZddejddedejf dUejd~ejdB dejdB dejd;edejfddZeeEjge!dUejd;edejfddZeeEjge!dUejd;edejfddZeeEjj{ge!dUejdeod;edejfddZeeEjjge!dUejdeodeod;edejf
ddZeeEjj{deod9eeoejB  d;edejfddZeeGjsj{	dd(ejdejd*ejdB dejfddZseeHjtj{d(ejdejdejdejdejdejd*ejdejdejdeodejfddZteejDjGj̃dejdejfddZeeEjge	 	 	sddejdejdeodeodedejfddZeeEjjdeej deej dejjdeej fddZeeEjjуdeej deej deejj deej fddZeEjj{ejjjסeeEjӃd(ejdejd*ejdB dejdB dejdB dedededeejejejf fddZe jdeeedef f fddZdeeedef f fddZeeEj܃dUejdejdejdejfddƄZeeIjjރd(ejdeodeod+ed~ejdeejejf fddʄZeeEj	sddUejd@ejdejdedejf
dd̈́ZeeEj	sddUejd@ejdejdedejf
ddτZeeEj|j{ed!ejdejd?eodejdejf
ddӄZ|eeEjdd՜dUejd?eod@ejdejdededejfddڄZd4ejdeeo dIeoeeo B dB dJeoeeo B dKeoeeo B ded?eodeejejf fddބZeeEj		 		sdd4ejdeeo dIeoeeo B dB dJeoeeo B dKeoeeo B dedeejejf fddZeeEj		 		sdd4ejdeeo dIeoeeo B dB dJeoeeo B dKeoeeo B dedeejejf fddZeeEjd4ejdeeo deejejf fddZeeEjjdsdsddddejdUejjdedededB dejdB dejfddZeeEjjdsdsddUejjdejdededejf
ddZeeEj			s	ddUejdejdedededejdB deejejf fddZeeEjj	ddejdeodB dejfddZ					d	d(ejdejd*ejdB dIeeo dJeeo dKeeo dNeodejfdd ZdS (
      N)Callable)Any	TypeAliasTypeVar)	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suggest_memory_formattype_to_dtype)native_layer_norm)guard_or_falsestatically_known_true   )configinductor_prims)is_gpu,needs_fallback_due_to_atomic_add_limitationsuse_scatter_fallback_T_P_GenericOperatordecomps_to_excludeopsreturnc                 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 r/   d/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/torch/_inductor/decomposition.pyr-      s
   r-   startendweightc                 C   s\   t | }|tjkr|j|d}||  }|dks|dkr&tj||d|  dS tj| ||dS )Nmemory_format      ?g            ?alpha)r   torchcontiguous_format
contiguousadd)r1   r2   r3   fmtdiffr/   r/   r0   _lerp_scalar   s   
r@   c           	      C   sj   t | }|tjkr|j|d}||  }| dk}d|  }t|||}t||| }tj|||ddS )Nr4   r6   r7   r   )value)r   r:   r;   r<   abswhereaddcmul)	r1   r2   r3   r>   r?   maskneg_omwwbaser/   r/   r0   _lerp_tensor   s   

rI   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)rJ   rK   rL   rM   rN   r/   r/   r0   _embedding_dense_backward   s
   

rT   inputnormalized_shapebiasepsc                 C   rO   rP   )is_mtiarR   decomp_native_layer_norm)rU   rV   r3   rW   rX   r/   r/   r0   _native_layer_norm   s   r[   )minmaxsymbolr\   r]   c                C   s   d S rP   r/   )r^   r\   r]   r/   r/   r0   sym_constrain_range_for_size   s   r_   xc                 C   s(   |d ur	|  |} |d ur| |} | S rP   )	clamp_min	clamp_max)r`   r\   r]   r/   r/   r0   clamp   s
   

rc   c                 C   s   | d|      S )Nr   )negexpr`   r/   r/   r0   silu   s   rg   size
fill_valuekwargsc                 K   s:   | d}|d u rtt||d< tj| |fi |S tS )Ndtype)getr   typer:   fullrR   )rh   ri   rj   rk   r/   r/   r0   rn      s
   
rn   r8   dimindextensorr9   c                C   s*   t  s| jtjkrtS t| |||d|dS )NF)inplacer9   )r   rk   r:   bfloat16rR   r   )r`   ro   rp   rq   r9   r/   r/   r0   	index_add  s   rt   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 r/   r/   .0lrh   r/   r0   
<listcomp>/  s    z"empty_permuted.<locals>.<listcomp>)r(   rangelenr:   empty	enumeratepermute)rh   ru   rj   is_identitypermprx   r/   ry   r0   empty_permuted!  s   
&r   
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   devicerm   rR   atensumr(   r{   ro   convolution_backward)rJ   rU   r3   r   r   r   r   r   r   r   r   	grad_biasgrad_inpgrad_weight_r/   r/   r0   r   2  s"    

r   decimalsc                 C   s   d| }t | | d|  S )Ng      $@r7   )r   round)r`   r   ten_pow_decimalsr/   r/   r0   	round_decS  s   r   selfbatch2r   c                 C   s   t | jd dkst |jd dkr| |  S tjrC| jjdvrCt | jd dks3t |jd dkrC| d|d jdd}|S | jjdkrxt | 	ddkrxt |	ddkrxt
d d  d7  < tj| d|d dd	d
dS tS )Nr   r   cpumpsro   r   inductordecompose_bmmTro   keepdim)r   shaper<   r   coordinate_descent_tuningr   rm   	unsqueezer   rh   r   r:   squeezerR   )r   r   r   outr/   r/   r0   bmmY  s*   	r   mat1mat2betac                 C   sZ  |j jdvr7t|ddkr7t|ddkr7t|ddkr7td d  d7  < || }|| ||   S | j jdkrt|ddkrtt|ddkrttd d  d7  < tj|d|d ddd	d}|| ||   S t|ddkrt	|dd
krt	|dd
krtd d  d7  < |j
| jddd	}|| ||   S tS )Nr   r   r   r   r   decompose_addmmr   Tr      )r   rm   r   rh   r   r:   r   r   r   r   TrR   )r   r   r   r   r   r9   r   r/   r/   r0   addmmz  s>   
r   input2c                 C   sv  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 t| ddkrt| ddkrt|ddkr| jjdvsv| jjdkrt| ddkrt|ddkr| j	|j	krt
t| t| dkrtd	 d
  d7  < | | S | jjdkrt| 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   r   r   r   r       r   decompose_mmTr   )r   r   r   rm   r   r   r   r   rh   rk   r   r:   numelr   r   rR   )r   r   r   r/   r/   r0   mm  sB   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 )Nr`   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)r|   r   r   rf   r   r/   r0   non_empty_tensor  s
     zcat.<locals>.non_empty_tensorr   type_promotion_kindr   rk   c                 3   s    | ]	}| d  u V  qdS )r   Nr/   )rw   t)filtered_tensorsr/   r0   	<genexpr>  s    
zcat.<locals>.<genexpr>)r:   Tensorboolr(   filterr|   r   r   DEFAULTrk   clonetor   catdefaultallr   insertr   expandflattenrR   )r   ro   r   promoted_dtype
filtered_tinpr   r/   )ro   r   r0   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   rk   r   r   g        )
is_complexr:   rC   isnanrealfloatatan2imagr   r   INT_TO_FLOATscalar_tensormathpir   )r`   r   rk   r   retr/   r/   r0   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 )Nrq   r&   c                 S   s   | j dkrdS |  d dkS )Nr   Fr   r   )ndimr   )rq   r/   r/   r0   _requires_fallback0  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]r   r   zQThe size of the last dimension must be even to reshape it to [..., last_dim/2, 2])r   AssertionErrorview)rq   initial_dimslast_dim	new_shapereshaped_tensorr/   r/   r0   reshape_tensor_complexI  s   
z#add.<locals>.reshape_tensor_complex)	start_dim)r:   	is_tensorr   rR   r   r   r   reshapepromote_typesrk   r   r   r   )r`   r   r9   x_is_complex_tensory_is_complex_tensorr   output_size_zerozcomplex_typer   
x_reshaped
z_reshapedresultr/   r/   r0   r=   #  s6   



r=   c                 C   s   |   rtS | S rP   )r   rR   r   r/   r/   r0   conj_physicalg  s   r   c                 C   s   | S rP   r/   r   r/   r/   r0   liftn  s   r   otherc                 C   s   t t ||| kB | |S rP   r:   rC   r   r   r   r/   r/   r0   fmins     r   c                 C   s   t t ||| k B | |S rP   r   r   r/   r/   r0   fmaxx  r   r   Fr   c                 C       | j tjkrtj| ||dS tS Nr   )rk   r:   r   anyrR   r   ro   r   r/   r/   r0   amax}     r   c                 C   r   r   )rk   r:   r   r   rR   r   r/   r/   r0   amin  r   r   lengthc                 C   s   t | |||jt jdS )Nr4   )r:   narrowr   r;   )r   ro   r1   r  r/   r/   r0   narrow_copy  s   	r  c                 C   s   t | | S rP   )r   r   r   )r   rh   r/   r/   r0   view_copy_default  s   r  rk   c                 C   s   |   |S rP   )r   r   )r   rk   r/   r/   r0   view_copy_dtype  s   r  c                    sP   t  \}} fdd|D }dgt| }t|D ]\}}|||< q||fS )Nc                    s   g | ]} j | qS r/   )r   rv   r   r/   r0   rz     s    z/_get_shape_permutation_like.<locals>.<listcomp>r   )utils3compute_elementwise_output_logical_to_physical_permr|   r~   )r   ru   r   r   permutationr   rx   r/   r   r0   _get_shape_permutation_like  s   
r	  )rk   layoutr   
pin_memoryrequires_gradr5   r
  r   r  r  r5   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)rk   r
  r   r  r  r4   )rk   r
  r   r:   preserve_formatrn   r   r   stridedr	  r(   r{   r|   r   r   )r   ri   rk   r
  r   r  r  r5   r   r   r  r/   r/   r0   	full_like  s8   
		r  )rk   r   r5   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   r4   )rk   r   r:   r  r   r   r	  r(   r{   r|   r   r   )	r  r   rk   r   r5   rj   r   r  r   r/   r/   r0   
_rand_like  s2   	
r  c                 K      t tj| fi |S rP   )r  r:   randr   rj   r/   r/   r0   	rand_like     r  c                 K   r  rP   )r  r:   randnr  r/   r/   r0   
randn_like  r  r  highc                 K   s    t ttjjd|| fi |S Nr   r  	functoolspartialr   randintlow)r   r  rj   r/   r/   r0   randint_like  s    r   r  c                 K   s    t ttjj||| fi |S rP   r  )r   r  r  rj   r/   r/   r0   randint_like_low  s    r!  c                 K   s   t jjd| |fi |S r  )r   r  r  )r  rh   rj   r/   r/   r0   r  !  s   r  c                 C   s*   t jj|}t jj| ||| d S r  )r:   r%   
_quantized$wrapped_fbgemm_pack_gemm_matrix_fp16!wrapped_fbgemm_linear_fp16_weightrh   )rU   r3   rW   packed_weightr/   r/   r0   #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 rP   )r:   r%   r"  _wrapped_linear_prepack#_wrapped_quantized_linear_prepacked)rU   r'  r(  r3   r)  r*  rW   r+  r,  r-  r%  r/   r/   r0   wrapped_quantized_linear6  s   r0  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   r:   int32)rw   nr2  r/   r0   r   T  s   " zPq_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.<locals>.<genexpr>)r   r   r      little   r      r3  )sys	byteorderr   r:   float32)r2  r`   r   r   rG   r/   r6  r0   bitcast_u8_to_f32S  s   
((z=q_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.i)r:   r   r   r=  )r1  r>  scalesoffsetsr/   r/   r0   "q_embedding_bag_byte_unpack_decompQ  s    rB  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   r4   )rD  rE  rF  rG  _expand_grid)r   r:   is_contiguousr;   decomp_grid_sampler_2d)rC  rD  rE  rF  rG  rH  outputr/   r/   r0   grid_sampler_2d_  s   rL  start_tensorsend_tensorsc              	   C   "   t j| t jt j|| |S rP   )r   _foreach_addList_foreach_mulScalar_foreach_sub)rM  rN  r3   r/   r/   r0   _foreach_lerp_scalar     rU  scalarsc              	   C   rO  rP   )r   rP  rQ  rR  
ScalarListrT  )rM  rN  rW  r/   r/   r0   _foreach_lerp_scalarlist  rV  rY  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)rU   r3   rW   rZ  r[  r\  r]  r^  rC  bcr/   r/   r0   miopen_batch_norm  s    

rd  c                   C   s   i t tS rP   )r)   r   r/   r/   r/   r0   fast_random_decomps  s   re  c                  C   s2   t jrtS t jrttjjjj	d tS t
 } | S )z"decomps can change based on configN)r   fallback_randomr)   "fallback_embedding_bag_byte_unpackpopr:   r%   	quantizedembedding_bag_byte_unpackr   re  )r   r/   r/   r0   select_decomp_table  s   rk  rE   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 rP   )r   )rw   r`   r/   r/   r0   r     s    z!masked_scatter.<locals>.<genexpr>)codegen.commonrm  rn  r   MASKED_SCATTER_WITH_INDEXr   broadcast_tensorsr   cumsum_unsafe_masked_indexr:   rC   r   r   rR   )
r   rE   rl  rm  rn  
source_idx	self_flat	mask_flatsource_flatr   r/   r/   r0   masked_scatter  s   rx  	quant_min	quant_maxc           	      C   sv   t | \}}|| t||  }t |t |g}|t || t j }t |||}|t j	|t j
fS rP   )r:   aminmaxr   r]   r   r   r   intrc   float64int64)	rU   ry  rz  rX   rk   min_valmax_valscale
zero_pointr/   r/   r0   choose_qparams_tensor  s   r  
accumulatec                 C   s.   |   }t||g||j|}|| jS rP   )r   r:   	index_putr   r   )r   rp   rl  r  	flattenedr/   r/   r0   put  s
   r  c                 C   s   t j| |||d}| |S )N)r  )r   r  copy_)r   rp   rl  r  r   r/   r/   r0   put_  s   
r  rK  input_dtypec                 C   sD   | | }t j||dd}t| ||}| j|kr||}| S )NTr   )r:   r   r   fmark   r   r<   )rJ   rK  ro   r  new_grad_outputsum_new_grad
grad_inputr/   r/   r0   _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   rk   is_floating_pointr   r:   	ones_likert   
index_fill
zeros_likemasked_fillr    r   scatter_reduce_twor   rm   rR   r   r   r{   r   r   r~  repeat_interleaver   r   scatter_reduce)r   ro   rp   r  r  r  true_divisiononesr   countsrepeatsindex_shaper   scatter_indexr/   r/   r0   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mulr:   	_inductorlowering%should_fallback_max_pool_with_indicesiinfoint8r]   rR   prims!_low_memory_max_pool_with_offsets'_low_memory_max_pool_offsets_to_indicesr   )r`   r  r   r   r   r  ro   window_sizevalsrA  rK   r/   r/   r0   _max_pool_with_indicesX  sD   	





r  c              	   C      t | |||||ddS )Nr   r   r  r`   r  r   r   r   r  r/   r/   r0   max_pool2d_with_indices     	r  c              	   C   r  )Nr7  r   r  r  r/   r/   r0   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_emptyr:   r~  r   r  rR   )	r`   r  batchh_inw_inh_outw_outo_sizer  r/   r/   r0   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r   r  r   )r   searchsortedr:   rq   r   )r  r   r  r  r  r  r/   r/   r0   searchsorted_scalar  s   
r  r  r  
boundariesc                C   s&   t jtj| g|jd|||ddS )Nr  r  r   )r   	bucketizer:   rq   r   r   )r   r  r  r  r/   r/   r0   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   r   )r   uniformr:   rC   
leaky_relur   )r   r  r  r  r\  r  not_positiverrK  	noise_outnegative_sloper/   r/   r0   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  )r]   )r   tritonautotune_at_compile_timerR   rm   r|  r   rk   r:   r4  r~  r   rr  aranger  rc   rh   )r  r  rr  posrK   r/   r/   r0   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 )Nr7  z,Expect (N,C_in,L) and (C_out,C_in//groups,K)r   r   r   )r   r   r   r   )ro   r   r   conv2dr   r   )
rU   r3   rW   r   r   r   r   input_2d	weight_2dout_2dr/   r/   r0   conv1d_to_conv2d  s$   


r  )NNrP   )Nr   r   )NF)r   r   F)F)Nr   r   F)r  r  FN)Nr  r_  r  r   )r  loggingr   r  r;  collections.abcr   typingr   r   r   typing_extensionsr   r:   torch._decomp_decompr,   torch._prims_common_prims_commonr  $torch.ao.quantization.fx._decomposedr   r   r	   torch._decomp.decompositionsr
   rJ  r   r   rS   r   r   $torch._decomp.decompositions_for_rngr   torch._dynamo.utilsr   torch._environmentr   !torch._higher_order_ops.out_dtyper   torch._inductor.utilsr   r   r   r   r   torch._refsr   rZ   %torch.fx.experimental.symbolic_shapesr   r    r   r   r   r   r    r!   r"   _opsOperatorBaseOpOverloadPacketr#   __annotations__	getLogger__name__r*   r%   r   r  ri  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vechann_windowr&  r0  inductor_decompositionsr)   _unsafe_indexrs  #_unsafe_masked_index_put_accumulate+_scaled_dot_product_flash_attention_for_cpur   r  rb   ra   rt   gluselect_scatterslice_scatterrg   splitr   r   r   unbindbaddbmmrD   addcmul__foreach_addcmulrS  _foreach_addcmul_addcdivaddcdiv__foreach_addcdiv_foreach_addcdiv_lerplerp_r$   r(   
OpOverloadr-   r   r@   rI   r   rT   	ShapeTypetupler[   r_   SymInttypesNumberrc   rn   r   r   r   r   r   r   rk   r   r   r   r   r=   r   r   detach_r   r   r   r   r  	view_copyr  r  
StrideTyper	  r  r  r
  r   r5   r  r  r  r   	low_dtyper!  r  rj  rB  rL  _foreach_lerprU  rX  rY  rd  py_impl_CDispatchKeyAutogradcachedictre  rk  rx  choose_qparamsrq   r  r  r  r  strr  r  r  r  r  r  r  r  r  	Generatorr  r  r  r/   r/   r/   r0   <module>   sl  

	
 !"#$%&'()*+/
!

	"



	








	
 


&-
=


C


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

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