
    ̯wg                         d dl mZ d dlZd dlZ	 d dlZd dlmZ ej                  dej                  fd       Z ed      defd       Zd	ej                   defd
Zy# e	$ r	  e
d      w xY w)    )	lru_cacheNz4triton import failed; try `pip install --pre triton`
BLOCK_SIZEc	                 f   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          y )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                         W/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/whisper/triton_ops.py
dtw_kernelr'      s    ii:&GQ;D1a!eai  N
QUk))AO#AO#a'WWR'\-WWR'\-WWR'\-QUh..8t1M2::bjjR&8"==1q5K//!3
G#XD9QUl22Q6	
W$adbBh.?28.LM
W$adbBh.?28.LM
W$adbBh.?28.LM)N    )maxsizefilter_widthc                    t         j                  dt        j                  fd       }t        j                  |j
                        }|j                  j                  ddj                  t        |       D cg c]  }d| d| d c}            |_        |j                  j                  dd	j                  t        | d
z  dz         D cg c]t  }d	j                  t        | |z
  dz
        D cg c]H  }dj                  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      J c}      v c}}            |_        |j                  j                  dd| d
z         |_        |S c c}w c c}w c c}}w )Nr   c                     t        j                  d      }t        j                  d|      }||k  }|||z  z   }| ||z  z   }	t         t         t        j
                  |	|z   t        |       y )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-   sd     --"))Az*!Gh&&Gh&&
/=r(   z    LOAD_ALL_ROWS_HERE
z    rowz = tl.load(x_ptr + offsets + z, mask=mask)z    BUBBLESORT_HEREz

r
   r   z    smaller = tl.where(rowz < rowz, row)z    larger = tl.where(rowz > rowz
 = smallerz	 = largerr0   row)
tritonjitr   	constexprJITFunctionfnsrcreplacejoinr   )r*   r6   ijs       r&   median_kernelrD   +   s   ZZ>.0ll> >  		*F## 		 |, !9!LI	
FJ ## |q0145   "'|a'7!';!<
  		"<QCva!eWERSQTTYZ[^_Z_Y``a b";A3fQUG5QRPSSXYZ]^Y^X__` a")!J 7")!a%	 :	
	
FJ* ##$5\Q=N<O7PQFJM;
s   5E=
#F-AF:	FFr   c                 z   | j                         j                  d|d      }t        j                  |j                  dd       }t        |      }t        j                  |d         }d|j                  d      dz
  j                         z  } ||f   || | j                  d      |j                  d      |       |S )zBApply a median filter of given width along the last dimension of xr   N).r   )r   )

contiguousunfoldnpprodshaperD   torch
empty_likestride
bit_length)r   r*   slicesgridr6   r1   r   s          r&   median_filter_cudarS   b   s    \\^""2|Q7F776<<$%D<(F(Aqxx|a'3355JFD7OAq!((2,LHr(   )	functoolsr   numpyrJ   rM   r:   triton.languagelanguager   ImportErrorRuntimeErrorr;   r<   r'   intrD   TensorrS    r(   r&   <module>r]      s      O 
 NKM<<N N: 43 3 3l%,, c s  O
M
NNOs   
A A,