o
    Ō,Ėh{  ć                   @   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mZmZm	Z	m
Z
 d dlmZmZ d dlZd dlmZ d dlmZ d dlZd dlmZmZmZ d dlmZmZ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/m0Z0m1Z1 ddl2m3Z3m4Z4 ddlm5Z5m6Z6m7Z7 e	dZ8edZ9e
ej:j;ej:j<f Z=ee>d< e ?e@”ZAejBjCZCejBjDZDejBjEZEejBjFZFejBjGZGeg eCjHeCjIeCjJeCjKeCjLeCjMeCjNeCjOeCjPeCjQeCjReCjSeCjTeCjUeCjVeCjWeCjXeCjYeCjZeCj[eCj\eCj]eCj^eCj_eCj`eCjaeCjbeCjceCjdeCjeeCjfeCjgeCjheCjie(eCjjeCjkeCjleCjmjneCjojpeEjqeFjrZsi e „es„ZteCjueCjveCjweCjxjyeCjzeCj{eCj|eCjeCj}eCj~eCjeCjeCjjeCjeCjeCjeCjgZee
ej:jej:j<f  e>d< eete de
e=ee= f deee9e8f gee9e8f f fddZeeCjgdejdejdendendedejfddZeeCjjgdejd eddfd!d"ZeeCjjgdejd eddfd#d$ZeeCjjygddd%d&ejd'eejj d(eejj ddfd)d*ZeeCjge 		dód+ejd'eejj d(eejj dejfd,d-ZeeCjgd.ee
enejf  d/ejjd0edejfd1d2ZeeCj}gdd3d+ejd4end5ejdejd6ejjdejfd7d8Z}eeCjjygd.ee
enejf  d9een d0edejfd:d;ZeeCjgdejd<ejd=ejd>een d?e
eneen f d@e
eneen f dAe
eneen f dBedCeen dDendEee deejejejf fdFdGZeeCjjgdōd+ejdHendejfdIdJZeeCjge	dõdKejdLejdMeej  dejfdNdOZeeCj”ge			dödKejdPejdQejdMeej  dRejjd6ejjdejfdSdTZ”eeCj¢ge	dõdKejdUejdMeej  dejfdVdWZ¢eeCj£jyg	 dōdXeej d4endejfdYdZZ£eeCj¤gd+ejdejfd[d\Z¤eeCj„gdd3d+ejd]ejd6eejj dejfd^d_Z„eeCj¦gdKejdejfd`daZ¦eeCj§eCjØgdKejdejfdbdcZ§eeCj©eDj©gdKejddejdejfdedfZ©eeCjŖeDjŖgdKejddejdejfdgdhZŖeeCj«		id÷dKejd4een djedejfdkdlZ«eeCj¬		id÷dKejd4een djedejfdmdnZ¬eeCj­gdKejd4endoendpendejf
dqdrZ­eeCj®jygdKejd.ee
enejf  dejfdsdtZÆeeCj®j gdKejduej dejfdvdwZ°	dõdejdxeej± dej±fdydzZ²eeCj³dddd{dKejdueej  d|eej“ dxeej± d0edejfd}d~Z³eeCjµdddd{dKejdueej  d|eej“ dxeej± d0edejfddZµeeCj¶ddddidiej·ddKejd/e
eneøf dueej  deej¹ d|eej“ dededxej±dejfddZ¶eeCjŗjydddd{dKejdendueej  d|eej“ dxeej± d0edejfddZŗeeCjŗj»dddd{dKejdendendueej  d|eej“ dxeej± d0edejfddZ¼eeCj½jydend.ee
enejf  d0edejfddZ½eeEjqjyd<ejd=ejdejdejfddZqeeFjrjyd<ejdejdejd=ejdejdejdejdejdejdendejfddZreejBjEj¾dejdejfddZæeeCjĄge	 	 	idųdejdejd end”end¢edejfd£d¤ZĄeeCjĮjĀ	dłdKeej d„eej d¦eej d§eødeej f
dØd©ZĆeeCjÄjĀ	dłdKeej d„eej d¦eej d§eødeej f
dŖd«ZÅeeCjĘjĀd¬eej d­eej d=ejjdeej fd®dÆZĒeeCjĘjČd¬eej d­eej d°eejj deej fd±d²ZÉeCjŹjy ĖejĢjĶjĪ”eeCjŹd<ejd=ejdejej d³ejej d“ejej dµed¶eød·eødeejejejf fdød¹ZŹe jĻdeŠeedŗef f fd»d¼ZŃdeŠeedŗef f fd½d¾ZŅeeCjÓdKejdæejdĄejdejfdĮdĀZÓeeGjŌjÕd<ejdĆendÄendÅeøduej deejejf fdĘdĒZÖeeCj×	idśdKejd5ejdĄejdČedejf
dÉdŹZ×eeCjŲ	idśdKejd5ejdĄejdČedejf
dĖdĢZŲeeCjzjyedejdĶejd4endĪej dejf
dĻdŠZzeeCjŁdŃdŅdKejd4end5ejdÓejdŌedÕedejfdÖd×ZŁd+ejdŲeen d?ee
eneen f  d@e
eneen f dAe
eneen f dŁed4endeejejf fdŚdŪZŚeeCjŪ		 		idūd+ejdŲeen d?ee
eneen f  d@e
eneen f dAe
eneen f dŁedeejejf fdÜdŻZŪeeCjÜ		 		idūd+ejdŲeen d?ee
eneen f  d@e
eneen f dAe
eneen f dŁedeejejf fdŽdßZÜeeCjŻd+ejdąeen deejejf fdįdāZŻeeCjŽjĀdididddćdäejdKejjdåedęedēee dčeej dejfdédźZßeeCją	ė	ģ	i	düdKejdķejdīeødļeødµedšeejį deejejf fdńdņZądS )żé    N)ŚAnyŚCallableŚOptionalŚTypeVarŚUnion)Ś	ParamSpecŚ	TypeAlias)Ś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)Śguard_or_falseŚguard_size_obliviousŚ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© r0   śX/var/www/html/scripts/venv/lib/python3.10/site-packages/torch/_inductor/decomposition.pyr.      s
   r.   Śgrad_outputŚindicesŚnum_weightsŚpadding_idxŚscale_grad_by_freqc                 C   s   | j rtS t| ||||S ©N)Śis_xpuŚNotImplementedŚdecomp_embedding_dense_backward)r2   r3   r4   r5   r6   r0   r0   r1   Ś_embedding_dense_backward   s
   

’r;   ŚtensorŚmsgc                 C   ó   d S r7   r0   ©r<   r=   r0   r0   r1   Śassert_async_msg_decomp§   ó   r@   c                 C   r>   r7   r0   r?   r0   r0   r1   Ś"functional_assert_async_msg_decomp­   rA   rB   )ŚminŚmaxŚsymbolrC   rD   c                C   r>   r7   r0   )rE   rC   rD   r0   r0   r1   Śsym_constrain_range_for_size²   s   rF   Śxc                 C   s(   |d ur	|   |”} |d ur|  |”} | S r7   )Ś	clamp_minŚ	clamp_max)rG   rC   rD   r0   r0   r1   Śclamp¼   s
   

rJ   Ś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Śfullr9   )rK   rL   rM   rN   r0   r0   r1   rR   Ź   s
   
rR   ©ŚalphaŚdimŚindexrT   c                C   s*   t  s| jtjkrtS t| |||d|dS )NF)ŚinplacerT   )r   rN   rQ   Śbfloat16r9   r   )rG   rU   rV   r<   rT   r0   r0   r1   Ś	index_add×   s   rY   Śphysical_layoutc                    sN   dgt   }t|D ]\}}|||< qtj fdd|D fi |¤ |”S )Nr   c                    s   g | ]} | qS r0   r0   )Ś.0Śl©rK   r0   r1   Ś
<listcomp>ö   s    z"empty_permuted.<locals>.<listcomp>)ŚlenŚ	enumeraterQ   ŚemptyŚpermute)rK   rZ   rM   ŚpermŚpr\   r0   r]   r1   Śempty_permutedķ   s   
&re   Ś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   ŚdevicerP   r9   ŚatenŚsumr)   ŚrangerU   Śconvolution_backward)r2   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   Ś	grad_biasŚgrad_inpŚgrad_weightŚ_r0   r0   r1   ru   ł   s"    
õ
ru   Śdecimalsc                 C   s   d| }t  | | ”d|  S )Ng      $@g      š?)rr   Śround)rG   rz   Śten_pow_decimalsr0   r0   r1   Ś	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   rp   é’’’’©rU   r   ŚinductorŚdecompose_bmmT©rU   Śkeepdim)r   Ścoordinate_descent_tuningrq   rP   r   ŚshapeŚ	unsqueezers   rK   r   rQ   Śsqueezer9   )r~   r   r   Śoutr0   r0   r1   Śbmm   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   é   )rq   rP   r   rK   r   rQ   rs   r   r   r   ŚTr9   )r~   r   r   r   r   rT   r   r0   r0   r1   Śaddmm:  s*   
’’ž’žżr   Śinput2c                    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 jjdkr©t 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r©t  d”dkr©td	 d
  d7  < tj d”  d” ddd d”S tS )Nr   r   r   rp   r   r   r   é    r   Śdecompose_mmc                    s    g | ]}|d d f   qS r7   r0   )r[   Śi©r   r~   r0   r1   r^   r  s     zmm.<locals>.<listcomp>Tr   )r   r   rq   rP   r   r   r   rs   rK   rN   r   rQ   Śnumelr   Ścatrt   r   r9   )r~   r   r   r0   r   r1   ŚmmX  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rtfd	d
D rd }t|j} dk rr t|j n  |  t” |  ”j|    d ” 
” S tS )NrG   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   )rG   r   r0   r1   Śnon_empty_tensor  s
     zcat.<locals>.non_empty_tensorr   Śtype_promotion_kindr   ©rN   c                 3   s    | ]	}| d  u V  qdS )r   Nr0   )r[   Śt)Śfiltered_tensorsr0   r1   Ś	<genexpr>²  s    
’zcat.<locals>.<genexpr>)rQ   ŚTensorŚboolr)   Śfilterr_   r   r   ŚDEFAULTrN   ŚcloneŚtorr   r   ŚdefaultŚallr   Śinsertr   ŚexpandŚflattenr9   )r   rU   r   Śpromoted_dtypeŚ
filtered_tŚinpr   r0   )rU   r£   r1   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    ©rN   rq   r   g        )Ś
is_complexrQ   ŚwhereŚisnanŚrealŚfloatŚatan2Śimagr   r   ŚINT_TO_FLOATŚscalar_tensorŚmathŚpirq   )rG   ry   rN   ræ   Śretr0   r0   r1   Ś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}| 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]rp   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_tensorr0   r0   r1   Śreshape_tensor_complexę  s   ’
z#add.<locals>.reshape_tensor_complexr   éž’’’)Ś	start_dim)
rQ   Ś	is_tensorrµ   r9   Śpromote_typesrN   r„   rÄ   rø   rÆ   )rG   rĀ   rT   Śx_is_complex_tensorŚy_is_complex_tensorŚzŚcomplex_typerÉ   Ś
x_reshapedŚ
z_reshapedŚresultr0   r0   r1   ŚaddÓ  s   rÕ   c                 C   s   |   ” rtS | S r7   )rµ   r9   ©r~   r0   r0   r1   Śconj_physical  s   r×   c                 C   s   | S r7   r0   rÖ   r0   r0   r1   Ślift  rA   rŲ   Śotherc                 C   s   t  t  |”|| kB | |”S r7   ©rQ   r¶   r·   ©r~   rŁ   r0   r0   r1   Śfmin  ó   rÜ   c                 C   s   t  t  |”|| k B | |”S r7   rŚ   rŪ   r0   r0   r1   Śfmax  rŻ   rŽ   Fr   c                 C   ó    | j tjkrtj| ||dS tS ©Nr   )rN   rQ   r¦   Śanyr9   ©r~   rU   r   r0   r0   r1   Śamax  ó   rć   c                 C   rß   rą   )rN   rQ   r¦   r¬   r9   rā   r0   r0   r1   Śamin"  rä   rå   ŚstartŚlengthc                 C   s   t  | |||” ” S r7   )rQ   Śnarrowr©   )r~   rU   rę   rē   r0   r0   r1   Śnarrow_copy-  s   ré   c                 C   s   t  | |” ” S r7   )rr   rÄ   r©   )r~   rK   r0   r0   r1   Śview_copy_default7  s   rź   rN   c                 C   s   |   |” ” S r7   )rŖ   r©   )r~   rN   r0   r0   r1   Śview_copy_dtype?  s   rė   Śmemory_formatc                 C   s    |t ju s	|d u rt | ”S |S r7   )rQ   Śpreserve_formatŚutilsŚsuggest_memory_format)r<   rģ   r0   r0   r1   Śget_like_layoutG  s   
rš   )rN   rq   rģ   rq   c                K   ó:   t jg |  ” ¢f|p| j|p| jd|¤jt| |dS ©Nr“   ©rģ   )rQ   ŚrandrK   rN   rq   rŖ   rš   ©r~   rN   rq   rģ   rM   r0   r0   r1   Ś	rand_likeR  ó   	
’żü
ūrö   c                K   rń   rņ   )rQ   ŚrandnrK   rN   rq   rŖ   rš   rõ   r0   r0   r1   Ś
randn_likec  r÷   rł   )rN   Ślayoutrq   Ś
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)rN   rś   rq   rü   ró   )rQ   rR   rK   rN   rś   rq   rŖ   rš   )r~   rL   rN   rś   rq   rū   rü   rģ   r0   r0   r1   Ś	full_liket  s   
ś
łrż   Śhighc                K   s@   t jjd|g |  ” ¢f|p| j|p| jd|¤jt| |dS )Nr   r“   ró   ©rr   ŚrandintŚlowrK   rN   rq   rŖ   rš   )r~   rž   rN   rq   rģ   rM   r0   r0   r1   Śrandint_like  s   

żūś
łr  r  c                K   s@   t jj||g |  ” ¢f|p| j|p| jd|¤jt| |dS rņ   r’   )r~   r  rž   rN   rq   rģ   rM   r0   r0   r1   Śrandint_like_low  s   
żūś
łr  c                 K   s   t jjd| |fi |¤S ©Nr   )rr   r   r  )rž   rK   rM   r0   r0   r1   r   ³  s   r   Śbiasc                 C   s*   t jj |”}t jj | ||| ” d ”S r  )rQ   r&   Ś
_quantizedŚ$wrapped_fbgemm_pack_gemm_matrix_fp16Ś!wrapped_fbgemm_linear_fp16_weightrK   )rf   rg   r  Śpacked_weightr0   r0   r1   Ś#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 r7   )rQ   r&   r  Ś_wrapped_linear_prepackŚ#_wrapped_quantized_linear_prepacked)rf   r  r  rg   r  r  r  r  r  r  r	  r0   r0   r1   Ś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Ŗ   rQ   Śint32)r[   Śn©r  r0   r1   r¤   ę  s   " zPq_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.<locals>.<genexpr>)r   r   rp   é   Ślittleé   r   é   r  )ŚsysŚ	byteorderrÄ   rQ   Śfloat32)r  rG   rĀ   rŠ   Śwr0   r  r1   Śbitcast_u8_to_f32å  s   
((z=q_embedding_bag_byte_unpack_decomp.<locals>.bitcast_u8_to_f32.ių’’’éü’’’)rQ   r„   rŖ   r!  )r  r#  ŚscalesŚoffsetsr0   r0   r1   Ś"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 )Nr   r   ró   )r)  r*  r+  r,  Ś_expand_grid)rq   rQ   Śis_contiguousŚcontiguous_formatŚdecomp_grid_sampler_2d)r(  r)  r*  r+  r,  r-  Śoutputr0   r0   r1   Śgrid_sampler_2dń  s   ’żśr2  Śleft_tensorsŚright_tensorsŚscalarc                 C   ó   t jj| t j ||”|dS ©NrS   )rr   Ś_foreach_addŚListŚ_foreach_mul©r~   r3  r4  r5  r0   r0   r1   Ś_foreach_addcmul_scalar  ó   ’r<  c                 C   r6  r7  )rr   r8  r9  Ś_foreach_divr;  r0   r0   r1   Ś_foreach_addcdiv_scalar  r=  r?  Śstart_tensorsŚend_tensorsc              	   C   ó"   t j | t j t j || ”|””S r7   )rr   r8  r9  r:  ŚScalarŚ_foreach_sub)r@  rA  rg   r0   r0   r1   Ś_foreach_lerp_scalar(  ó   ’žrE  Śscalarsc              	   C   rB  r7   )rr   r8  r9  r:  Ś
ScalarListrD  )r@  rA  rG  r0   r0   r1   Ś_foreach_lerp_scalarlist6  rF  rI  Śrunning_meanŚrunning_varŚtrainingŚexponential_average_factorŚepsilonc              
   C   sB   t  | |||||||”\}}	}
|r||	|
fS || d”| d”fS )N©r   )rr   Śnative_batch_normŚ	new_zeros)rf   rg   r  rJ  rK  rL  rM  rN  r(  ŚbŚcr0   r0   r1   Śmiopen_batch_normD  s    
ų
żrT  .c                   C   s   i t „t„S r7   )r*   r   r0   r0   r0   r1   Śfast_random_decompsd  s   rU  c                   C   s   t jrtS t S )z"decomps can change based on config)r   Śfallback_randomr*   rU  r0   r0   r0   r1   Śselect_decomp_tablek  s   rW  Ś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 r7   )rÆ   )r[   rG   r0   r0   r1   r¤     s    z!masked_scatter.<locals>.<genexpr>)Ścodegen.commonrZ  r[  rq   ŚMASKED_SCATTER_WITH_INDEXrr   Śbroadcast_tensorsŚreshapeŚcumsumŚ_unsafe_masked_indexrQ   r¶   rÄ   r   r9   )
r~   rX  rY  rZ  r[  Ś
source_idxŚ	self_flatŚ	mask_flatŚsource_flatrŌ   r0   r0   r1   Śmasked_scatterr  s   rf  Ś	quant_minŚ	quant_maxŚepsc           	      C   sv   t  | ”\}}|| t||  }t  |t  |g””}|t  || ” t j” }t  |||”}| t j	”| t j
”fS r7   )rQ   Śaminmaxr¹   rD   r„   r{   rŖ   ŚintrJ   Śfloat64Śint64)	rf   rg  rh  ri  rN   Śmin_valŚmax_valŚscaleŚ
zero_pointr0   r0   r1   Śchoose_qparams_tensor  s   rr  Ś
accumulatec                 C   s.   |   ” }t ||g| |j”|”}| | j”S r7   )rÆ   rQ   Ś	index_putr_  r   )r~   rV   rY  rs  Ś	flattenedr0   r0   r1   Śput  s
   ’rv  c                 C   s   t j| |||d}|  |”S )N)rs  )rr   rv  Ścopy_)r~   rV   rY  rs  r   r0   r0   r1   Śput_£  s   
rx  r1  Śinput_dtypec                 C   sD   | | }t j||dd}t | ||”}| j|kr| |”}| ” S )NTr   )rQ   rs   r   ŚfmarN   rŖ   Ś
contiguous)r2   r1  rU   ry  Śnew_grad_outputŚsum_new_gradŚ
grad_inputr0   r0   r1   Ś_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    rN   Śis_floating_pointrµ   rQ   Ś	ones_likerY   Ś
index_fillŚ
zeros_likeŚmasked_fillr!   rr   Śscatter_reduce_Śtworq   rP   r9   r   r   rt   ŚndimrŖ   rm  Śrepeat_interleaver_  rb   Śscatter_reduce)r~   rU   rV   r  r  r  Śtrue_divisionŚonesr   ŚcountsŚrepeatsŚindex_shaperc   Śscatter_indexr0   r0   r1   Ś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   Ś	functoolsŚreduceŚoperatorŚmulrQ   Ś	_inductorŚloweringŚ%should_fallback_max_pool_with_indicesŚiinfoŚint8rD   r9   ŚprimsŚ!_low_memory_max_pool_with_offsetsŚ'_low_memory_max_pool_offsets_to_indicesr   )rG   r  ri   rj   rk   r  rU   Świndow_sizeŚvalsr&  r3   r0   r0   r1   Ś_max_pool_with_indicesł  sD   	





’’śśr§  c              	   C   ó   t | |||||ddS )Nrp   r   ©r§  ©rG   r  ri   rj   rk   r  r0   r0   r1   Śmax_pool2d_with_indices-  ó   	’r«  c              	   C   rØ  )Nr  r   r©  rŖ  r0   r0   r1   Ś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_emptyrQ   rm  rr   r«  r9   )	rG   r®  ŚbatchŚh_inŚw_inŚh_outŚw_outŚo_sizer  r0   r0   r1   Śadaptive_max_pool2dI  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)rq   r·  r   )rr   ŚsearchsortedrQ   r<   rq   )r¼  r~   rø  r¹  rŗ  r»  r0   r0   r1   Śsearchsorted_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   rp   )rr   ŚuniformrQ   r¶   Ś
leaky_relur„   )r~   rĮ  rĀ  rĆ  rL  rÄ  Śnot_positiveŚrr1  Ś	noise_outŚnegative_sloper0   r0   r1   Śrrelu_with_noise_functionalo  s   	rĖ  )NNrO  r7   )Nr   r   )NF)r   r   F)r   )F)Nr   r   F)ræ  rĄ  FN)ār  Śloggingr¾   r  r  Śtypingr   r   r   r   r   Śtyping_extensionsr   r   rQ   Śtorch._decompŚ_decompr-   Śtorch._prims_commonŚ_prims_commonrī   Ś$torch.ao.quantization.fx._decomposedr	   r
   r   Śtorch._decomp.decompositionsr   r0  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.fx.experimental.symbolic_shapesr   r   r   Ś r   r   r   r    r!   r"   r#   Ś_opsŚOperatorBaseŚOpOverloadPacketr$   Ś__annotations__Ś	getLoggerŚ__name__r+   r&   rr   r¢  Ś	quantizedr  Śquantized_decomposedŚ_adaptive_avg_pool2d_backwardŚindex_selectŚaddmvŚarangeŚ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_backwardrP  Śnative_group_normŚnative_layer_normŚnll_loss2d_backwardŚpermute_copyŚrrelu_with_noise_backwardŚ_softmaxŚsin_Śsqrt_Ś_to_copyŚtril_indicesŚtriu_indicesŚunbind_copyrk  Śupsample_bilinear2dŚvecr
  r  Śinductor_decompositionsr*   Ś_unsafe_indexra  Ś#_unsafe_masked_index_put_accumulateŚ+_scaled_dot_product_flash_attention_for_cpur«   r  rI   rH   rY   ŚgluŚselect_scatterŚslice_scatterŚsplitr„   r   rs   ŚunbindŚbaddbmmr%   r)   Ś
OpOverloadr.   r¦   r;   Ś_assert_asyncr=   Śstrr@   Ś_functional_assert_asyncrB   rF   ŚSymIntŚtypesŚNumberrJ   rR   re   ru   Śtupler{   rz   r}   r   rN   r   r   r   rĮ   rÕ   r×   rŲ   Śdetach_rÜ   rŽ   rć   rå   ré   Ś	view_copyrź   rė   rģ   rš   rö   rq   rł   rż   rķ   r¹   rś   r  Ś	low_dtyper  r   Śembedding_bag_byte_unpackr'  r2  Ś_foreach_addcmulrC  r<  Ś_foreach_addcdivr?  Ś_foreach_lerprE  rH  rI  rT  Śpy_implŚ_CŚDispatchKeyŚAutogradŚcacheŚdictrU  rW  rf  Śchoose_qparamsr<   rr  rv  rx  r  r§  r«  r­  r¶  r½  r¾  rĖ  Ś	Generatorr0   r0   r0   r1   Ś<module>   sJ  
’
’žżüūśłų	÷
öõōóņńšļīķģėźéčēęåäćāį ą!ß"Ž#Ż$Ü%Ū&Ś'Ł(Ų)×*Ö’. ļ
’
ž
	’žżüūśü’
ż
üū
	ż’
ž
żü
’žżü
ś’žżüśł’žżü
’žżüūśłų	÷
öõō 
ż’žżü
ś’žżüūśł
ż’žżü'ž’žż
=
ü’ž
üū
-ż’žżü
ż’žżü

’žżüū	’žż’žż	ž’ž
żū’żüūśłū’żüūśł÷’
žüūśłų	÷
ö
ś’žüūśłų
ł’žżūśłų	÷
’žżü
’žżü
’žżüūśłų	÷
öõ
ū’žżüūś
ü’žżüū
ü’žżüū
’žżü
’ž
żü’ž
ż
ü
ūśłų	÷ ’žżü
’žżüūśü’žżüūü’žżüū

’žżüūł’žżüūłų4’žżüūśł
ų4ś’žżüūśłś’žżüūśł’’ž
ł’žüūśłųś’žżüūśł