o
    پiG                     @  s   U d dl mZ d dlZd dlmZ d dlmZ d dlmZ er%d dl	m
Z
 eeZG dd deZdad	ed
< dddZdddZdS )    )annotationsN)Enum)TYPE_CHECKING)envs)
ServerArgsc                   @  sR   e Zd ZdZdZdZdZdZddd	Zdd
dZ	dddZ
dddZdddZdS )Fp4GemmRunnerBackendz+Enum for FP4 GEMM runner backend selection.autoflashinfer_cudnnflashinfer_cutlassflashinfer_trtllmreturnboolc                 C  
   | t jkS N)r   AUTOself r   \/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/layers/quantization/fp4_utils.pyis_auto      
zFp4GemmRunnerBackend.is_autoc                 C  r   r   )r   FLASHINFER_CUDNNr   r   r   r   is_flashinfer_cudnn   r   z(Fp4GemmRunnerBackend.is_flashinfer_cudnnc                 C  r   r   )r   FLASHINFER_CUTLASSr   r   r   r   is_flashinfer_cutlass   r   z*Fp4GemmRunnerBackend.is_flashinfer_cutlassc                 C  r   r   )r   FLASHINFER_TRTLLMr   r   r   r   is_flashinfer_trtllm    r   z)Fp4GemmRunnerBackend.is_flashinfer_trtllmstrc                 C  s   | j dr| j dS | j S )a,  Get the backend string to pass to FlashInfer's mm_fp4 API.

        This remaps SGLang's user-facing backend names to FlashInfer's API names.
        Examples:
            'flashinfer_trtllm' -> 'trtllm'
            'flashinfer_cutlass' -> 'cutlass'
            'flashinfer_cudnn' -> 'cudnn'
        flashinfer_)value
startswithremoveprefixr   r   r   r   get_flashinfer_backend#   s   	z+Fp4GemmRunnerBackend.get_flashinfer_backendN)r   r   )r   r   )__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r"   r   r   r   r   r      s    



r   zFp4GemmRunnerBackend | NoneFP4_GEMM_RUNNER_BACKENDserver_argsr   r   Nonec                 C  sj   | j }tj r/tj }|dkr&td| d |ds#d| }|}n	td| d t|a	dS )z3Initialize FP4 GEMM configuration from server args.r   zQSGLANG_FLASHINFER_FP4_GEMM_BACKEND is deprecated. Please use '--fp4-gemm-backend=z
' instead.r   zFP4 GEMM backend set to 'zx' via --fp4-gemm-backend overrides environment variable SGLANG_FLASHINFER_FP4_GEMM_BACKEND. Using server argument value.N)
fp4_gemm_runner_backendr   "SGLANG_FLASHINFER_FP4_GEMM_BACKENDis_setgetloggerwarningr    r   r'   )r(   backendenv_backendr   r   r   initialize_fp4_gemm_config5   s    



r2   c                   C  s   t du rtja t S )z(Get the current FP4 GEMM runner backend.N)r'   r   r   r   r   r   r   get_fp4_gemm_runner_backendQ   s   r3   )r(   r   r   r)   )r   r   )
__future__r   loggingenumr   typingr   sglang.srt.environr   sglang.srt.server_argsr   	getLoggerr#   r.   r   r'   __annotations__r2   r3   r   r   r   r   <module>   s    
#
