§
    |@Äj>  ã                   óÜ   — d dl mZ d dlZd dlZ	 d dlZd dlmZ n# e	$ r  e
d¦  «        ‚w xY wej        dej        fd„¦   «         Z ed¬¦  «        defd„¦   «         Zd	ej        defd
„ZdS )é    )Ú	lru_cacheNz4triton import failed; try `pip install --pre triton`Ú
BLOCK_SIZEc	                 ób  — t          j        d|¦  «        }	|	|k     }
t          d||z   dz   ¦  «        D �]{}t          j        ¦   «          | |dz
  |z  z   }| ||z  z   }| ||z  z   dz   }t          j        ||	z   |
¬¦  «        }t          j        ||	z   |
¬¦  «        }t          j        ||	z   |
¬¦  «        }t          j        ||dz
  |z  z   |	z   |
d¬¦  «        }|t          j        t          j        ||¦  «        |¦  «        z   }| |dz   |z  z   dz   }t          j        ||	z   ||
¬¦  «         ||dz   |z  z   dz   }t          j        ||	z   d|
||k    z  ||k    z  ¬¦  «         t          j        ||	z   d|
||k    z  ||k    z  ¬¦  «         t          j        ||	z   d|
||k    z  ||k    z  ¬¦  «         �Œ}d S )Nr   é   ©Úmask)r   Úotheré   )ÚtlÚarangeÚrangeÚdebug_barrierÚloadÚminimumÚstore)ÚcostÚtraceÚxÚx_strideÚcost_strideÚtrace_strideÚNÚMr   Úoffsetsr   ÚkÚp0Úp1Úp2Úc0Úc1Úc2Úx_rowÚcost_rowÚcost_ptrÚ	trace_ptrs                         úCC:\Projects\Historical\venv\Lib\site-packages\whisper/triton_ops.pyÚ
dtw_kernelr'      sü  € õ Œi˜˜:Ñ&Ô&€GØ�QŠ;€Då�1�a˜!‘e˜a‘iÑ Ô ð Nñ NˆÝ
ÔÑÔÐà�Q˜‘U˜kÑ)Ñ)ˆØ�A˜‘OÑ#ˆØ�A˜‘OÑ# aÑ'ˆåŒW�R˜'‘\¨Ð-Ñ-Ô-ˆÝŒW�R˜'‘\¨Ð-Ñ-Ô-ˆÝŒW�R˜'‘\¨Ð-Ñ-Ô-ˆå”˜˜Q ™U hÑ.Ñ.°Ñ8¸tÈ1ÐMÑMÔMˆØ�2œ:¥b¤j°°RÑ&8Ô&8¸"Ñ=Ô=Ñ=ˆà˜1˜q™5 KÑ/Ñ/°!Ñ3ˆÝ
Œ�˜GÑ# X°DÐ9Ñ9Ô9Ð9à˜Q ™U lÑ2Ñ2°QÑ6ˆ	Ý
Œ�˜WÑ$ a¨d°b¸B²hÑ.?À2ÈÂ8Ñ.LÐMÑMÔMÐMÝ
Œ�˜WÑ$ a¨d°b¸B²hÑ.?À2ÈÂ8Ñ.LÐMÑMÔMÐMÝ
Œ�˜WÑ$ a¨d°b¸B²hÑ.?À2ÈÂ8Ñ.LÐMÑMÔMÐMÑMð)Nð Nó    )ÚmaxsizeÚfilter_widthc           
      ó<  ‡ — t           j        dt          j        fd„¦   «         }t          j        |j        ¦  «        }|j                             dd                     d„ t          ‰ ¦  «        D ¦   «         ¦  «        ¦  «        }|                     dd                     ˆ fd„t          ‰ d	z  d
z   ¦  «        D ¦   «         ¦  «        ¦  «        }|                     dd‰ d	z  › �¦  «        }t          |d¦  «        du r|                     |¦  «         d |_        n||_        |S )Nr   c                 óÞ   — t          j        d¦  «        }t          j        d|¦  «        }||k     }|||z  z   }| ||z  z   }	t           t           t          j        |	|z   t          |¬¦  «         d S )Nr   r   )r   Ú
program_idr   ÚLOAD_ALL_ROWS_HEREÚBUBBLESORT_HEREr   ÚMIDDLE_ROW_HERE)
Úyr   r   Úy_strider   Úrow_idxr   r   Úx_ptrÚy_ptrs
             r&   Úkernelzmedian_kernel.<locals>.kernel-   sx   € õ ”- Ñ"Ô"ˆÝ”)˜A˜zÑ*Ô*ˆØ˜Ò!ˆà�G˜hÑ&Ñ&ˆØ�G˜hÑ&Ñ&ˆåÐåˆå
Œ�˜‘¥/¸Ð=Ñ=Ô=Ð=Ð=Ð=r(   z    LOAD_ALL_ROWS_HEREú
c                 ó    — g | ]}d |› d|› d�‘ŒS )ú    rowz = tl.load(x_ptr + offsets + z, mask=mask)© )Ú.0Úis     r&   ú
<listcomp>z!median_kernel.<locals>.<listcomp>B   s<   € ð ð ð àð J˜!ÐIÐI¸!ÐIÐIÐIðð ð r(   z    BUBBLESORT_HEREú

c           	      ót   •— g | ]4}d                       d„ t          ‰|z
  dz
  ¦  «        D ¦   «         ¦  «        ‘Œ5S )r>   c                 ó¢   — g | ]L}d                       d|› d|dz   › d|› d|dz   › d�	d|› d|dz   › d|› d|dz   › d�	d|› d	�d|dz   › d
�g¦  «        ‘ŒMS )r7   z    smaller = tl.where(rowz < rowr   z, rowú)z    larger = tl.where(rowz > rowr9   z
 = smallerz	 = larger)Újoin)r;   Újs     r&   r=   z,median_kernel.<locals>.<listcomp>.<listcomp>N   sÁ   € ð 
ð 
ð 
ð ð Ÿ	š	à b¸QÐ bÐ bÀaÈ!ÁeÐ bÐ bÐRSÐ bÐ bÐZ[Ð^_ÑZ_Ð bÐ bÐ bØ a¸AÐ aÐ aÀQÈÁUÐ aÐ aÐQRÐ aÐ aÐYZÐ]^ÑY^Ð aÐ aÐ aØ 7¨!Ð 7Ð 7Ð 7Ø :¨!¨a©%Ð :Ð :Ð :ð	ñô ð
ð 
ð 
r(   r   )rB   r   )r;   r<   r*   s     €r&   r=   z!median_kernel.<locals>.<listcomp>L   si   ø€ ð ð ð ð ð —’ð
ð 
õ "' |°aÑ'7¸!Ñ';Ñ!<Ô!<ð
ñ 
ô 
ñô ðð ð r(   r
   r   r0   ÚrowÚ_unsafe_update_srcT)ÚtritonÚjitr   Ú	constexprÚJITFunctionÚfnÚsrcÚreplacerB   r   ÚhasattrrE   Úhash)r*   r6   Ú
new_kernels   `  r&   Úmedian_kernelrP   +   sZ  ø€ å„Zð>Ý.0¬lð>ð >ð >ñ „Zð>õ  Ô ¤	Ñ*Ô*€FØ”×#Ò#Ø Ø�	Š	ðð å˜|Ñ,Ô,ðñ ô ñ	
ô 	
ñô €Jð ×#Ò#ØØ�Šðð ð ð õ ˜|¨qÑ0°1Ñ4Ñ5Ô5ðñ ô ñ	
ô 	
ñô €Jð, ×#Ò#Ð$5Ð7P¸\ÈQÑ=NÐ7PÐ7PÑQÔQ€JåˆvÐ+Ñ,Ô,°Ð4Ð4Ø×!Ò! *Ñ-Ô-Ð-ØˆŒˆàˆŒ
à€Mr(   r   c                 óÀ  — |                       ¦   «                              d|d¦  «        }t          j        |j        dd…         ¦  «        }t          |¦  «        }t          j        |d         ¦  «        }d|                     d¦  «        dz
   	                    ¦   «         z  } ||f         || |                      d¦  «        |                     d¦  «        |¬¦  «         |S )zBApply a median filter of given width along the last dimension of xéÿÿÿÿr   Néþÿÿÿ).r   )r   )
Ú
contiguousÚunfoldÚnpÚprodÚshaperP   ÚtorchÚ
empty_likeÚstrideÚ
bit_length)r   r*   ÚslicesÚgridr6   r1   r   s          r&   Úmedian_filter_cudar_   j   s»   € à�\Š\‰^Œ^×"Ò" 2 |°QÑ7Ô7€FÝŒ7�6”<   Ô$Ñ%Ô%€Då˜<Ñ(Ô(€FÝÔ˜ œÑ(Ô(€Aà�q—x’x ‘|”| aÑ'×3Ò3Ñ5Ô5Ñ5€JØ€FˆDˆ7„O�A�q˜!Ÿ(š( 2™,œ,¨¯ª°©¬ÀÐLÑLÔLÐLà€Hr(   )Ú	functoolsr   ÚnumpyrV   rY   rF   Útriton.languageÚlanguager   ÚImportErrorÚRuntimeErrorrG   rH   r'   ÚintrP   ÚTensorr_   r:   r(   r&   ú<module>rh      s  ðØ Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€ðOØ€M€M€MØ Ð Ð Ð Ð Ð Ð øØð Oð Oð OØ
ˆ,ÐMÑ
NÔ
NÐNðOøøøð „ðNØKMÌ<ðNð Nð Nñ „ðNð: €�4ÐÑÔð; ð ;ð ;ð ;ñ Ôð;ð|˜%œ,ð °cð ð ð ð ð ð s   �
 ›,