Ë
    Â¯wgc  ã                   ó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)	Ú	FauxTorchzØEmulate 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      úk/home/mcse/projects/flask/flask-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<   € ô F—L‘L“NÓ#ˆØ4Š<ÜJ‰Ju˜t×9Ñ9Ñ9¸DÑ@ÔAØˆr   c                 óX   — | j                   | j                  j                  |i |¤Ž«      S r   )r   r   Úadd©r	   ÚargsÚkwargss      r   r   zFauxTorch.add#   ó,   € Ø×"Ñ"Ð#7 4×#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Ð#KÀFÑ#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Ø&+ò!ñ  #ˆE9˜dØ4ò#ð" Ø!ò%ð$ ô# 	×ÑØà"(¨HÒ"4¼)ÄEÈ;Ó:WÜ—Z‘Z  q 	Ó*Ü—Z‘Z Ó'ÜŸ™ B›ñ	ð ØØ   ˜ØØ#ö	
ðð	
ðð	
ðð	
ð€Fö ô* ˜f wÑ.Ó/ò ‰ˆˆ5Ø×!Ñ!¤&§,¡,Ø×#Ñ#°Ð#Ó6ó#
ô 	ô 	1q‘5'˜œ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   