§
    �Štjs  ã                   ó‚   — 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d„Z
edk    r e
¦   «          dS dS )	zAExample of Timer and Compare APIs:

$ python -m examples.compare
é    Nc                   ó8   — e Zd ZdZd
d„Zd„ Zd„ Zd„ Zd„ Zd	„ Z	dS )Ú	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.
    ÚreturnNc                 ó"   — || _         || _        d S ©N)Ú_real_torchÚ_extra_ns_per_element)ÚselfÚ
real_torchÚextra_ns_per_elements      úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/utils/benchmark/examples/compare.pyÚ__init__zFauxTorch.__init__   s   € Ø%ˆÔØ%9ˆÔ"Ð"Ð"ó    c                 ó’   — t          |                     ¦   «         ¦  «        }|dk    rt          j        || j        z  dz  ¦  «         |S )Niˆ  g•Ö&è.>)ÚintÚnumelÚtimeÚsleepr	   )r
   Úresultr   s      r   Úextra_overheadzFauxTorch.extra_overhead   sD   € õ �F—L’L‘N”NÑ#Ô#ˆØ�4Š<ˆ<ÝŒJ�u˜tÔ9Ñ9¸DÑ@ÑAÔAÐAØˆr   c                 óL   — |                        | j        j        |i |¤Ž¦  «        S r   )r   r   Úadd©r
   ÚargsÚkwargss      r   r   zFauxTorch.add#   ó,   € Ø×"Ò"Ð#7 4Ô#3Ô#7¸Ð#HÀÐ#HÐ#HÑIÔIÐIr   c                 óL   — |                        | j        j        |i |¤Ž¦  «        S r   )r   r   Úmulr   s      r   r   zFauxTorch.mul&   r   r   c                 óL   — |                        | j        j        |i |¤Ž¦  «        S r   )r   r   Úcatr   s      r   r    zFauxTorch.cat)   r   r   c                 óL   — |                        | j        j        |i |¤Ž¦  «        S r   )r   r   Úmatmulr   s      r   r"   zFauxTorch.matmul,   s,   € Ø×"Ò"Ð#: 4Ô#3Ô#:¸DÐ#KÀFÐ#KÐ#KÑLÔLÐLr   ©r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r    r"   © r   r   r   r      s‹   € € € € € ðð ð:ð :ð :ð :ðð ð ðJð Jð JðJð Jð JðJð Jð JðMð Mð Mð Mð Mr   r   r   c            	      óž  ‡— ddgŠg } d}ˆfd„dD ¦   «         }t          ||z  ¦  «        D ]ˆ\  }}|                      t          j        |                     d¬¦  «        ¦  «        ¦  «         t          d|d	z   › d
t          |¦  «        |z  › �d¬¦  «         t          j         	                    ¦   «          Œ‰t          ¦   «          t          j        d„ | D ¦   «         ¦  «        }t          d¦  «         |                     ¦   «          t          d¦  «         |                     ¦   «          |                     ¦   «          |                     ¦   «          d S )N)r   r   ztorch.add(x, y))r   zadd (extra +0)ztorch.add(x, y + zero)é   c                 ó2  •— g | ]“\  }}‰D ]‹\  }}}d D ]‚}dD ]}}t          j        ||dk    rt          nt          t          |¦  «        t          j        |df¦  «        t          j        d¦  «        t          j        d¦  «        dœ||d|› �||¬¦  «        ‘Œ~ŒƒŒŒŒ”S ))é   é
   éd   iè  i'  iPÃ  )r,   é   Úmasterr/   r(   )ÚtorchÚxÚyÚzerozsize: )ÚstmtÚglobalsÚlabelÚ	sub_labelÚdescriptionÚenvÚnum_threads)Úbenchmark_utilsÚTimerr1   r   ÚonesÚzeros)	Ú.0ÚbranchÚoverhead_nsr7   r8   r5   Úsizer;   Útaskss	           €r   ú
<listcomp>zmain.<locals>.<listcomp>8   sô   ø€ ð ð ð ñ  ˆF�KØ&+ð!ð ñ  #ˆE�9˜dØ4ð#ð ð" Ø!ð%ð ð$ õ# 	ÔØà"(¨HÒ"4Ð"4�˜½)ÅEÈ;Ñ:WÔ:WÝ”Z  q 	Ñ*Ô*Ý”Z Ñ'Ô'Ýœ B™œð	ð ð ØØ' ˜˜ØØ#ð	
ñ 	
ô 	
ðð ð ð ð ð r   ))r0   N)Ú	my_branchr,   )Úsevere_regressioné   gš™™™™™©?)Úmin_run_timeúr,   z / Ú )Úendc                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r(   )ÚpickleÚloads)r@   Úis     r   rE   zmain.<locals>.<listcomp>U   s-   € ð *ð *ð *Ø�Œ�Q‰Œð*ð *ð *r   zÀ== Unformatted ================================================================================
///////////////////////////////////////////////////////////////////////////////////////////////
z¼== Formatted ================================================================================
/////////////////////////////////////////////////////////////////////////////////////////////
)Ú	enumerateÚappendrN   ÚdumpsÚblocked_autorangeÚprintÚlenÚsysÚstdoutÚflushr<   ÚCompareÚtrim_significant_figuresÚcolorize)Úserialized_resultsÚrepeatsÚtimersrP   ÚtimerÚ
comparisonrD   s         @r   Úmainrb   0   s•  ø€ à)Ø;ð€Eð
 ÐØ€Gðð ð ð ð $bðñ ô €Fõ* ˜f wÑ.Ñ/Ô/ð ð ‰ˆˆ5Ø×!Ò!¥&¤,Ø×#Ò#°Ð#Ñ6Ô6ñ#
ô #
ñ 	ô 	ð 	õ 	Ð4�1�q‘5Ð4Ð4�S ™[œ[¨7Ñ2Ð4Ð4¸"Ð=Ñ=Ô=Ð=ÝŒ
×ÒÑÔÐÐÝ	�G„G€Gå Ô(ð *ð *Ø!3ð*ñ *ô *ñ ô €Jõ 
Ð
?Ñ@Ô@Ð@Ø×ÒÑÔÐå	Ð
=Ñ>Ô>Ð>Ø×'Ò'Ñ)Ô)Ð)Ø×ÒÑÔÐØ×ÒÑÔÐÐÐr   Ú__main__r#   )r'   rN   rW   r   r1   Útorch.utils.benchmarkÚutilsÚ	benchmarkr<   r   rb   r$   r(   r   r   ú<module>rg      sº   ððð ð
 €€€Ø 
€
€
€
Ø €€€à €€€à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðMð Mð Mð Mð Mñ Mô Mð Mð@/ð /ð /ð /ðd ˆzÒÐØ€D�F„F€F€F€Fð Ðr   