
    9j              	          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    S/media/conek/DATA/Code/OCR/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                  l    	 ddl } | j                  j                          y# t        t        f$ r Y yw xY w)z.Check if torch_tpu is installed and available.r   NTF)torch_tpu.apiapi
tpu_devicer   RuntimeError)	torch_tpus    r   has_torch_tpur4   T   s6     	  "& s   ! 33c                      t               S )z,Checks for a full Pallas-on-CPU environment.)r        r   has_cpu_pallasr8   a   s     r7   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*   r6   r7   r   has_cuda_pallasr:   g   s(     XEJJ$;$;$=XBVBXXr7   c                  F    t               xr t               xr
 t               S )z,Checks for a full Pallas-on-TPU environment.)r   r-   r4   r6   r7   r   has_tpu_pallasr<   m   s     M$7$9MmoMr7   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.
    )r8   r:   r<   r6   r7   r   
has_pallasr>   s   s     D0DN4DDr7   ))r   r   r   )	functoolsr%   cacheboolr   r   tupler   r   r*   r-   r4   r8   r:   r<   r>   r6   r7   r   <module>rC      sh        D   	eCcM2 	5cSVCW 	 	 d  . T   	t 	 	      
 Y Y Y
 N N N
 	ED 	E 	Er7   