Ë
    S²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    úR/var/www/html/ia-enhanced/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¨!œs 1ŸvÑAùs   ‚é   )r   Ú__version__Úsplitr   Ú
ValueErrorÚAttributeError)r   r   Úversion_partsÚmajorÚminorÚpatchs         r   Úget_jax_versionr       s^   € ðÛàŸ™×-Ñ-¨cÓ2ˆÙA¨}¸R¸aÐ/@ÔAÑˆˆu�eØ�u˜eÐ$Ð$øÜœ¤^Ð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ÒØô �:‰:×"Ñ"Ô$Ü Ÿ:™:×;Ñ;Ó=‰LˆE�5Ø�qŠyØàøÜò Ùðú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(   € ô ÓÒX¤E§J¡J×$;Ñ$;Ó$=ÒXÔBVÓBXÐ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ÒM¼m»oÐ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ÒD´NÓ4DÐDr7   ))r   r   r   )Ú	functoolsr%   ÚcacheÚboolr   r   Útupler   r   r*   r-   r4   r8   r:   r<   r>   r6   r7   r   ú<module>rC      sh  ðÛ ã ð ‡�ð˜ò ó ðð ‡�ð˜Dò ó ðð ‡�ñ	˜e C¨¨c MÑ2ð 	À5ÈÈcÐSVÈÑCWò 	ó ð	ð ‡�ð˜dò ó ðð. ‡�ð˜Tò ó ðð ‡�ð	�tò 	ó ð	ð ‡�ð ˜ò  ó ð ð
 ‡�ðY˜ò Yó ðYð
 ‡�ðN˜ò Nó ðNð
 ‡�ð	E�Dò 	Eó ñ	Er7   