o
    
۾iQ                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	Z	de
fddZde
fd	d
ZddedefddZ	ddee deedf fddZede
fddZede
fddZdS )    N)Sequence)ProcessPoolExecutor)cache)Anyreturnc                   C      t j sdS t j S )zCheck if CUDA is initialized.F)torchcuda_is_compiledis_initialized r   r   M/home/ubuntu/.local/lib/python3.10/site-packages/vllm/utils/platform_utils.pycuda_is_initialized      

r   c                   C   r   )zCheck if XPU is initialized.F)r   xpur
   r   r   r   r   r   xpu_is_initialized   r   r   	device_idc                 C   s   t j| jS )z=Returns the total number of compute units (CU) on single GPU.)r   r	   get_device_propertiesmulti_processor_count)r   r   r   r   get_cu_count   s   r   Fnames.c                    sz   |st  rtj|  t fdd|D S td}td|d}|t	| |d
 W  d   S 1 s6w   Y  dS )z_Get specified CUDA device property values without initializing CUDA in
    the current process.c                 3   s    | ]}t  |V  qd S )N)getattr).0namepropsr   r   	<genexpr>'   s    z-cuda_get_device_properties.<locals>.<genexpr>fork   )max_workers
mp_contextTN)r   r   r	   r   tuplemultiprocessingget_contextr   submitcuda_get_device_propertiesresult)devicer   	init_cudamp_ctxexecutorr   r   r   r%       s   

$r%   c                  C   s   ddl m}  |  S )Nr   current_platform)vllm.platformsr,   is_pin_memory_availabler+   r   r   r   r.   /   s   r.   c                   C   s   t  S )z7Check if Unified Virtual Addressing (UVA) is available.)r.   r   r   r   r   is_uva_available6   s   r/   )r   )F)r"   collections.abcr   concurrent.futures.processr   	functoolsr   typingr   r   boolr   r   intr   strr!   r%   r.   r/   r   r   r   r   <module>   s&   

