§
    ÕóÉj˜  ã            	       ó„  — d dl Z d dlZd dlmZ d dlmZmZmZmZ ddl	m	Z	 ddl
mZmZ ddlmZ d dlmZ  e j        ¦   «         Zeeeee         ee         f         Z G d	„ d
¦  «        Z G d„ de¦  «        Zddœdedeeeef                  dee         fd„Zdddœdee         deeeef                  dee         fd„ZdS )é    N©Úwraps)ÚOptionalÚUnionÚAnyÚSequenceé   )Úflags)Útransform_tensor_metricsÚset_metric_kernels)Úmetadata_state)Úprotonc                   ób   — e Zd ZdZddedeeeef                  ddfd„Zd„ Z	d„ Z
d	„ Zd
„ Zd„ ZdS )Úscopea  
    A context manager and decorator for entering and exiting a scope.

    Usage:
        context manager:
        ```python
        with proton.scope("test0", {metric_name: metric_value}):
            foo[1,](x, y)
        ```

        decorator:
        ```python
        @proton.scope("test0", {metric_name: metric_value})
        def foo(x, y):
            ...
        ```

    Args:
        name (str): The name of the scope.
        metrics (dict[str, float], optional): The metrics of the scope. Default is None.
    NÚnameÚmetricsÚreturnc                 ó0   — || _         || _        d | _        d S ©N©r   r   Úid)Úselfr   r   s      úz/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/triton/profiler/scope.pyÚ__init__zscope.__init__'   s   € ØˆŒ	ØˆŒØˆŒˆˆó    c                 ó^  — t           j        sd S t          j        ¦   «         | _        t          j        | j        | j        ¦  «         | j        r`t          ¦   «         5  t          ¦   «          t          j
        | j        gt          | j        ¦  «        ¢R Ž  d d d ¦  «         d S # 1 swxY w Y   d S d S r   )r
   Úprofiling_onÚ	libprotonÚrecord_scoper   Úenter_scoper   r   r   r   Úadd_metricsr   ©r   s    r   Ú_enter_scopezscope._enter_scope,   s  € ÝÔ!ð 	ØˆFÝÔ(Ñ*Ô*ˆŒÝÔ˜dœg t¤yÑ1Ô1Ð1ØŒ<ð 	XÝÑ!Ô!ð Xð XÝ"Ñ$Ô$Ð$ÝÔ% d¤gÐWÕ0HÈÌÑ0VÔ0VÐWÐWÐWÐWðXð Xð Xñ Xô Xð Xð Xð Xð Xð Xð Xð Xøøøð Xð Xð Xð Xð Xð Xð	Xð 	Xs   Á8B Â B$Â'B$c                 ón   — t           j        r| j        €d S t          j        | j        | j        ¦  «         d S r   )r
   r   r   r   Ú
exit_scoper   r"   s    r   Ú_exit_scopezscope._exit_scope6   s5   € ÝÔ!ð 	 T¤W _ØˆFÝÔ˜TœW d¤iÑ0Ô0Ð0Ð0Ð0r   c                 ó.   — |                       ¦   «          | S r   )r#   r"   s    r   Ú	__enter__zscope.__enter__;   s   € Ø×ÒÑÔÐØˆr   c                 ó.   — |                       ¦   «          d S r   )r&   )r   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú__exit__zscope.__exit__?   s   € Ø×ÒÑÔÐÐÐr   c                 ó@   ‡ ‡— t          ‰¦  «        ˆˆ fd„¦   «         }|S )Nc                  ó˜   •— ‰                      ¦   «          	  ‰| i |¤Ž‰                     ¦   «          S # ‰                     ¦   «          w xY wr   )r#   r&   )ÚargsÚkwargsÚfuncr   s     €€r   Úwrapperzscope.__call__.<locals>.wrapperD   sY   ø€ à×ÒÑÔÐð#Ø�t˜TÐ, VÐ,Ð,à× Ò Ñ"Ô"Ð"Ð"ø�× Ò Ñ"Ô"Ð"Ð"øøøs	   —3 ³A	r   )r   r2   r3   s   `` r   Ú__call__zscope.__call__B   s9   øø€ å	ˆt‰Œð	#ð 	#ð 	#ð 	#ð 	#ñ 
Œð	#ð ˆr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   Údictr   r   r#   r&   r(   r-   r4   © r   r   r   r      s§   € € € € € ðð ð,ð ˜Sð ¨8°D¸¸c¸´NÔ+Cð Ètð ð ð ð ð
Xð Xð Xð1ð 1ð 1ð
ð ð ðð ð ð
ð 
ð 
ð 
ð 
r   r   c                   ób   ‡ — e Zd ZdZd	dedeeeef                  ddfˆ fd„Zˆ fd„Z	ˆ fd„Z
ˆ xZS )
Úcpu_timed_scopezÈ
    A scope that measures elapsed time (cpu_time).

    Args:
        name (str): The name of the scope.
        metrics (dict[str, float], optional): Additional metrics to add. Default is None.
    Nr   r   r   c                 óˆ   •— t          ¦   «                              ||¦  «         d | _        |rd|v rt          d¦  «        ‚d S d S )NÚcpu_timez'The metric name 'cpu_time' is reserved.)Úsuperr   Ú
start_timeÚ
ValueError)r   r   r   Ú	__class__s      €r   r   zcpu_timed_scope.__init__X   sX   ø€ Ý‰Œ×Ò˜˜wÑ'Ô'Ð'ØˆŒØð 	H�z WÐ,Ð,ÝÐFÑGÔGÐGð	Hð 	HÐ,Ð,r   c                 ó”   •— t           j        sd S t          j        ¦   «         | _        t          ¦   «                              ¦   «          d S r   )r
   r   ÚtimeÚperf_counter_nsrA   r@   r#   )r   rC   s    €r   r#   zcpu_timed_scope._enter_scope^   s?   ø€ ÝÔ!ð 	ØˆFÝÔ.Ñ0Ô0ˆŒÝ‰Œ×ÒÑÔÐÐÐr   c                 óà   •— t           j        sd S | j        �7t          j        ¦   «         | j        z
  }t          j        | j        d|i¦  «         t          ¦   «          	                    ¦   «          d S )Nzcpu_time (ns)(exc))
r
   r   rA   rE   rF   r   r!   r   r@   r&   )r   r?   rC   s     €r   r&   zcpu_timed_scope._exit_scoped   sg   ø€ ÝÔ!ð 	ØˆFØŒ?Ð&ÝÔ+Ñ-Ô-°´Ñ?ˆHÝÔ! $¤'Ð,@À(Ð+KÑLÔLÐLÝ‰Œ×ÒÑÔÐÐÐr   r   )r5   r6   r7   r8   r9   r   r:   r   r   r#   r&   Ú__classcell__)rC   s   @r   r=   r=   O   sª   ø€ € € € € ðð ðHð H˜Sð H¨8°D¸¸c¸´NÔ+Cð HÈtð Hð Hð Hð Hð Hð Hðð ð ð ð ðð ð ð ð ð ð ð ð r   r=   )r   r   r   r   c                óž  — t           j        sd S t          j        ¦   «         }t	          t
          dg ¦  «        t
          _        t
          j                             || f¦  «         t          j        || ¦  «         |rSt          ¦   «         5  t          ¦   «          t          j        |gt          |¦  «        ¢R Ž  d d d ¦  «         n# 1 swxY w Y   |S )NÚscopes)r
   r   r   r   ÚgetattrÚthread_local_scopesrJ   Úappendr    r   r   r!   r   r   s      r   r    r    m   s  € ÝÔð ØˆtÝ	Ô	Ñ	!Ô	!€BÝ!(Õ)<¸hÈÑ!KÔ!KÕÔÝÔ×%Ò% r¨4 jÑ1Ô1Ð1ÝÔ˜"˜dÑ#Ô#Ð#Øð JÝÑÔð 	Jð 	JÝÑ Ô Ð ÝÔ! "ÐIÕ'?ÀÑ'HÔ'HÐIÐIÐIÐIð	Jð 	Jð 	Jñ 	Jô 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jøøøð 	Jð 	Jð 	Jð 	Jð €Is   Â.CÃCÃ	Cc                óz  — t           j        sd S t          j                             ¦   «         \  }}| r| |k    rt          d| › d|› �¦  «        ‚| s|} |rSt          ¦   «         5  t          ¦   «          t          j	        |gt          |¦  «        ¢R Ž  d d d ¦  «         n# 1 swxY w Y   t          j        || ¦  «         |S )NzScope name mismatch: z != )r
   r   rL   rJ   ÚpoprB   r   r   r   r!   r   r%   )r   r   r   Úpopped_names       r   r%   r%   {   s+  € åÔð ØˆtÝ)Ô0×4Ò4Ñ6Ô6�O€BˆØð �˜Ò#Ð#ÝÐH°ÐHÐH¸;ÐHÐHÑIÔIÐIØð ØˆØð JÝÑÔð 	Jð 	JÝÑ Ô Ð ÝÔ! "ÐIÕ'?ÀÑ'HÔ'HÐIÐIÐIÐIð	Jð 	Jð 	Jñ 	Jô 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jøøøð 	Jð 	Jð 	Jð 	Jõ Ô˜˜TÑ"Ô"Ð"Ø€Is   Á!.BÂBÂ"Br   )Ú	threadingrE   Ú	functoolsr   Útypingr   r   r   r   r
   Úmetricr   r   Ústater   Útriton._C.libprotonr   r   ÚlocalrL   ÚfloatÚintÚMetricValueTyper   r=   r9   r:   r    r%   r;   r   r   ú<module>r[      sÅ  ðØ Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø !Ð !Ð !Ð !Ð !Ð !Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3à%�i”oÑ'Ô'Ð à˜˜s H¨U¤O°X¸c´]ÐBÔC€ð<ð <ð <ð <ð <ñ <ô <ð <ð~ð ð ð ð �eñ ô ð ð< CGð ð ð �cð  x°°S¸#°X´Ô'?ð È8ÐTWÌ=ð ð ð ð ðÐRVð ð ð �X˜c”]ð °xÀÀSÈ#ÀXÄÔ7Oð Ð[cÐdgÔ[hð ð ð ð ð ð r   