§
    ž²Åj�  ã                   ó
  — d dl Z d dlZd dlmZmZ d dlmZ d dlZddlm	Z	 e j
         G d„ d¦  «        ¦   «         Z G d„ d	¦  «        Zd
efd„Zdee         d
dfd„Z G d„ d¦  «        Zdej        j        dee         d
efd„ZdS )é    N)ÚAnyÚList)ÚSelfé   )Ú
print_oncec                   ó”   — e Zd ZU dZeed<   dZeed<   dZeed<   dZ	eed<   de
de
fd	„Zdd
„Zdedd fd„Zdefd„Zdee         fd„ZdS )ÚProfileMetricsg        Úmicrosecondsr   Ú	operatorsÚfusionsÚgraphsÚotherÚreturnc                 ó„   — | xj         |j         z  c_         | xj        |j        z  c_        | xj        |j        z  c_        | S ©N©r
   r   r   ©Úselfr   s     úGC:\Projects\Historical\venv\Lib\site-packages\torch/_dynamo/profiler.pyÚ__iadd__zProfileMetrics.__iadd__   sB   € ØÐÔ˜UÔ/Ñ/ÐÔØˆŒ˜%œ/Ñ)ˆŒØˆŒ˜œÑ%ˆŒØˆó    c                 ó    — t          |t          ¦  «        sJ ‚t          | j        |j        z   | j        |j        z   | j        |j        z   ¦  «        S r   )Ú
isinstancer	   r
   r   r   r   s     r   Ú__add__zProfileMetrics.__add__   sP   € Ý˜%¥Ñ0Ô0Ð0Ð0Ð0ÝØÔ Ô 2Ñ2ØŒN˜Uœ_Ñ,ØŒL˜5œ=Ñ(ñ
ô 
ð 	
r   c           	      ó  — t          |t          ¦  «        rt          |||¦  «        }t          | j        t	          d|j        ¦  «        z  | j        t	          d|j        ¦  «        z  | j        t	          d|j        ¦  «        z  ¦  «        S )Nr   )r   Úintr	   r
   Úmaxr   r   r   s     r   Ú__truediv__zProfileMetrics.__truediv__    s{   € Ý�e�SÑ!Ô!ð 	8Ý" 5¨%°Ñ7Ô7ˆEÝØÔ¥ A uÔ'9Ñ :Ô :Ñ:ØŒN�S  E¤OÑ4Ô4Ñ4ØŒL�3˜q %¤-Ñ0Ô0Ñ0ñ
ô 
ð 	
r   c                 ó*   — | j         d›d| j        d›d�S )Nz4.0%z ops z time©r   r
   ©r   s    r   Ú__str__zProfileMetrics.__str__)   s$   € Ø”.ÐIÐIÐI¨DÔ,=ÐIÐIÐIÐIÐIr   c                 ó   — | j         | j        gS r   r    r!   s    r   ÚtocsvzProfileMetrics.tocsv,   s   € Ø” Ô 1Ð2Ð2r   N)r   r	   r   r	   )Ú__name__Ú
__module__Ú__qualname__r
   ÚfloatÚ__annotations__r   r   r   r   r   r   r   r   r   Ústrr"   r   r$   © r   r   r	   r	      së   € € € € € € à€L�%ÐÐÑØ€IˆsÐÐÑØ€GˆSÐÐÑØ€FˆC€O€O�Oð˜dð  tð ð ð ð ð
ð 
ð 
ð 
ð
 ð 
Ð)9ð 
ð 
ð 
ð 
ðJ˜ð Jð Jð Jð Jð3�t˜E”{ð 3ð 3ð 3ð 3ð 3ð 3r   r	   c                   óf   — e Zd Zdedededdfd„Zdedefd„Zdefd	„Zde	fd
„Z
dee         fd„ZdS )ÚProfileResultÚcapturedÚtotalÚunique_graphsr   Nc                 óh   — |pt          ¦   «         | _        |pt          ¦   «         | _        || _        d S r   )r	   r.   r/   r0   )r   r.   r/   r0   s       r   Ú__init__zProfileResult.__init__1   s6   € ð )1Ð(DµNÑ4DÔ4DˆŒØ%*Ð%>­nÑ.>Ô.>ˆŒ
Ø"/ˆÔÐÐr   r   c                 ó„   — | xj         |j         z  c_         | xj        |j        z  c_        | xj        |j        z  c_        | S r   ©r.   r/   r0   r   s     r   r   zProfileResult.__iadd__8   sB   € ØˆŒ˜œÑ'ˆŒØˆ
Œ
�e”kÑ!ˆ
Œ
ØÐÔ˜eÔ1Ñ1ÐÔØˆr   c                 ó    — | j         | j        z  S r   )r.   r/   r!   s    r   ÚpercentzProfileResult.percent>   s   € ØŒ}˜tœzÑ)Ð)r   c                 ó°   — | j         d›d| j        j        d›d| j        j        d›d| j        j        d›d�t          |                      ¦   «         ¦  «        z   S )NÚ2z graphs z graph calls Ú4ú/z = )r0   r.   r   r   r/   r*   r6   r!   s    r   r"   zProfileResult.__str__A   s~   € àÔ!ÐRð Gð G¨T¬]Ô-AÐRð Gð GØŒ}Ô&ÐFðGð GØ+/¬:Ô+?ÐFðGð Gð Gå�$—,’,‘.”.Ñ!Ô!ñ"ð	
r   c                 ó¢   — | j         | j        j        | j        j        | j        j        g|                      ¦   «                              ¦   «         z   S r   )r0   r.   r   r   r/   r6   r$   r!   s    r   r$   zProfileResult.tocsvH   sH   € àÔØŒMÔ ØŒMÔ#ØŒJÔ ð	
ð
 �LŠL‰NŒN× Ò Ñ"Ô"ñ#ð 	#r   )r%   r&   r'   r	   r   r2   r   r   r6   r*   r"   r   r   r$   r+   r   r   r-   r-   0   s¿   € € € € € ð0Ø&ð0Ø/=ð0ØNQð0à	ð0ð 0ð 0ð 0ð˜dð  tð ð ð ð ð*˜ð *ð *ð *ð *ð
˜ð 
ð 
ð 
ð 
ð#�t˜C”yð #ð #ð #ð #ð #ð #r   r-   r   c                  óH   — t           j                             d¦  «        dk    S )NÚTORCHDYNAMO_PRINT_MISSINGÚ1)ÚosÚenvironÚgetr+   r   r   Úshould_print_missingrB   Q   s   € ÝŒ:�>Š>Ð5Ñ6Ô6¸#Ò=Ð=r   Ústackc                 óª   — t          d„ | D ¦   «         ¦  «        rd S d„ | D ¦   «         } t          dd                     | dd …         ¦  «        ¦  «         d S )Nc              3   ó   K  — | ]}d |v V — Œ	dS )z/torch/autograd/profiler.pyNr+   ©Ú.0Úxs     r   ú	<genexpr>z print_missing.<locals>.<genexpr>V   s(   è è € Ð
=Ð
=°!Ð(¨AÐ-Ð
=Ð
=Ð
=Ð
=Ð
=Ð
=r   c                 ó"   — g | ]}d |v¯d|v¯
|‘ŒS )z	<built-inzsite-packages/torch/r+   rF   s     r   ú
<listcomp>z!print_missing.<locals>.<listcomp>X   s5   € ð ð ð Ø˜[°Ð1Ð1Ð6LÐTUÐ6UÐ6UˆÐ6UÐ6UÐ6Ur   ÚMISSINGz >> éýÿÿÿ)Úanyr   Újoin)rC   s    r   Úprint_missingrP   U   sp   € Ý
Ð
=Ð
=°uÐ
=Ñ
=Ô
=Ñ=Ô=ð Øˆðð Øðñ ô €Eõ ˆy˜&Ÿ+š+ e¨B¨C¨C¤jÑ1Ô1Ñ2Ô2Ð2Ð2Ð2r   c                   ó2   — e Zd ZU dZeed<   dd„Zdefd„ZdS )ÚProfilerr   r0   r   Nc                 ó”   — t           j                             t           j        j        j        gt          ¦   «         ¬¦  «        | _        d S )N)Ú
activitiesÚ
with_stack)ÚtorchÚprofilerÚprofileÚProfilerActivityÚCPUrB   Úprofr!   s    r   r2   zProfiler.__init__a   s;   € Ý”N×*Ò*ÝœÔ7Ô;Ð<Ý+Ñ-Ô-ð +ñ 
ô 
ˆŒ	ˆ	ˆ	r   c           	      óŽ  — d}d}d}d}d}d}d}t          | j                             ¦   «         d„ ¬¦  «        }|D ]¶}	|	j        dk    r|	j        j        }|dz  }|dz  }Œ$|	j        j        |k    r‚|	j        j        }|	j        j        |k    r"|dz  }||	j                             ¦   «         z  }n"t          ¦   «         rt          |	j
        ¦  «         |dz  }||	j                             ¦   «         z  }Œ¶Œ·t          j        }
dt          _        |dz  }t          t          ||||z
  |¬¦  «        t          |||dz
  ¬¦  «        |
¬	¦  «        S )
Nr   éÿÿÿÿc                 ó   — | j         j        S r   )Ú
time_rangeÚstart)rH   s    r   ú<lambda>z"Profiler.results.<locals>.<lambda>p   s   € ¸!¼,Ô:L€ r   )ÚkeyÚTORCHDYNAMOr   )r
   r   r   r   r   r4   )Úsortedr[   ÚeventsÚnamer_   Úendr`   Ú
elapsed_usrB   rP   rC   rR   r0   r-   r	   )r   Úcaptured_regionsÚcaptured_opsÚcaptured_microsecondsÚ	total_opsÚtotal_microsecondsÚlast_op_end_timeÚcaptured_region_end_timere   Úer0   s              r   ÚresultszProfiler.resultsg   sž  € ØÐØˆØ !ÐØˆ	ØÐàÐØ#%Ð Ý˜œ	×(Ò(Ñ*Ô*Ð0LÐ0LÐMÑMÔMˆØð 	ð 	ˆAØŒv˜Ò&Ð&Ø+,¬<Ô+;Ð(Ø  AÑ%Ð à˜Q‘�	�	Ø”Ô#Ð'7Ò7Ð7Ø#$¤<Ô#3Ð Ø”<Ô#Ð'?Ò?Ð?Ø  AÑ%�LØ)¨Q¬\×-DÒ-DÑ-FÔ-FÑFÐ)Ð)Ý)Ñ+Ô+ð +Ý! !¤'Ñ*Ô*Ð*Ø˜Q‘�	Ø" a¤l×&=Ò&=Ñ&?Ô&?Ñ?Ð"Ð"àå Ô.ˆØ!"�Ôà�Q‰ˆ	åÝ#Ø2Ø&Ø$Ð'7Ñ7Ø'ð	ñ ô õ !Ø/Ø#Ø! A™ðñ ô ð
 (ð
ñ 
ô 
ð 	
r   )r   N)	r%   r&   r'   r0   r   r)   r2   r-   rq   r+   r   r   rR   rR   ^   sU   € € € € € € Ø€M�3ÐÐÑð
ð 
ð 
ð 
ð.
˜ð .
ð .
ð .
ð .
ð .
ð .
r   rR   ÚgmÚexample_inputsc                 óZ   ‡ — dt           dt           fˆ fd„}t          xj        dz  c_        |S )NÚargsr   c                  óŠ   •— t           j                             d¦  «        5   ‰j        | Ž cd d d ¦  «         S # 1 swxY w Y   d S )Nrc   )rV   rW   Úrecord_functionÚforward)ru   rr   s    €r   Ú_wrappedz%fx_insert_profiling.<locals>._wrapped™   s‰   ø€ ÝŒ^×+Ò+¨MÑ:Ô:ð 	%ð 	%Ø�2”:˜tÐ$ð	%ð 	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   ¡
8¸<¿<r   )r   rR   r0   )rr   rs   ry   s   `  r   Úfx_insert_profilingrz   ˜   sJ   ø€ ð%�ð %¥ð %ð %ð %ð %ð %ð %õ ÐÔ˜aÑÐÔØ€Or   )Údataclassesr?   Útypingr   r   Útyping_extensionsr   rV   Úutilsr   Ú	dataclassr	   r-   ÚboolrB   r*   rP   rR   ÚfxÚGraphModulerz   r+   r   r   ú<module>rƒ      sh  ðØ Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "à €€€à Ð Ð Ð Ð Ð ð Ôð!3ð !3ð !3ð !3ð !3ñ !3ô !3ñ Ôð!3ðH#ð #ð #ð #ð #ñ #ô #ð #ðB>˜dð >ð >ð >ð >ð3˜˜cœð 3 tð 3ð 3ð 3ð 3ð7
ð 7
ð 7
ð 7
ð 7
ñ 7
ô 7
ð 7
ðt˜EœHÔ0ð À$ÀsÄ)ð ÐPSð ð ð ð ð ð r   