o
    áÙ·iÉ	  ã                   @   sZ   d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 ee
ƒZG dd„ deeƒZdS )é    N)Úinit_logger)ÚXPUPlatform)ÚDiffusionAttentionBackendEnum)ÚOmniPlatformÚOmniPlatformEnumc                   @   sî   e Zd ZdZejZedefdd„ƒZ	edefdd„ƒZ
ededB d	edefd
d„ƒZedefdd„ƒZedefdd„ƒZeddedB dejfdd„ƒZedefdd„ƒZededB fdd„ƒZeddd„ƒZeddejdB defdd„ƒZdS )ÚXPUOmniPlatformz³XPU/Intel GPU implementation of OmniPlatform.

    Inherits all XPU-specific implementations from vLLM's XPUPlatform,
    and adds Omni-specific interfaces from OmniPlatform.
    Úreturnc                 C   ó   dS )Nz8vllm_omni.platforms.xpu.worker.xpu_ar_worker.XPUARWorker© ©Úclsr
   r
   úT/home/ubuntu/.local/lib/python3.10/site-packages/vllm_omni/platforms/xpu/platform.pyÚget_omni_ar_worker_cls   ó   z&XPUOmniPlatform.get_omni_ar_worker_clsc                 C   r	   )NzHvllm_omni.platforms.xpu.worker.xpu_generation_worker.XPUGenerationWorkerr
   r   r
   r
   r   Úget_omni_generation_worker_cls   r   z.XPUOmniPlatform.get_omni_generation_worker_clsÚselected_backendNÚ	head_sizec                 C   s@   |d ur|  ¡ }t| }t d|¡ | ¡ S t d¡ tj ¡ S )Nz&Using diffusion attention backend '%s'z.Defaulting to diffusion attention backend SDPA)Úupperr   ÚloggerÚinfoÚget_pathÚ
TORCH_SDPA)r   r   r   Úbackend_upperÚbackendr
   r
   r   Úget_diffusion_attn_backend_cls   s   

z.XPUOmniPlatform.get_diffusion_attn_backend_clsc                 C   r	   )NFr
   r   r
   r
   r   Úsupports_torch_inductor.   ó   z'XPUOmniPlatform.supports_torch_inductorc                 C   r	   )Nz%vllm_omni/platforms/xpu/stage_configsr
   r   r
   r
   r   Úget_default_stage_config_path3   r   z-XPUOmniPlatform.get_default_stage_config_pathÚ
local_rankc                 C   s   |d u r	t  d¡S t  d|¡S )NÚxpu)ÚtorchÚdevice)r   r   r
   r
   r   Úget_torch_device7   s   
z XPUOmniPlatform.get_torch_devicec                 C   s
   t j ¡ S ©N)r    r   Údevice_countr   r
   r
   r   Úget_device_count=   s   
z XPUOmniPlatform.get_device_countc                 C   s   d S r#   r
   r   r
   r
   r   Úget_device_versionA   r   z"XPUOmniPlatform.get_device_versionc                 C   s   t j ¡  d S r#   )r    r   Úsynchronizer   r
   r
   r   r'   F   s   zXPUOmniPlatform.synchronizer!   c                 C   s   t j |¡\}}|S r#   )r    r   Úmem_get_info)r   r!   ÚfreeÚ_r
   r
   r   Úget_free_memoryJ   s   zXPUOmniPlatform.get_free_memoryr#   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚXPUÚ
_omni_enumÚclassmethodÚstrr   r   Úintr   Úboolr   r   r    r!   r"   r%   r&   r'   r+   r
   r
   r
   r   r      s:    þýü r   )r    Úvllm.loggerr   Úvllm.platforms.xpur   Ú/vllm_omni.diffusion.attention.backends.registryr   Úvllm_omni.platforms.interfacer   r   r,   r   r   r
   r
   r
   r   Ú<module>   s   