ó
    ÊÙ¢j¼  ã                   ój   • S SK r S SKJr  S SKJr  S SKJr  \ R                  " \5      r	 " S S\5      r
g)é    N)Úoverride)Ú_XLA_AVAILABLE)ÚProfilerc                   ó’   ^ • \ rS rSr1 Skr1 SkrSS\SS4U 4S jjjr\S\	SS4S	 j5       r
\S\	SS4S
 j5       rS\	S\4S jrSrU =r$ )ÚXLAProfileré   >   Ú	test_stepÚpredict_stepÚvalidation_step>   Úbackwardr	   r
   Útraining_stepr   ÚportÚreturnNc                 óž   >• [         (       d  [        [        [         5      5      e[        TU ]  SSS9  Xl        0 U l        0 U l        SU l        g)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     €Ú­C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\pytorch_lightning/profilers/xla.pyr   ÚXLAProfiler.__init__"   sI   ø€ ÷ Š~Ü%¤c¬.Ó&9Ó:Ð:Ü‰Ñ °ÐÑ5ØŒ	Ø$&ˆÔØ(*ˆÔØ"'ˆÕó    Úaction_namec                 ó°  • SS K Js  Jn  UR                  S5      S   U R                  ;   a«  U R
                  (       d'  UR                  U R                  5      U l        SU l        UR                  S5      S   U R                  ;   a!  U R                  U5      nUR                  XS9nOUR                  U5      nUR                  5         X@R                  U'   g g )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   ÚstartÚXLAProfiler.start3   s¸   € ç-Ð-ð ×Ñ˜SÓ! "Ñ%¨×)>Ñ)>Ó>Ø×$×$Ø Ÿo™o¨d¯i©iÓ8�”Ø$(�Ô!à× Ñ  Ó% bÑ)¨T×-@Ñ-@Ó@Ø×)Ñ)¨+Ó6�ØŸL™L¨˜LÐD‘	àŸH™H [Ó1�	Ø×ÑÔ!Ø/8×Ñ Ò,ð ?r   c                 ó~   • XR                   ;   a.  U R                   U   R                  S S S 5        U R                   U	 g g )N)r   Ú__exit__©r   r   s     r   ÚstopÚXLAProfiler.stopF   s>   € à×-Ñ-Ó-Ø×Ñ Ñ,×5Ñ5°d¸DÀ$ÔGØ×#Ñ# KÑ0ð .r   c                 óŒ   • XR                   ;  a  SU R                   U'   OU R                   U==   S-  ss'   U R                   U   $ )Né   )r   r7   s     r   r,   ÚXLAProfiler._get_step_numL   sE   € Ø×5Ñ5Ó5Ø34ˆD×#Ñ# KÒ0à×#Ñ# KÓ0°AÑ5Ó0Ø×&Ñ& {Ñ3Ð3r   )r   r   r   r   r*   )i4#  )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r+   r(   Úintr   r   r   r3   r8   r,   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      s„   ø† ÚE€NòÐñ(˜Sð (¨D÷ (ð (ð" ð9 ð 9¨ó 9ó ð9ð$ ð1 ð 1¨ó 1ó ð1ð
4¨ð 4°÷ 4ò 4r   r   )ÚloggingÚtyping_extensionsr   Ú!lightning_fabric.accelerators.xlar   Ú$pytorch_lightning.profilers.profilerr   Ú	getLoggerr=   Úlogr   © r   r   Ú<module>rK      s/   ðó å &å <Ý 9à×Ò˜Ó!€ô94�(õ 94r   