o
    Zh                     @   sD  d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ 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 d dlmZ d dlmZ d dl m!Z! d d	l"m#Z# d d
l$m%Z% d dlm&Z&m'Z'm(Z( d dl)m*Z*m+Z+ ddl,m-Z-m.Z. ddlm/Z/m0Z0m1Z1 edZ2edZ3e4e5Z6ej7j8Z8ej7j9Z9ej7j:Z:ej7j;Z;ej7j<Z<eg e8j=e8j>e8j?e8j@e8jAe8jBe8jCe8jDe8jEe8jFe8jGe8jHe8jIe8jJe8jKe8jLe8jMe8jNe8jOe8jPe8jQe8jRe8jSe8jTe8jUe8jVe8jWe8jXe8jYe8jZe8j[e8j\e8j]e#e8j^e8j_e8j`e8jajbe8jcjde:jee;jfZgi e egZhe8jie8jje8jke8jljme8jne8joe8jpe8jqe8jre8jse8jte8jujve8jwe8jxe8jye8jzgZ{eehe{ de|e	ej}j~ej}jf  deee3e2f gee3e2f f fddZee8jjgdejvdeddfddZee8jjgdejvdeddfddZee8jjmgddddejdeejj deejj ddfd d!Zee8jge		dd"ejvdeejj deejj dejvfd#d$Zee8jgd%e|e	ebejf  d&ejjd'edejvfd(d)Zee8jqgdd*d"ejvd+ebd,ejvdejvd-ejjdejvfd.d/Zqee8jjmgd%e|e	ebejf  d0e|eb d'edejvfd1d2Zee8jgd3ejvd4ejvd5ejvd6e|eb d7e	ebe|eb f d8e	ebe|eb f d9e	ebe|eb f d:ed;e|eb d<ebd=e|e deejvejvejvf fd>d?Zee8jjgdd"ejvd@ebdejvfdAdBZee8jgedCejvdDejvdejvfdEdFZee8jge		ddCejvdGejvdHejvdIejjd-ejjdejvfdJdKZee8jgedCejvdLejvdejvfdMdNZee8jjmg	 ddOe|ejv d+ebdejvfdPdQZee8jgd"ejvdejvfdRdSZee8jgdd*d"ejvdTejvd-eejj dejvfdUdVZee8jgdCejvdejvfdWdXZee8je8jgdCejvdejvfdYdZZee8je9jgdCejvd[ejvdejvfd\d]Zee8je9jgdCejvd[ejvdejvfd^d_Zee8j		`ddCejvd+eeb daedejvfdbdcZee8j		`ddCejvd+eeb daedejvfdddeZee8jgdCejvd+ebdfebdgebdejvf
dhdiZee8jjmgdCejvd%e|e	ebejf  dejvfdjdkZee8jjgdCejvdlejdejvfdmdnZ	ddejvdoeej dejfdpdqZee8jddddrdCejvdleej dseej doeej d'edejvfdtduZee8jddddrdCejvdleej dseej doeej d'edejvfdvdwZee8jdddd`d`ejdxdCejvd&e	ebef dleej dyeej dseej dzed{edoejdejvfd|d}Zee8jjmddddrdCejvd~ebdleej dseej doeej d'edejvfddZee8jjddddrdCejvdebd~ebdleej dseej doeej d'edejvfddZee8jjmd~ebd%e|e	ebejf  d'edejvfddZee:jejmd4ejvd5ejvdejvdejvfddZeee;jfjmd4ejvdejvdejvd5ejvdejvdejvdejvdejvdejvdebdejvfddZfeej7j:jdejvdejvfddZee8jge	 	 	`ddejvdejvdebdebdedejvfddZee8jj	ddCe|ejv de|ejv de|ejv dede|ejv f
ddZee8jj	ddCe|ejv de|ejv de|ejv dede|ejv f
ddZee8jjde|ejv de|ejv d5ejjde|ejv fddZee8jjde|ejv de|ejv de|ejj de|ejv fddZe8jjmejjjáee8jd4ejvd5ejvdejejv dejejv dejejv dedededeejvejvejvf fddZe ddeeedef f fddZdeeedef f fddZee8jȃdCejvdejvdejvdejvfddZee<jjʃd4ejvdebdebdedlejdeejvejvf fddZee8j̃	`ddCejvd,ejvdejvdedejvf
ddZee8j̓	`ddCejvd,ejvdejvdedejvf
ddÄZee8jnjmed3ejvdejvd+ebdejdejvf
ddǄZnee8j΃ddɜdCejvd+ebd,ejvdejvdededejvfdd΄Zee8jσ		 		`dd"ejvde|eb d7ee	ebe|eb f  d8e	ebe|eb f d9e	ebe|eb f dedeejvejvf fdd҄Zee8jЃd"ejvde|eb deejvejvf fddՄZee8jjd`d`ddd֜dejvdCejjdededee deejv dejvfdd݄Zee8jӃ			`	ddCejvdejvdedededeej deejvejvf fddZdS )    N)AnyCallableOptionalTypeVarUnion)	ParamSpec)core_aten_decompositionsget_decompositionsremove_decompositions)_grid_sampler_2d
_index_addpw_cast_for_opmath)extra_random_decomps)counters)	is_fbcode)	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_T_Popsreturnc                 C   s8   t | r| gn| D ]}|tv rtd|  q	t| tS )Nzduplicate decomp: %s)callabledecompositionslogwarningdecompregister_decomposition)r    op r)   L/var/www/auris/lib/python3.10/site-packages/torch/_inductor/decomposition.pyr'   }   s
   r'   tensormsgc                 C      d S Nr)   r+   r,   r)   r)   r*   assert_async_msg_decomp      r0   c                 C   r-   r.   r)   r/   r)   r)   r*   "functional_assert_async_msg_decomp   r1   r2   )minmaxsymbolr3   r4   c                C   r-   r.   r)   )r5   r3   r4   r)   r)   r*   sym_constrain_range_for_size   s   r6   xc                 C   s(   |d ur	|  |} |d ur| |} | S r.   )	clamp_min	clamp_max)r7   r3   r4   r)   r)   r*   clamp   s
   

r:   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fullNotImplemented)r;   r<   r=   r>   r)   r)   r*   rB      s
   
rB   alphadimindexrE   c                C   s*   t  s| jtjkrtS t| |||d|dS )NF)ZinplacerE   )r   r>   rA   Zbfloat16rC   r   )r7   rF   rG   r+   rE   r)   r)   r*   	index_add   s   rH   physical_layoutc                    sN   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r;   r)   r*   
<listcomp>   s    z"empty_permuted.<locals>.<listcomp>)len	enumeraterA   emptypermute)r;   rI   r=   permprK   r)   rL   r*   empty_permuted   s   
&rT   grad_outputinputweight
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   devicer@   rC   atensumlistrangerF   convolution_backward)rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   Z	grad_biasZgrad_inpZgrad_weight_r)   r)   r*   rf      s"    

rf   decimalsc                 C   s   d| }t | | d|  S )Ng      $@g      ?)rb   round)r7   rh   Zten_pow_decimalsr)   r)   r*   	round_dec   s   rj   selfbatch2c                 C   s   t jr+| jjdk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cpur   r`   rF   inductorZdecompose_bmmTrF   keepdim)r   coordinate_descent_tuningra   r@   r   shape	unsqueezerc   r;   r   rA   squeezerC   )rk   rl   outr)   r)   r*   bmm  s"   rx   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 )
Nrm   r   r   rn   rp   Zdecompose_addmmTrq      )ra   r@   r   r;   r   rA   rc   rv   ru   r   TrC   )rk   ry   rz   r{   rE   rw   r)   r)   r*   addmm  s*   	r~   input2c                    sV  t jr)jjdk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rztddkrzt ddkrzj	 j	krzt
tt  dkrztd d	  d7  < t fd
dtdD 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 )Nrm   r   r   r`   ro   rn       rp   Zdecompose_mmc                    s    g | ]}|d d f   qS r.   r)   )rJ   ir   rk   r)   r*   rM   K  s     zmm.<locals>.<listcomp>Trq   )r   rs   ra   r@   r   rt   ru   rc   r;   r>   r   rA   numelr   catre   rv   rC   )rk   r   r)   r   r*   mm5  s6   $r   tensorsc                    s   ddl m dtjdtf fdd}tt|| tdkr&d  S dt  k r4t| k r=n nt	j
 S tdkr|tfdd	D r|d }t|j} dk rb t|j n  | t | j|   d  S tS )
Nr   )r   r7   r!   c                    sL   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   rt   )r7   )rF   r   r)   r*   non_empty_tensora  s
     zcat.<locals>.non_empty_tensorr   c                 3   s    | ]	}| d  u V  qdS )r   Nr)   )rJ   t)filtered_tensorsr)   r*   	<genexpr>  s    
zcat.<locals>.<genexpr>)%torch.fx.experimental.symbolic_shapesr   rA   Tensorboolrd   filterrN   clonerb   r   defaultallrt   insertru   expandflattenrC   )r   rF   r   inprt   r)   )rF   r   r   r*   r   Z  s     
 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)Ztype_promotion_kindr>   ra   r   g        )
is_complexrA   whereisnanrealfloatatan2imagr   r   ZINT_TO_FLOATZscalar_tensormathpira   )r7   rg   r>   r   retr)   r)   r*   angle  s   
r   yc                C   s   t | o|  }t |o| }|r|stS |}|d ur"|| }t | j|j}dt jdt jfdd}|| | jj}|||jj}	t j	||	 dd|}
|
S )Nr+   r!   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])rt   AssertionErrorview)r+   Zinitial_dimsZlast_dimZ	new_shapeZreshaped_tensorr)   r)   r*   reshape_tensor_complex  s   
z#add.<locals>.reshape_tensor_complex)Z	start_dim)
rA   Z	is_tensorr   rC   Zpromote_typesr>   r   r   r   r   )r7   r   rE   Zx_is_complex_tensorZy_is_complex_tensorzZcomplex_typer   Z
x_reshapedZ
z_reshapedresultr)   r)   r*   add  s   r   c                 C   s   |   rJ d| S )NzTODO: implement this)r   rk   r)   r)   r*   conj_physical  s   r   c                 C   s   | S r.   r)   r   r)   r)   r*   lift  r1   r   otherc                 C   s   t t ||| kB | |S r.   rA   r   r   rk   r   r)   r)   r*   fmin     r   c                 C   s   t t ||| k B | |S r.   r   r   r)   r)   r*   fmax  r   r   Frr   c                 C       | j tjkrtj| ||dS tS Nrq   )r>   rA   r   anyrC   rk   rF   rr   r)   r)   r*   amax     r   c                 C   r   r   )r>   rA   r   r   rC   r   r)   r)   r*   amin  r   r   startlengthc                 C   s   t | ||| S r.   )rA   Znarrowr   )rk   rF   r   r   r)   r)   r*   narrow_copy  s   r   c                 C   s   t | | S r.   )rb   r   r   )rk   r;   r)   r)   r*   view_copy_default  s   r   r>   c                 C   s   |  | S r.   )tor   )rk   r>   r)   r)   r*   view_copy_dtype  s   r   memory_formatc                 C   s    |t ju s	|d u rt| S |S r.   )rA   preserve_formatutilsZsuggest_memory_format)r+   r   r)   r)   r*   get_like_layout  s   
r   )r>   ra   r   ra   c                K   :   t jg |  f|p| j|p| jd|jt| |dS Nr   r   )rA   Zrandr;   r>   ra   r   r   rk   r>   ra   r   r=   r)   r)   r*   	rand_like     	

r   c                K   r   r   )rA   Zrandnr;   r>   ra   r   r   r   r)   r)   r*   
randn_like/  r   r   )r>   layoutra   
pin_memoryrequires_gradr   r   r   r   c                C   s>   t jg |  ||p| j|p| j|p| j|djt| |dS )N)r>   r   ra   r   r   )rA   rB   r;   r>   r   ra   r   r   )rk   r<   r>   r   ra   r   r   r   r)   r)   r*   	full_like@  s   

r   highc                K   s@   t jjd|g |  f|p| j|p| jd|jt| |dS )Nr   r   r   rb   randintlowr;   r>   ra   r   r   )rk   r   r>   ra   r   r=   r)   r)   r*   randint_likeV  s   


r   r   c                K   s@   t jj||g |  f|p| j|p| jd|jt| |dS r   r   )rk   r   r   r>   ra   r   r=   r)   r)   r*   randint_like_lowj  s   

r   c                 K   s   t jjd| |fi |S Nr   )rb   r   r   )r   r;   r=   r)   r)   r*   r     s   r   biasc                 C   s*   t jj|}t jj| ||| d S r   )rA   r    
_quantizedZ$wrapped_fbgemm_pack_gemm_matrix_fp16Z!wrapped_fbgemm_linear_fp16_weightr;   )rV   rW   r   packed_weightr)   r)   r*   #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 r.   )rA   r    r   Z_wrapped_linear_prepackZ#_wrapped_quantized_linear_prepacked)rV   r   r   rW   r   r   r   r   r   r   r   r)   r)   r*   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   rA   Zint32)rJ   nr   r)   r*   r     s   " zPq_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.<locals>.<genexpr>)r   r   r`      little   r|      r   )sys	byteorderr   rA   float32)r   r7   r   r   wr)   r   r*   bitcast_u8_to_f32  s   
((z=q_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.i)rA   r   r   r   )r   r   scalesoffsetsr)   r)   r*   "q_embedding_bag_byte_unpack_decomp  s    r   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 )Nrm   r   r   )r   r   r   r   _expand_grid)ra   rA   Zis_contiguousZcontiguous_formatdecomp_grid_sampler_2d)r   r   r   r   r   r   outputr)   r)   r*   grid_sampler_2d  s   r   left_tensorsright_tensorsscalarc                 C      t jj| t j|||dS NrD   )rb   _foreach_addList_foreach_mulrk   r   r   r   r)   r)   r*   _foreach_addcmul_scalar     r  c                 C   r  r  )rb   r  r  Z_foreach_divr  r)   r)   r*   _foreach_addcdiv_scalar  r  r	  start_tensorsend_tensorsc              	   C   "   t j| t jt j|| |S r.   )rb   r  r  r  Scalar_foreach_sub)r
  r  rW   r)   r)   r*   _foreach_lerp_scalar     r  scalarsc              	   C   r  r.   )rb   r  r  r  
ScalarListr  )r
  r  r  r)   r)   r*   _foreach_lerp_scalarlist  r  r  running_meanrunning_vartrainingexponential_average_factorepsilonc              
   C   sB   t | |||||||\}}	}
|r||	|
fS ||d|dfS )Nr   )rb   native_batch_normZ	new_zeros)rV   rW   r   r  r  r  r  r  r   bcr)   r)   r*   miopen_batch_norm  s    

r  .c                   C   s   i t tS r.   )r#   r   r)   r)   r)   r*   fast_random_decomps0  s   r  c                   C   s   t jrtS t S )z"decomps can change based on config)r   Zfallback_randomr#   r  r)   r)   r)   r*   select_decomp_table7  s   r  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_featurern   r   c                 s   s    | ]}|  V  qd S r.   )r   )rJ   r7   r)   r)   r*   r   K  s    z!masked_scatter.<locals>.<genexpr>)Zcodegen.commonr"  r#  ra   ZMASKED_SCATTER_WITH_INDEXrb   Zbroadcast_tensorsreshapeZcumsum_unsafe_masked_indexrA   r   r   rt   rC   )
rk   r   r!  r"  r#  Z
source_idxZ	self_flatZ	mask_flatZsource_flatr   r)   r)   r*   masked_scatter>  s   r&  	quant_min	quant_maxepsc           	      C   sv   t | \}}|| t||  }t |t |g}|t || t j }t |||}|t j	|t j
fS r.   )rA   Zaminmaxr   r4   r   ri   r   intr:   Zfloat64int64)	rV   r'  r(  r)  r>   Zmin_valZmax_valscaleZ
zero_pointr)   r)   r*   choose_qparams_tensorQ  s   r-  
accumulatec                 C   s.   |   }t||g||j|}|| jS r.   )r   rA   Z	index_putr$  rt   )rk   rG   r!  r.  Z	flattenedr)   r)   r*   puta  s
   r/  c                 C   s   t j| |||d}| |S )N)r.  )rb   r/  Zcopy_)rk   rG   r!  r.  rw   r)   r)   r*   put_o  s   
r0  r   input_dtypec                 C   sD   | | }t j||dd}t| ||}| j|kr||}| S )NTrq   )rA   rc   r   fmar>   r   
contiguous)rU   r   rF   r1  Znew_grad_outputZsum_new_gradZ
grad_inputr)   r)   r*   _softmax_backward_dataz  s   

r4  Tinclude_selfsrcreduction_typer6  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   Tr5  )r   r>   Zis_floating_pointr   rA   Z	ones_likerH   Z
index_fillZ
zeros_likeZmasked_fillr   rb   Zscatter_reduce_twora   r@   rC   rt   r   re   ndimr   r+  Zrepeat_interleaver$  rQ   Zscatter_reduce)rk   rF   rG   r7  r8  r6  Ztrue_divisionZonesrw   countsZrepeatsZindex_shaperR   Zscatter_indexr)   r)   r*   index_reduce  sJ   


(,,
r=  kernel_size	ceil_modec           
      C   s   |dkrddg}|dkrddg}|s|}t |d}t |d}t |d}t |d}|d |d  }tjj||sA|ttjjkrCtS t	
| |||||\}}t	||d | d||}	||	fS )Nr   r   r`   rn   )r   rA   Z	_inductorZloweringZ'should_fallback_max_pool2d_with_indicesZiinfoZint8r4   rC   primsZ#_low_memory_max_pool2d_with_offsetsZ)_low_memory_max_pool2d_offsets_to_indicesr;   )
r7   r>  rY   rZ   r[   r?  Zwindow_sizevalsr   indicesr)   r)   r*   max_pool2d_with_indices  sB   	



rC  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>   )rt   Z	new_emptyrA   r+  rb   rC  rC   )	r7   rD  batchZh_inZw_inZh_outZw_outZo_sizer>  r)   r)   r*   adaptive_max_pool2d  s   rF  	out_int32rightsidesortersorted_sequencerH  rI  rJ  rK  c                C   s(   t j| tj|g| jd||||dd S )N)ra   rG  r   )rb   searchsortedrA   r+   ra   )rL  rk   rH  rI  rJ  rK  r)   r)   r*   searchsorted_scalar
  s   
rN        ?UUUUUU?noiselowerupper	generatorc                 C   sf   |r#| dk}t j| |||d}t|| | | }t||d}	||	fS || d }
t | |
t fS )Nr   )rT  r   r`   )rb   uniformrA   r   
leaky_relur   )rk   rQ  rR  rS  r  rT  Znot_positiverr   Z	noise_outZnegative_sloper)   r)   r*   rrelu_with_noise_functional  s   	rX  )NNr  )r   r   )NFr.   )r   r   F)r   )F)Nr   r   F)rO  rP  FN)	functoolsloggingr   r   typingr   r   r   r   r   Ztyping_extensionsr   rA   Ztorch._decomp_decompr&   Ztorch._prims_commonZ_prims_commonr   Z$torch.ao.quantization.fx._decomposedr   r	   r
   Ztorch._decomp.decompositionsr   r   r   r   Z$torch._decomp.decompositions_for_rngr   Ztorch._dynamo.utilsr   Ztorch._environmentr   Z!torch._higher_order_ops.out_dtyper   Ztorch._inductor.utilsr   r   r   r   r   r   r    r   r   r   r   r   r   r   	getLogger__name__r$   r    rb   r@  Z	quantizedr   Zquantized_decomposedZ_adaptive_avg_pool2d_backwardZindex_selectZaddmvZarangeZbitwise_and_Zbitwise_or_Z
clamp_min_distZ
empty_likeflipZgeluZhardtanhlcmrV  Zlinalg_vector_normZ_log_softmaxZ max_pool2d_with_indices_backwardZ_native_batch_norm_legitZ#_native_batch_norm_legit_functionalZ$_native_batch_norm_legit_no_trainingZ_batch_norm_with_updateZ"_batch_norm_with_update_functionalZ_batch_norm_no_updateZbatch_norm_backwardr  Znative_group_normZnative_layer_normZnll_loss2d_backwardZpermute_copyZrrelu_with_noise_backwardZ_softmaxZsin_Zsqrt_Z_to_copyZtril_indicesZtriu_indicesZunbind_copyr*  Zupsample_bilinear2dZvecr   r   Zinductor_decompositionsr#   Z_unsafe_indexr%  Z#_unsafe_masked_index_put_accumulateZ+_scaled_dot_product_flash_attention_for_cpur   r4  r9   r8   rH   ZgluZselect_scatterZslice_scattersplitr   rv   rc   ZunbindZbaddbmmZdecomps_to_excluderd   Z_opsZOperatorBaseZOpOverloadPacketr'   Z_assert_asyncr,   strr0   Z_functional_assert_asyncr2   r6   ZSymInttypesNumberr:   rB   rT   rf   r   tupleri   rh   rj   rx   r~   r   r   r   r   r   r   Zdetach_r   r   r   r   r   Z	view_copyr   r>   r   r   r   r   ra   r   r   r   r   r   r   Z	low_dtyper   r   Zembedding_bag_byte_unpackr   r   Z_foreach_addcmulr  r  Z_foreach_addcdivr	  Z_foreach_lerpr  r  r  r  Zpy_implZ_CZDispatchKeyZAutograd	lru_cachedictr  r  r&  Zchoose_qparamsr+   r-  r/  r0  r=  rC  rF  rM  rN  rX  	Generatorr)   r)   r)   r*   <module>   s  
	
 !"#$%&'()-




	




	
 


#
5


)


		

	


	


	









	 


42
