o
    b²“ih  ã                   @   s^   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dZdZG dd	„ d	eƒZdS )
é    N)ÚListÚOptionalÚTuple)ÚAcceleratorManagerÚONEAPI_DEVICE_SELECTORÚ-RAY_EXPERIMENTAL_NOSET_ONEAPI_DEVICE_SELECTORÚ
level_zeroÚgpuc                   @   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 )ÚIntelGPUAcceleratorManagerzIntel GPU accelerators.Úreturnc                   C   ó   dS )NÚGPU© r   r   r   úW/home/ubuntu/.local/lib/python3.10/site-packages/ray/_private/accelerators/intel_gpu.pyÚget_resource_name   ó   z,IntelGPUAcceleratorManager.get_resource_namec                   C   s   t S )N)ÚONEAPI_DEVICE_SELECTOR_ENV_VARr   r   r   r   Ú#get_visible_accelerator_ids_env_var   r   z>IntelGPUAcceleratorManager.get_visible_accelerator_ids_env_varc                  C   sV   t j t ¡ d ¡} | d u rd S | dkrg S | dkrg S td }t|  |¡d  d¡ƒS )NÚ Ú
NoDevFilesú:é   ú,)ÚosÚenvironÚgetr
   r   ÚONEAPI_DEVICE_BACKEND_TYPEÚlistÚsplit)Úoneapi_visible_devicesÚprefixr   r   r   Ú+get_current_process_visible_accelerator_ids   s   ÿzFIntelGPUAcceleratorManager.get_current_process_visible_accelerator_idsc                  C   sp   zdd l } W n ty   d } Y nw | d u rdS d}ztd t }|  |¡}|j}W |S  ty7   d}Y |S w )Nr   r   )ÚdpctlÚImportErrorr   ÚONEAPI_DEVICE_TYPEÚSyclContextÚdevice_countÚ	Exception)r"   Únum_gpusÚdev_infoÚcontextr   r   r   Ú!get_current_node_num_accelerators,   s"   ÿ
þþz<IntelGPUAcceleratorManager.get_current_node_num_acceleratorsc                  C   sŒ   zddl } W n ty   d} Y nw | du rdS d}ztd t d }|  |¡}dd |j d¡dd… ¡ }W |S  tyE   d}Y |S w )	a  Get the name of first Intel GPU. (supposed only one GPU type on a node)
        Example:
            name: 'Intel(R) Data Center GPU Max 1550'
            return name: 'Intel-GPU-Max-1550'
        Returns:
            A string representing the name of Intel GPU type.
        r   Nr   z:0z
Intel-GPU-ú-ú éþÿÿÿ)	r"   r#   r   r$   Ú
SyclDeviceÚjoinÚnamer   r'   )r"   Úaccelerator_typer)   Údevr   r   r   Ú!get_current_node_accelerator_type>   s"   	ÿ
 þþz<IntelGPUAcceleratorManager.get_current_node_accelerator_typeÚquantityc                 C   r   )N)TNr   )r5   r   r   r   Ú"validate_resource_request_quantityW   s   z=IntelGPUAcceleratorManager.validate_resource_request_quantityÚvisible_xpu_devicesNc                 C   s>   t j t¡rd S td }|d dd„ | D ƒ¡ t jt ¡ < d S )Nr   r   c                 S   s   g | ]}t |ƒ‘qS r   )Ústr)Ú.0Úir   r   r   Ú
<listcomp>g   s    zZIntelGPUAcceleratorManager.set_current_process_visible_accelerator_ids.<locals>.<listcomp>)r   r   r   Ú$NOSET_ONEAPI_DEVICE_SELECTOR_ENV_VARr   r0   r
   r   )r7   r    r   r   r   Ú+set_current_process_visible_accelerator_ids]   s   þÿzFIntelGPUAcceleratorManager.set_current_process_visible_accelerator_ids)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr8   r   r   r   r   r!   Úintr+   r4   Úfloatr   Úboolr6   r=   r   r   r   r   r
      s0    ÿþÿþr
   )Úloggingr   Útypingr   r   r   Ú%ray._private.accelerators.acceleratorr   Ú	getLoggerr>   Úloggerr   r<   r   r$   r
   r   r   r   r   Ú<module>   s    
