
    .`i                        d dl Z d dlmZ d dlmZ  ee          Z ej                    r	 d dlZ	dZ
n# e$ r dZ
Y nw xY wdZ
 ej                    r	 d dlZ	dZn# e$ r dZY nw xY wdZdeeedz  f         fdZdeeedz  f         fdZdeeedz  f         fd	Zd
 Z e            d          rd dlmZmZmZmZmZmZmZ n G d d          ZeZeZeZeZeZeZde j        dededee j        e j        f         fdZ	 	 	 	 dde j        de j        de j        de j        dede j        de j        de dz  dede j        dz  de j        dz  dee j        e j        f         fdZ!dS )    N)init_logger)current_platformTFreturnc                  *    t           sdS t          sdS dS )N)Fzvllm._flashmla_C is not available, likely was not compiled due to insufficient nvcc version or a supported arch was not in the list of target arches to compile for.)FzZvllm._flashmla_extension_C is not available, likely was not compiled due to a build error.TN)_flashmla_C_AVAILABLE_flashmla_extension_C_AVAILABLE     r/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/v1/attention/ops/flashmla.py_is_flashmla_availabler   !   s/      

 
 + 

 
 :r   c                  `    t                      \  } }| sd|fS t          j        d          sdS dS )C
    Return: is_supported_flag, unsupported_reason (optional).
    FZ   )Fz3FlashMLA Dense is only supported on Hopper devices.r   r   r   is_device_capability_familyis_availblemaybe_reasons     r   is_flashmla_dense_supportedr   3   sF     !7 8 8K #l""7;; LKK:r   c                      t                      \  } }| sd|fS t          j        d          st          j        d          sdS dS )r   Fr   d   )FzBFlashMLA Sparse is only supported on Hopper and Blackwell devices.r   r   r   s     r   is_flashmla_sparse_supportedr   ?   s^     !7 8 8K #l""4R88
7<<

 
 :r   c                  F    t                      \  }}t          |pd          )NzFlashMLA is not available)r   RuntimeError)_args_kwargs_reasons       r   _raise_flashmla_unavailabler    Q   s%    &((IAv
v<!<
=
==r   )FlashMLASchedMetaflash_attn_varlen_funcflash_attn_varlen_kvpacked_func flash_attn_varlen_qkvpacked_funcflash_mla_sparse_fwdflash_mla_with_kvcacheget_mla_metadatac                       e Zd ZdS )r!   N)__name__
__module____qualname__r
   r   r   r!   r!   b   s        r   r!   cache_seqlensnum_q_tokens_per_head_knum_heads_kc                     t                      d         st                       t          j        j                            | ||          S )Nr   )r   r    torchops_flashmla_extension_C#get_mla_decoding_metadata_dense_fp8)r,   r-   r.   s      r   get_mla_metadata_dense_fp8r4   m   sI    
 "##A& &#%%%9*NN  r   qk_cacheblock_table
head_dim_vtile_scheduler_metadata
num_splitssoftmax_scalecausal	descale_q	descale_kc                     t                      d         st                       || j        d         dz  }t          j        j                            | |||||||||	|
          \  }}||fS )Nr   g      )r   r    shaper0   r1   r2   fwd_kvcache_mla_fp8)r5   r6   r7   r,   r8   r9   r:   r;   r<   r=   r>   outsoftmax_lses                r   flash_mla_with_kvcache_fp8rE   {   s     "##A& &#%%%-y6JJ	 C r   )NFNN)"r0   vllm.loggerr   vllm.platformsr   r)   loggeris_cudavllm._flashmla_Cvllmr   ImportErrorvllm._flashmla_extension_Cr	   tupleboolstrr   r   r   r    -vllm.third_party.flashmla.flash_mla_interfacer!   r"   r#   r$   r%   r&   r'   Tensorintr4   floatrE   r
   r   r   <module>rU      se  
  # # # # # # + + + + + +	X		 "& $ & & & %& " ,0))))*.'' 0 0 0*/'''0 ',#dC$J&6 7    $	U4t+;%< 	 	 	 	eD#*,<&=    $> > >
 A 3                          9&A#'B$682<   5<%&	   , #'%)%) |\  <	
  #\  4<  |d" |d" 5<%&     s   3 ==A A#"A#