o
    á)iÅ
  ã                   @   sÂ   d dl mZ d dlmZ d dlmZ d dlmZ eeƒZ	e 
¡ r2d dlmZ ejZd dlmZmZ ne ¡ rEd dlmZ ejZejZejZdd	ed
ee fdd„Zd
efdd„Zd
efdd„ZdS )é    )ÚOptional)Úenvs)Úinit_logger©Úcurrent_platform)Ú_custom_ops)Úflash_attn_varlen_funcÚget_scheduler_metadata)Úipex_opsFÚrequires_alibiÚreturnc              	   C   sô   ddl m} | ¡ rdS zaddlm}m} | ¡ }|d usJ ‚|jdkr*|dƒr*dnd}tj	d ur;tj	dv s8J ‚tj	}|jdkrK|dkrKt
 d	¡ d}| rX|dkrXt
 d
¡ d}||ƒset
 d|||ƒ¡ ||ƒskJ ‚|W S  ttfyy   Y d S w )Nr   r   é   )Úfa_version_unsupported_reasonÚis_fa_version_supportedé	   é   )r   r   é
   zICannot use FA version 3 on Blackwell platform defaulting to FA version 2.z?Cannot use FA version 3 with ALiBi, defaulting to FA version 2.z3Cannot use FA version %d is not supported due to %s)Úvllm.platformsr   Úis_xpuZ)vllm.vllm_flash_attn.flash_attn_interfacer   r   Úget_device_capabilityÚmajorr   ZVLLM_FLASH_ATTN_VERSIONÚloggerZwarning_onceÚerrorÚImportErrorÚAssertionError)r   r   r   r   Zdevice_capabilityZ
fa_version© r   úi/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/vllm/attention/utils/fa_utils.pyÚget_flash_attn_version   s@   
ÿÿ
ÿ
ÿÿr   c                   C   s   t ƒ dkot ¡ jdkS )Nr   r   )r   r   r   r   r   r   r   r   Úflash_attn_supports_fp8B   s   
ÿr   c                   C   s   t  ¡ pt  ¡ S )N)r   Úis_cudar   r   r   r   r   Ú#is_flash_attn_varlen_func_availableG   s   r    N)F)Útypingr   Zvllmr   Zvllm.loggerr   r   r   Ú__name__r   r   r   ÚopsZreshape_and_cache_flashZvllm.vllm_flash_attnr   r	   r   Zvllm._ipex_opsr
   ÚboolÚintr   r   r    r   r   r   r   Ú<module>   s"   +