
      i                     j    d dl Z d dlmZ d dlmZ d dlmZ  e j                  e      Z	 G d de      Z
y)    N)override)_XLA_AVAILABLE)Profilerc                   ~     e Zd Zh dZh dZddeddf fdZededdfd       Z	ededdfd	       Z
dedefd
Z xZS )XLAProfiler>   	test_steppredict_stepvalidation_step>   backwardr   r	   training_stepr
   portreturnNc                     t         st        t        t                     t        |   dd       || _        i | _        i | _        d| _        y)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     t/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/pytorch_lightning/profilers/xla.pyr   zXLAProfiler.__init__"   sI     %c.&9::5	$&(*"'    action_namec                    dd l mc m} |j                  d      d   | j                  v r| j
                  s'|j                  | j                        | _        d| _        |j                  d      d   | j                  v r%| j                  |      }|j                  ||      }n|j                  |      }|j                          || j                  |<   y y )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	recordings        r   startzXLAProfiler.start3   s    -- S!"%)>)>>$$ oodii8$(!  %b)T-@-@@))+6LLtLD	HH[1	!/8D, ?r   c                 |    || j                   v r.| j                   |   j                  d d d        | j                   |= y y )N)r   __exit__r   r   s     r   stopzXLAProfiler.stopF   s@    $---,55dD$G##K0 .r   c                     || j                   vrd| j                   |<   n| j                   |xx   dz  cc<   | j                   |   S )N   )r   r4   s     r   r*   zXLAProfiler._get_step_numL   sG    d55534D##K0##K0A50&&{33r   )i4#  )__name__
__module____qualname__r)   r&   intr   r   r   r1   r5   r*   __classcell__)r   s   @r   r   r      sz    EN(S (D (" 9 9 9 9$ 1 1 1 1
4 4 4r   r   )loggingtyping_extensionsr   !lightning_fabric.accelerators.xlar   $pytorch_lightning.profilers.profilerr   	getLoggerr8   logr    r   r   <module>rD      s1     & < 9g!94( 94r   