ó
    Eñi'W  ã                   óè  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
Jr  SSKJr  SSKJrJrJr  SSKrSSKJr  SSKJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$  SSK%J&r&  SSK'J(r(  S	S
K)J*r*  S	SK+J,r,J-r-J.r.  S	SK/J0r0  \Rb                  " \25      r3\" S5      r4\4Rk                  5       r6S\R(                  Rn                  S\\   S\
\R(                  Rn                  \8\   /\R(                  Rn                  4   S\94S jr: " S S5      r;S\,S\\<   S\;4S jr= S6SSSS.S\R(                  Rn                  S\\   S\\<   S\9S\9S\\<   S\<S\<4S  jjjr> S6S\R(                  Rn                  S\\   S\\<   S\9SS4
S! jjr? S6S\R(                  Rn                  S\\   S\\<   S\9SS4
S" jjr@S\R(                  Rn                  S\\   S\\<   SS4S# jrA\.S\Rn                  S\\   S\\<   S\Rn                  4S$ j5       rB\.S\Rn                  S\\   S\\<   S\Rn                  4S% j5       rCS\Rn                  S\\   S\,S&\\   S\94
S' jrDS(\S)\RŠ                  RŒ                  S*\S\8\   4S+ jrGS(\S)\RŠ                  RŒ                  S*\SS4S, jrHS(\S)\RŠ                  RŒ                  S*\SS4S- jrISS.SSS/S0.S)\RŠ                  RŒ                  S*\S\<S1\\9\<4   S\\<   S2\9S3\<S4\SS4S5 jjrJg)7a  
Utilities for reproducing and debugging issues in Dynamo after graph capture.

This file provides tools and infrastructure for debugging problems that occur
after Dynamo has captured the graph but before/during backend compilation.
Key components include:

- Minification tools to reduce large graphs to minimal failing examples
- Accuracy testing to validate compiled graph outputs match eager mode
- Repro generation to create standalone reproduction scripts
- Debug backends for capturing and analyzing failures
- Utilities for saving/loading graph states and inputs

The tools here focus specifically on the post-graph-capture stage, making them
useful for debugging backend compilation issues, AOTAutograd problems, and
accuracy discrepancies between compiled and eager execution.
é    N)ÚCallableÚSequence)Úimport_module)ÚAnyÚOptionalÚUnion)ÚAccuracyErrorÚbackend_accuracy_failsÚBUCK_CMD_PREFIXÚBuckTargetWriterÚextra_importsÚgenerate_config_stringÚgenerate_env_vars_stringÚhelper_for_dump_minifyÚInputReaderÚInputWriterÚminifier_dirÚNNModuleToStringÚNopInputReaderÚrun_fwd_maybe_bwdÚsame_two_models)Úfx_placeholder_targets)Útqdmé   )Úconfig)Ú
CompilerFnÚlookup_backendÚregister_debug_backend)Úclone_inputs_retaining_gradnessztorch._inductor.configÚgmÚexample_inputsÚcompiler_fnÚreturnc                 óT   • [        U UU[        R                  [        R                  S9$ )N©Úonly_fwdÚignore_non_fp)r
   r   Úrepro_forward_onlyÚrepro_ignore_non_fp)r    r!   r"   s      Ú]/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dynamo/repro/after_dynamo.pyÚ_accuracy_failsr+   E   s,   € ô
 "Ø
ØØÜ×*Ñ*Ü×0Ñ0ñð ó    c                   ó    • \ rS rSrS\S\\   SS4S jrS\R                  R                  S\\   S	\S\R                  R                  4S
 jrSrg)ÚWrapBackendDebugéS   Úunconfigured_compiler_fnÚcompiler_namer#   Nc                 ó"  • [         R                  " U5      " U 5        Xl        X l        [	        US5      (       a  UR
                  U l        [	        US5      (       a  UR                  U l        [	        US5      (       a  UR                  U l        g g )NÚ__name__r1   Úget_compiler_config)Ú	functoolsÚwrapsÚ_torchdynamo_orig_backendÚ_compiler_nameÚhasattrr3   r1   r4   )Úselfr0   r1   s      r*   Ú__init__ÚWrapBackendDebug.__init__T   s{   € ô 	�ŠÐ0Ô1°$Ô7Ø)AÔ&Ø+ÔÜÐ+¨Z×8Ñ8Ø4×=Ñ=ˆDŒMÜÐ+¨_×=Ñ=Ø4×BÑBˆDŒMÜÐ+Ð-B×CÑCØ'?×'SÑ'SˆDÕ$ð Dr,   r    r!   Úkwargsc           	      óè  • [         R                  " U R                  40 UD6n[        R                  S;   d   e[        R                  S:X  Ga  S[
        SS 4S jn[        R                  S:X  a  [        XU R                  5        [        R                  S:X  a¥  U" [        R                  " U5      U5      n[        XU5      (       at  [        R                  S5        [        [        R                  " U[        R                  " UR                   5      5      UU R                  5        [#        S	5      nU" U5        Ue U$  U" [        R                  " U5      U5      n[%        Xb5        U$ U" X5      nU$ ! [
         aõ  n[        R                  S
5        [        R                  S:X  a`  [         R                  " [&        U R                  S9nU" [        R                  " U[        R                  " UR                   5      5      U5        O^[        R                  S:X  aJ  [        [        R                  " U[        R                  " UR                   5      5      UU R                  5        U" U5        e S nAff = f)N)ÚdynamoÚaotNr?   Úexcr#   c                 óì   • [         R                  R                  [        5       S5      U l        [
        (       a<  SR                  [        [        U R                  5      R                  /-   5      U l	        g g )Nzminifier_launcher.pyÚ )
ÚosÚpathÚjoinr   Úminifier_pathÚuse_buckr   r   Úcmd_line_pathÚbuck_command)rA   s    r*   Ú	add_pathsÚ,WrapBackendDebug.__call__.<locals>.add_pathsi   sW   € Ü$&§G¡G§L¡L´³ÐAWÓ$X�Ô!ß’8Ø'*§x¡xÜ'Ü+¨C×,=Ñ,=Ó>×LÑLÐMñNó(�CÕ$ð r,   é   é   zXAccuracy failed for the TorchDynamo produced graph. Creating script to minify the error.zBad accuracy detected.úDCompiled Fx GraphModule failed. Creating script to minify the error.é   ©r1   r   )r5   Úpartialr7   r   Úrepro_afterÚ	ExceptionÚrepro_levelÚdump_to_minify_after_dynamor8   ÚcopyÚdeepcopyr+   ÚlogÚwarningÚfxÚGraphModuleÚgraphr	   r   Údump_backend_state)	r:   r    r!   r=   r"   rK   Úcompiled_gmrA   Údump_state_fns	            r*   Ú__call__ÚWrapBackendDebug.__call__a   s	  € ô  ×'Ò'¨×(FÑ(FÑQÈ&ÑQˆÜ×!Ñ!Ð%<Ó<Ð<Ð<ä×Ñ Ô)ðœyð ¨Tô ô ×!Ñ! QÓ&Ü+¨BÀ×@SÑ@SÔTô ×!Ñ! QÓ&á)¬$¯-ª-¸Ó*;¸^ÓL�Ü" 2°{×CÑCÜ—K‘KØrôô 0ÜŸš r¬4¯=ª=¸¿¹Ó+BÓCØ&Ø×+Ñ+ôô
 (Ð(@ÓA�CÙ˜c”NØ�Ið DðL Ðð3Ù"-¬d¯mªm¸BÓ.?ÀÓ"P�KÜ% kÔBð. Ðñ & bÓ9ˆKàÐøô- !ó Ü—K‘KØ^ôô ×)Ñ)¨QÓ.Ü(1×(9Ò(9Ü.¸d×>QÑ>Qñ)˜ñ &ÜŸNšN¨2¬t¯}ª}¸R¿X¹XÓ/FÓGÈõô  ×+Ñ+¨qÓ0Ü3ÜŸNšN¨2¬t¯}ª}¸R¿X¹XÓ/FÓGØ*Ø ×/Ñ/ôñ
 ˜c”NØûð%ús   Ä>(E2 Å2
I1Å<C0I,É,I1)r3   r8   r7   r4   )r3   Ú
__module__Ú__qualname__Ú__firstlineno__r   r   Ústrr;   Útorchr[   r\   Úlistr   ra   Ú__static_attributes__© r,   r*   r.   r.   S   sd   † ðTØ(2ðTØCKÈCÁ=ðTà	ôTð=Ø—(‘(×&Ñ&ð=Ø8<¸S¹	ð=ØMPð=à	�‰×	Ñ	÷=r,   r.   r0   r1   c                 ó   • [        X5      $ )ay  
A minifier decorator that wraps the TorchDynamo produced Fx graph modules.
As opposed to wrap_compiler_debug, this wrapper intercepts at the
TorchDynamo produced Fx Graph Module. This makes it backend-agnostic to some
level, e.g., it is useful for minifying issues related to Aot Autograd
tracing.  If an error is found, we minify and save the minified repro in
repro.tar.gz.
)r.   )r0   r1   s     r*   Úwrap_backend_debugrl   ¡   s   € ô Ð4ÓDÐDr,   FÚrun)Ústable_outputÚsave_dirÚcommandÚargsÚcheck_accuracyrn   ro   rp   c                óf  • [         R                  " U 5      n[        USS9n[        [	        U 5      U5       H{  u  pš[        U
[        [        R                  45      (       a  UR                  Xš5        M=  [        U
[        R                  5      (       a  UR                  Xš5        Mo  [        SU
 35      e   SR                  UR                  5       5      n[        R                   " S[#        US9 S[%        US9 S[&         SU SU S	U< S
U< SU< S[        R(                  " 5       < SU< S35      $ )z@
Generate a repro string for backend-agnostic minified version.
T)Ústable_hashz,arg is neither SymInt/int nor torch.Tensor, Ú
)rn   z×
from math import inf
import torch
from torch import tensor, device
import torch.fx as fx
import torch._dynamo
from torch._dynamo.testing import rand_strided
from torch._dynamo.debug_utils import run_fwd_maybe_bwd

z

z
mod = Repro()

z

if __name__ == '__main__':
    from torch._dynamo.repro.after_dynamo import run_repro
    run_repro(mod, load_args, accuracy=z
, command=z,
        save_dir=z, autocast=z
, backend=z)
)r   Úconvertr   Úzipr   Ú
isinstanceÚintrg   ÚSymIntÚsymintÚTensorÚtensorÚ	TypeErrorrF   ÚlinesÚtextwrapÚdedentr   r   r   Úis_autocast_enabled)r    rq   r1   rr   rn   ro   rp   Ú	model_strÚwriterÚplaceholderÚargÚ	load_argss               r*   Úgenerate_dynamo_fx_repro_stringrˆ   ´   s9  € ô !×(Ò(¨Ó,€Iô ˜¨tÑ4€FÜÔ 6°rÓ :¸DÖAÑˆÜ�cœC¤§¡Ð.×/Ñ/Ø�M‰M˜+Ö+Ü˜œUŸ\™\×*Ñ*à�M‰M˜+Ö+äÐJÈ3È%ÐPÓQÐQñ Bð —	‘	˜&Ÿ,™,›.Ó)€Iä�?Š?ðÜ¨Ñ6Ð 7ð 	8ô  mÑ4Ð 5ð 6ä€ð à
€ð ð €ð (ð )7Ñ'9¸ÀGÁ;ð OØ‘˜[¬×)BÒ)BÓ)DÑ(GÀzÐR_ÑQbð cð-	óð r,   c                 óP  • [         R                  " 5       n[         R                  R                  [         R                  " 5       S5      n[         R                  R	                  U5      (       d  [         R
                  " USS9  [         R                  R                  US[        U R                  R                  5       S35      n[        R                  S[        U R                  R                  5      U5        [        US5       nUR                  [        XX#US95        S	S	S	5        [         R                  R                  US
5      n[        R                  SXh5        [        (       a  [        U5      R                  5         [         R"                  " Xh5        g	! , (       d  f       N= f)z$
Saves the repro to a repro.py file
ÚcheckpointsT©Úexist_okÚ	minified_z	_nodes.pyz&Writing checkpoint with %s nodes to %sÚw)ro   Nzrepro.pyz Copying %s to %s for convenience)rD   ÚgetcwdrE   rF   ÚexistsÚmakedirsÚlenr]   ÚnodesrY   rZ   ÚopenÚwriterˆ   rH   r   ÚshutilÚcopyfile)	r    rq   r1   rr   ÚcurdirÚsubdirÚ	file_nameÚfdÚlatest_repros	            r*   Údump_backend_repro_as_filer�   ì   s  € ô �YŠY‹[€FÜ�W‰W�\‰\œ"Ÿ)š)›+ }Ó5€FÜ�7‰7�>‰>˜&×!Ñ!Ü
�Š�F TÒ*Ü—‘—‘˜V y´°R·X±X·^±^Ó1DÐ0EÀYÐ%OÓP€IÜ‡K�KØ0´#°b·h±h·n±nÓ2EÀyôô 
ˆi˜Ô	 Ø
�‰Ü+Ø˜-À&ñô	
÷ 
ô —7‘7—<‘< ¨
Ó3€LÜ‡K�KÐ2°IÔLç‚xÜ˜Ó&×,Ñ,Ô.ä
‡O‚O�IÕ,÷ 
Õ	ús   ÄFÆ
F%c                 óT   • [         R                  " U 5      (       d   e[        XX#5      $ )zô
Dumps the dynamo graph to repro the issue.
1) It tries to convert Fx GraphModule to a string. If we can, it writes to a
repro.py file.
2) If we can't convert Fx GraphModule to a string, we use to_folder to save
the module and save a tar file.
)r   Úcan_convert_to_stringr�   )r    rq   r1   rr   s       r*   r^   r^     s(   € ô ×1Ò1°"×5Ñ5Ð5Ð5Ü% b°ÓNÐNr,   c                 ó  • [         R                  R                  [        5       S5      n[         R                  R	                  U5      (       d  [         R
                  " USS9  [        [        U UU[        R                  S:H  USS95        g )NrŠ   Tr‹   rN   Úminify)rr   ro   rp   )
rD   rE   rF   r   r�   r‘   r   rˆ   r   rU   )r    rq   r1   r™   s       r*   rV   rV   $  sh   € ô �W‰W�\‰\œ,›.¨-Ó8€FÜ�7‰7�>‰>˜&×!Ñ!Ü
�Š�F TÒ*ÜÜ'ØØØÜ!×-Ñ-°Ñ2ØØñ	
õ	r,   c           	      óZ  • SSK Jn  [        U5      nU Vs/ s H:  n[        U[        R
                  5      (       a  UR                  R                  OUPM<     nn U" X5      n[        Xa5        [        S5      es  snf ! [         a£  n[        U5      n[        R                  S5        [        R                  " [         US9n	U	" ["        R$                  " U [&        R(                  " U R*                  5      5      U5        [        R                  " [,        UUS9n
U" U UU
U	S9   S nAU $ S nAff = f)Nr   ©ÚminifierzNo issue was detectedrO   rQ   )r"   Úorig_failure©Úmodule_failsÚ
dump_state)Úfunctorch.compiler¤   r   rx   rg   rz   ÚnodeÚhintr   Ú
ValueErrorrT   rf   rY   rZ   r5   rR   r^   r[   r\   rW   rX   r]   Úbackend_fails)r    r!   r1   r¤   r"   Úir_   rA   r¥   r`   Úfails_fns              r*   Údynamo_minifier_backendr°   <  s  € õ +ä  Ó/€Kñ DRóÚCQ¸a”z !¤U§\¡\×2Ñ2ˆ�‰�Š¸Ò9Á>ð ð ð
Ù! "Ó5ˆÜ˜+Ô6ÜÐ0Ó1Ð1ùòøô ó 
Ü˜3“xˆÜ�‰ØRô	
ô "×)Ò)Ü¨mñ
ˆñ 	”b—n’n R¬¯ª°r·x±xÓ)@ÓAÀ>ÔRÜ×$Ò$ÜØ#Ø%ñ
ˆñ
 	ØØØ!Ø$ö		
ð €Iûð)
ús   –AA8ÁA= Á=
D*ÂBD%Ä%D*c                 ó²  • SSK Jn  [        U5      nU R                  5         [	        XU5      (       a�  [
        R                  S5        [        R                  " [        USS9n[        R                  " [        US9nU" [        R                  " U [        R                  " U R                  5      5      U5        U" U UUUS9  U $ [
        R                  S5        U $ )	Nr   r£   z2Accuracy failed for the TorchDynamo produced graphT)r1   rr   )r"   r¦   z*Input graph does not fail accuracy testing)r©   r¤   r   Úevalr+   rY   rZ   r5   rR   r^   r[   r\   rW   rX   r]   Úerror)r    r!   r1   r¤   r"   r`   r¯   s          r*   Ú dynamo_accuracy_minifier_backendr´   f  sº   € õ +ä  Ó/€Kð ‡G�G„Iô �r¨;×7Ñ7Ü�‰ÐHÔIÜ!×)Ò)Ü¨mÈDñ
ˆô ×$Ò$ÜØ#ñ
ˆñ 	”b—n’n R¬¯ª°r·x±xÓ)@ÓAÀ>ÔRÙØØØ!Ø$ò		
ð €Iô 	�	‰	Ð>Ô?Ø€Ir,   r¥   c                 óú   • SSK Jn   [        U [        U5      5        U" X5      n[        U[        U5      5        g! [         a5  n[        U5      nU" SX75      R                  5       S:”  a   SnAg SnAgSnAff = f)a
  
Minifier uses this function to identify if the minified graph module fails
with the same error.

One caveat is that minifier can potentially go into a wrong direction when
the resulting graph module fails for a different reason. To avoid this, we
save the string for the original exception and check similarity between new
and old exception. They can be somewhat different in some cases, when the
exception string depends on the failing node information. So, we have a
loose similarity metric to guide the minifier path.
r   )ÚSequenceMatcherNg      à?TF)Údifflibr¶   r   r   rT   rf   Úratio)r    r!   r"   r¥   r¶   r_   ÚeÚnew_failures           r*   r­   r­   ‡  sz   € õ" (ðä˜"Ô=¸nÓMÔNÙ! "Ó5ˆÜ˜+Ô'FÀ~Ó'VÔWð
 øô	 ó Ü˜!“fˆÙ˜4 Ó;×AÑAÓCÀcÓIÜó Jàûð	ús   ˆ2; »
A:Á&A5Á5A:ÚoptionsÚmodr‡   c                 ó†  • [        US5      (       d  [        R                  S5        O0UR                  S:”  a   [        R                  SUR                  5        [	        5       nU" U5        [        SUR                  S9 n[        U R                  US9nU" U5        UR                  nS S S 5        U$ ! , (       d  f       W$ = f)NÚ_versionzzload_args does not have a _version attribute, please file a bug to PyTorch and describe how you generate this repro scriptr   z¾load_args is version %s, but this version of PyTorch only supports version 0.  We will try to run it anyway but there may be an incompatibility; if so, try upgrading your version of PyTorch.zLoading inputs)ÚdescÚtotal)ro   Úpbar)
r9   rY   rZ   r¾   r   r   rÀ   r   ro   rq   )r»   r¼   r‡   Ú
nop_readerrÁ   Úinput_readerrq   s          r*   Úrun_load_argsrÄ   «  s³   € Ü�9˜j×)Ñ)Ü�‰ð>õ	
ð
 ×Ñ Ó!Ü�K‰Kð@ð ×"Ñ"ô	ô  Ó!€JÙˆjÔä	Ð#¨:×+;Ñ+;Ò	<ÀÜ"¨G×,<Ñ,<À4ÑHˆÙ�,ÔØ× Ñ ˆ÷ 
=ð
 €K÷ 
=Ô	<ð
 €Kús   Á>)B1Â1
C c                 ó²  • [        XU5      nU R                  (       d  [        S5      nO[        S5      nU R                  c  [	        S5      e[
        R                  " UU R                  S9n[        R                  R                  U5      " U5      n[        R                  R                  SU R                  S9   U" U6   S S S 5        g ! , (       d  f       g = f)Nr°   r´   zóCompiler name is None - this likely means that a custom compiler was called by torchdynamo. Please remove this error, import your custom compiler function, and replace the backend=None line in run_repro to backend=<my_imported_custom_function>rQ   Úcuda©Úenabled)rÄ   Úaccuracyr   ÚbackendÚRuntimeErrorr5   rR   rg   Ú_dynamoÚoptimizeÚampÚautocast)r»   r¼   r‡   rq   r"   r°   Úopt_mods          r*   Úrepro_minifyrÑ   Å  sµ   € Ü˜ yÓ1€Dð ××Ü$Ð%>Ó?‰ä$Ð%GÓHˆà‡�ÑÜðIó
ð 	
ô (×/Ò/ØØ—o‘oñÐô
 �m‰m×$Ñ$Ð%<Ô=¸cÓB€Gä	�‰×	Ñ	˜F¨G×,<Ñ,<Ð	Ò	=Ù�‰÷ 
>×	=Ö	=ús   Â9CÃ
Cc           	      ó  • [         R                  R                  U R                  5      " U5      nU R                  S:w  a°  UR                  5         UR                  5         [         R                  R                  SU R                  S9   [        XU5      n[        XU5      (       d   S5       e[        UUU[        R                  [        R                  S9(       d  [        S5      e S S S 5        g [         R                  R                  SU R                  S9   [        XU5      n[        XU R                  SS9  A[        XU5      n[        UUU R                  SS9  S S S 5        g ! , (       d  f       g = f! , (       d  f       g = f)	NÚ rÆ   rÇ   zEager itself failedr%   zDynamo failedT)r&   Údisable_clone)rg   rÌ   rÍ   rÊ   rÉ   r²   rÎ   rÏ   rÄ   r   r   r(   r)   r	   r   r&   )r»   r¼   r‡   rÐ   rq   s        r*   Ú	repro_runrÕ   á  sC  € ä�m‰m×$Ñ$ W§_¡_Ô5°cÓ:€Gà×Ñ˜2ÓØ�‰Œ
Ø�‰Œä�Y‰Y×Ñ °×0@Ñ0@ÐÒAä  ¨yÓ9ˆDÜ" 3¨T×2Ñ2ÐIÐ4IÓIÐ2Ü"ØØØÜ×2Ñ2Ü$×8Ñ8÷ô $ OÓ4Ð4ð÷	 BÐAô �Y‰Y×Ñ °×0@Ñ0@ÐÒAÜ  ¨yÓ9ˆDÜ˜c°'×2BÑ2BÐRVÒWØä  ¨yÓ9ˆDÜØØØ ×)Ñ)Ø"ò	÷ BÐA÷ BÕAú÷ BÕAús   ÂAE&ÄAE7Å&
E4Å7
FrÓ   Úinductor)rp   rÉ   ro   rÏ   rÊ   rÉ   rÏ   rÊ   r=   c                ó|  ^^^^• U H  n[         R                  SU5        M     TSL a  SmOTSL a  Sm[        R                  " SU SU ST< S	T< S
3	[        R                  S9n	S[        R                  SS 4UUUU4S jjn
U	R                  SSSS9nUR                  SSS9nU
" U5        UR                  SSSS9  UR                  SSS9nU
" U5        S n[        [        R                  5      S::  a  U/[        R                  SS  QnU	R                  U5      n[        [        S.nUUR                     " XðU5        g )NzPUnrecognized kwarg %s; perhaps this repro was made on a newer version of PyTorchTrÉ   FrÓ   z‘An after_dynamo repro script, typically triggering a bug in Dynamo or
AOTAutograd.  When run with no arguments, this script defaults to running
'z9'.  Extra flags may be available; to find out more, try 'zs
--help'.  There are also alternate subcommands available, see below.

default settings on this script:
  accuracy=z
  save_dir=ru   )ÚdescriptionÚformatter_classÚparserr#   c           	      ód  >• U R                  5       nUR                  SSSSTSS9  UR                  SSSTSS	9  U R                  S
[        TSSS9  U R                  SSSS SS9  U R                  SSSSSS9  U R                  STSSS9  U R                  SSSSS9  U R                  S [        TS!S"S9  g )#Nz--no-accuracyrÉ   Ústore_constrÓ   z>do not test accuracy, just run the module and see if it errors)ÚdestÚactionÚconstÚdefaultÚhelpz
--accuracyztest accuracy)rÞ   rß   rà   rá   z
--save-dirÚDIRz!directory where saved inputs live)Útyperà   Úmetavarrá   z--no-save-dirro   z(don't use any directory for saved inputs)rÝ   rÞ   rß   rá   z--no-isolateÚisolateÚstore_falseFz1no isolate (doesn't do anything for after_dynamo))rÝ   rÞ   rà   rá   z
--autocastÚ
store_truezuse torch.cuda.amp.autocast)rà   rÞ   rá   z--no-autocastrÏ   z!don't use torch.cuda.amp.autocast)rÝ   rÞ   rá   z	--backendÚBACKENDztorch.compile backend to use)Úadd_mutually_exclusive_groupÚadd_argumentrf   )rÚ   Úaccuracy_grouprÉ   rÏ   rÊ   ro   s     €€€€r*   Úcommon_flagsÚrun_repro.<locals>.common_flags(  s,  ø€ Ø×<Ñ<Ó>ˆØ×#Ñ#ØØØ ØØØQð 	$ñ 	
ð 	×#Ñ#ØØ ØØØ ð 	$ñ 	
ð 	×ÑØÜØØØ4ð 	ñ 	
ð 	×ÑØØØ ØØ;ð 	ñ 	
ð 	×ÑØØØ ØØDð 	ñ 	
ð 	×ÑØØØØ.ð	 	ñ 	
ð 	×ÑØØØ Ø4ð	 	ñ 	
ð 	×ÑØÜØØØ/ð 	ò 	
r,   rp   z{run,minify})rÝ   rä   Úrequiredrm   zjust run the repro)rá   z
--only-fwdrç   z+don't run backwards compilation for testing)rÞ   rá   r¡   zrun the minifier on the reprorP   )r¡   rm   )rY   rZ   ÚargparseÚArgumentParserÚRawTextHelpFormatterÚadd_subparsersÚ
add_parserrê   r’   ÚsysÚargvÚ
parse_argsrÑ   rÕ   rp   )r¼   r‡   rp   rÉ   ro   rÏ   rÊ   r=   ÚkrÚ   rì   Ú
subparsersÚ
parser_runÚparser_minifyrq   r»   ÚCOMMAND_FNSs      ````          r*   Ú	run_reprorü     s‘  û€ ó ˆÜ�‰Ø^Øö	
ñ ð �4ÒØ‰Ø	�UÒ	Øˆä×$Ò$ðð 
€Ð
CÀGÀ9ð Mð �+ð Ø�+ð ð	ô !×5Ñ5ñ€Fð8
œX×4Ñ4ð 8
¸÷ 8
ò 8
ðt ×&Ñ&Ø ¸ð 'ð €Jð ×&Ñ&ØØ!ð 'ð €Jñ �ÔØ×ÑØØØ:ð ñ ð ×)Ñ)ØÐ6ð *ð €Mñ �Ôà€DÜ
Œ3�8‰8ƒ}˜ÓØÐ'œ#Ÿ(™( 1 2˜,Ð'ˆà×Ñ Ó%€GäÜñ€Kð �—‘Ò  ¨yÕ9r,   )F)KÚ__doc__rï   rW   r5   ÚloggingrD   r–   rô   r€   Úcollections.abcr   r   Ú	importlibr   Útypingr   r   r   rg   Útorch.fxr[   Útorch._dynamo.debug_utilsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú%torch.fx.experimental.symbolic_shapesr   Ú	torch.hubr   rÓ   r   Úbackends.registryr   r   r   Údebug_utilsr   Ú	getLoggerr3   rY   Úinductor_configÚ	is_fbcoderH   r\   rh   Úboolr+   r.   rf   rl   rˆ   r�   r^   rV   r°   r´   r­   ÚnnÚModulerÄ   rÑ   rÕ   rü   rj   r,   r*   Ú<module>r     sE  ðñó$ Û Û Û Û 	Û Û 
Û ß .Ý #ß 'Ñ 'ã Ý ÷÷ ÷ ÷ ñ õ" IÝ å ß RÑ RÝ 9ð ×Ò˜Ó!€ñ  Ð 8Ó9€Ø×$Ñ$Ó&€ðØ�‰×Ñðà˜S‘Mðð ˜5Ÿ8™8×/Ñ/°°c±Ð;¸U¿X¹X×=QÑ=QÐQÑRðð 
ô	÷Kñ Kð\EØ(ðEØ9AÀ#¹ðEàôEð. !ð	5ð  Ø"Øò5Ø�‰×Ñð5à
�3‰-ð5ð ˜C‘=ð5ð ð	5ð ð5ð �s‰mð5ð ð5ð 	ö5ðx !ñ	-Ø�‰×Ñð-à
�3‰-ð-ð ˜C‘=ð-ð ð	-ð
 
õ-ðJ !ñ	OØ�‰×ÑðOà
�3‰-ðOð ˜C‘=ðOð ð	Oð
 
õOð.Ø�‰×ÑðØ$,¨S¡MðØBJÈ3Á-ðà	ôð0 ð&Ø
�‰ð&Ø(0°©ð&ØFNÈsÁmð&à‡^�^ó&ó ð&ðR ðØ
�‰ðØ(0°©ðØFNÈsÁmðà‡^�^óó ðð@Ø
�‰ðà˜S‘Mðð ðð ˜3‘-ð	ð
 
ôðH˜3ð  U§X¡X§_¡_ð Àð ÈÈcÉô ð4˜#ð  E§H¡H§O¡Oð Àð Èô ð8 �sð   §¡§¡ð  ¸Sð  ÀTô  ðN Ø!#Ø"ØØò{:Ø	�‰�‰ð{:àð{:ð ð	{:ð
 �D˜#�IÑð{:ð �s‰mð{:ð ð{:ð ð{:ð ð{:ð 
ö{:r,   