
    &`iu                         d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZ  e j        e          ZdZdZ e            ded	efd
            Z ed          Z G d de          ZdS )    N)	lru_cache)	find_spec)ListOptionalTuple)AcceleratorManagerHABANA_VISIBLE_MODULES-RAY_EXPERIMENTAL_NOSET_HABANA_VISIBLE_MODULESpackage_namereturnc                 H    	 t          |           d uS # t          $ r Y dS w xY w)NF)r   ModuleNotFoundError)r   s    q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/_private/accelerators/hpu.pyis_package_presentr      s<    &&d22   uus    
!!habana_frameworksc                   F   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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 )HPUAcceleratorManagerzIntel Habana(HPU) accelerators.r   c                      dS )NHPU r       r   get_resource_namez'HPUAcceleratorManager.get_resource_name   s    ur   c                      t           S )N)HABANA_VISIBLE_DEVICES_ENV_VARr   r   r   #get_visible_accelerator_ids_env_varz9HPUAcceleratorManager.get_visible_accelerator_ids_env_var!   s    --r   c                      t           j                            t                                          d           } | d S | dk    rg S t          |                     d                    S )N ,)osenvirongetr   r   listsplit)hpu_visible_devicess    r   +get_current_process_visible_accelerator_idszAHPUAcceleratorManager.get_current_process_visible_accelerator_ids%   sc     jnn!EEGG
 
 &4"$$I'--c22333r   c                      t           rGddlmc m}  |                                 r|                                 S t          j        d           dS dS )zAttempt to detect the number of HPUs on this machine.
        Returns:
            The number of HPUs if any were detected, otherwise 0.
        r   NzHPU devices not available)HPU_PACKAGE_AVAILABLEhabana_frameworks.torch.hputorchhpuis_availabledevice_countlogginginfo	torch_hpus    r   !get_current_node_num_acceleratorsz7HPUAcceleratorManager.get_current_node_num_accelerators3   sh     ! 		;;;;;;;;;%%''  --///8999q1r   c                  ~    t           r5ddlmc m}  |                                 r|                                 rdS dS dS )z}Attempt to check if HPU backend is initialized.
        Returns:
            True if backend initialized else False.
        r   NTF)r'   r(   r)   r*   r+   is_initializedr/   s    r   r3   z$HPUAcceleratorManager.is_initializedD   s]     ! 	;;;;;;;;;%%'' I,D,D,F,F tu5r   c                      t                                           r ddlmc m}  d|                                  S t          j        d           dS )zAttempt to detect the HPU family type.
        Returns:
            The device name (GAUDI, GAUDI2) if detected else None.
        r   NzIntel-zHPU type cannot be detected)r   r3   r(   r)   r*   get_device_namer-   r.   r/   s    r   !get_current_node_accelerator_typez7HPUAcceleratorManager.get_current_node_accelerator_typeT   sc     !//11 	;;;;;;;;;9I5577999L67774r   quantityc                     t          | t                    r5|                                 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   )r7   s    r   "validate_resource_request_quantityz8HPUAcceleratorManager.validate_resource_request_quantityb   sm     h&& 	 x/B/B/D/D 	 (::<< A A*2A A A   <r   visible_hpu_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>zUHPUAcceleratorManager.set_current_process_visible_accelerator_ids.<locals>.<listcomp>y   s    :::c!ff:::r   )r   r    r!   $NOSET_HABANA_VISIBLE_MODULES_ENV_VARjoinr   r   )r=   s    r   +set_current_process_visible_accelerator_idszAHPUAcceleratorManager.set_current_process_visible_accelerator_idsp   sf     :>>>?? 	F HH::&9:::;; 	
!EEGG	
 	
 	
r   )__name__
__module____qualname____doc__staticmethodr@   r   r   r   r   r%   intr1   boolr3   r6   r:   r   r<   rF   r   r   r   r   r      s       ))s    \ . . . . \. 4$s)9L 4 4 4 \4 s    \  D    \ x}    \   	tXc]"	#      \  <!#Y<	< < < \< < <r   r   )r-   r   	functoolsr   importlib.utilr   typingr   r   r   %ray._private.accelerators.acceleratorr   	getLoggerrG   loggerr   rD   r@   rM   r   r'   r   r   r   r   <module>rT      s    				       $ $ $ $ $ $ ( ( ( ( ( ( ( ( ( ( D D D D D D		8	$	$!9 'V $ S T     +*+>?? _< _< _< _< _<. _< _< _< _< _<r   