
    )`i                     B   d dl mZ d dlZddlmZmZmZmZ ddlm	Z	m
Z
mZmZ dZdej        dej        d	ej        d
ej        fdZ	 ddej        dej        dej        dej        deej                 f
dZdej        dej        fdZdej        dej        dej        fdZdS )    )OptionalN   )merge_state_in_place_kernelmerge_state_kernelmerge_states_kernel#variable_length_merge_states_kernel)check_device	check_dimcheck_inputcheck_shape	   v_as_av_bs_bc                 ,  
 t          |            t          |           t          |           t          |           t          | |||gt          g           t          d|            t          d|           t          d|           t          d|           t	          | |           t	          ||           |                     d          |                    d          k    sJ |                     d          |                    d          k    sJ |                    t          j                  }|                    t          j                  }|                     d          
|                     d          }|                     d          }t          j	        |                               |j
                  }t          j        
|f                              |j
                  }|}|}	t          
fd         | |||||||||	
  
         ||fS )Nmajor      r   r   c                 
    fS N )metaseq_lens    m/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/flashinfer/triton/cascade.py<lambda>zmerge_state.<locals>.<lambda>*   s	    WJ     bdxbdy)r   r	   EXPECT_HOPPERr
   r   sizetotorchfloat32
empty_likedeviceemptyr   )r   r   r   r   	num_headshead_dimv_mergeds_mergedr    r!   r   s             @r   merge_stater.      s    #sC%m_====aaaaSS88A;;#((1++%%%%88A;;#((1++%%%%
&&

C
&&

ChhqkkGIxx{{H$$''
33H{GY/0033CJ??H
C
C..../S#sHh	8RU    Xr   vsv_others_othermaskc                    t          |            t          |           t          |           t          |           t          | |||gt          g           t          d|            t          d|           t          d|           t          d|           t	          | |           t	          ||           |                     d          |                    d          k    sJ |                     d          |                    d          k    sJ |j        t          j        k    sJ |j        t          j        k    sJ |Pt          d|           |                     d          |                    d          k    sJ |j	        | j	        k    sJ |                     d          }|                     d          }|                     d          }|}|}	t          |f         | ||||||||		  	         d S )Nr   r   r   r   r   r   )r   r	   r"   r
   r   r#   dtyper%   r&   r(   r   )
r/   r0   r1   r2   r3   r   r*   r+   r    r!   s
             r   merge_state_in_placer6   1   s    NNNNNN!Q)-AAAAaOOOaOOOaa7766!99q		!!!!66!99q		!!!!7em####=EM))))!TvvayyDIIaLL(((({ah&&&&ffQiiGq		IvvayyH
C
C
+	1gw	8Ts     r   c                    t          |            t          |           t          | |gt          g           t          d|            t          d|           |                     d          |                    d          k    sJ |                     d          |                    d          k    sJ |                     d          |                    d          k    sJ |                     d          }|                     d          }|                     d          }|                     d          }|                    t          j                  }t          j        |||f| j	        | j
                  }t          j        ||f|j	        |j
                  }|}|}	t          |f         | ||||||||		  	         ||fS )	Nr      r   r   r   r   r5   r(   r   )r   r	   r"   r
   r#   r$   r%   r&   r)   r5   r(   r   )
r/   r0   r   num_index_setsr*   r+   r,   r-   r    r!   s
             r   merge_statesr;   V   s   NNNNNN!Q////aOOOaOOO66!99q		!!!!66!99q		!!!!66!99q		!!!!ffQiiGVVAYYNq		IvvayyH	U]A{	)X&agah  H {GY/qwqxPPPH
C
C
#		
 
 
 
 Xr   indptrc                 D   t          |            t          |           t          | |gt          g           t          d|            t          d|           |                     d          |                    d          k    sJ |                     d          |                    d          k    sJ |                    d          dz
  }|                     d          }|                     d          }|                    t          j                  }|                    t          j                  }t          j	        |||f| j
        | j                  }t          j	        ||f|j
        |j                  }|}|}	t          |f         | ||||||||		  	         ||fS )Nr   r   r   r   r   r9   r   )r   r	   r"   r
   r#   r$   r%   r&   int32r)   r5   r(   r   )
r/   r0   r<   r   r*   r+   r,   r-   r    r!   s
             r   variable_length_merge_statesr?   y   s    NNNNNN!Q////aOOOaOOO66!99q		!!!!66!99q		!!!!kk!nnq Gq		IvvayyH	U]AYYu{##F{	)X&agah  H {GY/qwqxPPPH
C
C'
3		
 
 
 
 Xr   r   )typingr   r%   kernels.cascader   r   r   r   utilsr	   r
   r   r   r"   Tensorr.   r6   r;   r?   r   r   r   <module>rD      s                     E D D D D D D D D D D D	!L/4|BG,   L $(" "|"|" \" \	"
 5<
 " " " "J EL  U\        F!|!!.3l! ! ! ! ! !r   