o
    8wi                     @   sJ   d dl 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)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__ \/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/pytorch_lightning/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   start3   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   stopF   s   
zXLAProfiler.stopc                 C   s2   || j vrd| j |< n	| j |  d7  < | j | S )N   )r   r1   r   r   r   r(   L   s   

zXLAProfiler._get_step_num)r   )__name__
__module____qualname__r'   r$   intr   r   r   r/   r2   r(   __classcell__r   r   r   r   r      s    r   )loggingtyping_extensionsr   !lightning_fabric.accelerators.xlar   $pytorch_lightning.profilers.profilerr   	getLoggerr4   logr   r   r   r   r   <module>   s   
