
    .`i                     X    d dl Z d dlZd dlZd dlZd dlZd ZddZd e            fdZdS )    Nc                      |             }| j         |j        _         | j        |j        _        | j        |j        _        | j         |_         | j        |_        | j        |_        | j         d| j         |_        |S )z
    A decorator that allow you to write something of the form:

    @cacheable
    def my_kernel(): return (expression dynamically defining a kernel)

    such that it interacts gracefully with triton cache and preload.
    .)__name__fn
__module____qualname___fn_name)fgs     ~/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/third_party/triton_kernels/specialize.py	cacheabler      sj     	
AJADMlADOADAJ<AL^ANL331>33AJH    c                    d }t          d
i |j        }|                    |           t          j        |j        |          }|j        |_        t          j	        |           } | | 
                    d          d         } g }| dd                             d          d                                         }|}	|	                    d|i           t          | dz   |z   d	z   |	           t          j        |d                   |_        ||_        |d         j        |_        |t                      }t%          j        |fi |}|                    |            |S )z
    Dynamically create a Triton function or kernel from a src string,
    linking any symbols in the kernel to objects specified by extra_globals.
    c                      d S N r   r   r   	_empty_fnz define_kernel.<locals>._empty_fn$   s    r   def N   (r   stored_functionsz

stored_functions.append(z)
r   )dict__globals__updatetypesFunctionType__code__r   r   textwrapdedentfindsplitstripexecinspect	signature__signature____doc__tritonJITFunction_unsafe_update_src)
srcmoduleattrsextra_globalsr   gdictr
   r   function_nameexec_globalss
             r   define_kernelr2      sa      ++I)++E	LL9-u55A?AL
/#

C
chhv
 CGMM#&&q)//11ML+-=>???-	-	=	E|TTT'(8(;<<AOAJ #+AI}1&&&&AHr   c                      t           t          j        j        j                  sJ | j         }t          j         j                  }t          j
        |          }|                    d          }t          d t          |          D                       }|}	||	                                                             d          s2|	dz  }	||	                                                             d          2||	dz   d          }
|||	dz            }d |D             }d                    |          }t#          j        d|          }|st'          d          |                    d          }d	 |                    d
          D             }g }|D ]h}|                    d          d                             d          d                                         }|                    ||g          }||vr||z  }id |                                D                                                z  }d| dd                    |           d}d |                                D             }d |                                D             }d                    d|g|z   |z   |
z             }t          j        t          j        j        j        j                  }t7          |j                                                  dd          } fd|D             }|d          fd}||d<   |r||d<   t=          |||fi |}|S )N
c              3   n   K   | ]0\  }}|                                                     d           ,|V  1dS )defN)r"   
startswith).0ilines      r   	<genexpr>zspecialize.<locals>.<genexpr>J   sB      WWD

8O8OPU8V8VW1WWWWWWr   :   c                     g | ]^}|                     d d          d                                         0|                     d d          d                                         _S )#r=   r   )r!   r"   )r8   ls     r   
<listcomp>zspecialize.<locals>.<listcomp>R   sh       773??1##%%	Q  ""  r    z\((.*)\)\s*:zCould not parse function headerc                 ^    g | ]*}|                                 |                                 +S r   )r"   )r8   args     r   rA   zspecialize.<locals>.<listcomp>]   s-    FFFC#))++FCIIKKFFFr   ,r   =c                 l    i | ]1\  }}t          |t          j        j        j                  )|j        |2S r   )
isinstancer(   runtimejitr)   r   )r8   kvs      r   
<dictcomp>zspecialize.<locals>.<dictcomp>e   s7    mmm$!Qz!V^M_Mk?l?lm
Ammmr   r   r   z, z):c                 P    g | ]#\  }}d | dt          |          r|j        n| $S )    z: tl.constexpr = )callabler   r8   keyvalues      r   rA   zspecialize.<locals>.<listcomp>i   sM       XbX[]bSsSSx%QU^^ESS  r   c           	          g | ]>\  }}d | ddd                     |          z   t          |          dk    rdndz   dz    ?S )rO   z = r   rE   r=    ))joinlenrQ   s      r   rA   zspecialize.<locals>.<listcomp>l   sh       ZdZ]_dUsUUsSXXe__,s5zz1}}"MPSSUU  r   z@triton.jit   c                 R    i | ]#}|j         t          |j         |j                  $S r   )namegetattrdefault)r8   paramr   s     r   rM   zspecialize.<locals>.<dictcomp>s   s-    TTTEUZUZ??TTTr   reprc                      |           }                                 D ]8}|                    d           }|r|                    d          }|r|d| z  }9|S )N_)valuesr_   r"   )specializationretspec_fn	spec_repr	base_reprspec_fnss       r   new_reprzspecialize.<locals>.new_reprx   ss    i''(( 	' 	'GT**I 1%OOC00	 '9&
r   do_not_specialize)rH   r(   rI   rJ   r)   r   r$   	getsourcer   r   r   r!   next	enumeraterstripendswithrW   research
ValueErrorgroupr"   getitemsget_capture_scoper%   __init__list
parametersrb   r2   )!r   r,   	constantstuplesr[   rj   r+   linesdef_idx
header_end
body_linesheader_linesheader_clean
header_srcmargs_strargsnon_specialized_argsrD   arg_keynew_argsglobalsnew_signatureconstexpr_linestuple_linesnew_srcsigparamsr-   ri   rd   rg   rh   s!   `                              @@r   
specializer   A   s   b&.,899999|+

BE
"
"C
/#

CIIdOOEWWIe$4$4WWWWWGJJ&&((11#66 a
 J&&((11#66 zA~'Ja/0L   L ,''J
	/:..A <:;;;wwqzzHFF8>>##6#6FFFD - -))C..#))#..q17799::gu--)## H, mm)//*;*;mmmH--///GE4EE$)),@"A"AEEEM fofufufwfw  O hnhththvhv  K ii6H;VYccddG

FN.:C
D
DC#.''))**122.FTTTTVTTTE fI      E&M 7%6!"

:
:'
:
:CJr   r   )	r$   rp   r   r   r(   r   r2   tupler   r   r   r   <module>r      s     				     *! ! ! !H 485577 F F F F F Fr   