Ë
      çi²  ã                   ó–   — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  G d„ de«      Zy)é    )ÚOptionalN)Úoverride)ÚAccelerator)Ú_XLA_AVAILABLE)ÚCheckpointIOÚ	PrecisionÚXLAPrecision)ÚXLACheckpointIO)Ú_StrategyRegistry)ÚSingleDeviceStrategy)Ú_DEVICEc            
       ó.  ‡ — e Zd ZdZ	 	 	 ddedee   dee   dee   fˆ fd„Z	e
edefd	„«       «       Zej                  ed
ee   ddfd„«       «       Ze
edefd„«       «       Zej                  edee   ddfd„«       «       Zeededdfd„«       «       Zˆ xZS )ÚSingleDeviceXLAStrategyz-Strategy for training on a single XLA device.NÚdeviceÚacceleratorÚcheckpoint_ioÚ	precisionc                 óä   •— t         st        t        t         «      «      ‚t        |t        j
                  «      r|j                  }dd lmc m	} t        ‰| �-  ||j                  |«      ||¬«       y )Nr   )r   r   r   r   )r   ÚModuleNotFoundErrorÚstrÚ
isinstanceÚtorchr   ÚindexÚtorch_xla.core.xla_modelÚcoreÚ	xla_modelÚsuperÚ__init__Ú
xla_device)Úselfr   r   r   r   ÚxmÚ	__class__s         €ú{/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/lightning_fabric/strategies/single_xla.pyr   z SingleDeviceXLAStrategy.__init__   s\   ø€ õ Ü%¤c¬.Ó&9Ó:Ð:Ü�fœeŸl™lÔ+à—\‘\ˆFç-Ð-ä‰ÑØ#Ø—=‘= Ó(Ø'Øð	 	õ 	
ó    Úreturnc                 óZ   — | j                   }|�t        |t        «      sJ ‚|S t        «       S )N)Ú_checkpoint_ior   r
   ©r    Úplugins     r#   r   z%SingleDeviceXLAStrategy.checkpoint_io5   s3   € ð ×$Ñ$ˆØÐÜ˜f¤oÔ6Ð6Ð6ØˆMÜÓ Ð r$   Úioc                 óR   — |�t        |t        «      st        d|› �«      ‚|| _        y )NzHThe XLA strategy can only work with the `XLACheckpointIO` plugin, found )r   r
   Ú	TypeErrorr'   )r    r*   s     r#   r   z%SingleDeviceXLAStrategy.checkpoint_io>   s/   € ð ˆ>¤*¨R´Ô"AÜÐfÐgiÐfjÐkÓlÐlØ ˆÕr$   c                 ó\   — | j                   }|�t        |t        «      sJ ‚|S t        d«      S )Nz32-true)Ú
_precisionr   r	   r(   s     r#   r   z!SingleDeviceXLAStrategy.precisionE   s3   € ð —‘ˆØÐÜ˜f¤lÔ3Ð3Ð3ØˆMÜ˜IÓ&Ð&r$   c                 óR   — |�t        |t        «      st        d|› �«      ‚|| _        y )NzEThe XLA strategy can only work with the `XLAPrecision` plugin, found )r   r	   r,   r.   )r    r   s     r#   r   z!SingleDeviceXLAStrategy.precisionN   s/   € ð Ð ¬°I¼|Ô)LÜÐcÐdmÐcnÐoÓpÐpØ#ˆ�r$   Ústrategy_registryc                 ó@   — |j                  d| | j                  ¬«       y )NÚ
single_xla)Údescription)ÚregisterÚ__name__)Úclsr0   s     r#   Úregister_strategiesz+SingleDeviceXLAStrategy.register_strategiesU   s   € ð 	×"Ñ" <°À#Ç,Á,Ð"ÕOr$   )NNN)r5   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r
   r	   r   Úpropertyr   r   Úsetterr   r   r   Úclassmethodr   r7   Ú__classcell__)r"   s   @r#   r   r      s*  ø„ Ù7ð
 .2Ø37Ø,0ñ
àð
ð ˜kÑ*ð
ð   Ñ0ð	
ð
 ˜LÑ)õ
ð, Øð!˜ò !ó ó ð!ð ×ÑØð! ¨Ñ 6ð !¸4ò !ó ó ð!ð
 Øð'˜<ò 'ó ó ð'ð ×ÑØð$ 8¨IÑ#6ð $¸4ò $ó ó ð$ð
 ØðPÐ4Eð PÈ$ò Pó ó ôPr$   r   )Útypingr   r   Útyping_extensionsr   Úlightning_fabric.acceleratorsr   Ú!lightning_fabric.accelerators.xlar   Úlightning_fabric.pluginsr   r   r	   Úlightning_fabric.plugins.io.xlar
   Úlightning_fabric.strategiesr   Ú)lightning_fabric.strategies.single_devicer   Ú lightning_fabric.utilities.typesr   r   © r$   r#   Ú<module>rI      s7   ðõ ã Ý &å 5Ý <ß JÑ JÝ ;Ý 9Ý JÝ 4ô<PÐ2õ <Pr$   