o
    پi                     @  s   d dl mZ 	 d dlZd dlmZmZmZ d dlZd dlm	Z	m
Z
mZmZmZmZmZ d dlmZ er?d dlmZ d dlmZ eeZG dd	 d	e	ZG d
d deZdS )    )annotationsN)TYPE_CHECKINGAnyOptional)BasePrefixCacheEvictParamsEvictResultInsertParamsInsertResultMatchPrefixParamsMatchResult)SWATokenToKVPoolAllocator)Req)CacheInitParamsc                   @  s   e Zd Zd/ddZd0ddZed	d
 Zdd Zd1ddZd2ddZ	d3d4ddZ
d5d6ddZd7d d!Zd8d$d%Zd9d:d)d*Zd+d, Zd-d. Zd&S );
ChunkCacheparamsr   c                 C  s@   |j | _ |j| _|j| _| jr| jj| _ntd| _d| _d S )Ncpur   )req_to_token_pooltoken_to_kv_pool_allocator	page_sizedevicetorchprotected_size_selfr    r   T/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/mem_cache/chunk_cache.py__init__   s   
zChunkCache.__init__returnboolc                 C     dS NTr   r   r   r   r   is_chunk_cache)      zChunkCache.is_chunk_cachec                 C  r    r!   r   r"   r   r   r   disable/      zChunkCache.disablec                 C  s   d S Nr   r"   r   r   r   reset3   r$   zChunkCache.resetr   r   c                 C  s   t tjdtjdd d dS )N)r   )dtype)device_indiceslast_device_nodelast_host_node)r   r   emptyint64r   r   r   r   match_prefix6   s
   zChunkCache.match_prefixr	   r
   c                 C  s
   t ddS )Nr   )
prefix_len)r
   r   r   r   r   insert=   s   
zChunkCache.insertTreqr   	is_insertc                 C  s.   |  }| jj|jd |f }| j| d S r'   )pop_committed_kv_cacher   req_to_tokenreq_pool_idxr   free)r   r2   r3   kv_committed_len
kv_indicesr   r   r   cache_finished_reqA   s
   zChunkCache.cache_finished_reqFc                 C  s2   | j j|jd t|jf }|jtjdd|_d S )NT)r)   copy)	r   r5   r6   lenfill_idstor   r.   prefix_indices)r   r2   chunkedr9   r   r   r   cache_unfinished_reqI   s   zChunkCache.cache_unfinished_reqr   r   c                 C     t  S r'   r   r   r   r   r   evictP      zChunkCache.evictnoder   c                 C  r    Nr   r   )r   rF   r   r   r   inc_lock_refS   r$   zChunkCache.inc_lock_refNswa_uuid_for_lockOptional[str]c                 C  r    rG   r   )r   rF   rI   r   r   r   dec_lock_refV   r$   zChunkCache.dec_lock_refc                 C  r    rG   r   r"   r   r   r   protected_sizeY   r&   zChunkCache.protected_sizec                 C  r    )N r   r"   r   r   r   pretty_print]   r$   zChunkCache.pretty_printr   r   r   r   )r   r   r   r   )r   r	   r   r
   )T)r2   r   r3   r   )F)r2   r   r   r   r   r   )rF   r   r'   )rF   r   rI   rJ   )__name__
__module____qualname__r   r#   propertyr%   r(   r/   r1   r:   rA   rD   rH   rK   rL   rN   r   r   r   r   r      s    






r   c                      s6   e Zd ZdZd fddZddd	ZdddZ  ZS )SWAChunkCachez5ChunkCache with support for sliding window attention.r   r   c                   s0   t |jtsJ t | |j| _|j| _d S r'   )
isinstancer   r   superr   sliding_window_sizechunked_prefill_sizer   	__class__r   r   r   d   s   zSWAChunkCache.__init__r   r   c                 C  s   | j d us	J ddS )Nz1sliding_window_size must be set for SWAChunkCacheT)rY   r"   r   r   r   supports_swak   s   zSWAChunkCache.supports_swar   r   c                 C  rB   r'   rC   r   r   r   r   rD   q   rE   zSWAChunkCache.evictrO   rP   rQ   )rR   rS   rT   __doc__r   r]   rD   __classcell__r   r   r[   r   rV   a   s
    
rV   )
__future__r   loggingtypingr   r   r   r   &sglang.srt.mem_cache.base_prefix_cacher   r   r   r	   r
   r   r   $sglang.srt.mem_cache.swa_memory_poolr   "sglang.srt.managers.schedule_batchr   &sglang.srt.mem_cache.cache_init_paramsr   	getLoggerrR   loggerr   rV   r   r   r   r   <module>   s    $	
D