
    ΅i              	          S SK r S SKr\ R                  S\4S j5       r\ R                  S\4S j5       r\ R                  SS\\\\4   S\\\\4   4S jj5       r\ R                  S\4S j5       r	\ R                  S\4S j5       r
\ R                  S\4S	 j5       r\ R                  S\4S
 j5       r\ R                  S\4S j5       r\ R                  S\4S j5       rg)    Nreturnc                  .     SSK n g! [         a     gf = f)zCheck if JAX is installed.r   NTF)jaxImportError)r   s    M/home/james-whalen/.local/lib/python3.13/site-packages/torch/utils/_pallas.pyhas_jax_packager      s     s    
c                  R    [        5       (       d  g SSKJn   g! [         a     gf = f)z0Check if Pallas (JAX experimental) is available.Fr   )pallasT)r   jax.experimentalr
   r   )pls    r   has_pallas_packager      s1     	
  s    
&&fallbackc                      SSK nUR                  R                  S5      nS USS  5       u  p4nX4U4$ ! [        [        [
        4 a    U s $ f = f)z/Get JAX version as (major, minor, patch) tuple.r   N.c              3   8   #    U  H  n[        U5      v   M     g 7f)N)int).0vs     r   	<genexpr>"get_jax_version.<locals>.<genexpr>'   s     A/@!s1vv/@s      )r   __version__splitr   
ValueErrorAttributeError)r   r   version_partsmajorminorpatchs         r   get_jax_versionr        sZ    --c2A}Ra/@Aee$$^4 s   14 AAc                  $   [        5       (       d  g SSKn U R                  S5      n[        U5      S:X  a  g[        R
                  R                  5       (       a'  [        R
                  R                  5       u  p#US:  a  gg! [         a     gf = f)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 ::""$$ ::;;=LEqy s   $B A	B 
BBc                      [        5       (       d  g SSKn U R                  S5      n[        U5      S:  $ ! [         a     gf = f)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   sI      ++e$7|a s   "5 
AAc                      [        5       $ )z,Checks for a full Pallas-on-CPU environment.)r        r   has_cpu_pallasr2   T   s     r1   c                      [        5       =(       a/    [        R                  R                  5       =(       a
    [	        5       $ )z-Checks for a full Pallas-on-CUDA environment.)r   r&   r'   r(   r+   r0   r1   r   has_cuda_pallasr4   Z   s(     XEJJ$;$;$=XBVBXXr1   c                  8    [        5       =(       a
    [        5       $ )z,Checks for a full Pallas-on-TPU environment.)r   r.   r0   r1   r   has_tpu_pallasr6   `   s     9$7$99r1   c                  Z    [        5       =(       d    [        5       =(       d
    [        5       $ )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.
)r2   r4   r6   r0   r1   r   
has_pallasr8   f   s     D0DN4DDr1   ))r   r   r   )	functoolsr&   cacheboolr   r   tupler   r    r+   r.   r2   r4   r6   r8   r0   r1   r   <module>r=      sF        D   	eCcM2 	5cSVCW 	 	 d  . T        
 Y Y Y
 : : :
 	ED 	E 	Er1   