o
    .ic                  	   @   s
  d dl mZ d dlmZ d dlmZ eeZe r)d dl	m
Z
 d dlmZmZ n5e r=d dlmZ ej
Z
ejZejZn!e r^zd dlmZ W n ey]   ded	ed
efddZY nw dded
edB fddZd
efddZd
efddZdd Zd
efddZdS )    )Any)init_loggercurrent_platform)reshape_and_cache_flash)flash_attn_varlen_funcget_scheduler_metadata)ipex_ops)r   argskwargsreturnc                  O   s   t d)Nz\ROCm platform requires upstream flash-attn to be installed. Please install flash-attn first.)ImportError)r
   r    r   `/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/v1/attention/backends/fa_utils.pyr      s   r   Frequires_alibiNc              	   C   s  ddl m} | rdS | rd S ziddlm}m} | }|d us%J |jdkr0|dr0dnd}ddl	m
} | }|d urI|jjd urI|jj}|jdkrY|dkrYtd	 d}| rf|dkrftd
 d}||sstd||| ||syJ |W S  ttfy   Y d S w )Nr   r      )fa_version_unsupported_reasonis_fa_version_supported	      )get_current_vllm_config_or_none
   zJCannot 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_xpuis_rocm)vllm.vllm_flash_attn.flash_attn_interfacer   r   get_device_capabilitymajorvllm.configr   attention_configflash_attn_versionloggerwarning_onceerrorr   AssertionError)r   r   r   r   device_capability
fa_versionr   vllm_configr   r   r   get_flash_attn_version%   sJ   r(   c                   C   s   t  dko	tdS )Nr   Z   )r(   r   is_device_capability_familyr   r   r   r   flash_attn_supports_fp8b   s   
r+   c                   C   s   t  rdS t dkS )NTr   )r   r   r(   r   r   r   r   flash_attn_supports_sinksi   s   
r,   c               	   C   sR   ddl m}  |  r'zddlm} |do| dW S  ttfy&   Y dS w dS )Nr   r   )r   r   r)   F)r   r   is_cudar   r   r*   r   r$   )r   r   r   r   r   flash_attn_supports_mlap   s   r.   c                   C   s   t  pt  S )N)r   r-   r   r   r   r   r   #is_flash_attn_varlen_func_available   s   r/   )F)typingr   vllm.loggerr   r   r   __name__r!   r-   vllm._custom_opsr   vllm.vllm_flash_attnr   r   r   vllm._ipex_opsr	   r   
flash_attnr   boolintr(   r+   r,   r.   r/   r   r   r   r   <module>   s.   	=