o
    „o™i[  ã                   @   sD   d dl mZmZ d dlmZ d dlZd dlmZ G dd„ deƒZdS )é    )ÚABCÚabstractmethod)ÚAnyN)Ú_AcceleratorRegistryc                   @   s¬   e Zd ZdZedejddfdd„ƒZeddd„ƒZe	ed	e
de
fd
d„ƒƒZe	ed	e
de
fdd„ƒƒZe	edefdd„ƒƒZe	edefdd„ƒƒZededdfdd„ƒZdS )ÚAcceleratorzÒThe Accelerator base class.

    An Accelerator is meant to deal with one type of hardware.

    .. warning::  Writing your own accelerator is an :ref:`experimental <versioning:Experimental API>` feature.

    ÚdeviceÚreturnNc                 C   ó   dS )z6Create and prepare the device for the current process.N© )Úselfr   r
   r
   ú]/home/ubuntu/.local/lib/python3.10/site-packages/lightning/fabric/accelerators/accelerator.pyÚsetup_device   ó    zAccelerator.setup_devicec                 C   r	   )z.Clean up any state created by the accelerator.Nr
   )r   r
   r
   r   Úteardown#   r   zAccelerator.teardownÚdevicesc                 C   r	   )z!Accelerator device parsing logic.Nr
   ©r   r
   r
   r   Úparse_devices'   r   zAccelerator.parse_devicesc                 C   r	   )z*Gets parallel devices for the Accelerator.Nr
   r   r
   r
   r   Úget_parallel_devices,   r   z Accelerator.get_parallel_devicesc                   C   r	   )z&Get the device count when set to auto.Nr
   r
   r
   r
   r   Úauto_device_count1   r   zAccelerator.auto_device_countc                   C   r	   )z$Detect if the hardware is available.Nr
   r
   r
   r
   r   Úis_available6   r   zAccelerator.is_availableÚaccelerator_registryc                 C   s   d S )Nr
   )Úclsr   r
   r
   r   Úregister_accelerators;   s   z!Accelerator.register_accelerators)r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Útorchr   r   r   Ústaticmethodr   r   r   Úintr   Úboolr   Úclassmethodr   r   r
   r
   r
   r   r      s(    r   )	Úabcr   r   Útypingr   r   Ú&lightning.fabric.accelerators.registryr   r   r
   r
   r
   r   Ú<module>   s
   