o
    `۷i
                     @   sb   d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	 e 
eZdZdZG dd deZdS )	    N)ListOptionalTuple)AcceleratorManager)env_boolRBLN_DEVICES.RAY_EXPERIMENTAL_NOSET_RBLN_RT_VISIBLE_DEVICESc                   @   s   e Zd ZdZedefddZedefddZedee	e  fddZ
edefd	d
Zedee fddZededeeee f fddZede	e ddfddZdS )RBLNAcceleratorManagerzRebellions RBLN accelerators.returnc                   C   s   dS )NRBLN r   r   r   T/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/_private/accelerators/rbln.pyget_resource_name      z(RBLNAcceleratorManager.get_resource_namec                   C   s   t S )N)RBLN_RT_VISIBLE_DEVICES_ENV_VARr   r   r   r   #get_visible_accelerator_ids_env_var   r   z:RBLNAcceleratorManager.get_visible_accelerator_ids_env_varc                  C   s2   t jt } | d u rd S | dkrg S | dS )N ,)osenvirongetr	   r   split)visible_devicesr   r   r   +get_current_process_visible_accelerator_ids   s   
zBRBLNAcceleratorManager.get_current_process_visible_accelerator_idsc               
   C   sH   z
ddl m}  |  W S  ty# } ztd| W Y d}~dS d}~ww )z:Detects the number of RBLN devices on the current machine.r   )device_countz!Could not detect RBLN devices: %sN)rebelr   	Exceptionloggerdebug)r   er   r   r   !get_current_node_num_accelerators$      z8RBLNAcceleratorManager.get_current_node_num_acceleratorsc               
   C   sH   z
ddl m}  |  W S  ty# } ztd| W Y d}~dS d}~ww )z.Gets the type of RBLN NPU on the current node.r   )get_npu_namez"Failed to detect RBLN NPU type: %sN)r   r"   r   r   	exception)r"   r   r   r   r   !get_current_node_accelerator_type/   r!   z8RBLNAcceleratorManager.get_current_node_accelerator_typequantityc                 C   s.   t | tr|  sdt  d|  dfS dS )NFzA resource quantity must be whole numbers. The specified quantity z is invalid.)TN)
isinstancefloat
is_integerr	   r   )r%   r   r   r   "validate_resource_request_quantity:   s   
z9RBLNAcceleratorManager.validate_resource_request_quantityvisible_rbln_devicesNc                 C   s,   t tdrd S dtt| tjt < d S )NFr   )	r   %NOSET_RBLN_RT_VISIBLE_DEVICES_ENV_VARjoinmapstrr   r   r	   r   )r*   r   r   r   +set_current_process_visible_accelerator_idsH   s   
zBRBLNAcceleratorManager.set_current_process_visible_accelerator_ids)__name__
__module____qualname____doc__staticmethodr.   r   r   r   r   r   intr    r$   r'   r   boolr)   r/   r   r   r   r   r	      s0    


r	   )loggingr   typingr   r   r   %ray._private.accelerators.acceleratorr   ray._private.ray_constantsr   	getLoggerr0   r   r   r+   r	   r   r   r   r   <module>   s    
