o
    پi|                     @  s   d dl mZ d dlZd dlmZ d dlmZmZmZ er&d dl	Z	d dl
mZ dZed+ddZdddd,ddZd-ddZddddd.d d!Zdddd"d/d)d*ZdS )0    )annotationsN)TYPE_CHECKING)
cache_onceload_jitmake_cpp_args)Module   element_sizeintunrollblock_quotareturnr   c                 C  sD   t | ||d}tdg|R dgdd| dfdd| dfgd	S )
N   hicachezhicache.cuh
launch_onez&HiCacheKernel<z
>::run_one
launch_allz
>::run_all)
cuda_filescuda_wrappers)r   r   )r	   r   r   args r   M/home/ubuntu/.local/lib/python3.10/site-packages/sglang/jit_kernel/hicache.py_jit_hicache_module   s    r   )r   r   
int | Noneboolc              
   C  s   t t}| d dkr|d| d dS z|pt| }|p t}t| ||d W dS  tyE } z|d|  W Y d }~dS d }~ww )	N   r   zUnsupported element_size = z for JIT HiCache kernelFr	   r   r   Tz#Failed to load JIT HiCache kernel: )logging	getLogger__name__warning_default_unrollDEFAULT_BLOCK_QUOTAr   	Exception)r	   r   r   loggerer   r   r   can_use_hicache_jit_kernel"   s$   
r%   c                 C  s   | dkrdS | dkrdS dS )Ni      r   r      r   )r	   r   r   r   r    :   s
   r    )element_dimr   r   k_cache_dsttorch.Tensorv_cache_dstindices_dstk_cache_srcv_cache_srcindices_srcr(   Nonec                C  s   |p|  d}|d|}|d|}| d|} |d|}||   }	|p(t}|p.t|	}t|	||d}
|
| ||||| d S )Nr   )sizeviewr	   r!   r    r   r   )r)   r+   r,   r-   r.   r/   r(   r   r   r	   moduler   r   r   transfer_hicache_one_layerE   s*   r5   r   	k_ptr_dst	v_ptr_dst	k_ptr_src	v_ptr_srckv_cache_src_stride_byteskv_cache_dst_stride_bytesc             
   C  sV   |d u r||ks
J |}|
pt }
|	pt|}	t||	|
d}|| ||||||| d S )Nr   )r!   r    r   r   )r6   r7   r,   r8   r9   r/   r:   r;   r	   r   r   r4   r   r   r   transfer_hicache_all_layerh   s(   r<   )r	   r
   r   r
   r   r
   r   r   )r	   r
   r   r   r   r   r   r   )r	   r
   r   r
   )r)   r*   r+   r*   r,   r*   r-   r*   r.   r*   r/   r*   r(   r   r   r   r   r   r   r0   )r6   r*   r7   r*   r,   r*   r8   r*   r9   r*   r/   r*   r:   r
   r;   r
   r	   r   r   r   r   r   r   r0   )
__future__r   r   typingr   sglang.jit_kernel.utilsr   r   r   torchtvm_ffi.moduler   r!   r   r%   r    r5   r<   r   r   r   r   <module>   s,    
-