
    sgc                     n    d Z ddlZddlZddlZddlZddlmc mZ  G d d      Z	d Z
edk(  r e
        yy)zAExample of Timer and Compare APIs:

$ python -m examples.compare
    Nc                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)		FauxTorchzEmulate different versions of pytorch.

    In normal circumstances this would be done with multiple processes
    writing serialized measurements, but this simplifies that model to
    make the example clearer.
    c                      || _         || _        y N)_real_torch_extra_ns_per_element)self
real_torchextra_ns_per_elements      Y/var/www/html/venv/lib/python3.12/site-packages/torch/utils/benchmark/examples/compare.py__init__zFauxTorch.__init__   s    %%9"    c                     t        |j                               }|dkD  r%t        j                  || j                  z  dz         |S )Ni  g&.>)intnumeltimesleepr   )r	   resultr   s      r   extra_overheadzFauxTorch.extra_overhead   s<     FLLN#4<JJut999D@Ar   c                 X    | j                   | j                  j                  |i |      S r   )r   r   addr	   argskwargss      r   r   zFauxTorch.add#   ,    ""#74#3#3#7#7#H#HIIr   c                 X    | j                   | j                  j                  |i |      S r   )r   r   mulr   s      r   r   zFauxTorch.mul&   r   r   c                 X    | j                   | j                  j                  |i |      S r   )r   r   catr   s      r   r   zFauxTorch.cat)   r   r   c                 X    | j                   | j                  j                  |i |      S r   )r   r   matmulr   s      r   r!   zFauxTorch.matmul,   s,    ""#:4#3#3#:#:D#KF#KLLr   N)
__name__
__module____qualname____doc__r   r   r   r   r   r!    r   r   r   r      s)    :JJJMr   r   c                     ddg} g }d}dD 	cg c]  \  }}| D ]  \  }}}dD ]  }dD ]z  }	t        j                  ||dk(  rt        nt        t        |      t        j                  |df      t        j                  d      t        j
                  d	      d
||d| ||	      |    }
}}}}}}}	t        |
|z        D ]y  \  }}|j                  t        j                  |j                  d                   t        d|dz    dt        |
      |z   d       t        j                  j                          { t                t        j                   |D cg c]  }t        j"                  |       c}      }t        d       |j                          t        d       |j%                          |j'                          |j                          y c c}	}}}}}}w c c}w )N)r   r   ztorch.add(x, y))r   zadd (extra +0)ztorch.add(x, y + zero)   ))masterN)	my_branch   )severe_regression   )r+   
   d   i  i'  iP  )r+      r)   r0   r&   )torchxyzerozsize: )stmtglobalslabel	sub_labeldescriptionenvnum_threadsg?)min_run_timer+   z /  )endz== Unformatted ================================================================================
///////////////////////////////////////////////////////////////////////////////////////////////
z== Formatted ================================================================================
/////////////////////////////////////////////////////////////////////////////////////////////
)benchmark_utilsTimerr1   r   oneszeros	enumerateappendpickledumpsblocked_autorangeprintlensysstdoutflushCompareloadstrim_significant_figurescolorize)tasksserialized_resultsrepeatsbranchoverhead_nsr7   r8   r5   sizer;   timersitimer
comparisons                 r   mainr\   0   s   );E
 G  $b   FK&+!  #E9d4#" !%$ # 	"(H"4)E;:WZZq	*ZZ'B	  #	
	
	
	
F * fw./ 5!!&,,###6#
 	 	1q5'S[7234"=

 
G ((!3*Q* J 

?@	
=>'')O :*s   BGG"__main__)r%   rF   rK   r   r1   torch.utils.benchmarkutils	benchmarkr@   r   r\   r"   r&   r   r   <module>ra      sE   
  
   / /M M@/d zF r   