
    .`i&                     ^   U d dl Z 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
 d dlmZ d dlmZ dd	lmZmZmZ  e j        e          Zd
edefdZdedz  fdZdedz  fdZdedz  fdZdedz  fdZdedz  fdZeeeeedZdefdZda da!ee"d<   eree"d<   defdZ#defdZ$g dZ%dS )    N)chain)TYPE_CHECKING)envs)PLATFORM_PLUGINS_GROUPload_plugins_by_group)resolve_obj_by_qualname)supports_xccl   )CpuArchEnumPlatformPlatformEnumsubstrreturnc                     ddl m}m} 	  |d          }n)# |$ r!}t                              d           |d}~ww xY w| |v S )z?
    Check to see if the vLLM version matches a substring.
    r   )PackageNotFoundErrorversionvllmzqThe vLLM package was not found, so its version could not be inspected. This may cause platform detection to fail.N)importlib.metadatar   r   loggerwarning)r   r   r   vllm_versiones        k/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/platforms/__init__.pyvllm_version_matches_substrr      s     A@@@@@@@wv   D	
 	
 	
  \!!s    <7<c                  H   t                               d           t          j        rt                               d           dS 	 dd l} t                               d           dS # t
          $ r3}t                               dt          |                     Y d }~d S d }~ww xY w)Nz&Checking if TPU platform is available.z7Confirmed TPU platform is available via Pathways proxy.z0tpu_inference.platforms.tpu_platform.TpuPlatformr   z$Confirmed TPU platform is available.zvllm.platforms.tpu.TpuPlatformz)TPU platform is not available because: %s)r   debugr   VLLM_TPU_USING_PATHWAYSlibtpu	Exceptionstr)r   r   s     r   tpu_platform_pluginr!   #   s    
LL9::: # BNOOOAA 	;<<<//   @#a&&IIIttttts   A$ $
B!.(BB!c                     d} t                               d           	 ddlm}  |            }|                                 	 |                                dk    ot          d           } |                                dk    rt                               d           t          d          rt                               d           | rt                               d           |                                 n# |                                 w xY wn# t          $ r}t                               d	t          |                     d
|j
        j                                        vr|dd ldt          ffd} |            rt                               d           d} n(t                               dt          |                     Y d }~nd }~ww xY w| rdnd S )NFz'Checking if CUDA platform is available.r   )import_pynvmlcpuz7CUDA platform is not available because no GPU is found.z>CUDA platform is not available because vLLM is built with CPU.z%Confirmed CUDA platform is available.z1Exception happens when checking CUDA platform: %snvmlr   c                  l     j                             d          p j                             d          S )Nz/etc/nv_tegra_releasez/sys/class/tegra-firmware)pathisfileexists)oss   r   cuda_is_jetsonz,cuda_platform_plugin.<locals>.cuda_is_jetson`   s4    7>>"9:: bgnn+? ?     z/Confirmed CUDA platform is available on Jetson.Tz*CUDA platform is not available because: %sz vllm.platforms.cuda.CudaPlatform)r   r   vllm.utils.import_utilsr#   nvmlInitnvmlDeviceGetCountr   nvmlShutdownr   r    	__class____name__lowerr*   bool)is_cudar#   pynvmlr   r+   r*   s        @r   cuda_platform_pluginr7   ;   s   G
LL:;;;+O999999	" ))++a/ ;3E:::  ((**a//VWWW*511 T    FDEEE!!!!F!!!!! O O OH#a&&QQQ-335555G 					 	 	 	 	 	 	
 > 	OLLJKKKGGLLEs1vvNNN%O( 29B--dBs1   $D BC8 #D 8DD 
GB*GGc                     d} t                               d           	 dd l}|                                 	 t	          |                                          dk    rd} t                               d           nt                               d           |                                 n# |                                 w xY wn?# t          $ r2}t                               dt          |                     Y d }~nd }~ww xY w| rdnd S )	NFz'Checking if ROCm platform is available.r   Tz%Confirmed ROCm platform is available.z7ROCm platform is not available because no GPU is found.z*ROCm platform is not available because: %sz vllm.platforms.rocm.RocmPlatform)	r   r   amdsmiamdsmi_initlenamdsmi_get_processor_handlesamdsmi_shut_downr   r    )is_rocmr9   r   s      r   rocm_platform_pluginr?   n   s   G
LL:;;;K	&6668899A==DEEEEVWWW##%%%%F##%%%%% K K KA3q66JJJJJJJJK 29B--dBs/   C AB( C (B>>C 
C>(C99C>c                     d} t                               d           	 dd l}dd l}t	                      rd}nd}dd l}t          |d          rb|j                                        rId} ddl	m
} ||_        t                               d	|j                   t                               d
           n?# t          $ r2}t                               dt          |                     Y d }~nd }~ww xY w| rdnd S )NFz&Checking if XPU platform is available.r   xcclcclxpuT)XPUPlatformz"Confirmed %s backend is available.z$Confirmed XPU platform is available.z)XPU platform is not available because: %szvllm.platforms.xpu.XPUPlatform)r   r   intel_extension_for_pytorchtorchr	   oneccl_bindings_for_pytorchhasattrrC   is_availablevllm.platforms.xpurD   dist_backendr   r    )is_xpurE   rF   rK   rG   rD   r   s          r   xpu_platform_pluginrM      s-   F
LL9:::J****?? 	/!LL L....5%   	AUY%;%;%=%= 	AF666666'3K$LL={?WXXXLL?@@@ J J J@#a&&IIIIIIIIJ 06?++4?s   BB0 0
C,:(C''C,c                     d} t                               d           	 t          d          } | rt                               d           | s:dd l}|j                            d          } | rt                               d           n?# t          $ r2}t                               dt          |                     Y d }~nd }~ww xY w| rd	nd S )
NFz&Checking if CPU platform is available.r$   zCConfirmed CPU platform is available because vLLM is built with CPU.r   darwinzAConfirmed CPU platform is available because the machine is MacOS.z)CPU platform is not available because: %szvllm.platforms.cpu.CpuPlatform)r   r   r   sysplatform
startswithr   r    )is_cpurP   r   s      r   cpu_platform_pluginrT      s    F
LL9:::J,U33 	LLU    	JJJ\,,X66F W    J J J@#a&&IIIIIIIIJ 06?++4?s   A'B 
C(B==C)tpucudarocmrC   r$   c                  8   t          t                    } g }t          t                                          |                                           D ]H\  }}	 t          |          sJ  |            }||                    |           9# t          $ r Y Ew xY wt          t          |          t          t          
                                          z            }t          t          |          t          | 
                                          z            }t          |          dk    rt          d|           t          |          dk    r8 | |d                              }t                              d|d                    nt          |          dk    rt          d|           t          |          dk    r<t          |d                              }t                              d|d                    nd}t                              d           |S )	N   z4Only one platform plugin can be activated, but got: r
   r   zPlatform plugin %s is activatedz#Automatically detected platform %s.z,vllm.platforms.interface.UnspecifiedPlatformz<No platform detected, vLLM is running on UnspecifiedPlatform)r   r   r   builtin_platform_pluginsitemscallableappendr   listsetkeysr;   RuntimeErrorr   infor   )platform_pluginsactivated_pluginsnamefuncplatform_cls_qualnameactivated_builtin_pluginsactivated_oot_pluginss          r   %resolve_current_platform_cls_qualnamerj      sJ   ,-CDD4::<<>N>T>T>V>VWW  
d	D>>!!>$(DFF!$0!((... 	 	 	D	 !%%=%B%B%D%D!E!EE! ! !%6!7!7#>N>S>S>U>U:V:V!VWW
 !!Q&&'$' '
 
 	
 
"	#	#q	(	( J 01Fq1I J L L57LQ7OPPPP	&	'	'1	,	,+(+ +
 
 	
 
&	'	'1	,	, 89RST9U V X X13LQ3O	
 	
 	
 	
 !OSTTT  s   2B		
BB _init_tracecurrent_platformre   c                 >   | dk    rYt           Kt                      } t          |                      a d                    t	          j                              at           S | t                      v rt                      |          S t          d|  dt           d          )Nrm   rk   No attribute named '' exists in .)
_current_platformrj   r   join	tracebackformat_stackrl   globalsAttributeErrorr2   )re   rg   s     r   __getattr__rx      s    !!! $$I$K$K! N 78M N N P P'')"8":":;;K  			yyQDQQhQQQRRRr,   c                     | dk    r|a d S | t                      v r|t                      | <   d S t          d|  dt           d          )Nrm   ro   rp   rq   )rr   rv   rw   r2   )re   values     r   __setattr__r{     s\    !!!!					$QDQQhQQQRRRr,   )r   r   rm   r   rl   )&loggingrt   	itertoolsr   typingr   r   r   vllm.pluginsr   r   r-   r   vllm.utils.torch_utilsr	   	interfacer   r   r   	getLoggerr2   r   r    r4   r   r!   r7   r?   rM   rT   rZ   rj   rr   rl   __annotations__rx   r{   __all__ r,   r   <module>r      sJ                                F F F F F F F F ; ; ; ; ; ; 0 0 0 0 0 0 : : : : : : : : : :		8	$	$" " " " " ""S4Z    00CcDj 0C 0C 0C 0CfCcDj C C C C*@S4Z @ @ @ @6@S4Z @ @ @ @2     (!s (! (! (! (!V  S    Sc S S S S4Sc S S S S Y
X
Xr,   