
    ^j              	          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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    ^/var/www/ramen.bs-engineer-server.com/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k(  ryt        j
                  j                         r't        j
                  j                         \  }}|dk  ryy# t        $ r Y yw xY w)zJCheck if JAX has CUDA backend support with SM90+ (required by Mosaic GPU).Fr   Ngpu	   T)	r   r   deviceslentorchcudais_availableget_device_capability	Exception)r   r#   r   r   s       r   has_jax_cuda_backendr*   -   s{      ++e$w<1 ::""$ ::;;=LE5qy s   #A7 AA7 7	BB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tpu)r   r   r#   r$   r)   )r   r#   s     r   has_jax_tpu_backendr-   E   sF      ++e$7|a s   "0 	<<c                  ,    t        t        dd      } | duS )z.Check if torch_tpu is installed and available.r,   N)getattrr%   )
tpu_modules    r   has_torch_tpur1   T   s     t,JT!!    c                      t               S )z,Checks for a full Pallas-on-CPU environment.)r    r2   r   has_cpu_pallasr5   \   s     r2   c                  n    t               xr* t        j                  j                         xr
 t	               S )z-Checks for a full Pallas-on-CUDA environment.)r   r%   r&   r'   r*   r4   r2   r   has_cuda_pallasr7   b   s(     XEJJ$;$;$=XBVBXXr2   c                  F    t               xr t               xr
 t               S )z,Checks for a full Pallas-on-TPU environment.)r   r-   r1   r4   r2   r   has_tpu_pallasr9   h   s     M$7$9MmoMr2   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.
    )r5   r7   r9   r4   r2   r   
has_pallasr;   n   s     D0DN4DDr2   ))r   r   r   )	functoolsr%   cacheboolr   r   tupler   r   r*   r-   r1   r5   r7   r9   r;   r4   r2   r   <module>r@      sh        D   	eCcM2 	5cSVCW 	 	 d  . T   "t " "      
 Y Y Y
 N N N
 	ED 	E 	Er2   