
    &`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 ej        d          Z G d de          ZdS )	    N)ListOptionalTuple)AcceleratorManagerCUDA_VISIBLE_DEVICES+RAY_EXPERIMENTAL_NOSET_CUDA_VISIBLE_DEVICESz\w+\s+([A-Z0-9]+)c                      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dedee         fd            Zedededee         fd            ZdS )NvidiaGPUAcceleratorManagerzNVIDIA GPU accelerators.returnc                      dS )NGPU r       x/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/_private/accelerators/nvidia_gpu.pyget_resource_namez-NvidiaGPUAcceleratorManager.get_resource_name   s    ur   c                      t           S )N)CUDA_VISIBLE_DEVICES_ENV_VARr   r   r   #get_visible_accelerator_ids_env_varz?NvidiaGPUAcceleratorManager.get_visible_accelerator_ids_env_var   s    ++r   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)cuda_visible_devicess    r   +get_current_process_visible_accelerator_idszGNvidiaGPUAcceleratorManager.get_current_process_visible_accelerator_ids   ss    !z~~'KKMMt 
  
  '42%%I<//I(..s33444r   c                      dd l mc mc m}  	 |                                  n# | j        $ r Y dS w xY w|                                 }|                                  |S )Nr   )ray._private.thirdparty.pynvml_private
thirdpartypynvmlnvmlInit	NVMLErrornvmlDeviceGetCountnvmlShutdown)r$   device_counts     r   !get_current_node_num_acceleratorsz=NvidiaGPUAcceleratorManager.get_current_node_num_accelerators-   s    777777777777	OO 	 	 	11	0022   # 
11c                     dd l mc mc m}  	 |                                  n# | j        $ r Y d S w xY w|                                 }d }|dk    rn|                     d          }|                     |          }t          |t                    r|                    d          }t                              |          }|                                  |S )Nr   zutf-8)r!   r"   r#   r$   r%   r&   r'   nvmlDeviceGetHandleByIndexnvmlDeviceGetName
isinstancebytesdecoder
   _gpu_name_to_accelerator_typer(   )r$   r)   cuda_device_typehandledevice_names        r   !get_current_node_accelerator_typez=NvidiaGPUAcceleratorManager.get_current_node_accelerator_type9   s    777777777777	OO 	 	 	44	0022!66q99F 226::K+u-- :)0099+II+VV  	r+   c                 p    | d S t                               |           }|r|                    d          nd S )N   )NVIDIA_GPU_NAME_PATTERNmatchgroup)namer:   s     r   r2   z9NvidiaGPUAcceleratorManager._gpu_name_to_accelerator_typeN   s8    <4'--d33!&0u{{1~~~D0r   quantityc                     dS )N)TNr   )r=   s    r   "validate_resource_request_quantityz>NvidiaGPUAcceleratorManager.validate_resource_request_quantityU   s	     |r   visible_cuda_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>z[NvidiaGPUAcceleratorManager.set_current_process_visible_accelerator_ids.<locals>.<listcomp>d   s    ;;;c!ff;;;r   )r   r   r   "NOSET_CUDA_VISIBLE_DEVICES_ENV_VARjoinr
   r   )r@   s    r   +set_current_process_visible_accelerator_idszGNvidiaGPUAcceleratorManager.set_current_process_visible_accelerator_ids[   sf     :>><== 	F HH;;&:;;;<< 	
'KKMM	
 	
 	
r   instance_type	instancesc                     | |vrd S ||                               di                                d          }|#t          |          dk    sJ |d         d         S d S )NGpuInfoGpusr8   r   Countr   lenrJ   rK   gpuss      r   !get_ec2_instance_num_acceleratorsz=NvidiaGPUAcceleratorManager.get_ec2_instance_num_acceleratorsf   si     	))4'++Ir::>>vFFt99>>>>77##tr   c                     | |vrd S ||                               di                                d          }|#t          |          dk    sJ |d         d         S d S )NrM   rN   r8   r   NamerP   rR   s      r   !get_ec2_instance_accelerator_typez=NvidiaGPUAcceleratorManager.get_ec2_instance_accelerator_typet   sh     	))4'++Ir::>>vFFt99>>>>76?"tr   )__name__
__module____qualname____doc__staticmethodrC   r   r   r   r   r   intr*   r6   r2   floatr   boolr?   rI   dictrT   rW   r   r   r   r
   r
      s       ""s    \ , , , , \, 5$s)9L 5 5 5 \5 	s 	 	 	 \	  x}       \ ( 1 1 \1 	tXc]"	#   \
 ="3i=	= = = \= '+	#   \ '+	#   \  r   r
   )loggingr   retypingr   r   r   %ray._private.accelerators.acceleratorr   	getLoggerrX   loggerr   rG   compiler9   r
   r   r   r   <module>rh      s     				 				 ( ( ( ( ( ( ( ( ( ( D D D D D D		8	$	$5 %R " %"*%9:: n n n n n"4 n n n n nr   