Ë
      çiÆ	  ã                   óx   — d dl Z d dlmZmZ d dlZd dlmZmZ d dlm	Z	 d dl
mZ d dlmZ ed   Z G d„ d	e«      Zy)
é    N)ÚAnyÚLiteral)Úget_argsÚoverride)Ú_XLA_AVAILABLE)Ú	Precision)ÚOptimizable)z32-trueú16-trueú	bf16-truec                   óP   — e Zd ZdZdeddfd„Zedededefd„«       Z	ed
d	„«       Z
y)ÚXLAPrecisionzÙPlugin for training with XLA.

    Args:
        precision: Full precision (32-true) or half precision (16-true, bf16-true).

    Raises:
        ValueError:
            If unsupported ``precision`` is provided.

    Ú	precisionÚreturnNc                 óz  — t         st        t        t         «      «      ‚t        t        «      }||vrt        d|›d|› d�«      ‚|| _        |dk(  r)dt        j                  d<   t        j                  | _        y |dk(  r)dt        j                  d<   t        j                  | _        y t        j                  | _        y )	Nz`precision=z8)` is not supported in XLA. `precision` must be one of: Ú.r
   Ú1ÚXLA_USE_F16r   ÚXLA_USE_BF16)r   ÚModuleNotFoundErrorÚstrr   Ú_PRECISION_INPUTÚ
ValueErrorr   ÚosÚenvironÚtorchÚfloat16Ú_desired_dtypeÚbfloat16Úfloat32)Úselfr   Úsupported_precisions      ú{/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/lightning_fabric/plugins/precision/xla.pyÚ__init__zXLAPrecision.__init__'   sª   € ÝÜ%¤c¬.Ó&9Ó:Ð:Ü&Ô'7Ó8ÐØÐ/Ñ/ÜØ˜i˜]ð +0Ø0CÐ/DÀAðGóð ð #ˆŒà˜	Ò!Ø(+ŒB�J‰J�}Ñ%Ü"'§-¡-ˆDÕØ˜+Ò%Ø),ŒB�J‰J�~Ñ&Ü"'§.¡.ˆDÕä"'§-¡-ˆDÕó    Ú	optimizerÚkwargsc                 ó<   — dd l mc m} |j                  ||d¬«      S )Nr   T)Úoptimizer_argsÚbarrier)Útorch_xla.core.xla_modelÚcoreÚ	xla_modelÚoptimizer_step)r    r%   r&   Úxms       r"   r-   zXLAPrecision.optimizer_step;   s$   € ÷ 	.Ð-ð × Ñ  ¸6È4Ð ÓPÐPr$   c                 ó„   — t         j                  j                  dd «       t         j                  j                  dd «       y )Nr   r   )r   r   Úpop)r    s    r"   ÚteardownzXLAPrecision.teardownF   s&   € ä
�
‰
�‰�~ tÔ,Ü
�
‰
�‰�} dÕ+r$   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r#   r   r	   r   r-   r1   © r$   r"   r   r      sd   „ ñ	ð0Ð"2ð 0°tó 0ð( ðQàðQð ðQð 
ò	Qó ðQð ò,ó ñ,r$   r   )r   Útypingr   r   r   Útyping_extensionsr   r   Ú!lightning_fabric.accelerators.xlar   Ú,lightning_fabric.plugins.precision.precisionr   Ú lightning_fabric.utilities.typesr	   r   r   r6   r$   r"   Ú<module>r<      s4   ðó 
ß ã ß 0å <Ý BÝ 8àÐ<Ñ=Ð ô.,�9õ .,r$   