o
    پiQ
                     @   sX   d dl Z d dlmZ d dlmZ d dlZd dlZd dlmZm	Z	m
Z
 G dd de	ZdS )    N)	lru_cache)Any)CpuArchEnumPlatformPlatformEnumc                   @   s   e Zd ZejZdZdZdZe	de
fddZe	d dedefdd	Ze	d dedefd
dZe	eddd dedefddZe	dedB defddZe		d!dejjdB defddZe					d"dededededef
ddZe	defddZdS )#CpuPlatformCPUcpureturnc                 C   s.   t   }|dv rtjS |dv rtjS tjS )zGet the CPU architecture.)x86_64amd64i386i686)arm64aarch64)platformmachinelowerr   X86ARMUNSPECIFIED)clsr    r   _/home/ubuntu/.local/lib/python3.10/site-packages/sglang/multimodal_gen/runtime/platforms/cpu.pyget_cpu_architecture   s   z CpuPlatform.get_cpu_architecturer   	device_idc                 C      t  S N)r   	processorr   r   r   r   r   get_device_name%      zCpuPlatform.get_device_namec                 C   r   r   )r   r   r   r   r   r   get_device_uuid)   r!   zCpuPlatform.get_device_uuid   )maxsizec                 C   s
   t  jS r   )psutilvirtual_memorytotalr   r   r   r   get_device_total_memory-   s   
z#CpuPlatform.get_device_total_memoryenforce_eagerNc                 C      dS )NTr   )r   r)   r   r   r   is_async_output_supported3      z%CpuPlatform.is_async_output_supporteddevicec                 C   r*   )Ng        r   )r   r-   r   r   r   get_current_memory_usage7   s   z$CpuPlatform.get_current_memory_usageFTdistributedempty_cache	cpu_groupc           
      C   s^   t  j}d}|| }|r+dd lm} tj|tjd}	|j|	|j	j
|d t|	 }|d S )Nr#   r   )dtype)opgroupi   @)r%   r&   	availabletorch.distributedr/   torchtensorfloat32
all_reduceReduceOpMINfloatitem)
r   r   r/   r0   r1   total_free_memoryn_numa_nodefree_memorydistr8   r   r   r   get_available_gpu_memory>   s   
	z$CpuPlatform.get_available_gpu_memoryc                 C   r*   )Nz_sglang.multimodal_gen.runtime.distributed.device_communicators.cpu_communicator.CpuCommunicatorr   )r   r   r   r   get_device_communicator_clsV   r,   z'CpuPlatform.get_device_communicator_cls)r   r   )r   FTN)__name__
__module____qualname__r   r   _enumdevice_namedevice_typedispatch_keyclassmethodr   r   intstrr    r"   r   r(   boolr+   r7   typesDevicer=   r.   r   rC   rD   r   r   r   r   r      sR    

r   )r   	functoolsr   typingr   r%   r7   1sglang.multimodal_gen.runtime.platforms.interfacer   r   r   r   r   r   r   r   <module>   s   