
    i{
              	          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y)    Nreturnc                  ,    	 ddl } y# t        $ r Y yw xY w)zCheck if JAX is installed.r   NTF)jaxImportError)r   s    M/var/www/html/engine/venv/lib/python3.12/site-packages/torch/utils/_pallas.pyhas_jax_packager      s     s    	c                  F    t               sy	 ddlm}  y# t        $ r Y yw xY w)z0Check if Pallas (JAX experimental) is available.Fr   )pallasT)r   jax.experimentalr
   r   )pls    r   has_pallas_packager      s.     	
  s    	  fallbackc                     	 ddl }|j                  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   2   K   | ]  }t        |        y w)N)int).0vs     r   	<genexpr>z"get_jax_version.<locals>.<genexpr>'   s     A!s1vAs      )r   __version__splitr   
ValueErrorAttributeError)r   r   version_partsmajorminorpatchs         r   get_jax_versionr       s^    --c2A}Ra/@Aueue$$^4 s   36 AAc                  ~    t               sy	 ddl} | j                  d      }t        |      dkD  S # t        $ r Y y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'   -   F      ++e$7|a    "0 	<<c                  ~    t               sy	 ddl} | j                  d      }t        |      dkD  S # t        $ r Y y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   has_cpu_pallasr0   K   s     r/   c                  n    t               xr* t        j                  j                         xr
 t	               S )z-Checks for a full Pallas-on-CUDA environment.)r   torchcudais_availabler'   r.   r/   r   has_cuda_pallasr5   Q   s(     XEJJ$;$;$=XBVBXXr/   c                  .    t               xr
 t               S )z,Checks for a full Pallas-on-TPU environment.)r   r,   r.   r/   r   has_tpu_pallasr7   W   s     9$7$99r/   c                  F    t               xs t               xs
 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.
    )r0   r5   r7   r.   r/   r   
has_pallasr9   ]   s     D0DN4DDr/   ))r   r   r   )	functoolsr2   cacheboolr   r   tupler   r   r'   r,   r0   r5   r7   r9   r.   r/   r   <module>r>      sF        D   	eCcM2 	5cSVCW 	 	 d   T        
 Y Y Y
 : : :
 	ED 	E 	Er/   