
    &`i?                         d dl Z d dlZd dlZd dlmZmZmZ d dlmZ  ej	        e
          ZdZdZ G d de          ZdS )    N)ListOptionalTuple)AcceleratorManagerASCEND_RT_VISIBLE_DEVICES0RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICESc                   *   e Zd ZdZedefd            Zedefd            Zedee	e                  fd            Z
edefd            Zedee         fd            Zededeeee         f         fd	            Zed
e	e         ddfd            ZdS )NPUAcceleratorManagerzAscend NPU accelerators.returnc                      dS )NNPU r       q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/_private/accelerators/npu.pyget_resource_namez'NPUAcceleratorManager.get_resource_name   s    ur   c                      t           S )N)!ASCEND_RT_VISIBLE_DEVICES_ENV_VARr   r   r   #get_visible_accelerator_ids_env_varz9NPUAcceleratorManager.get_visible_accelerator_ids_env_var   s    00r   c                      t           j                            t                                          d           } | d S | dk    rg S | dk    rg S t          |                     d                    S )N 
NoDevFiles,)osenvirongetr
   r   listsplit)ascend_visible_devicess    r   +get_current_process_visible_accelerator_idszANPUAcceleratorManager.get_current_process_visible_accelerator_ids   ss    !#!EEGG"
 "
 ")4!R''I!\11I*0055666r   c                  j   	 ddl } | j                                        \  }}|dk    r|S n2# t          $ r%}t                              d|           Y d}~nd}~ww xY w	 t          j        d          }t          |          S # t          $ r%}t                              d|           Y d}~nd}~ww xY wdS )zAttempt to detect the number of NPUs on this machine.

        NPU chips are represented as devices within `/dev/`, either as `/dev/davinci?`.

        Returns:
            The number of NPUs if any were detected, otherwise 0.
        r   NzCould not import AscendCL: %sz/dev/davinci[0-9]*z#Failed to detect number of NPUs: %s)aclrtget_device_count	Exceptionloggerdebuggloblen)r!   device_countrete	npu_filess        r   !get_current_node_num_acceleratorsz7NPUAcceleratorManager.get_current_node_num_accelerators,   s    	=JJJ # 7 7 9 9L#axx##  	= 	= 	=LL8!<<<<<<<<	=	C	"677Iy>>! 	C 	C 	CLL>BBBBBBBB	Cqs,   '+ 
AAA"B 
B0B++B0c                      	 ddl } |                                 S # t          $ r t                              d           Y nw xY wdS )zGet the type of the Ascend NPU on the current node.

        Returns:
            A string of the type, such as "Ascend910A", "Ascend910B", "Ascend310P1".
        r   NzFailed to detect NPU type.)r!   get_soc_namer$   r%   	exception)r!   s    r   !get_current_node_accelerator_typez7NPUAcceleratorManager.get_current_node_accelerator_typeE   s]    	;JJJ##%%% 	; 	; 	;9:::::	;ts    $A Aquantityc                     dS )N)TNr   )r2   s    r   "validate_resource_request_quantityz8NPUAcceleratorManager.validate_resource_request_quantityT   s	     |r   visible_npu_devicesNc                     t           j                            t                    rd S d                    d | D                       t           j        t
                                          <   d S )Nr   c                 ,    g | ]}t          |          S r   )str).0is     r   
<listcomp>zUNPUAcceleratorManager.set_current_process_visible_accelerator_ids.<locals>.<listcomp>c   s    :::c!ff:::r   )r   r   r   'NOSET_ASCEND_RT_VISIBLE_DEVICES_ENV_VARjoinr
   r   )r5   s    r   +set_current_process_visible_accelerator_idszANPUAcceleratorManager.set_current_process_visible_accelerator_idsZ   sf     :>>ABB 	F HH::&9:::;; 	
!EEGG	
 	
 	
r   )__name__
__module____qualname____doc__staticmethodr8   r   r   r   r   r   intr-   r1   floatr   boolr4   r>   r   r   r   r
   r
      sZ       ""s    \ 1 1 1 1 \1 7$s)9L 7 7 7 \7  s    \0 x}    \ 	tXc]"	#   \
 <!#Y<	< < < \< < <r   r
   )r'   loggingr   typingr   r   r   %ray._private.accelerators.acceleratorr   	getLoggerr?   r%   r   r<   r
   r   r   r   <module>rK      s      				 ( ( ( ( ( ( ( ( ( ( D D D D D D		8	$	$$? !6 (
S< S< S< S< S<. S< S< S< S< S<r   