
    {bi{
              	          d dl Z d dlZe j        defd            Ze j        defd            Ze j        ddeeeef         deeeef         fd            Ze j        defd            Z	e j        defd	            Z
e j        defd
            Ze j        defd            Ze j        defd            Ze j        defd            ZdS )    Nreturnc                  2    	 ddl } dS # t          $ r Y dS w xY w)zCheck if JAX is installed.r   NTF)jaxImportError)r   s    P/root/projects/butler/venv/lib64/python3.11/site-packages/torch/utils/_pallas.pyhas_jax_packager      s7    


t   uus    
c                  V    t                      sdS 	 ddlm}  dS # t          $ r Y dS w xY w)z0Check if Pallas (JAX experimental) is available.Fr   )pallasT)r   jax.experimentalr
   r   )pls    r   has_pallas_packager      sc      u	
 	
 	
 	
 	
 	
 t   uus    
((r   r   r   fallbackc                     	 ddl }|j                            d          }d |dd         D             \  }}}|||fS # t          t          t
          f$ r | cY S w xY w)z/Get JAX version as (major, minor, patch) tuple.r   N.c              3   4   K   | ]}t          |          V  d S )N)int).0vs     r   	<genexpr>z"get_jax_version.<locals>.<genexpr>'   s(      AA!s1vvAAAAAA       )r   __version__splitr   
ValueErrorAttributeError)r   r   version_partsmajorminorpatchs         r   get_jax_versionr!       s    


--c22AA}RaR/@AAAueue$$^4   s   := AAc                      t                      sdS 	 ddl} |                     d          }t          |          dk    S # t          $ r Y dS w xY w)z&Check if JAX has CUDA backend support.Fr   Ngpur   r   deviceslen	Exceptionr   r%   s     r   has_jax_cuda_backendr)   -   k      u


 ++e$$7||a   uu   +> 
AAc                      t                      sdS 	 ddl} |                     d          }t          |          dk    S # t          $ r Y dS w xY w)z%Check if JAX has TPU backend support.Fr   Ntpur$   r(   s     r   has_jax_tpu_backendr.   <   r*   r+   c                      t                      S )z,Checks for a full Pallas-on-CPU environment.)r    r   r   has_cpu_pallasr1   K   s     r   c                  v    t                      o+t          j                                        ot	                      S )z-Checks for a full Pallas-on-CUDA environment.)r   torchcudais_availabler)   r0   r   r   has_cuda_pallasr6   Q   s/     XEJ$;$;$=$=XBVBXBXXr   c                  :    t                      ot                      S )z,Checks for a full Pallas-on-TPU environment.)r   r.   r0   r   r   has_tpu_pallasr8   W   s     9$7$9$99r   c                  V    t                      pt                      pt                      S )z
    Check if Pallas backend is fully available for use.

    Requirements:
    - JAX package installed
    - Pallas (jax.experimental.pallas) available
    - A compatible backend (CUDA or TPU) is available in both PyTorch and JAX.
    )r1   r6   r8   r0   r   r   
has_pallasr:   ]   s&     D00DN4D4DDr   )r   )	functoolsr3   cacheboolr   r   tupler   r!   r)   r.   r1   r6   r8   r:   r0   r   r   <module>r?      s             D     	 	eCcM2 	5cSVCW 	 	 	 	 d     T              
 Y Y Y Y Y
 : : : : :
 	ED 	E 	E 	E 	E 	E 	Er   