o
    پi                     @   s   U d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
Zd dlZd dlmZ d dlmZ e eZG dd	 d	ZeG d
d dZdae	e ed< dd ZdefddZdS )    N)	dataclass)shared_memory)Path)ListOptional)get_naive_distributed)check_cuda_resultc                   @   s6   e Zd ZdefddZdd Zdedejfdd	Z	d
S )HostSharedMemoryManager	base_namec                 C   s   t || _d| _g | _d S )Nr   )r   
_base_name_operation_index_records)selfr
    r   W/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/utils/host_shared_memory.py__init__   s   

z HostSharedMemoryManager.__init__c                C   s.   t j||dd}| j|jd}||j| S )Nmeta)sizedtypedevice)	num_bytes)torchempty_malloc_rawnbytesview)r   shaper   meta_tensorrawr   r   r   malloc   s   zHostSharedMemoryManager.mallocr   returnc                C   s   dd l m  m} |  jd7  _| j d| j }t  dkr(tj|d|d}t 	  t  dkr:tj|d}t
j|ft
j|jd}t|}t|| ||j t 	  | jt|||d |S )	Nr      _opT)namecreater   )r#   )r   buffer)shmnp_arraytensor)cuda.bindings.runtimebindingsruntimer   r   r   get_rankr   SharedMemorybarriernpndarrayuint8bufr   
from_numpyr   cudaHostRegisterdata_ptrcudaHostRegisterPortabler   append_Record)r   r   cuda_rtshm_namer&   r'   r(   r   r   r   r      s0   


z#HostSharedMemoryManager._malloc_rawN)
__name__
__module____qualname__strr   r   intr   Tensorr   r   r   r   r   r	      s    r	   c                   @   s,   e Zd ZU ejed< ejed< ej	ed< dS )r8   r&   r'   r(   N)
r;   r<   r=   r   r-   __annotations__r/   r0   r   r@   r   r   r   r   r8   ?   s   
 

r8   	_instancec                   C   s   t d usJ t S NrB   r   r   r   r   get_host_shared_memory_managerJ   s   rE   instancec                 C   s   t d u sJ | a d S rC   rD   )rF   r   r   r   set_host_shared_memory_managerO   s   rG   )loggingdataclassesr   multiprocessingr   pathlibr   typingr   r   numpyr/   r   (sglang.srt.distributed.naive_distributedr   sglang.srt.utilsr   	getLoggerr;   loggerr	   r8   rB   rA   rE   rG   r   r   r   r   <module>   s    
 
/