o
    $i	                     @   sV   d dl Z d dlZd dlmZmZ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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   [/home/ubuntu/veenaModal/venv/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_quantity9   s   
z9RBLNAcceleratorManager.validate_resource_request_quantityvisible_rbln_devicesNc                 C   s,   t tsdtt| t jt < d S d S )Nr   )	r   getenv%NOSET_RBLN_RT_VISIBLE_DEVICES_ENV_VARjoinmapstrr   r   r   )r)   r   r   r   +set_current_process_visible_accelerator_idsG   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   	getLoggerr0   r   r   r+   r   r   r   r   r   <module>   s    
