§
    ŠŠtjÎK  ã                   ó$  — U d 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Zddl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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,m-Z-m.Z. d
dl/m0Z0m1Z1 dZ2e
j3        dz  e4d<   	 ddl5Z2n# e6$ r dZ2Y nw xY we j7        Z7dZ8 ej9        e:¦  «        Z; ed¦  «        Z<dej=        dz  dej=        dz  fd„Z>de?de?fd„Z@d„ ZAd„ ZBdejC        jD        dedededeEe         f
d„ZFdedeGfd „ZHedej=        dej=        fd!„¦   «         ZIedeEe         eJed"f         z  eKeef         z  deLfd#„¦   «         ZIdedej=        eLz  fd$„ZIde?fd%„ZMdtde?d'e
jN        d(e?ddfd)„ZOdd*œd+e-d,ePd-ed.ed/ePde,fd0„ZQ G d1„ d2¦  «        ZR G d3„ d4¦  «        ZS G d5„ d6¦  «        ZT G d7„ d8¦  «        ZU G d9„ d:¦  «        ZVd'e?de?fd;„ZWd'e?de?fd<„ZXd'e?de?fd=„ZYd>e?de?fd?„ZZd'e?de?fd@„Z[	 	 	 dudAedBed"ef         dCePdDePdz  dEePdz  dFePddfdG„Z\dHej]        deEej=                 ded"ef         fdI„Z^	 	 dvdLeLdMeLdNeGdOeLde?f
dP„Z_ej`        dQdfdReeP         dSeeP         dTeja        dUe?ejb        z  dVePdej=        fdW„Zc edX¦  «        ZddeGfdY„ZedBee<edf         dZedee<edf         fd[„Zfdd\„ d]œd^egd_e?d`e?dZedae?dz  dbeed"ef         ged"ef         f         degfdc„ZhdBee<edf         dee<edf         fdd„ZidBee<edf         dee<edf         fde„ZjdBee<edf         dee<edf         fdf„ZkdBee<edf         dee<edf         fdg„ZldBee<edf         dee<edf         fdh„ZmdBee<edf         dee<edf         fdi„ZndBee<edf         dee<edf         fdj„ZodBee<edf         dee<edf         fdk„ZpdwdmeGddfdn„Zqdoee<edf         dpe<jr        dqe<js        dedfdr„Ztdauejv        deeEej        j]                          fds„¦   «         ZwdS )xa1  Testing utilities and infrastructure for Dynamo.

This module provides a comprehensive set of testing utilities including:
- Test result collection and validation
- Graph manipulation and comparison tools
- Test case management and execution helpers
- Specialized test decorators for different Python versions and features
- RNG state management
- Compilation counting and monitoring
- Debug utilities for bytecode transformation

The utilities in this module are used across Dynamo's test suite to ensure
consistent testing patterns and proper test isolation.
é    N)ÚCallableÚ	GeneratorÚSequence)ÚAnyÚoverloadÚTypeVar)Ú	ParamSpec)Úpatch)Úfx)Ú	aot_eager)ÚOutputGraphé   )ÚconfigÚ
eval_frameÚoptimize_assertÚreset)Úcreate_instructionÚdebug_checksÚis_generatorÚtransform_code_object)ÚCheckFunctionManagerÚ	CompileIdÚGuardedCode)ÚConvertFrameReturnÚDynamoFrameTypeÚwrap_guarded_code)ÚCompileCounterIntÚsameÚnpé   Ú_PÚxÚreturnc                 ó†   — | €d S |                       ¦   «                              ¦   «                              | j        ¦  «        S ©N)ÚdetachÚcloneÚrequires_grad_Úrequires_grad©r"   s    úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/testing.pyÚclone_mer,   ?   s6   € Ø€yØˆtØ�8Š8‰:Œ:×ÒÑÔ×,Ò,¨Q¬_Ñ=Ô=Ð=ó    Únamec                 ó.   — t          j        dd| ¦  «        S )Nz^_orig_mod[.]Ú ©ÚreÚsub)r.   s    r+   Úremove_optimized_module_prefixr4   E   ó   € ÝŒ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Úkwargsr7   Úgmr;   s      €€€r+   Úextract_graph_backendz8extract_graph_and_tracker.<locals>.extract_graph_backendO   s&   ø€ ð ˆØ.×9Ò9Ñ;Ô;ÔBÔQˆØˆ
r-   T)ÚbackendÚ	fullgraph)Útorch._dynamo.symbolic_convertr7   ÚtorchÚcompileÚgraph)Úfnr=   r>   r@   r7   r?   r;   s       @@@r+   Úextract_graph_and_trackerrH   I   s„   øøø€ ØDÐDÐDÐDÐDÐDà	€BØ€Nðð ð ð ð ð ð ð EÐ@…E„MÐ/¸4Ð@Ñ@Ô@ÀÑDÔDÀdÐUÈfÐUÐUÐUØŒ8�^Ð#Ð#r-   c                 ó�   — t          ¦   «         }  t          j        |¬¦  «        | ¦  «        |i |¤Ž}||j        |j        |j        fS )N)rA   )ÚAotEagerAndRecordGraphsrD   rE   ÚgraphsÚ	fw_graphsÚ	bw_graphs)rG   r=   r>   rA   Úresults        r+   Úextract_graphrO   Z   sP   € Ý%Ñ'Ô'€GØ/Ð+�UŒ] 7Ð+Ñ+Ô+¨BÑ/Ô/°Ð@¸Ð@Ð@€FØ�7”> 7Ô#4°gÔ6GÐGÐGr-   Ú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%   )Ú
isinstancerD   ÚTensorÚgrad)Ú.0Úinps     r+   ú	<genexpr>z"collect_results.<locals>.<genexpr>�   s5   è è € ÐXÐX¨½*ÀSÍ%Ì,Ñ:WÔ:WÐX˜3œ8ÐXÐXÐXÐXÐXÐXr-   )ÚappendÚnamed_parametersrV   r   ÚOptimizedModuler4   rX   rD   Ú
zeros_likeÚnamed_buffersÚtupleÚlistÚextendrW   )rP   rQ   rR   rS   ÚresultsÚgradsÚparamsr.   ÚparamÚ
param_copyrX   ÚbuffersÚbufferÚexamples                 r+   Úcollect_resultsrl   `   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©rY   r"   s     r+   r[   z$requires_bwd_pass.<locals>.<genexpr>Œ   s+   è è € Ð5Ð5¨AÕ$ QÑ'Ô'Ð5Ð5Ð5Ð5Ð5Ð5r-   FúDon't know how to reduce)
rV   rD   rW   r)   rb   ra   ÚanyÚintÚNotImplementedErrorÚtype©rm   s    r+   rp   rp   ˆ   sŠ   € Ý�#•u”|Ñ$Ô$ð ØÔ Ð Ý	�C�$¥˜Ñ	'Ô	'ð ÝÐ5Ð5°Ð5Ñ5Ô5Ñ5Ô5Ð5Ø	ˆØˆuÝ	�C�Ñ	Ô	ð ØˆuÝ
Ð8½$¸s¹)¼)Ñ
DÔ
DÐDr-   c                 ó   — d S r%   © rw   s    r+   Úreduce_to_scalar_lossrz   ”   s   € Ø>A¸cr-   .c                 ó   — d S r%   ry   rw   s    r+   rz   rz   ˜   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%   ©rz   rq   s     r+   r[   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%   r~   )rY   Úvalues     r+   r[   z(reduce_to_scalar_loss.<locals>.<genexpr>®   s+   è è € ÐJÐJ°EÕ(¨Ñ/Ô/ÐJÐJÐJÐJÐJÐJr-   rr   )rV   rD   rW   ÚsumÚnumelrb   ra   Úlenrv   Ú__name__rz   ÚlogitsÚmeanÚdictÚvaluesÚkeysru   rw   s    r+   rz   rz   ž   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-   r0   Ú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        j                             ¦   «         }t          j        j                             d¦  «        5  |5  t          | j        ¦  «        r&t          ¦   «         cddd¦  «         cddd¦  «         S t          | j        ¦  «         t          | j        |¦  «        \  }}t          i dddg dd	it          ¦   «         t          ¦   «         | j        g d¬
¦  «        }t          t!          |t#          | j        |¦  «        j        t'          d	d	¬¦  «        ¦  «        ¦  «        cddd¦  «         cddd¦  «         S # 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   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-   Údebug_insert_nopsFÚ_idr   )rª   Úcompiler_fnÚroot_txÚexportÚexport_constraintsÚframe_stateÚlocal_scopeÚglobal_scopeÚf_codeÚtorch_function_mode_stackÚpackage)Úframe_idÚframe_compile_id)rb   r   rD   Ú_dynamoÚutilsÚget_metrics_contextÚdynamo_timedr   r¸   r   r   r   r   ÚlocalsÚglobalsr   r   r   Úguard_managerr   )	r¤   r¥   r¦   r§   r£   r®   Úmetrics_contextr—   rF   s	            r+   r¯   r¯   Â   sX  € ð
:¥$¥s¤)ð :½3ð :À4ð :ð :ð :ð :õ ”mÔ)×=Ò=Ñ?Ô?€OÝ	ŒÔ	×	)Ò	)Ð*=Ñ	>Ô	>ð 
ð 
Àð 
ð 
Ý˜œÑ%Ô%ð 	(Ý%Ñ'Ô'ð
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
õ 	�U”\Ñ"Ô"Ð"Ý'¨¬°kÑBÔB‰ˆˆaÝàØØØØ!Ø ˜
å™œÝ ™œØ”<Ø&(Øð
ñ 
ô 
ˆõ  !ÝØÝ$ U¤\°5Ñ9Ô9ÔGÝ 1°qÐ9Ñ9Ô9ñô ñ
ô 
ð-
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
sC   Á'E?Á*"E'ÂE?Â%B)E'ÅE?Å'E+	Å+E?Å.E+	Å/E?Å?FÆF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 S ©Nr   )Úframe_countÚclear©Úselfs    r+   Ú__init__zCompileCounter.__init__ì   s   € Ø45ˆÔØ�
Š
‰Œˆˆˆr-   r?   rS   .c                 ó€   — | xj         dz  c_         |j        j        D ]}d|j        v r| xj        dz  c_        Œ|j        S )Nr   Úcall)rÉ   rF   ÚnodesÚopÚop_countÚforward)rÌ   r?   rS   Únodes       r+   Ú__call__zCompileCounter.__call__ð   sQ   € ð 	ÐÔ˜AÑÐÔØ”H”Nð 	#ð 	#ˆDØ˜œÐ Ð Ø�” Ñ"�”øØŒzÐr-   c                 ód   — t           j        rt          d¦  «        | _        nd| _        d| _        d S rÈ   )r   Údebug_disable_compile_counterr   rÉ   rÒ   rË   s    r+   rÊ   zCompileCounter.clearù   s3   € ÝÔ/ð 	!Ý0°Ñ3Ô3ˆDÔÐà ˆDÔØˆŒˆˆr-   ©r#   N)rˆ   Ú
__module__Ú__qualname__rÍ   rD   r   ÚGraphModulerb   rW   r   r   rÕ   rÊ   ry   r-   r+   rÆ   rÆ   ë   s}   € € € € € ðð ð ð ðØ”(Ô&ðØ8<¸U¼\Ô8Jðà	�#�s�(Ô	ðð ð ð ðð ð ð ð ð r-   rÆ   c                   ót   — 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
d	„ZdS )ÚCompileCounterWithBackendrA   r#   Nc                 óX   — d| _         || _        g | _        |                      ¦   «          d S rÈ   )rÉ   rA   rK   rÊ   )rÌ   rA   s     r+   rÍ   z"CompileCounterWithBackend.__init__  s)   € Ø45ˆÔØˆŒØ24ˆŒØ�
Š
‰Œˆˆˆr-   r?   rS   .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É   rF   rÐ   rÑ   rÒ   rK   r\   rA   )rÌ   r?   rS   rà   rÔ   s        r+   rÕ   z"CompileCounterWithBackend.__call__  s�   € ð 	6Ð5Ð5Ð5Ð5Ð5àÐÔ˜AÑÐÔØ”H”Nð 	#ð 	#ˆDØ˜œÐ Ð Ø�” Ñ"�”øØŒ×Ò˜2ÑÔÐØ+ˆ~ˆ~˜dœlÑ+Ô+¨B°Ñ?Ô?Ð?r-   c                 ór   — t           j        rt          d¦  «        | _        nd| _        d| _        g | _        d S rÈ   )r   r×   r   rÉ   rÒ   rK   rË   s    r+   rÊ   zCompileCounterWithBackend.clear  s:   € ÝÔ/ð 	!Ý0°Ñ3Ô3ˆDÔÐà ˆDÔØˆŒØˆŒˆˆr-   rØ   )rˆ   rÙ   rÚ   ÚstrrÍ   rD   r   rÛ   rb   rW   r   r   rÕ   rÊ   ry   r-   r+   rÝ   rÝ     s’   € € € € € ð ð ¨ð ð ð ð ð
@Ø”(Ô&ð
@Ø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%   )rK   rË   s    r+   rÍ   zEagerAndRecordGraphs.__init__   s   € Ø24ˆŒˆˆr-   r?   rS   .c                 óD   — | j                              |¦  «         |j        S r%   )rK   r\   rÓ   )rÌ   r?   rS   s      r+   rÕ   zEagerAndRecordGraphs.__call__#  s"   € ð 	Œ×Ò˜2ÑÔÐØŒzÐr-   rØ   ©rˆ   rÙ   rÚ   rÍ   rD   r   rÛ   rb   rW   r   r   rÕ   ry   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 )	rJ   r#   Nc                 ó0   — g | _         g | _        g | _        d S r%   )rK   rL   rM   rË   s    r+   rÍ   z AotEagerAndRecordGraphs.__init__+  s   € Ø24ˆŒØ57ˆŒØ57ˆŒˆˆr-   r?   rS   .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?   rS   r#   .c                 óF   •— ‰j                              | ¦  «         | j        S r%   )rL   r\   rÓ   ©r?   rS   rÌ   s     €r+   Úfw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.fw_compiler5  ó#   ø€ ð ŒN×!Ò! "Ñ%Ô%Ð%Ø”:Ðr-   c                 óF   •— ‰j                              | ¦  «         | j        S r%   )rM   r\   rÓ   rí   s     €r+   Úbw_compilerz5AotEagerAndRecordGraphs.__call__.<locals>.bw_compiler;  rï   r-   )rî   rñ   )
rK   r\   rD   r   rÛ   rb   rW   r   r   r   )rÌ   r?   rS   rî   rñ   s   `    r+   rÕ   z AotEagerAndRecordGraphs.__call__0  sÖ   ø€ ð 	Œ×Ò˜2ÑÔÐð	Ý”Ô$ð	Ý6:½5¼<Ô6Hð	å�c�3�hÔð	ð 	ð 	ð 	ð 	ð 	ð	Ý”Ô$ð	Ý6:½5¼<Ô6Hð	å�c�3�hÔð	ð 	ð 	ð 	ð 	ð 	õ ØØØ#Ø#ð	
ñ 
ô 
ð 	
r-   rØ   rè   ry   r-   r+   rJ   rJ   *  si   € € € € € ð8ð 8ð 8ð 8ð

Ø”(Ô&ð
Ø8<¸U¼\Ô8Jð
à	�#�s�(Ô	ð
ð 
ð 
ð 
ð 
ð 
r-   rJ   c                   ó   — e Zd Zdd„Zd„ ZdS )ÚInductorAndRecordGraphsr#   Nc                 ó"   — g | _         g | _        d S r%   )rK   Úinductor_graphsrË   s    r+   rÍ   z InductorAndRecordGraphs.__init__J  s   € Ø24ˆŒØ;=ˆÔÐÐr-   c                 óô   ‡ ‡— dd l mc m} ‰ j                             |¦  «         |j        Šˆˆ fd„}t          j        |d|¬¦  «        5  |                     ||¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr   c                  óT   •— ‰j                              | d         ¦  «          ‰| i |¤ŽS rÈ   )rõ   r\   )r=   r>   Úold_compile_fx_innerrÌ   s     €€r+   Úpatchedz1InductorAndRecordGraphs.__call__.<locals>.patchedU  s4   ø€ ØÔ ×'Ò'¨¨Q¬Ñ0Ô0Ð0Ø'Ð'¨Ð8°Ð8Ð8Ð8r-   Ú_compile_fx_inner)Únew)Útorch._inductor.compile_fxÚ	_inductorÚ
compile_fxrK   r\   rú   r
   Úobject)rÌ   r?   rS   Úcompile_fx_modrù   rø   s   `    @r+   rÕ   z InductorAndRecordGraphs.__call__N  s  øø€ Ø;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;àŒ×Ò˜2ÑÔÐà-Ô?Ðð	9ð 	9ð 	9ð 	9ð 	9ð 	9õ Œ\˜.Ð*=À7ÐKÑKÔKð 	Að 	AØ!×,Ò,¨R°Ñ@Ô@ð	Að 	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að 	Að 	As   Á
A-Á-A1Á4A1rØ   )rˆ   rÙ   rÚ   rÍ   rÕ   ry   r-   r+   ró   ró   I  s<   € € € € € ð>ð >ð >ð >ðAð Að Að Að Ar-   ró   c                 ó.   — t          j        dd| ¦  «        S )Nz(?m)^ *#.*\n?r0   r1   ©r—   s    r+   Ústrip_commentr  ]  r5   r-   c                 óf   — d                      d„ |                      d¦  «        D ¦   «         ¦  «        S )Nr›   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS ry   )Úrstrip)rY   Úlines     r+   ú
<listcomp>z)remove_trailing_space.<locals>.<listcomp>b  s    € ÐAÐAÐA¨�d—k’k‘m”mÐAÐAÐAr-   )r‘   Úsplitr  s    r+   Úremove_trailing_spacer
  a  s/   € Ø�9Š9ÐAÐA°·
²
¸4Ñ0@Ô0@ÐAÑAÔAÑBÔBÐBr-   c                 óÒ   — |                       d¦  «        }g }d}|D ]7}|                     ¦   «         dk    r|rŒd}nd}|                     |¦  «         Œ8d                     |¦  «        S )Nr›   Fr0   T)r	  Ústripr\   r‘   )r—   ÚlinesrN   Ú	saw_blankr  s        r+   Ú_squash_blank_linesr  e  s}   € Ø�JŠJ�tÑÔ€EØ€FØ€IØð ð ˆØ�:Š:‰<Œ<˜2ÒÐØð ØØˆIˆIàˆIØ�Š�dÑÔÐÐØ�9Š9�VÑÔÐr-   Úgm_strc                 ó\   — t          | ¦  «        }t          |¦  «        }t          |¦  «        S r%   )r  r
  r  )r  ÚstrippedÚno_trailings      r+   Únormalize_gmr  t  s,   € õ ˜VÑ$Ô$€HÝ'¨Ñ1Ô1€KÝ˜{Ñ+Ô+Ð+r-   c                 ó2   — t          j        dd| ¦  «        }|S )z-
    Normalize code: remove empty lines.
    z[\r\n]+r›   r1   )r—   Únormal_codes     r+   Úempty_line_normalizerr  |  s   € õ ”&˜ T¨4Ñ0Ô0€KØÐr-   rÌ   rG   Ú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 ©é
   ©rD   Úrandn©rY   r§   s     r+   r  z!standard_test.<locals>.<listcomp>‘  ó$   € Ð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>’  r#  r-   )r   Úassume_static_by_defaultrÆ   Úranger   r   Ú
assertTruer   ÚassertEqualrÉ   rÒ   )rÌ   rG   r  r  r  r  ÚactualÚargs1Úargs2Úcorrect1Úcorrect2Úopt_fnÚval1aÚval2aÚval1bÚval2bs                   r+   Ústandard_testr3  „  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?   rS   s     r+   Údummy_fx_compiler5  ¥  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.2fry   )r7  r8  r9  r:  s       r+   Úformat_speedupr=  «  sI   € ð ð ØˆwØÐ Ò Ð ØÐ%Ð%Ð%Ð%Ð%ØÐ+Ð+Ð+˜vÐ+Ð+Ð+Ð+r-   ÚcpuÚsizeÚstrideÚdtypeÚdeviceÚ
extra_sizec                 óT  — |}t          d„ | D ¦   «         ¦  «        r-|t          d„ t          | |¦  «        D ¦   «         ¦  «        dz   z  }|j        r¬|t          j        k    rBt	          j        dd|ft          j        |¬¦  «                             t          j        ¦  «        }nr|j	        dk    r7	 t	          j
        |t          j        |¬¦  «                             |¬¦  «        }n0t	          j
        |||¬¦  «        }nt	          j        |g||¬¦  «        }t	          j        || |¦  «        S )	Nc              3   ó"   K  — | ]
}|d k    V — ŒdS )r   Nry   )rY   Úss     r+   r[   zrand_strided.<locals>.<genexpr>À  s&   è è € Ð
Ð
�Qˆ1ˆqŠ5Ð
Ð
Ð
Ð
Ð
Ð
r-   c              3   ó,   K  — | ]\  }}|d z
  |z  V — ŒdS )r   Nry   )rY   Úshaper@  s      r+   r[   zrand_strided.<locals>.<genexpr>Ã  s/   è è € ÐLÐL©¨°�˜‘˜fÑ$ÐLÐLÐLÐLÐLÐLr-   r   r   é   )rA  rB  )rA  )r?  rA  rB  )Úallr…   ÚzipÚis_floating_pointrD   Úfloat4_e2m1fn_x2ÚrandintÚuint8ÚviewÚitemsizer!  Úfloat16ÚtoÚzerosÚ
as_strided)r?  r@  rA  rB  rC  Úneeded_sizerj   s          r+   Úrand_stridedrW  ¸  sA  € ð €KÝ
Ð
Ð
˜$Ð
Ñ
Ô
ÑÔð 
àÝÐLÐL½#¸dÀFÑ:KÔ:KÐLÑLÔLÑLÔLÈqÑPñ	
ˆð Ôð MØ•EÔ*Ò*Ð*Ý”]Ø�3˜˜­e¬kÀ&ðñ ô çŠd•5Ô)Ñ*Ô*ð ˆFð Œ^˜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%  ry   r-   r+   Úcheck_dynamic_shape_capturerZ  Ü  s   € åÔ.Ð.Ð.r-   Úpatchesc                 óŠ   ‡ ‡— t          j        ‰ ¦  «        dt          j        dt          j        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
   rÿ   )r=   r>   ÚstackÚmoduleÚattrÚvalrG   r[  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=   r>   rX  )rG   r[  re  s   `` r+   Ú_make_fn_with_patchesrh  á  s\   øø€ Ý„_�RÑÔð'•2”7ð '¥b¤ið 'µBð 'ð 'ð 'ð 'ð 'ð 'ñ Ôð'ð €Jr-   c                 ó   — | S r%   ry   r*   s    r+   ú<lambda>rj  ó  s   € Èa€ r-   )Ú
xfail_propÚ	decoratorÚclsÚ
cls_prefixÚ	fn_suffixrk  rl  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_)rv   rˆ   Ú	__bases__rÚ   ÚdirÚ
startswithÚgetattrÚcallableÚsetattrrh  ÚhasattrÚunittestÚexpectedFailure)rm  rn  ro  rk  rl  r[  ÚDummyTestClassr.   rG   Únew_nameÚnew_fns              r+   Úmake_test_cls_with_patchesr~  í  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_infory  r£   ©rG   s    r+   ÚskipIfNotPy311r…    s%   € Ý
Ô˜7Ò"Ð"Øˆ	åŒ=˜ÑÔÐr-   c                 ó`   — t           j        dk    r| S  t          j        d¦  «        | ¦  «        S )N©r    é   zRequires Python 3.12+r�  r„  s    r+   ÚskipIfNotPy312r‰    s0   € Ý
Ô˜7Ò"Ð"Øˆ	Ø1�8Œ=Ð0Ñ1Ô1°"Ñ5Ô5Ð5r-   c                 ó€   — t           j        dk    st           j        dk     r t          j        d¦  «        | ¦  «        S | S )N)r    é   r‡  zRequires Python 3.12r�  r„  s    r+   ÚskipIfOnlyNotPy312rŒ    s=   € Ý
Ô˜7Ò"Ð"¥cÔ&6¸Ò&@Ð&@Ø4�xŒ}Ð3Ñ4Ô4°RÑ8Ô8Ð8Ø€Ir-   c                 óN   — t           j        dk    rt          j        | ¦  «        S | S )Nr‡  )r‚  rƒ  ry  rz  r„  s    r+   ÚxfailIfPy312rŽ    s&   € Ý
Ô˜7Ò"Ð"ÝÔ'¨Ñ+Ô+Ð+Ø€Ir-   c                 ó`   — t           j        dk    r t          j        d¦  «        | ¦  «        S | S )Nr‡  zNot supported in Python 3.12+r�  r„  s    r+   ÚskipIfPy312r�  %  s0   € Ý
Ô˜7Ò"Ð"Ø=�xŒ}Ð<Ñ=Ô=¸bÑAÔAÐAØ€Ir-   c                 ó   — d| _         | S ©NT)Ú_expected_failure_dynamicr„  s    r+   ÚexpectedFailureDynamicr”  -  s   € Ø#'€BÔ Ø€Ir-   c                 ó   — d| _         | S r’  )Ú!_expected_failure_codegen_dynamicr„  s    r+   ÚexpectedFailureCodegenDynamicr—  3  ó   € Ø+/€BÔ(Ø€Ir-   c                 ó   — d| _         | S r’  )Ú!_expected_failure_dynamic_wrapperr„  s    r+   ÚexpectedFailureDynamicWrapperr›  9  r˜  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   )rD   Úmanual_seedÚrandomÚseedr   Útorch_xla.core.xla_modelÚcoreÚ	xla_modelÚset_rng_staterã   Ú
xla_device)rœ  Úxms     r+   Úreset_rng_stater§  >  s˜   € Ý	Ô�dÑÔÐÝ
„K�ÑÔÐÝ	ð Ý
Œ	�Š�tÑÔÐØð 5Ø-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-à
×Ò˜�s 2§=¢=¡?¤?Ñ3Ô3Ñ4Ô4Ð4Ð4Ð4ð5ð 5r-   Úfr=   r>   c                 ó   —  | |i |¤ŽS r%   ry   )r¨  r=   r>   s      r+   Ú&_skipped_function_for_test_reconstructrª  I  s   € ð ˆ1ˆdÐ�fÐÐÐr-   c               #   ó4   K  — g a 	 t           V — da dS # da w xY w)a\  
    Context manager to capture graph modules compiled by invoke_subgraph_inductor_compile.

    Usage:
        with _testing_capture_invoke_subgraph_inductor_compile_gms() as captured_gms:
            # code that triggers invoke_subgraph_inductor_compile
            pass
        # captured_gms will contain the list of captured graph modules
    N)Ú6_testing_invoke_subgraph_inductor_compile_captured_gmsry   r-   r+   Ú5_testing_capture_invoke_subgraph_inductor_compile_gmsr­  R  s?   è è € ð >@Ð:ðFÝDÐDÐDÐDàAEÐ>Ð>Ð>øÀÐ>ÐEÐEÐEÐEs   †	 “)r0   )NNr   )Tr6  )F)xÚ__doc__r^  rž   rf  ÚloggingÚos.pathr�   rŸ  r2   r‚  Útypesry  Úcollections.abcr   r   r   Útypingr   r   r   Útyping_extensionsr	   Úunittest.mockr
   rD   r   Ú torch._dynamo.backends.debuggingr   Útorch._dynamo.output_graphr   r0   r   r   r   r   Úbytecode_transformationr   r   r   r   Úguardsr   r   r   r   r   r   r¾   r   r   r   Ú
ModuleTypeÚ__annotations__ÚnumpyÚModuleNotFoundErrorÚunsupportedÚthreeÚ	getLoggerrˆ   Úlogr!   rW   r,   rã   r4   rH   rO   ÚnnÚModulerb   rl   Úboolrp   rz   ra   r‹   Úfloatr–   ÚCodeTyper¢   rt   r¯   rÆ   rÝ   rå   rJ   ró   r  r
  r  r  r  r3  rÛ   r5  r=  Úfloat32rA  rB  rW  rX  rZ  rh  rv   r~  r…  r‰  rŒ  rŽ  r�  r”  r—  r›  r§  r=   r>   rª  r¬  Úcontextmanagerr­  ry   r-   r+   ú<module>rÉ     s¿
  ððð ð ð Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø 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Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ *Ð *Ð *Ð *Ð *Ð *Ð *Ð *ð #€€EÔ�tÑÐ "Ð "Ñ "ðØÐÐÐÐøØð ð ð Ø	€B€B€Bðøøøð Ô$€Ø	€à€gÔ˜Ñ!Ô!€à€Yˆt�_„_€ð>�”˜tÑ#ð >¨¬°tÑ(;ð >ð >ð >ð >ð.¨ð .°ð .ð .ð .ð .ð$ð $ð $ð"Hð Hð Hð%ØŒ8Œ?ð%Ø(+ð%Ø36ð%ØHKð%à	ˆ#„Yð%ð %ð %ð %ðP	E˜3ð 	E 4ð 	Eð 	Eð 	Eð 	Eð 
Ø A˜uœ|Ð A°´Ð AÐ AÐ Añ 
„Ø Að 
ðØ	ˆcŒ�U˜3 ˜8”_Ñ	$ t¨C°¨H¤~Ñ	5ðà
ðð ð ñ 
„ðð
E˜sð E u¤|°eÑ';ð Eð Eð Eð Eð,�3ð ð ð ð ð
ð 
�Sð 
 ¤ð 
°sð 
ÀDð 
ð 
ð 
ð 
ð QRð&
ð &
ð &
Øð&
Ø(+ð&
Ø47ð&
Ø<?ð&
ØJMð&
àð&
ð &
ð &
ð &
ðRð ð ð ð ñ ô ð ð,ð ð ð ð ñ ô ð ð<ð ð ð ð ñ ô ð ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð>Að Að Að Að Añ Aô Að Að(.˜ð . ð .ð .ð .ð .ðC ð C¨ð Cð Cð Cð Cð˜cð  cð ð ð ð ð,˜ð , ð ,ð ,ð ,ð ,ð ð ¨ð ð ð ð ð  $Ø'+Ø !ð8ð 8Ø
ð8à��c�Ôð8ð ð8ð ˜‘*ð	8ð
  ™*ð8ð ð8ð 
ð8ð 8ð 8ð 8ðBØ
ŒðØ(,¨U¬\Ô(:ðàˆc�3ˆhÔðð ð ð ð Ø!ð	
,ð 
,Øð
,àð
,ð ð
,ð ð	
,ð
 	ð
,ð 
,ð 
,ð 
,ð  œØ!&Øð2ð 2Ø
�3Œ-ð2à�SŒMð2ð Œ;ð2ð �%”,Ñð	2ð
 ð2ð „\ð2ð 2ð 2ð 2ðB €WˆT�]„]€ð/ Tð /ð /ð /ð /ð
	˜h r¨2 vÔ.ð 	¸#ð 	À(È2ÈrÈ6ÔBRð 	ð 	ð 	ð 	ð" "ØDOÀKðð ð Ø	ðàðð ðð ð	ð
 �d‘
ðð ˜ # s (Ô+Ð,¨h°s¸C°xÔ.@Ð@ÔAðð 
ðð ð ð ð>�x  B Ô'ð ¨H°R¸°VÔ,<ð ð ð ð ð6�x  B Ô'ð 6¨H°R¸°VÔ,<ð 6ð 6ð 6ð 6ð˜8 B¨ FÔ+ð °¸¸R¸Ô0@ð ð ð ð ð�X˜b "˜fÔ%ð ¨(°2°r°6Ô*:ð ð ð ð ð�H˜R ˜VÔ$ð ¨°"°b°&Ô)9ð ð ð ð ð˜x¨¨B¨Ô/ð °H¸RÀ¸VÔ4Dð ð ð ð ð h¨r°2¨vÔ&6ð ¸8ÀBÈÀFÔ;Kð ð ð ð ð h¨r°2¨vÔ&6ð ¸8ÀBÈÀFÔ;Kð ð ð ð ð
5ð 5˜Tð 5¨dð 5ð 5ð 5ð 5ðØ��B�ÔðØ "¤ðØ35´9ðàðð ð ð ð :>Ð 6ð ÔðF¸yØˆŒÔ	Ôô@ð Fð Fð Fñ ÔðFð Fð Fs   Â&B+ Â+B5Â4B5