o
    oi                     @   sV   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ e 	e
ZG dd deZdS )    N)Dict)override)_XLA_AVAILABLE)Profilerc                       sv   e Zd Zh dZh dZddeddf fddZed	eddfd
dZ	ed	eddfddZ
d	edefddZ  ZS )XLAProfiler>   	test_steppredict_stepvalidation_step>   backwardr   r   training_stepr	   4#  portreturnNc                    s<   t sttt t jddd || _i | _i | _d| _dS )a+  XLA Profiler will help you debug and optimize training workload performance for your models using Cloud TPU
        performance tools.

        Args:
            port: the port to start the profiler server on. An exception is
                raised if the provided port is invalid or busy.

        N)dirpathfilenameF)	r   ModuleNotFoundErrorstrsuper__init__r   _recording_map_step_recoding_map_start_trace)selfr   	__class__ S/home/ubuntu/.local/lib/python3.10/site-packages/lightning/pytorch/profilers/xla.pyr   #   s   	
zXLAProfiler.__init__action_namec                 C   s   dd l m  m} |dd | jv rG| js || j| _d| _|dd | j	v r7| 
|}|j||d}n||}|  || j|< d S d S )Nr   .T)step_num)torch_xla.debug.profilerdebugprofilersplitRECORD_FUNCTIONSr   start_serverr   serverSTEP_FUNCTIONS_get_step_num	StepTraceTrace	__enter__r   )r   r   xpstep	recordingr   r   r   start4   s   

zXLAProfiler.startc                 C   s.   || j v r| j | d d d  | j |= d S d S )N)r   __exit__r   r   r   r   r   stopG   s   
zXLAProfiler.stopc                 C   s2   || j vrd| j |< n	| j |  d7  < | j | S )N   )r   r2   r   r   r   r)   M   s   

zXLAProfiler._get_step_num)r   )__name__
__module____qualname__r(   r%   intr   r   r   r0   r3   r)   __classcell__r   r   r   r   r      s    r   )loggingtypingr   typing_extensionsr   !lightning.fabric.accelerators.xlar   $lightning.pytorch.profilers.profilerr   	getLoggerr5   logr   r   r   r   r   <module>   s   
