o
    oi                     @   sb   d dl mZmZ d dl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 dee	Zd	S )
    )AnyDict)override)_AcceleratorRegistry)XLAAccelerator)_DEVICE)Acceleratorc                   @   sH   e Zd ZdZededeeef fddZ	e
ededdfdd	ZdS )
r   zAccelerator for XLA devices, normally TPUs.

    .. warning::  Use of this accelerator beyond import and instantiation is experimental.

    devicereturnc                 C   s:   ddl m  m} ||}|d }|d | }||dS )zGets stats for the given XLA device.

        Args:
            device: XLA device for which to get stats

        Returns:
            A dictionary mapping the metrics (free memory and peak memory) to their values.

        r   Nkb_freekb_total)zavg. free memory (MB)zavg. peak memory (MB))torch_xla.core.xla_modelcore	xla_modelget_memory_info)selfr	   xmmemory_infofree_memorypeak_memory r   V/home/ubuntu/.local/lib/python3.10/site-packages/lightning/pytorch/accelerators/xla.pyget_device_stats   s   
zXLAAccelerator.get_device_statsaccelerator_registryNc                 C   s   |j d| | jd d S )Ntpu)description)register__name__)clsr   r   r   r   register_accelerators4   s   z$XLAAccelerator.register_accelerators)r   
__module____qualname____doc__r   r   r   strr   r   classmethodr   r   r   r   r   r   r      s    r   N)typingr   r   typing_extensionsr   lightning.fabric.acceleratorsr   !lightning.fabric.accelerators.xlar   FabricXLAAccelerator lightning.fabric.utilities.typesr   *lightning.pytorch.accelerators.acceleratorr   r   r   r   r   <module>   s   