
    &`i                         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 j
        e          ZdZdZi ddd	d
dddddddddddddddddddddd d!d"d#d"d$d"Z G d% d&e          ZdS )'    N)ListOptionalTuple)AcceleratorManager)CUDA_VISIBLE_DEVICES_ENV_VARHIP_VISIBLE_DEVICES*RAY_EXPERIMENTAL_NOSET_HIP_VISIBLE_DEVICES0x66a1zAMD-Instinct-MI500x738czAMD-Instinct-MI1000x7408zAMD-Instinct-MI250X0x740czAMD-Instinct-MI250X-MI2500x740fzAMD-Instinct-MI2100x74a0zAMD-Instinct-MI300A0x74a1zAMD-Instinct-MI300X-OAM0x74a2zAMD-Instinct-MI308X-OAM0x74a9zAMD-Instinct-MI300X-HF0x74a5zAMD-Instinct-MI325X-OAM0x75a0zAMD-Instinct-MI350X-OAM0x75a3zAMD-Instinct-MI355X-OAM0x6798zAMD-Radeon-R9-200-HD-79000x6799zAMD-Radeon-HD-79000x679A0x679Bc                   h   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             Zed	edeeee         f         fd
            Zede	e         ddfd            Zede	e         fd            ZdS )AMDGPUAcceleratorManagerzAMD GPU accelerators.returnc                      dS )NGPU r       u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/_private/accelerators/amd_gpu.pyget_resource_namez*AMDGPUAcceleratorManager.get_resource_name$   s    ur    c                  ~   t           t          j        vr&dt          j        v rt          dt            d          t           } t          j                            t
          d           x}Ut          j                            t           d           x}t
          } n&||k    r t          dt            dt
           d          | S )NROCR_VISIBLE_DEVICESzPlease use z  instead of ROCR_VISIBLE_DEVICESz-Inconsistent values found. Please use either z or .)HIP_VISIBLE_DEVICES_ENV_VARosenvironRuntimeErrorgetr   
ValueError)env_varcuda_valhip_vals      r!   #get_visible_accelerator_ids_env_varz<AMDGPUAcceleratorManager.get_visible_accelerator_ids_env_var(   s     (rz99&"*44[9[[[   .
'CTJJJHW:>>*EtLLLU6H$$  ED_  E  E  fB  E  E  E   r    c                      t           j                            t                                          d           } | d S | dk    rg S | dk    rg S t          |                     d                    S )N 
NoDevFiles,)r'   r(   r*   r   r/   listsplit)amd_visible_devicess    r!   +get_current_process_visible_accelerator_idszDAMDGPUAcceleratorManager.get_current_process_visible_accelerator_ids=   ss     jnn$HHJJD
 
 &4"$$I,..I'--c22333r    c                  6   dd l mc mc m}  d}	 |                                  |                                 }n# t          $ r Y nw xY w	 |                                  n:# t          $ r Y n.w xY w# 	 |                                  w # t          $ r Y w w xY wxY w|S Nr   ) ray._private.thirdparty.pyamdsmi_private
thirdpartypyamdsmismi_initializesmi_get_device_count	Exceptionsmi_shutdown)r=   num_gpuss     r!   !get_current_node_num_acceleratorsz:AMDGPUAcceleratorManager.get_current_node_num_acceleratorsN   s    ;;;;;;;;;;;;		##%%%4466HH 	 	 	D	%%''''   %%''''    s\   (9 A/ 
AA/ AA/ 
A 
A,+A,/B1BB
BBBBc                      	 t                                           } | d S t                               | d                   S # t          $ r Y d S w xY wr9   )r   _get_amd_device_ids_gpu_name_to_accelerator_typer@   )
device_idss    r!   !get_current_node_accelerator_typez:AMDGPUAcceleratorManager.get_current_node_accelerator_typea   s^    	1EEGGJ!t+II*UV-XXX 	 	 	44	s   ? ? 
AAc                 L    | d S 	 t           |          }|S # t          $ r Y d S w xY w)N)amd_product_dictr@   )namematchs     r!   rF   z6AMDGPUAcceleratorManager._gpu_name_to_accelerator_typek   sB    <4	$T*EL 	 	 	44	s    
##quantityc                     dS )N)TNr   )rM   s    r!   "validate_resource_request_quantityz;AMDGPUAcceleratorManager.validate_resource_request_quantityu   s	     |r    visible_amd_devicesNc                     t           j                            t                    rd S d                    d | D                       t           j        t
                                          <   d S )Nr3   c                 ,    g | ]}t          |          S r   )str).0is     r!   
<listcomp>zXAMDGPUAcceleratorManager.set_current_process_visible_accelerator_ids.<locals>.<listcomp>   s    :::c!ff:::r    )r'   r(   r*   !NOSET_HIP_VISIBLE_DEVICES_ENV_VARjoinr   r/   )rP   s    r!   +set_current_process_visible_accelerator_idszDAMDGPUAcceleratorManager.set_current_process_visible_accelerator_ids{   sf     :>>;<< 	F HH::&9:::;; 	
$HHJJ	
 	
 	
r    c                  $   ddl mc mc m}  g }	 |                                  |                                 }t          |          D ]?}|                     |          }|dk    r"|                    t          |                     @n7# t          $ r* Y 	 |                                  dS # t          $ r Y dS w xY ww xY w	 	 |                                  n:# t          $ r Y n.w xY w# 	 |                                  w # t          $ r Y w w xY wxY w|S )zGet the list of GPUs IDs
        Example:
            On a node with 2x MI210 GPUs
            pyamdsmi library python bindings
            return: ['0x740f', '0x740f']
        Returns:
            A list of strings containing GPU IDs
        r   N)r:   r;   r<   r=   r>   r?   rangesmi_get_device_idappendhexr@   pyamdsmi_shutdown)r=   rG   num_devicesrU   dids        r!   rE   z,AMDGPUAcceleratorManager._get_amd_device_ids   s    	<;;;;;;;;;;;
	##%%%"7799K;'' 0 00033!88%%c#hh///0  	 	 	**,,,,,   		0**,,,,   **,,,,    sr   A7B C& 
B<C& B* *
B87B8;B<<C& C 
C#"C#&D(C=<D=
D
D	D

D)__name__
__module____qualname____doc__staticmethodrS   r"   r/   r   r   r7   intrC   rH   rF   floatr   boolrO   rY   rE   r   r    r!   r   r   !   s       s    \     \( 4$s)9L 4 4 4 \4  s    \$ x}    \   \ 	tXc]"	#   \
 <!#Y<	< < < \< c    \  r    r   )loggingr'   typingr   r   r   %ray._private.accelerators.acceleratorr   $ray._private.accelerators.nvidia_gpur   	getLoggerrb   loggerr&   rW   rJ   r   r   r    r!   <module>rp      s    				 ( ( ( ( ( ( ( ( ( ( D D D D D D M M M M M M		8	$	$3 $P !!" # )	
 " # ' ' & ' ' ' ) " "  "! (A A A A A1 A A A A Ar    