o
    oi                     @   s   d dl mZmZmZ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 d dlmZ d dlmZ d d	lmZ G d
d deZdZdZdZedZdeeef fddZdS )    )AnyDictListUnionN)RequirementCache)override)_AcceleratorRegistry_parse_cpu_cores)_DEVICE)Accelerator)MisconfigurationExceptionc                   @   s   e Zd ZdZedejddfddZedede	e
ef fddZedd	d
Zeedeee
ee f defddZeedeee
ee f deej fddZeedefddZeedefddZeededdfddZdS )CPUAcceleratorzAccelerator for CPU devices.devicereturnNc                 C   s   |j dkrtd| ddS )zs
        Raises:
            MisconfigurationException:
                If the selected device is not CPU.
        cpuzDevice should be CPU, got z	 instead.N)typer   selfr    r   V/home/ubuntu/.local/lib/python3.10/site-packages/lightning/pytorch/accelerators/cpu.pysetup_device   s   
zCPUAccelerator.setup_devicec                 C   s   t  S )z&Get CPU stats from ``psutil`` package.)get_cpu_statsr   r   r   r   get_device_stats(   s   zCPUAccelerator.get_device_statsc                 C   s   d S )Nr   )r   r   r   r   teardown-   s   zCPUAccelerator.teardowndevicesc                 C   s   t | S )z!Accelerator device parsing logic.r	   r   r   r   r   parse_devices1   s   zCPUAccelerator.parse_devicesc                 C   s   t | } tdg|  S )z*Gets parallel devices for the Accelerator.r   )r
   torchr   r   r   r   r   get_parallel_devices7   s   z#CPUAccelerator.get_parallel_devicesc                   C      dS )z!Get the devices when set to auto.   r   r   r   r   r   auto_device_count>      z CPUAccelerator.auto_device_countc                   C   r    )z&CPU is always available for execution.Tr   r   r   r   r   is_availableD   r#   zCPUAccelerator.is_availableaccelerator_registryc                 C   s   |j d| | jd d S )Nr   )description)register__name__)clsr%   r   r   r   register_acceleratorsJ   s
   
z$CPUAccelerator.register_accelerators)r   N)r(   
__module____qualname____doc__r   r   r   r   r   r   strr   r   r   staticmethodr   intr   r   r   r"   boolr$   classmethodr   r*   r   r   r   r   r      s.    	$*r   cpu_vm_percentcpu_percentcpu_swap_percentpsutilr   c                  C   s>   t stdtt  dd l} t|  jt|  t	| 
 jiS )Nz=Fetching CPU device stats requires `psutil` to be installed. r   )_PSUTIL_AVAILABLEModuleNotFoundErrorr.   r6   _CPU_VM_PERCENTvirtual_memorypercent_CPU_PERCENTr4   _CPU_SWAP_PERCENTswap_memory)r6   r   r   r   r   \   s   

r   )typingr   r   r   r   r    lightning_utilities.core.importsr   typing_extensionsr   lightning.fabric.acceleratorsr   !lightning.fabric.accelerators.cpur
    lightning.fabric.utilities.typesr   *lightning.pytorch.accelerators.acceleratorr   &lightning.pytorch.utilities.exceptionsr   r   r9   r<   r=   r7   r.   floatr   r   r   r   r   <module>   s   :