§
    ž²Åjâ<  ã                   ó‚  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlZd dlmZ d dlmZ d dlmZ ddlmZm Z m!Z!m"Z" dd	l#m$Z$m%Z%m&Z&m'Z' dd
l(m)Z)m*Z*m+Z+ ddl	m,Z, ddl-m.Z. dZ/ee	j0                 e1d<   	 d dl2Z/n# e3$ r dZ/Y nw xY we j4        Z4dZ5 ej6        e7¦  «        Z8deej9                 deej9                 fd„Z:de;de;fd„Z<d„ Z=dej>        j?        dedededee         f
d„Z@dedeAfd„ZBedej9        dej9        fd„¦   «         ZCedeee         eedf         eeef         f         deDfd„¦   «         ZCdedeej9        eDf         fd„ZCde;fd „ZEdgde;d"e	jF        d#e;ddfd$„ZGd d%œd&e,d'eHd(ed)ed*eHdee+         fd+„ZI G d,„ d-¦  «        ZJ G d.„ d/¦  «        ZK G d0„ d1¦  «        ZL G d2„ d3¦  «        ZMd"e;de;fd4„ZNd"e;de;fd5„ZOd6e;de;fd7„ZPd"e;de;fd8„ZQ	 	 	 dhd9ed:edef         d;eHd<eeH         d=eeH         d>eHddfd?„ZRd@ejS        deej9                 dedef         fdA„ZT	 	 didDeDdEeDdFeAdGeDde;f
dH„ZUejV        dId fdJeeH         dKeeH         dLejW        dMee;ejX        f         dNeHdej9        fdO„ZY edP¦  «        ZZdeAfdQ„Z[d:edeZf         dRededeZf         fdS„Z\ddT„ dUœdVe]dWe;dXe;dRedYee;         dZeedef         gedef         f         de]fd[„Z^d:edef         dedef         fd\„Z_d:edef         dedef         fd]„Z`d:edef         dedef         fd^„Zad:edef         dedef         fd_„Zbd:edef         dedef         fd`„Zcd:edef         dedef         fda„Zdd:edef         dedef         fdb„Zed:edef         dedef         fdc„ZfdjdeeAddfdf„ZgdS )ké    N)
ÚAnyÚCallableÚDictÚListÚOptionalÚoverloadÚSequenceÚTupleÚTypeVarÚUnion)Úpatch)Úfx)Ú	aot_eager)ÚOutputGraphé   )ÚconfigÚ
eval_frameÚoptimize_assertÚreset)Úcreate_instructionÚdebug_checksÚis_generatorÚtransform_code_object)ÚCheckFunctionManagerÚ	CompileIdÚGuardedCode)ÚDynamoFrameType)ÚsameÚnpé   ÚxÚreturnc                 ó†   — | €d S |                       ¦   «                              ¦   «                              | j        ¦  «        S ©N)ÚdetachÚcloneÚrequires_grad_Úrequires_grad©r!   s    úFC:\Projects\Historical\venv\Lib\site-packages\torch/_dynamo/testing.pyÚclone_mer+   7   s6   € Ø€yØˆtØ�8Š8‰:Œ:×ÒÑÔ×,Ò,¨Q¬_Ñ=Ô=Ð=ó    Únamec                 ó.   — t          j        dd| ¦  «        S )Nz^_orig_mod[.]Ú ©ÚreÚsub)r-   s    r*   Úremove_optimized_module_prefixr3   =   ó   € ÝŒ6Ð" B¨Ñ-Ô-Ð-r,   c                 ó†   ‡‡‡— ddl mŠ d Šd Šˆˆˆfd„}  t          j        |d¬¦  «        | ¦  «        |i |¤Ž ‰j        ‰fS )Nr   )ÚInstructionTranslatorc                 óH   •— | Š‰                      ¦   «         j        j        Š| S r$   )Ú
current_txÚoutputÚregion_tracker)Ú_gmÚargsÚkwargsr6   Úgmr:   s      €€€r*   Úextract_graph_backendz8extract_graph_and_tracker.<locals>.extract_graph_backendG   s&   ø€ ð ˆØ.×9Ò9Ñ;Ô;ÔBÔQˆØˆ
r,   T)ÚbackendÚ	fullgraph)Útorch._dynamo.symbolic_convertr6   ÚtorchÚcompileÚgraph)Úfnr<   r=   r?   r6   r>   r:   s       @@@r*   Úextract_graph_and_trackerrG   A   s„   øøø€ ØDÐDÐDÐDÐDÐDà	€BØ€Nðð ð ð ð ð ð ð EÐ@…E„MÐ/¸4Ð@Ñ@Ô@ÀÑDÔDÀdÐUÈfÐUÐUÐUØŒ8�^Ð#Ð#r,   ÚmodelÚ
predictionÚlossÚexample_inputsc                 óJ  — g }|                      |¦  «         |                      |¦  «         i }i }|                      ¦   «         D ]_\  }}t          | t          j        ¦  «        rt          |¦  «        }|}	|j        }
|j        €t          j        |¦  «        }
|
||dz   <   |	||<   Œ`|                      |¦  «         |                      |¦  «         i }|  	                    ¦   «         D ]3\  }}t          | t          j        ¦  «        rt          |¦  «        }|||<   Œ4|                      |¦  «         |D ]r}t          |t          t          f¦  «        r |                     d„ |D ¦   «         ¦  «         Œ>t          |t          j        ¦  «        r|                      |j        ¦  «         Œs|S )Nz.gradc              3   óX   K  — | ]%}t          |t          j        ¦  «        ¯|j        V — Œ&d S r$   )Ú
isinstancerC   ÚTensorÚgrad)Ú.0Úinps     r*   ú	<genexpr>z"collect_results.<locals>.<genexpr>s   s5   è è € ÐXÐX¨½*ÀSÍ%Ì,Ñ:WÔ:WÐX˜3œ8ÐXÐXÐXÐXÐXÐXr,   )ÚappendÚnamed_parametersrN   r   ÚOptimizedModuler3   rP   rC   Ú
zeros_likeÚnamed_buffersÚtupleÚlistÚextendrO   )rH   rI   rJ   rK   ÚresultsÚgradsÚparamsr-   ÚparamÚ
param_copyrP   ÚbuffersÚbufferÚexamples                 r*   Úcollect_resultsrd   R   sµ  € ð €GØ‡N‚N�:ÑÔÐØ‡N‚N�4ÑÔÐð €EØ€FØ×-Ò-Ñ/Ô/ð 	"ð 	"‰ˆˆeÝ�e�ZÔ7Ñ8Ô8ð 	8Ý1°$Ñ7Ô7ˆDØˆ
ØŒzˆàŒ:ÐÝÔ# EÑ*Ô*ˆDØ $ˆˆd�W‰nÑØ!ˆˆt‰ˆØ‡N‚N�5ÑÔÐØ‡N‚N�6ÑÔÐØ€GØ×+Ò+Ñ-Ô-ð ð ‰ˆˆfÝ�e�ZÔ7Ñ8Ô8ð 	8Ý1°$Ñ7Ô7ˆDØˆ�‰ˆØ‡N‚N�7ÑÔÐØ!ð -ð -ˆÝ�g¥¥t˜}Ñ-Ô-ð 	-Ø�NŠNÐXÐX¨wÐXÑXÔXÑXÔXÐXÐXå˜'¥5¤<Ñ0Ô0ð -Ø—’˜wœ|Ñ,Ô,Ð,øØ€Nr,   Úoutc                 ó  — t          | t          j        ¦  «        r| j        S t          | t          t
          f¦  «        rt          d„ | D ¦   «         ¦  «        S | €dS t          | t          ¦  «        rdS t          dt          | ¦  «        ¦  «        ‚)Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r$   )Úrequires_bwd_pass©rQ   r!   s     r*   rS   z$requires_bwd_pass.<locals>.<genexpr>~   s+   è è € Ð5Ð5¨AÕ$ QÑ'Ô'Ð5Ð5Ð5Ð5Ð5Ð5r,   FúDon't know how to reduce)
rN   rC   rO   r(   rZ   rY   ÚanyÚintÚNotImplementedErrorÚtype©re   s    r*   rh   rh   z   sŠ   € Ý�#•u”|Ñ$Ô$ð ØÔ Ð Ý	�C�$¥˜Ñ	'Ô	'ð ÝÐ5Ð5°Ð5Ñ5Ô5Ñ5Ô5Ð5Ø	ˆØˆuÝ	�C�Ñ	Ô	ð ØˆuÝ
Ð8½$¸s¹)¼)Ñ
DÔ
DÐDr,   c                 ó   — d S r$   © ro   s    r*   Úreduce_to_scalar_lossrr   †   s   € à€Cr,   .c                 ó   — d S r$   rq   ro   s    r*   rr   rr   ‹   s	   € ð €Cr,   c                 óÆ  — t          | t          j        ¦  «        r)|                      ¦   «         |                      ¦   «         z  S t          | t
          t          f¦  «        r)t          d„ | D ¦   «         ¦  «        t          | ¦  «        z  S t          | ¦  «        j	        dv rt          | j        ¦  «        S t          | ¦  «        j	        dk    r| j                             ¦   «         S t          | t          ¦  «        rMt          d„ |                      ¦   «         D ¦   «         ¦  «        t          |                      ¦   «         ¦  «        z  S t!          dt          | ¦  «        ¦  «        ‚)z/Reduce the output of a model to get scalar lossc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r$   ©rr   ri   s     r*   rS   z(reduce_to_scalar_loss.<locals>.<genexpr>˜   s+   è è € Ð9Ð9°Õ(¨Ñ+Ô+Ð9Ð9Ð9Ð9Ð9Ð9r,   )ÚMaskedLMOutputÚSeq2SeqLMOutputÚ!CausalLMOutputWithCrossAttentionsÚSquashedNormalc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r$   rv   )rQ   Úvalues     r*   rS   z(reduce_to_scalar_loss.<locals>.<genexpr>¢   s+   è è € ÐJÐJ°EÕ(¨Ñ/Ô/ÐJÐJÐJÐJÐJÐJr,   rj   )rN   rC   rO   ÚsumÚnumelrZ   rY   Úlenrn   Ú__name__rr   ÚlogitsÚmeanÚdictÚvaluesÚkeysrm   ro   s    r*   rr   rr   ’   s1  € å�#•u”|Ñ$Ô$ð 
à�wŠw‰yŒy˜3Ÿ9š9™;œ;Ñ&Ð&Ý	�C�$¥˜Ñ	'Ô	'ð 
ÝÐ9Ð9°SÐ9Ñ9Ô9Ñ9Ô9½CÀ¹H¼HÑDÐDÝ	ˆc‰ŒÔ	ð  ð 
ð 
õ
 % S¤ZÑ0Ô0Ð0Ý	ˆc‰ŒÔ	Ð/Ò	/Ð	/ØŒx�|Š|‰~Œ~ÐÝ	�C�Ñ	Ô	ð 
ÝÐJÐJ¸S¿ZºZ¹\¼\ÐJÑJÔJÑJÔJÍSØ�HŠH‰JŒJñN
ô N
ñ 
ð 	
õ Ð8½$¸s¹)¼)Ñ
DÔ
DÐDr,   c                  óð   — t           j                             t           j                             t          ¦  «        d¦  «        } t           j                             | ¦  «        st          j        | ¦  «         | S )Nz../debug)ÚosÚpathÚjoinÚdirnameÚ__file__ÚexistsÚmkdir)rˆ   s    r*   Ú	debug_dirrŽ   ¨   sM   € ÝŒ7�<Š<�œŸš­Ñ1Ô1°:Ñ>Ô>€DÝŒ7�>Š>˜$ÑÔð Ý
Œ�‰ŒˆØ€Kr,   r/   ÚcodeÚextrac           	      óx  — t          t          j                             t	          ¦   «         | ¦  «        d¦  «        5 }|                     t          j        |¦  «                             ¦   «         › dt          j        |¦  «                             ¦   «         › d|› d�¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚwz

ú
)	Úopenr‡   rˆ   r‰   rŽ   ÚwriteÚdisÚBytecodeÚinfo)r-   r�   r�   Úfds       r*   Ú
debug_dumprš   ¯   så   € Ý	�bŒg�lŠl�9™;œ;¨Ñ-Ô-¨sÑ	3Ô	3ð 
°rØ
�ŠÝŒ|˜DÑ!Ô!×&Ò&Ñ(Ô(ÐUÐU­c¬l¸4Ñ.@Ô.@×.DÒ.DÑ.FÔ.FÐUÐUÈEÐUÐUÐUñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   »A'B/Â/B3Â6B3)ÚskipÚframeÚ
cache_sizeÚhooksÚ_r›   c                ó�  — dt           t                   dt          ddfd„}t          | j        ¦  «        rdS t	          | j        ¦  «         t          | j        |¦  «        }t          i ddddddit          ¦   «         t          ¦   «         | j        g ¬	¦
  «
        }t          |t          |¦  «        j        t          dd¦  «        ¦  «        S )
zused to debug jump updatesÚinstructionsÚcode_optionsr"   Nc                 ó’   — |                       dt          d¦  «        ¦  «         |                       dt          d¦  «        ¦  «         d S )Nr   ÚNOP)Úinsertr   )r¡   r¢   s     r*   Úinsert_nopsz&debug_insert_nops.<locals>.insert_nops»   sF   € Ø×Ò˜AÕ1°%Ñ8Ô8Ñ9Ô9Ð9Ø×Ò˜AÕ1°%Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9r,   FÚ_idr   )
r¢   Úcompiler_fnÚroot_txÚexportÚexport_constraintsÚframe_stateÚlocal_scopeÚglobal_scopeÚf_codeÚtorch_function_mode_stack)r   r   r   r¯   r   r   r   ÚlocalsÚglobalsr   r   Úguard_managerr   )rœ   r�   rž   rŸ   r›   r¦   r�   rE   s           r*   Údebug_insert_nopsr´   ¶   sÓ   € ð
:¥$¥s¤)ð :½3ð :À4ð :ð :ð :ð :õ �E”LÑ!Ô!ð Øˆtå�”ÑÔÐÝ  ¤¨{Ñ;Ô;€DÝØØØØØØ˜A�Jå‘H”HÝ‘Y”YØŒ|Ø"$ðñ ô €Eõ �tÕ1°%Ñ8Ô8ÔFÍ	ÐRSÐUVÉÌÑXÔXÐXr,   c                   ól   — e Zd Zd	d„Zdej        j        deej                 de	de
f         fd„Zd	d„ZdS )
ÚCompileCounterr"   Nc                 ó"   — d| _         d| _        d S ©Nr   ©Úframe_countÚop_count©Úselfs    r*   Ú__init__zCompileCounter.__init__Ö   ó   € ØˆÔØˆŒˆˆr,   r>   rK   .c                 ó€   — | xj         dz  c_         |j        j        D ]}d|j        v r| xj        dz  c_        Œ|j        S )Nr   Úcall)rº   rE   ÚnodesÚopr»   Úforward)r½   r>   rK   Únodes       r*   Ú__call__zCompileCounter.__call__Ú   sQ   € ð 	ÐÔ˜AÑÐÔØ”H”Nð 	#ð 	#ˆDØ˜œÐ Ð Ø�” Ñ"�”øØŒzÐr,   c                 ó"   — d| _         d| _        d S r¸   r¹   r¼   s    r*   ÚclearzCompileCounter.clearã   r¿   r,   ©r"   N)r€   Ú
__module__Ú__qualname__r¾   rC   r   ÚGraphModuler   rO   r   r   rÆ   rÈ   rq   r,   r*   r¶   r¶   Õ   s}   € € € € € ðð ð ð ðØ”(Ô&ðØ8<¸U¼\Ô8Jðà	�#�s�(Ô	ðð ð ð ðð ð ð ð ð r,   r¶   c                   ól   — e Zd Zdeddfd„Zdej        j        deej	                 de
def         fd„ZdS )	ÚCompileCounterWithBackendr@   r"   Nc                 ó>   — d| _         d| _        || _        g | _        d S r¸   )rº   r»   r@   Úgraphs)r½   r@   s     r*   r¾   z"CompileCounterWithBackend.__init__é   s#   € ØˆÔØˆŒØˆŒØ24ˆŒˆˆr,   r>   rK   .c                 óæ   — ddl m} | xj        dz  c_        |j        j        D ]}d|j        v r| xj        dz  c_        Œ| j                             |¦  «           || j	        ¦  «        ||¦  «        S )Nr   )Úlookup_backendrÁ   )
Úbackends.registryrÒ   rº   rE   rÂ   rÃ   r»   rÐ   rT   r@   )r½   r>   rK   rÒ   rÅ   s        r*   rÆ   z"CompileCounterWithBackend.__call__ï   s�   € ð 	6Ð5Ð5Ð5Ð5Ð5àÐÔ˜AÑÐÔØ”H”Nð 	#ð 	#ˆDØ˜œÐ Ð Ø�” Ñ"�”øØŒ×Ò˜2ÑÔÐØ+ˆ~ˆ~˜dœlÑ+Ô+¨B°Ñ?Ô?Ð?r,   )r€   rÊ   rË   Ústrr¾   rC   r   rÌ   r   rO   r   r   rÆ   rq   r,   r*   rÎ   rÎ   è   s€   € € € € € ð5 ð 5¨ð 5ð 5ð 5ð 5ð
@Ø”(Ô&ð
@Ø8<¸U¼\Ô8Jð
@à	�#�s�(Ô	ð
@ð 
@ð 
@ð 
@ð 
@ð 
@r,   rÎ   c                   ód   — e Zd Zdd„Zdej        j        deej                 de	de
f         fd„ZdS )	ÚEagerAndRecordGraphsr"   Nc                 ó   — g | _         d S r$   )rÐ   r¼   s    r*   r¾   zEagerAndRecordGraphs.__init__ÿ   s   € Ø24ˆŒˆˆr,   r>   rK   .c                 óD   — | j                              |¦  «         |j        S r$   )rÐ   rT   rÄ   )r½   r>   rK   s      r*   rÆ   zEagerAndRecordGraphs.__call__  s"   € ð 	Œ×Ò˜2ÑÔÐØŒzÐr,   rÉ   ©r€   rÊ   rË   r¾   rC   r   rÌ   r   rO   r   r   rÆ   rq   r,   r*   rÖ   rÖ   þ   si   € € € € € ð5ð 5ð 5ð 5ðØ”(Ô&ðØ8<¸U¼\Ô8Jðà	�#�s�(Ô	ðð ð ð ð ð r,   rÖ   c                   ód   — e Zd Zdd„Zdej        j        deej                 de	de
f         fd„ZdS )	ÚAotEagerAndRecordGraphsr"   Nc                 ó0   — g | _         g | _        g | _        d S r$   )rÐ   Ú	fw_graphsÚ	bw_graphsr¼   s    r*   r¾   z AotEagerAndRecordGraphs.__init__
  s   € Ø24ˆŒØ57ˆŒØ57ˆŒˆˆr,   r>   rK   .c                 óf  ‡ — ‰ j                              |¦  «         dt          j        j        dt
          t          j                 dt          dt          f         fˆ fd„}dt          j        j        dt
          t          j                 dt          dt          f         fˆ fd„}t          ||||¬¦  «        S )Nr>   rK   r"   .c                 óF   •— ‰j                              | ¦  «         | j        S r$   )rÝ   rT   rÄ   ©r>   rK   r½   s     €r*   Úfw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.fw_compiler  ó#   ø€ ð ŒN×!Ò! "Ñ%Ô%Ð%Ø”:Ðr,   c                 óF   •— ‰j                              | ¦  «         | j        S r$   )rÞ   rT   rÄ   rá   s     €r*   Úbw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.bw_compiler  rã   r,   )râ   rå   )
rÐ   rT   rC   r   rÌ   r   rO   r   r   r   )r½   r>   rK   râ   rå   s   `    r*   rÆ   z AotEagerAndRecordGraphs.__call__  sÖ   ø€ ð 	Œ×Ò˜2ÑÔÐð	Ý”Ô$ð	Ý6:½5¼<Ô6Hð	å�c�3�hÔð	ð 	ð 	ð 	ð 	ð 	ð	Ý”Ô$ð	Ý6:½5¼<Ô6Hð	å�c�3�hÔð	ð 	ð 	ð 	ð 	ð 	õ ØØØ#Ø#ð	
ñ 
ô 
ð 	
r,   rÉ   rÙ   rq   r,   r*   rÛ   rÛ   	  si   € € € € € ð8ð 8ð 8ð 8ð

Ø”(Ô&ð
Ø8<¸U¼\Ô8Jð
à	�#�s�(Ô	ð
ð 
ð 
ð 
ð 
ð 
r,   rÛ   c                 ó.   — t          j        dd| ¦  «        S )Nz(?m)^ *#.*\n?r/   r0   ©r�   s    r*   Ústrip_commentrè   (  r4   r,   c                 óf   — d                      d„ |                      d¦  «        D ¦   «         ¦  «        S )Nr“   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rq   )Úrstrip)rQ   Úlines     r*   ú
<listcomp>z)remove_trailing_space.<locals>.<listcomp>-  s    € ÐAÐAÐA¨�d—k’k‘m”mÐAÐAÐAr,   )r‰   Úsplitrç   s    r*   Úremove_trailing_spacerï   ,  s/   € Ø�9Š9ÐAÐA°·
²
¸4Ñ0@Ô0@ÐAÑAÔAÑBÔBÐBr,   Úgm_strc                 ó:   — t          t          | ¦  «        ¦  «        S r$   )rï   rè   )rð   s    r*   Únormalize_gmrò   0  s   € õ !¥¨vÑ!6Ô!6Ñ7Ô7Ð7r,   c                 ó2   — t          j        dd| ¦  «        }|S )z-
    Normalize code: remove empty lines.
    z[\r\n]+r“   r0   )r�   Únormal_codes     r*   Úempty_line_normalizerrõ   6  s   € õ ”&˜ T¨4Ñ0Ô0€KØÐr,   r½   rF   ÚnargsÚexpected_opsÚexpected_ops_dynamicÚexpected_frame_countc                 óÖ  — t           j        s|�|}t          ¦   «         }d„ t          |¦  «        D ¦   «         }d„ t          |¦  «        D ¦   «         } ||Ž }	 ||Ž }
t	          ¦   «           t          |¦  «        |¦  «        } ||Ž } ||Ž } ||Ž } ||Ž }t	          ¦   «          |                      t          ||	¦  «        ¦  «         |                      t          ||	¦  «        ¦  «         |                      t          ||
¦  «        ¦  «         |                      t          ||
¦  «        ¦  «         |                      |j	        |¦  «         |�|                      |j
        |¦  «         d S d S )Nc                 ó8   — g | ]}t          j        d d ¦  «        ‘ŒS ©é
   ©rC   Úrandn©rQ   rŸ   s     r*   rí   z!standard_test.<locals>.<listcomp>K  ó$   € Ð7Ð7Ð7 Q�UŒ[˜˜RÑ Ô Ð7Ð7Ð7r,   c                 ó8   — g | ]}t          j        d d ¦  «        ‘ŒS rü   rþ   r   s     r*   rí   z!standard_test.<locals>.<listcomp>L  r  r,   )r   Úassume_static_by_defaultr¶   Úranger   r   Ú
assertTruer   ÚassertEqualrº   r»   )r½   rF   rö   r÷   rø   rù   ÚactualÚargs1Úargs2Úcorrect1Úcorrect2Úopt_fnÚval1aÚval2aÚval1bÚval2bs                   r*   Ústandard_testr  >  sx  € õ Ô*ð ,Ð/CÐ/OØ+ˆåÑÔ€Fà7Ð7­%°©,¬,Ð7Ñ7Ô7€EØ7Ð7­%°©,¬,Ð7Ñ7Ô7€EØˆr�5ˆz€HØˆr�5ˆz€HÝ	�G„G€GØ$�_˜VÑ$Ô$ RÑ(Ô(€FØˆF�EˆN€EØˆF�EˆN€EØˆF�EˆN€EØˆF�EˆN€EÝ	�G„G€GØ‡O‚O•D˜ Ñ)Ô)Ñ*Ô*Ð*Ø‡O‚O•D˜ Ñ)Ô)Ñ*Ô*Ð*Ø‡O‚O•D˜ Ñ)Ô)Ñ*Ô*Ð*Ø‡O‚O•D˜ Ñ)Ô)Ñ*Ô*Ð*Ø×Ò�VÔ'Ð)=Ñ>Ô>Ð>ØÐØ×Ò˜œ¨,Ñ7Ô7Ð7Ð7Ð7ð  Ðr,   r>   c                 ó   — | j         S r$   )rÄ   )r>   rK   s     r*   Údummy_fx_compiler  _  s   € ð Œ:Ðr,   Tçš™™™™™¹?ÚspeedupÚpvalueÚ
is_correctÚpvalue_thresholdc                 ó4   — |sdS ||k    r| d›d�S | d›d|d›�S )NÚERRORz.3fzx SAMEzx p=z.2frq   )r  r  r  r  s       r*   Úformat_speedupr  e  sI   € ð ð ØˆwØÐ Ò Ð ØÐ%Ð%Ð%Ð%Ð%ØÐ+Ð+Ð+˜vÐ+Ð+Ð+Ð+r,   ÚcpuÚsizeÚstrideÚdtypeÚdeviceÚ
extra_sizec                 óz  — t          d„ t          | |¦  «        D ¦   «         ¦  «        dz   |z   }|j        rZ|j        dk    r7	 t	          j        |t          j        |¬¦  «                             |¬¦  «        }n0t	          j        |||¬¦  «        }nt	          j        |g||¬¦  «        }t	          j	        || |¦  «        S )Nc              3   ó,   K  — | ]\  }}|d z
  |z  V — ŒdS )r   Nrq   )rQ   Úshaper  s      r*   rS   zrand_strided.<locals>.<genexpr>z  s/   è è € ÐHÐH¡] U¨FˆU�Q‰Y˜&Ñ ÐHÐHÐHÐHÐHÐHr,   r   )r  r   )r  )r  r  r   )
r}   ÚzipÚis_floating_pointÚitemsizerC   rÿ   Úfloat16ÚtoÚzerosÚ
as_strided)r  r  r  r   r!  Úneeded_sizerb   s          r*   Úrand_stridedr-  r  sÙ   € õ 	ÐHÐHµc¸$ÀÑ6GÔ6GÐHÑHÔHÑHÔHØ
ñ	à
ñ	ð ð
 Ôð MØŒ>˜QÒÐðõ ”[ µE´MÈ&ÐQÑQÔQ×TÒTØð Uñ ô ˆFˆFõ ”[ °EÀ&ÐIÑIÔIˆFˆFå” ; -°uÀVÐLÑLÔLˆÝÔ˜F D¨&Ñ1Ô1Ð1r,   Ú_Tc                  ó   — t           j         S r$   )r   r  rq   r,   r*   Úcheck_dynamic_shape_capturer0  ‘  s   € åÔ.Ð.Ð.r,   Úpatchesc                 óv   ‡ ‡— t          j        ‰ ¦  «        dt          dt          dt          fˆ ˆfd„¦   «         }|S )Nr<   r=   r"   c            	      óÒ   •— t          j        ¦   «         5 }‰D ]/\  }}}|                     t          j        |||¦  «        ¦  «         Œ0 ‰| i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S r$   )Ú
contextlibÚ	ExitStackÚenter_contextr   Úobject)r<   r=   ÚstackÚmoduleÚattrÚvalrF   r1  s         €€r*   Ú_fnz"_make_fn_with_patches.<locals>._fn—  sÂ   ø€ åÔ!Ñ#Ô#ð 	' uØ%,ð Eð EÑ!�˜˜cØ×#Ò#¥E¤L°¸¸sÑ$CÔ$CÑDÔDÐDÐDà�2�tÐ&˜vÐ&Ð&ð		'ð 	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   •:AÁA Á#A )Ú	functoolsÚwrapsr   r.  )rF   r1  r<  s   `` r*   Ú_make_fn_with_patchesr?  –  sX   øø€ Ý„_�RÑÔð'•3ð '¥#ð '­"ð 'ð 'ð 'ð 'ð 'ð 'ñ Ôð'ð €Jr,   c                 ó   — | S r$   rq   r)   s    r*   ú<lambda>rA  ¨  s   € Èa€ r,   )Ú
xfail_propÚ	decoratorÚclsÚ
cls_prefixÚ	fn_suffixrB  rC  c          	      ó<  — t          |› | j        › �| j        i ¦  «        }|j        |_        t	          | ¦  «        D ]à}|                     d¦  «        ršt          | |¦  «        }t          |¦  «        s t          ||t          | |¦  «        ¦  «         ŒV|› |› �}	t          |g|¢R Ž }
|	|
_        |�$t          ||¦  «        rt          j        |
¦  «        }
t          ||	 ||
¦  «        ¦  «         Œ±t          ||¦  «        st          ||t          | |¦  «        ¦  «         Œá|S )NÚtest_)rn   r€   Ú	__bases__rË   ÚdirÚ
startswithÚgetattrÚcallableÚsetattrr?  ÚhasattrÚunittestÚexpectedFailure)rD  rE  rF  rB  rC  r1  ÚDummyTestClassr-   rF   Únew_nameÚnew_fns              r*   Úmake_test_cls_with_patchesrU  ¢  s9  € õ ˜ZÐ7¨¬Ð7Ð7¸¼ÈÑKÔK€NØ"0Ô"9€NÔå�C‘”ð >ð >ˆØ�?Š?˜7Ñ#Ô#ð 	>Ý˜˜dÑ#Ô#ˆBÝ˜B‘<”<ð Ý˜¨­g°c¸4Ñ.@Ô.@ÑAÔAÐAØØÐ+ 	Ð+Ð+ˆHÝ*¨2Ð8°Ð8Ð8Ð8ˆFØ&ˆFŒOØÐ%­'°"°jÑ*AÔ*AÐ%Ý!Ô1°&Ñ9Ô9�Ý�N H¨i¨i¸Ñ.?Ô.?Ñ@Ô@Ð@Ð@å˜¨Ñ.Ô.ð 	>Ý�N D­'°#°tÑ*<Ô*<Ñ=Ô=Ð=øàÐr,   c                 óN   — t           j        dk    r| S t          j        | ¦  «        S )N)r    é   ©ÚsysÚversion_inforP  r›   ©rF   s    r*   ÚskipIfNotPy311r\  Á  s%   € Ý
Ô˜7Ò"Ð"Øˆ	ÝŒ=˜ÑÔÐr,   c                 ó`   — t           j        dk    r| S  t          j        d¦  «        | ¦  «        S )N©r    é   zRequires Python 3.12+rX  r[  s    r*   ÚskipIfNotPy312r`  Ç  s0   € Ý
Ô˜7Ò"Ð"Øˆ	Ø1�8Œ=Ð0Ñ1Ô1°"Ñ5Ô5Ð5r,   c                 óN   — t           j        dk    rt          j        | ¦  «        S | S )Nr^  )rY  rZ  rP  rQ  r[  s    r*   ÚxfailIfPy312rb  Í  s&   € Ý
Ô˜7Ò"Ð"ÝÔ'¨Ñ+Ô+Ð+Ø€Ir,   c                 ó`   — t           j        dk    r t          j        d¦  «        | ¦  «        S | S )Nr^  zNot supported in Python 3.12+rX  r[  s    r*   ÚskipIfPy312rd  Ó  s0   € Ý
Ô˜7Ò"Ð"Ø=�xŒ}Ð<Ñ=Ô=¸bÑAÔAÐAØ€Ir,   c                 ó`   — t           j        dk    r| S  t          j        d¦  «        | ¦  «        S )N)r    rý   zRequires Python 3.10+rX  r[  s    r*   ÚrequiresPy310rf  Ù  s0   € Ý
Ô˜7Ò"Ð"Øˆ	à5�xŒ}Ð4Ñ5Ô5°bÑ9Ô9Ð9r,   c                 ó   — d| _         | S ©NT)Ú_expected_failure_dynamicr[  s    r*   ÚexpectedFailureDynamicrj  â  s   € Ø#'€BÔ Ø€Ir,   c                 ó   — d| _         | S rh  )Ú!_expected_failure_codegen_dynamicr[  s    r*   ÚexpectedFailureCodegenDynamicrm  è  ó   € Ø+/€BÔ(Ø€Ir,   c                 ó   — d| _         | S rh  )Ú!_expected_failure_dynamic_wrapperr[  s    r*   ÚexpectedFailureDynamicWrapperrq  î  rn  r,   FÚuse_xlac                 ó&  — t          j        d¦  «         t          j        d¦  «         t          rt          j                             d¦  «         | r@dd lmc m} |                     dt          | 
                    ¦   «         ¦  «        ¦  «         d S d S )Ni9  r   )rC   Úmanual_seedÚrandomÚseedr   Útorch_xla.core.xla_modelÚcoreÚ	xla_modelÚset_rng_staterÔ   Ú
xla_device)rr  Úxms     r*   Úreset_rng_stater}  ó  s˜   € Ý	Ô�dÑÔÐÝ
„K�ÑÔÐÝ	ð Ý
Œ	�Š�tÑÔÐØð 5Ø-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-à
×Ò˜�s 2§=¢=¡?¤?Ñ3Ô3Ñ4Ô4Ð4Ð4Ð4ð5ð 5r,   )r/   )NNr   )Tr  )F)hr4  r–   r=  ÚloggingÚos.pathr‡   ru  r1   rY  ÚtypesrP  Útypingr   r   r   r   r   r   r	   r
   r   r   Úunittest.mockr   rC   r   Ú torch._dynamo.backends.debuggingr   Útorch._dynamo.output_graphr   r/   r   r   r   r   Úbytecode_transformationr   r   r   r   Úguardsr   r   r   r   Úutilsr   r   Ú
ModuleTypeÚ__annotations__ÚnumpyÚModuleNotFoundErrorÚunsupportedÚthreeÚ	getLoggerr€   ÚlogrO   r+   rÔ   r3   rG   ÚnnÚModulerd   Úboolrh   rr   ÚfloatrŽ   ÚCodeTyperš   rl   r´   r¶   rÎ   rÖ   rÛ   rè   rï   rò   rõ   r  rÌ   r  r  Úfloat32r  r   r-  r.  r0  r?  rn   rU  r\  r`  rb  rd  rf  rj  rm  rq  r}  rq   r,   r*   ú<module>r–     sü	  ðØ Ð Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð ð "&€€HˆUÔÔÐ %Ð %Ñ %ðØÐÐÐÐøØð ð ð Ø	€B€B€Bðøøøð Ô$€Ø	€à€gÔ˜Ñ!Ô!€ð>�˜œÔ&ð >¨8°E´LÔ+Að >ð >ð >ð >ð.¨ð .°ð .ð .ð .ð .ð$ð $ð $ð"%ØŒ8Œ?ð%Ø(+ð%Ø36ð%ØHKð%à	ˆ#„Yð%ð %ð %ð %ðP	E˜3ð 	E 4ð 	Eð 	Eð 	Eð 	Eð 
ð˜uœ|ð °´ð ð ð ñ 
„ðð 
ðØ	ˆt�CŒy˜%  S œ/¨4°°S°¬>Ð9Ô	:ðà
ðð ð ñ 
„ððE˜sð E u¨U¬\¸5Ð-@Ô'Að Eð Eð Eð Eð,�3ð ð ð ð ð
ð 
�Sð 
 ¤ð 
°sð 
ÀDð 
ð 
ð 
ð 
ð QRðYð Yð YØðYØ(+ðYØ47ðYØ<?ðYØJMðYàˆkÔðYð Yð Yð Yð>ð ð ð ð ñ ô ð ð&@ð @ð @ð @ð @ñ @ô @ð @ð,ð ð ð ð ñ ô ð ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð>.˜ð . ð .ð .ð .ð .ðC ð C¨ð Cð Cð Cð Cð8˜ð 8 ð 8ð 8ð 8ð 8ð ð ¨ð ð ð ð ð #'Ø*.Ø !ð8ð 8Ø
ð8à��c�Ôð8ð ð8ð ˜3”-ð	8ð
 # 3œ-ð8ð ð8ð 
ð8ð 8ð 8ð 8ðBØ
ŒðØ(,¨U¬\Ô(:ðàˆc�3ˆhÔðð ð ð ð Ø!ð	
,ð 
,Øð
,àð
,ð ð
,ð ð	
,ð
 	ð
,ð 
,ð 
,ð 
,ð  œØ',Øð2ð 2Ø
�3Œ-ð2à�SŒMð2ð Œ;ð2ð �#�u”|Ð#Ô$ð	2ð
 ð2ð „\ð2ð 2ð 2ð 2ð8 €WˆT�]„]€ð/ Tð /ð /ð /ð /ð
	˜h s¨B wÔ/ð 	¸3ð 	À8ÈCÐQSÈGÔCTð 	ð 	ð 	ð 	ð" !%ØDOÀKðð ð Ø	ðàðð ðð ð	ð
 ˜”ðð ˜ # s (Ô+Ð,¨h°s¸C°xÔ.@Ð@ÔAðð 
ðð ð ð ð>�x  S Ô)ð ¨h°s¸C°xÔ.@ð ð ð ð ð6�x  S Ô)ð 6¨h°s¸C°xÔ.@ð 6ð 6ð 6ð 6ð�X˜c 3˜hÔ'ð ¨H°S¸#°XÔ,>ð ð ð ð ð�H˜S #˜XÔ&ð ¨8°C¸°HÔ+=ð ð ð ð ð:�h˜s C˜xÔ(ð :¨X°c¸3°hÔ-?ð :ð :ð :ð :ð˜x¨¨S¨Ô1ð °h¸sÀC¸xÔ6Hð ð ð ð ð h¨s°C¨xÔ&8ð ¸XÀcÈ3ÀhÔ=Oð ð ð ð ð h¨s°C¨xÔ&8ð ¸XÀcÈ3ÀhÔ=Oð ð ð ð ð
5ð 5˜Tð 5¨dð 5ð 5ð 5ð 5ð 5ð 5s   ÂB$ Â$B.Â-B.