§
    ŠŠtjí¥  ã                  óÜ  — d Z ddlm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ZddlZddlZddl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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$ ddl%m&Z& ddl'm(Z(m)Z) ddl*m+Z+ ddlm,Z,m-Z-m.Z. erddl/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5  e
j6        e7¦  «        Z8 ed¦  «        Z9 ed¦  «        Z:e: ;                    ¦   «         Z<e<rddl=Z>g Z?dZ@dZAe<rZg d¢Z?e>jB        jC        jD         E                    ¦   «          F                    dd¦  «        ZAd G                    d„ e?D ¦   «         ¦  «        Z@g d¢ZH G d„ d¦  «        ZIdkd „ZJd!ZK G d"„ d#eL¦  «        ZM G d$„ d%¦  «        ZNejO        dkd&„¦   «         ZPd'd(œdld+„ZQd'd(œdld,„ZRdkd-„ZSdmd0„ZT G d1„ d2eU¦  «        ZVdnd6„ZW	 	 dodpd=„ZX	 dqd'd'd>œdrdB„ZYdsdD„ZZdtdI„Z[dudJ„Z\	 dqd'd'd>œdvdM„Z]dwdS„Z^dxdV„Z_ e_ej`        ¦  «        Za e_ ejb        dW¦  «        ¦  «        Zc e_d¦  «        Zd e_d'¦  «        Ze e_d'¦  «        Zf G dX„ dY¦  «        Zg G dZ„ d[¦  «        Zh G d\„ d]¦  «        Zi	 	 	 dydzdg„Zjd{dj„ZkdS )|aã  
Debug utilities for TorchDynamo compilation and execution.

This module provides various debugging tools and utilities for TorchDynamo, including:

- Minification support for reducing test cases while preserving bugs
- Input/output handling via InputReader and InputWriter for reproducible testing
- Accuracy checking between original and compiled models
- Neural network module string conversion via NNModuleToString
- Profiling tools and system information collection
- Buck build system integration for Meta-internal testing

Key classes:
- InputReader/InputWriter: Handle serialization of model inputs/outputs
- NNModuleToString: Converts nn.Modules to string representations
- BuckTargetWriter: Manages Buck build system integration
é    )ÚannotationsN)ÚCounter)Úimport_module)ÚAnyÚcastÚTYPE_CHECKINGÚTypeVar)ÚTensor)Úrand_strided)Únormalize_path_separator)Úis_float_dtype)ÚStorageWeakRef)ÚContentStoreReaderÚContentStoreWriteré   )Úconfig)Úclone_inputsÚget_debug_dirÚ	warn_once)ÚCallableÚSequence)Útqdm)ÚUntypedStorageÚTztorch._inductor.configÚ )z1//caffe2/torch/fb/sparsenn:sparsenn_operators_gpuz-//caffe2/torch/fb/sparsenn:sparsenn_operatorsz///deeplearning/fbgemm/fbgemm_gpu:sparse_ops_cpuz+//deeplearning/fbgemm/fbgemm_gpu:sparse_opszfbcode:ú//ú
c                ó   — g | ]}d |› d�‘Œ	S )ztorch.ops.load_library("ú")© ©Ú.0Úxs     úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/debug_utils.pyú
<listcomp>r%   T   s$   € ÐTÐTÐTÀAÐ?¸!Ð?Ð?Ð?ÐTÐTÐTó    )Úbuck2Úrunz@mode/dev-nosanc                  ó(   — e Zd Zdd„Zdd„Zddd„ZdS )ÚBuckTargetWriterÚfilenameÚstrÚreturnÚNonec                ó(  — t           j                             t           j                             |¦  «        ¦  «        \  | _        | _        | j                             dd¦  «        | _        | j                             dd¦  «        › d| j        › �| _        | j        | j                             d¦  «        d …         | _        | j        dd …         | _        | j        }||                     d¦  «        d …         dd …         }d|› d	| j        › �| _	        d S )
Nz.pyr   ú/ú.zfbcode.é   zfbcode/r   ú:)
ÚosÚpathÚsplitÚabspathÚsubdirÚpy_fileÚreplaceÚtargetÚfindÚcmd_line_path)Úselfr+   Útmps      r$   Ú__init__zBuckTargetWriter.__init__[   sñ   € Ý$&¤G§M¢Mµ"´'·/²/À(Ñ2KÔ2KÑ$LÔ$LÑ!ˆŒ�T”\Ø”l×*Ò*¨5°"Ñ5Ô5ˆŒð ”{×*Ò*¨3°Ñ4Ô4ÐDÐD°t´{ÐDÐDˆŒ	Ø”I˜dœiŸnšn¨YÑ7Ô7Ð9Ð9Ô:ˆŒ	Ø”I˜a˜b˜b”MˆŒ	ð ŒkˆØ�#—(’(˜9Ñ%Ô%Ð'Ð'Ô(¨¨¨Ô,ˆØ5 #Ð5Ð5¨¬Ð5Ð5ˆÔÐÐr&   c                óº   — d                      d„ t          D ¦   «         ¦  «        }t          j        d| j        › d| j        › dt          › d|› d| j        › d�¦  «        S )	Nr   c                ó   — g | ]}d |› d�‘Œ	S )z	        "z",r    r!   s     r$   r%   z*BuckTargetWriter.build.<locals>.<listcomp>j   s$   € Ð#JÐ#JÐ#J¸!Ð$5°Ð$5Ð$5Ð$5Ð#JÐ#JÐ#Jr&   za
load("@fbcode_macros//build_defs:python_binary.bzl", "python_binary")

python_binary(
    name="z",
    srcs = ["z©"],
    compile = False,
    deps = [
        "//caffe2:torch",
        "//caffe2:libtorch",
        "//caffe2/functorch:functorch",
        "//triton:triton",
        "z",
    ],
    cpp_deps = [
z
    ],
    main_module = "z",
    par_style = "xar",
)
)ÚjoinÚ
extra_depsÚtextwrapÚdedentr;   r9   Ú
cur_targetr5   )r>   Úextra_cpp_depss     r$   ÚbuildzBuckTargetWriter.buildi   s‘   € ØŸšÐ#JÐ#J½zÐ#JÑ#JÔ#JÑKÔKˆÝŒðð Œ;ð	ð ð
 Œlðð õ ðð ð ðð ð" ”Ið#ð ð ñ
ô 
ð 	
r&   TÚ	print_msgÚboolú	list[str]c                ón  — t           j                             | j        d¦  «        }t	          |d¦  «        5 }|                     |                      ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          | j        gz   }|r.t           
                    dd                     |¦  «        ¦  «         |S )NÚTARGETSÚwzFFound an example that reproduces the error. Run this cmd to repro - %sú )r4   r5   rC   r8   ÚopenÚwriterI   ÚBUCK_CMD_PREFIXr=   ÚlogÚwarning)r>   rJ   Útarget_fileÚfdÚ	cmd_splits        r$   rR   zBuckTargetWriter.writeƒ   sß   € Ý”g—l’l 4¤;°	Ñ:Ô:ˆÝ�+˜sÑ#Ô#ð 	# rØ�HŠH�T—Z’Z‘\”\Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ $ tÔ'9Ð&:Ñ:ˆ	Øð 	Ý�KŠKØXØ—’˜Ñ#Ô#ñô ð ð Ðs   ¶(A*Á*A.Á1A.N)r+   r,   r-   r.   ©r-   r,   )T)rJ   rK   r-   rL   )Ú__name__Ú
__module__Ú__qualname__r@   rI   rR   r    r&   r$   r*   r*   Z   sU   € € € € € ð6ð 6ð 6ð 6ð
ð 
ð 
ð 
ð4ð ð ð ð ð ð r&   r*   r-   r,   c                 ó  — t           j                             t          ¦   «         d¦  «        } | €)t	          j        ¦   «         › dt          j        ¦   «         › �} t           j                             | ¦  «        st          j	        | d¬¦  «         | S )NÚminifierz
/minifier_T)Úexist_ok)
r4   r5   rC   r   ÚtempfileÚ
gettempdirÚgetpassÚgetuserÚexistsÚmakedirs)r5   s    r$   Úminifier_dirrf   ‘   st   € ÝŒ7�<Š<�™œ¨Ñ4Ô4€DØ€|ÝÔ%Ñ'Ô'ÐFÐFµ7´?Ñ3DÔ3DÐFÐFˆÝŒ7�>Š>˜$ÑÔð )Ý
Œ�D 4Ð(Ñ(Ô(Ð(Ø€Kr&   é   c                  ó   — e Zd ZdS )ÚUnsupportedNNModuleErrorN©rZ   r[   r\   r    r&   r$   ri   ri   �   ó   € € € € € Ø€Dr&   ri   c                  óø  — e Zd ZddhZh d£ZddhZdZej        j	        ej        j
        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        ej        j        gZed d„¦   «         Z ed!d„¦   «         Z!ed"d„¦   «         Z"ed#d„¦   «         Z#ed#d„¦   «         Z$ed#d„¦   «         Z%ed#d„¦   «         Z&ed$d„¦   «         Z'eddœd%d„¦   «         Z(eddœd&d„¦   «         Z)dS )'ÚNNModuleToStringz0torch.ao.quantization.fake_quantize.FakeQuantizezAtorch.ao.quantization.fake_quantize.FusedMovingAvgObsFakeQuantize>   ú#torch.ao.nn.qat.modules.conv.Conv1dú#torch.ao.nn.qat.modules.conv.Conv2dú#torch.ao.nn.qat.modules.conv.Conv3dú5torch.ao.nn.intrinsic.qat.modules.conv_fused.ConvBn1dú5torch.ao.nn.intrinsic.qat.modules.conv_fused.ConvBn2dú5torch.ao.nn.intrinsic.qat.modules.conv_fused.ConvBn3dú7torch.ao.nn.intrinsic.qat.modules.conv_fused.ConvReLU1dú7torch.ao.nn.intrinsic.qat.modules.conv_fused.ConvReLU2dú7torch.ao.nn.intrinsic.qat.modules.conv_fused.ConvReLU3dú9torch.ao.nn.intrinsic.qat.modules.conv_fused.ConvBnReLU1dú9torch.ao.nn.intrinsic.qat.modules.conv_fused.ConvBnReLU2dú9torch.ao.nn.intrinsic.qat.modules.conv_fused.ConvBnReLU3dz%torch.ao.nn.qat.modules.linear.Linearz8torch.ao.nn.intrinsic.qat.modules.linear_relu.LinearReLU)ÚfbgemmÚx86ÚqnnpackÚonednnÚgmútorch.fx.GraphModuler-   rK   c                ó  — t          ¦   «         }|                      ¦   «         D ]4\  }}t                               |¦  «        €|                     |¦  «         Œ5t          |¦  «        dk    rt                               d|¦  «         dS dS )Nr   z2Cannot safely convert some modules to strings - %sFT)ÚsetÚnamed_childrenrm   Ú_module_constructor_stringÚaddÚlenrT   rU   )r~   Úcant_convertÚ_Úmodules       r$   Úcan_convert_to_stringz&NNModuleToString.can_convert_to_string×   s�   € å‘u”uˆØ×*Ò*Ñ,Ô,ð 	)ð 	)‰IˆAˆvÝ×:Ò:¸6ÑBÔBÐJØ× Ò  Ñ(Ô(Ð(øåˆ|ÑÔ˜qÒ Ð Ý�KŠKØDÀlñô ð ð �5Øˆtr&   rˆ   útorch.nn.Moduler,   c                óX   — t          | ¦  «        j        › dt          | ¦  «        j        › �S ©Nr1   )Útyper[   rZ   )rˆ   s    r$   Ú_module_type_namez"NNModuleToString._module_type_nameå   s(   € å�v‘,”,Ô)ÐCÐC­D°©L¬LÔ,AÐCÐCÐCr&   Útype_útype[object]c                ó$   — | j         › d| j        › �S rŒ   )r[   rZ   )r�   s    r$   Ú
_type_namezNNModuleToString._type_nameé   s   € àÔ"Ð5Ð5 U¤^Ð5Ð5Ð5r&   ú
str | Nonec                óŽ  — t                                | ¦  «        }|t           j        vrd S | j        }t	          t
          | j        ¦  «        }t	          t
          | j        ¦  «        }t          |dd¦  «        r|dz  }|dz  dz   }dt            	                    t          |¦  «        ¦  «        › �d|›�d|›�d| j        ›�d	| j        ›�d
| j        ›�g}t          |d¦  «        r|                     d|j        ›�¦  «         t          |d¦  «        r|                     d|j        ›�¦  «         |› dd                     |¦  «        › d�S )NÚreduce_rangeFé   r   z	observer=z
quant_min=z
quant_max=údtype=zqscheme=zis_dynamic=zreduce_range=Úch_axiszch_axis=ú(ú, ú))rm   rŽ   Úfake_quant_modulesÚactivation_post_processr   ÚintÚ	quant_minÚ	quant_maxÚgetattrr’   r�   ÚdtypeÚqschemeÚ
is_dynamicÚhasattrÚappendr•   r˜   rC   )rˆ   Úmodule_typeÚobserverrŸ   r    Úargss         r$   Ú_fake_quant_constructorz(NNModuleToString._fake_quant_constructorí   si  € å&×8Ò8¸Ñ@Ô@ˆØÕ.ÔAÐAÐAØ�4àÔ1ˆÝ�˜fÔ.Ñ/Ô/ˆ	Ý�˜fÔ.Ñ/Ô/ˆ	Ý�8˜^¨UÑ3Ô3ð 	*Ø˜‰NˆIØ! A™¨Ñ)ˆIàEÕ(×3Ò3µD¸±N´NÑCÔCÐEÐEØ&˜Ð&Ð&Ø&˜Ð&Ð&Ø%�V”\Ð%Ð%Ø)�v”~Ð)Ð)Ø/˜&Ô+Ð/Ð/ð
ˆõ �8˜^Ñ,Ô,ð 	CØ�KŠKÐA¨Ô(=ÐAÐAÑBÔBÐBÝ�8˜YÑ'Ô'ð 	9Ø�KŠKÐ7 8Ô#3Ð7Ð7Ñ8Ô8Ð8ØÐ2Ð2 §	¢	¨$¡¤Ð2Ð2Ð2Ð2r&   c                ó  — t          | dd ¦  «        }t          j        D ]`}	 t          j        j                             |¦  «        }n# t          $ r Y Œ4w xY wt          |¦  «        t          |¦  «        k    rd|›d�c S Œad S )NÚqconfigz6qconfig=torch.ao.quantization.get_default_qat_qconfig(r›   )	r¡   rm   Údefault_qat_qconfig_backendsÚtorchÚaoÚquantizationÚget_default_qat_qconfigÚAssertionErrorÚrepr)rˆ   r¬   ÚbackendÚdefault_qconfigs       r$   Ú_qat_qconfig_constructorz)NNModuleToString._qat_qconfig_constructor  s°   € å˜& )¨TÑ2Ô2ˆÝ'ÔDð 		ð 		ˆGðÝ"'¤(Ô"7×"OÒ"OÐPWÑ"XÔ"X��øÝ!ð ð ð Ø�ðøøøå�G‰}Œ}¥ _Ñ 5Ô 5Ò5Ð5ð%Øð%ð %ð %ðð ð ð 6ð
 ˆts   ¡$AÁ
AÁAc           
     óJ  — t                                | ¦  «        }|t           j        vrd S t                                | ¦  «        }|€d S t	          | j        ¦  «        t	          | j        ¦  «        d| j        ›�d| j        ›�d| j	        ›�d| j
        ›�d| j        ›�d| j        d u› �d| j        ›�g	}t          | dd ¦  «        }|�0|                     d	|j        ›�d
|j        ›�d| j        ›�g¦  «         |                     |¦  «         |› dd                     |¦  «        › d�S )Nzkernel_size=zstride=zpadding=z	dilation=zgroups=úbias=zpadding_mode=Úbnzeps=z	momentum=z
freeze_bn=r™   rš   r›   )rm   rŽ   Úqat_conv_modulesr¶   r³   Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚpaddingÚdilationÚgroupsÚbiasÚpadding_moder¡   ÚextendÚepsÚmomentumÚ	freeze_bnr¦   rC   )rˆ   r§   r¬   r©   r¹   s        r$   Ú_qat_conv_constructorz&NNModuleToString._qat_conv_constructor  s]  € å&×8Ò8¸Ñ@Ô@ˆØÕ.Ô?Ð?Ð?Ø�4Ý"×;Ò;¸FÑCÔCˆØˆ?Ø�4õ �Ô#Ñ$Ô$Ý�Ô$Ñ%Ô%Ø1˜6Ô-Ð1Ð1Ø'�f”mÐ'Ð'Ø)�v”~Ð)Ð)Ø+˜œÐ+Ð+Ø'�f”mÐ'Ð'Ø-�F”K tÐ+Ð-Ð-Ø3˜FÔ/Ð3Ð3ð

ˆõ �V˜T 4Ñ(Ô(ˆØˆ>Ø�KŠKà%˜2œ6Ð%Ð%Ø/ ¤Ð/Ð/Ø5 Ô!1Ð5Ð5ðñô ð ð 	�Š�GÑÔÐØÐ2Ð2 §	¢	¨$¡¤Ð2Ð2Ð2Ð2r&   c                ó0  — t                                | ¦  «        }|t           j        vrd S t                                | ¦  «        }|€d S t	          | j        ¦  «        t	          | j        ¦  «        d| j        d u› �|g}|› dd                     |¦  «        › d�S )Nr¸   r™   rš   r›   )	rm   rŽ   Úqat_linear_modulesr¶   r³   Úin_featuresÚout_featuresrÂ   rC   )rˆ   r§   r¬   r©   s       r$   Ú_qat_linear_constructorz(NNModuleToString._qat_linear_constructor6  s£   € å&×8Ò8¸Ñ@Ô@ˆØÕ.ÔAÐAÐAØ�4Ý"×;Ò;¸FÑCÔCˆØˆ?Ø�4õ �Ô#Ñ$Ô$Ý�Ô$Ñ%Ô%Ø-�F”K tÐ+Ð-Ð-Øð	
ˆð Ð2Ð2 §	¢	¨$¡¤Ð2Ð2Ð2Ð2r&   Ú
module_strc                óŽ   — t          | ¦  «        t          j        vrdS 	 t          d|› �dd¦  «         n# t          $ r Y dS w xY wdS )NFzmod = z<module repr>ÚexecT)r�   rm   Ú
safe_reprsÚcompileÚSyntaxError)rˆ   rÎ   s     r$   Ú_can_emit_module_constructorz-NNModuleToString._can_emit_module_constructorG  sf   € å�‰<Œ<Õ/Ô:Ð:Ð:Ø�5ð	ÝÐ)˜ZÐ)Ð)¨?¸FÑCÔCÐCÐCøÝð 	ð 	ð 	Ø�5�5ð	øøøàˆts   Ÿ4 ´
AÁAF©Úallow_unsafe_reprrÖ   c               ó
  — t          | ¦  «        }t                               | |¦  «        r|S t                               | ¦  «        p3t                               | ¦  «        pt                               | ¦  «        }|�|S |r|S d S ©N)r³   rm   rÔ   rª   rÈ   rÍ   )rˆ   rÖ   rÎ   Úconstructor_strs       r$   rƒ   z+NNModuleToString._module_constructor_stringR  s’   € õ ˜&‘\”\ˆ
Ý×8Ò8¸ÀÑLÔLð 	ØÐå×4Ò4°VÑ<Ô<ð @Ý×5Ò5°fÑ=Ô=ð@å×7Ò7¸Ñ?Ô?ð 	ð
 Ð&Ø"Ð"Øð 	ØÐØˆtr&   c               óä  — ddl m} d}t          j        d¦  «        }|                      ¦   «         D ]­\  }}t
                               ||¬¦  «        }|€t          d|›�¦  «        ‚t          | 	                    ¦   «         d ¦  «        }|�|n!t          | 
                    ¦   «         d ¦  «        }	|	�|	j        j        dk    r|› d|	j        › d	�}||d
z  › d|› d|› d�z  }Œ®| j                             ¦   «         D ]î\  }
}|€Œ|                     ¦   «         t           k    rFddlm} |j        t           k     r t)          d|j        › dt           › d�¦  «        ‚t+          |¦  «        }nUt-          j        |¦  «        r!dt1          |j        ¦  «        › d|j        › d�}n dt1          |j        ¦  «        › d|j        › d�}|j        j        dk    r|› d|j        › d	�}||d
z  › d|
› d|› d�z  }Œï| j                             ¦   «         D ]X\  }}|€Œd}|j        j        dk    rd|j        › d�}dt1          |j        ¦  «        › d|j        › |› d�}||d
z  › d|› d|› d�z  }ŒY| || j        d¦  «        › d�z  }|S )Nr   )Ú
_addindentú    z­
            from torch.nn import *
            class Repro(torch.nn.Module):
                def __init__(self) -> None:
                    super().__init__()
            rÕ   z!Cannot convert module to string: Úcpuz.to("r   r–   zself.z = r   )Ú
PRINT_OPTSzPRINT_OPTS.threshold (z() must be >= MAX_CONSTANT_NUMEL_INLINE (r›   ztorch.randn(z, dtype=ztorch.randint(1, size=zself.register_buffer('z', z)
r   z
, device="ú"ztorch.nn.Parameter(torch.randn(z))rg   )Útorch.nn.modules.modulerÛ   rE   rF   r‚   rm   rƒ   ri   ÚnextÚ
parametersÚbuffersÚdevicer�   Ú_buffersÚitemsÚnumelÚMAX_CONSTANT_NUMEL_INLINEÚtorch._tensor_strrÞ   Ú	thresholdr²   r³   r®   Úis_floating_pointÚlistÚshaper¢   Ú_parametersÚcode)r~   rÖ   rÛ   ÚtabÚ	model_strÚmodule_namerˆ   rÎ   Úexample_paramÚexample_tensorÚbuffer_nameÚbufferrÞ   Ú
tensor_strÚ
param_nameÚparamÚmaybe_devices                    r$   ÚconvertzNNModuleToString.convertd  ss  € à6Ð6Ð6Ð6Ð6Ð6àˆå”Oðñ
ô 
ˆ	ð $&×#4Ò#4Ñ#6Ô#6ð 	Ið 	IÑˆK˜Ý)×DÒDØÐ*;ð Eñ ô ˆJð Ð!Ý.ØB¸ÐBÐBñô ð õ
 ! ×!2Ò!2Ñ!4Ô!4°dÑ;Ô;ˆMð !Ð,ð �å˜&Ÿ.š.Ñ*Ô*¨DÑ1Ô1ð ð
 Ð)¨nÔ.CÔ.HÈEÒ.QÐ.QØ *ÐJÐJ°Ô1FÐJÐJÐJ�
Ø˜C !™GÐHÐH¨+ÐHÐH¸*ÐHÐHÐHÑHˆIˆIà#%¤;×#4Ò#4Ñ#6Ô#6ð 	ð 	ÑˆK˜Øˆ~Øà�|Š|‰~Œ~Õ!:Ò:Ð:Ø8Ð8Ð8Ð8Ð8Ð8àÔ'Õ*CÒCÐCÝ(ðS°Ô1Eð Sð SÝ6OðSð Sð Sñô ð õ " &™\œ\�
�
ÝÔ(¨Ñ0Ô0ð ØW­D°´Ñ,>Ô,>ÐWÐWÈÌÐWÐWÐW�
�
ð Y­T°&´,Ñ-?Ô-?ÐXÐXÈÌÐXÐXÐXð ð Œ}Ô! UÒ*Ð*Ø *ÐBÐB°´ÐBÐBÐB�
ØØ˜‘7ÐQÐQ°+ÐQÐQÀ*ÐQÐQÐQñˆIˆIð "$¤×!5Ò!5Ñ!7Ô!7ð 	Hð 	HÑˆJ˜Øˆ}ØØˆLØŒ|Ô  EÒ)Ð)Ø;¨E¬LÐ;Ð;Ð;�Øs½4ÀÄÑ;LÔ;LÐsÐsÐV[ÔVaÐsÐcoÐsÐsÐsˆJØ˜C !™GÐGÐG¨*ÐGÐG¸ÐGÐGÐGÑGˆIˆIð 	˜
˜
 2¤7¨AÑ.Ô.Ð2Ð2Ð2Ñ2ˆ	ØÐr&   N)r~   r   r-   rK   )rˆ   rŠ   r-   r,   )r�   r�   r-   r,   )rˆ   rŠ   r-   r“   )rˆ   rŠ   rÎ   r,   r-   rK   )rˆ   rŠ   rÖ   rK   r-   r“   )r~   r   rÖ   rK   r-   r,   )*rZ   r[   r\   rœ   rº   rÊ   r­   r®   ÚnnÚLinearÚConv1dÚConv2dÚConv3dÚBatchNorm1dÚBatchNorm2dÚBatchNorm3dÚ	LayerNormÚDropoutÚSoftmaxÚReLUÚGELUÚIdentityÚ	MaxPool2dÚ	EmbeddingÚTanhÚConvTranspose1dÚGLUÚLSTMÚFlattenÚAdaptiveAvgPool2drÑ   Ústaticmethodr‰   rŽ   r’   rª   r¶   rÈ   rÍ   rÔ   rƒ   rû   r    r&   r$   rm   rm   ¡   s[  € € € € € à:ØKðÐð
ð ð Ðð  	0ØBðÐð $JÐ ð 	ŒŒØŒŒØŒŒØŒŒØŒÔØŒÔØŒÔØŒÔØŒÔØŒÔØŒŒØŒŒØŒÔØŒÔØŒÔØŒŒØŒÔ ØŒŒØŒŒØŒÔØŒÔ"ð+€Jð0 ðð ð ñ „\ðð ðDð Dð Dñ „\ðDð ð6ð 6ð 6ñ „\ð6ð ð3ð 3ð 3ñ „\ð3ð2 ðð ð ñ „\ðð ð3ð 3ð 3ñ „\ð3ð> ð3ð 3ð 3ñ „\ð3ð  ðð ð ñ „\ðð à>Cðð ð ð ð ñ „\ðð" ØGLð Lð Lð Lð Lð Lñ „\ðLð Lð Lr&   rm   c                 ój  — t           j                             ¦   «         sdS d} 	 t           j        j        €et          j        ddg¦  «        }|                     ¦   «                              d¦  «        }d 	                    d„ |D ¦   «         ¦  «        }| |› d�z  } n| dz  } n!# t          t
          j        f$ r | d	z  } Y nw xY wt          d
„ t          t           j                             ¦   «         ¦  «        D ¦   «         ¦  «        }| dz  } |                     ¦   «         D ]\  }}| d|› d|› d�z  } Œ| dz  } | S )Nz:# torch.cuda.is_available()==False, no GPU info collected
z# CUDA Info: 
Únvccz	--versionr   r   c                ó&   — g | ]}|d k    ¯d|› d�‘ŒS )r   ú# ú 
r    )r"   Úss     r$   r%   z-_cuda_system_info_comment.<locals>.<listcomp>¾  s%   € ÐRÐRÐR¨qÈ!ÈrÊ'È'˜{ A˜{˜{˜{È'È'È'r&   z'# Not searching for nvcc on ROCM setup
z# nvcc not found
c              3  óT   K  — | ]#}t           j                             |¦  «        V — Œ$d S rØ   )r®   ÚcudaÚget_device_name)r"   Úis     r$   ú	<genexpr>z,_cuda_system_info_comment.<locals>.<genexpr>Å  sC   è è € ð ð Ø*+�Œ
×"Ò" 1Ñ%Ô%ðð ð ð ð ð r&   z# GPU Hardware Info: 
r  z : r  )r®   r  Úis_availableÚversionÚhipÚ
subprocessÚcheck_outputÚdecoder6   rC   ÚFileNotFoundErrorÚCalledProcessErrorr   ÚrangeÚdevice_countræ   )rñ   Úcuda_version_outÚcuda_version_linesÚcommentÚ	gpu_namesÚnameÚcounts          r$   Ú_cuda_system_info_commentr.  ´  sx  € åŒ:×"Ò"Ñ$Ô$ð MØLÐLà!€Ið	*ÝŒ=ÔÐ$Ý)Ô6¸ÀÐ7LÑMÔMÐØ!1×!8Ò!8Ñ!:Ô!:×!@Ò!@ÀÑ!FÔ!FÐØ—g’gÐRÐRÐ4FÐRÑRÔRÑSÔSˆGØ˜G˜˜˜Ñ'ˆIˆIàÐCÑCˆIøøÝ�zÔ<Ð=ð *ð *ð *ØÐ)Ñ)ˆ	ˆ	ˆ	ð*øøøõ ð ð Ý/4µU´Z×5LÒ5LÑ5NÔ5NÑ/OÔ/Oðñ ô ñ ô €Ið Ð*Ñ*€IØ —’Ñ(Ô(ð .ð .‰ˆˆeØÐ-˜$Ð-Ð- 5Ð-Ð-Ð-Ñ-ˆ	ˆ	Ø�Ñ€IØÐs   ¤A;B  Â B>Â=B>F)Ústable_outputr/  rK   c                ó  ‡‡‡‡— | rdS g d¢Šg d¢ŠddgŠdˆˆˆfd
„Šˆfd„t           j                             ¦   «         D ¦   «         }|                     d„ ‰D ¦   «         ¦  «         d                     |¦  «        }t          d|› d�¦  «        S )zl
    Generate a string configuration for environment variables related to Dynamo, Inductor, and Triton.
    z+# env var omitted due to stable_output=True)ÚTORCHÚDYNAMOÚINDUCTORÚTRITON)ÚTRITON_LIBDEVICE_PATHÚTRITON_PTXAS_PATHÚTRITON_LIBCUDA_PATHÚTORCHDYNAMO_REPRO_AFTERÚTORCHDYNAMO_REPRO_LEVELÚkeyr,   r-   rK   c                óL   •‡ — t          ˆ fd„‰D ¦   «         ¦  «        o‰ ‰vo‰ ‰vS )Nc              3  ó    •K  — | ]}|‰v V — Œ	d S rØ   r    )r"   Ústringr:  s     €r$   r  z;generate_env_vars_string.<locals>.filter.<locals>.<genexpr>Ý  s'   øè è € Ð7Ð7 &�˜#�Ð7Ð7Ð7Ð7Ð7Ð7r&   )Úany)r:  Ú
allow_listÚrepro_env_varsÚ	skip_lists   `€€€r$   Úfilterz(generate_env_vars_string.<locals>.filterÛ  sC   øø€ åÐ7Ð7Ð7Ð7¨JÐ7Ñ7Ô7Ñ7Ô7ð *Ø˜9Ð$ð*à˜>Ð)ð	
r&   c           	     óf   •— g | ]-\  }} ‰|¦  «        ¯d |› d|                      dd¦  «        › d�‘Œ.S )zos.environ['z'] = 'ú'rß   )r:   )r"   r:  ÚvaluerB  s      €r$   r%   z,generate_env_vars_string.<locals>.<listcomp>â  s\   ø€ ð ð ð áˆC�Øˆ6�#‰;Œ;ðØ@˜Ð@Ð@ E§M¢M°#°sÑ$;Ô$;Ð@Ð@Ð@ðð ð r&   c              3  ó"   K  — | ]
}d |› d�V — ŒdS )zos.environ.pop('z', None)Nr    )r"   r:  s     r$   r  z+generate_env_vars_string.<locals>.<genexpr>è  s.   è è € ÐSÐS¸SÐ8¨3Ð8Ð8Ð8ÐSÐSÐSÐSÐSÐSr&   r   z
import os
z
    )r:  r,   r-   rK   )r4   Úenvironræ   rÄ   rC   r   )r/  Úconfig_linesÚconfig_stringr?  rB  r@  rA  s      @@@@r$   Úgenerate_env_vars_stringrJ  Ð  sô   øøøø€ ð ð =Ø<Ð<à:Ð:Ð:€JØUÐUÐU€IØ/Ð1JÐK€Nð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð åœ*×*Ò*Ñ,Ô,ðñ ô €Lð ×ÒÐSÐSÀNÐSÑSÔSÑSÔSÐSØ—I’I˜lÑ+Ô+€MÝ#ð %àð%ð %ð %ñ 	ô 	ð 	r&   c           	     ó&  — dd l }dd l}| rdS |j        j        j                             ¦   «         }d|j        j                             ¦   «         › d|j        j                             ¦   «         › d|j	        j                             ¦   «         › d|› d�	S )Nr   z*# config omitted due to stable_output=Truez~import torch._dynamo.config
import torch._inductor.config
import torch._functorch.config
import torch.fx.experimental._config
r   )
Útorch._functorch.configÚtorch._inductor.configÚfxÚexperimentalÚ_configÚcodegen_configÚ_dynamor   Ú	_inductorÚ
_functorch)r/  r®   Úexperimental_configs      r$   Úgenerate_config_stringrV  ð  sÁ   € Ø"Ð"Ð"Ð"Ø!Ð!Ð!Ð!àð <Ø;Ð;àœ(Ô/Ô7×FÒFÑHÔHÐð	ð
 „Ô×$Ò$Ñ&Ô&ð	ð 	ð „Ô×&Ò&Ñ(Ô(ð	ð 	ð ÔÔ×'Ò'Ñ)Ô)ð	ð 	ð ð	ð 	ð 	ð 	r&   c                 óZ   — t           j                             t          ¦   «         d¦  «        S )Nzminifier_launcher.py)r4   r5   rC   rf   r    r&   r$   Úget_minifier_repro_pathrX    s   € ÝŒ7�<Š<�™œÐ(>Ñ?Ô?Ð?r&   Úcontentsr.   c                ó¤  — t          ¦   «         }t                               d|¦  «         t          r!t	          |¦  «                             ¦   «          	 t          |d¦  «        5 }|                     | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S # t          $ r2}t                               d¦  «         t          d|› �¦  «        |‚d }~ww xY w)NzWriting minified repro to:
%srO   r   zCould not write to )
rX  rT   rU   Úuse_buckr*   rR   rQ   ÚOSErrorÚ	exceptionÚNotImplementedError)rY  Úminified_repro_pathrW   Úes       r$   Úhelper_for_dump_minifyra    s#  € Ý1Ñ3Ô3ÐÝ‡K‚KÐ0Ð2EÑFÔFÐFåð 6ÝÐ,Ñ-Ô-×3Ò3Ñ5Ô5Ð5ðVÝÐ% sÑ+Ô+ð 	¨rØ�HŠH�XÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	øõ ð Vð Vð VÝ�Š�bÑÔÐÝ!Ð"MÐ8KÐ"MÐ"MÑNÔNÐTUÐUøøøøðVøøøs<   ÁB Á#BÁ9B ÂB
Â
B ÂB
ÂB Â
CÂ-C
Ã
Cc                  ó   — e Zd ZdS )ÚAccuracyErrorNrj   r    r&   r$   rc  rc    rk   r&   rc  Úexample_inputsúSequence[Any]ú	list[Any]c                óî   — t          | ¦  «        }t          t          | ¦  «        ¦  «        D ]H}t          ||         t          j        ¦  «        r&||                              | |         j        ¦  «         ŒI|S )zæ
    This clone inputs is different from utils clone_input. In case of minifier,
    all the tensors are leaf tensors while creating a new graph. So, we set the
    requires_grad field w/o checking the leafness of the tensor.
    )r   r&  r…   Ú
isinstancer®   r
   Úrequires_grad_Úrequires_grad)rd  Úcloned_inputsÚidxs      r$   Úclone_inputs_retaining_gradnessrm    st   € õ ! Ñ0Ô0€MÝ•S˜Ñ(Ô(Ñ)Ô)ð Qð QˆÝ�m CÔ(­%¬,Ñ7Ô7ð 	QØ˜#Ô×-Ò-¨n¸SÔ.AÔ.OÑPÔPÐPøØÐr&   r~   r   r©   Úonly_fwdÚdisable_cloner   c                ód  — ddl m}m}m} t	          j        | ¦  «        } |st          |¦  «        }t          | d¦  «        r|                      d¦  «         t          | dd¦  «        r | |¦  «        n | |Ž }|r|S  ||¦  «        r ||¦  «        }| 
                    ¦   «           || |d|¦  «        S )zã
    Runs a forward and possibly backward iteration for a given mod and args.

    When disable_clone is True, we will use args as-is without cloning.
    This is higher fidelity but we may destroy the args in the process.
    r   )Úcollect_resultsÚreduce_to_scalar_lossÚrequires_bwd_passÚ	zero_gradTÚ_boxed_callFN)Útestingrq  rr  rs  ÚcopyÚdeepcopyrm  r¥   rt  r¡   Úbackward)	r~   r©   rn  ro  rq  rr  rs  ÚoutÚlosss	            r$   Úrun_fwd_maybe_bwdr|  (  sè   € ð SÐRÐRÐRÐRÐRÐRÐRÐRÐRå	Œ�rÑ	Ô	€BØð 5Ý.¨tÑ4Ô4ˆåˆr�;ÑÔð Ø
�Š�TÑÔÐõ ˜b -°Ñ7Ô7Ð
Fˆ"ˆ"ˆT‰(Œ(ˆ(¸R¸RÀ¸Y€Càð Øˆ
ØÐ˜ÑÔð Ø$Ð$ SÑ)Ô)ˆØ�Š‰ŒˆØˆ?˜2˜s D¨$Ñ/Ô/Ð/r&   ©Úrequire_fp64Úignore_non_fpÚopt_gmr~  r  c               ó  — ddl m} t          | ||¦  «        }d}t          j        r€	 t          t          j        | ¦  «        t          |¦  «        ¦  «        \  }	}
t          |	|
|¦  «        }n;# t          $ r. |rt          d¦  «        ‚t                               d¦  «         Y nw xY w	 t          |||¦  «        }n+# t          $ r t                               d¦  «         Y dS w xY w ||||t          j        d|¬¦  «        }|S )	aa  
    Check two models have same accuracy.

    require_fp64: if True, raise an error if we unable to calculate the fp64 reference
    ignore_non_fp: if True, do not compare outputs which are not floating point.  This
        is mostly useful for the minifier (which wants to avoid quantizing floating point
        error into integer/boolean error)
    r   )ÚsameNzfCould not generate fp64 outputs, workaround with torch._dynamo.config.same_two_models_use_fp64 = FalsezCould not generate fp64 outputsz�While minifying the program in accuracy minification mode, ran into a runtime exception which is likely an unrelated issue. Skipping this graph.T)ÚtolÚ	equal_nanr  )Úutilsr‚  r|  r   Úsame_two_models_use_fp64Úcast_to_fp64rw  rx  rm  Ú	ExceptionÚRuntimeErrorrT   rU   r]  Úrepro_tolerance)r~   r€  rd  rn  r~  r  r‚  ÚrefÚfp64_refÚ
fp64_modelÚfp64_examplesÚresÚpassings                r$   Úsame_two_modelsr‘  H  s]  € ð" ÐÐÐÐÐå
˜B °Ñ
9Ô
9€Cà€HÝÔ&ð ;ð
	;Ý(4Ý”˜bÑ!Ô!Õ#BÀ>Ñ#RÔ#Rñ)ô )Ñ%ˆJ˜õ )¨°]ÀHÑMÔMˆHˆHøÝð 	;ð 	;ð 	;Øð Ý"Ø|ñô ð õ �KŠKÐ9Ñ:Ô:Ð:Ð:Ð:ð	;øøøð
Ý ¨¸ÑAÔAˆˆøÝð ð ð õ 	�Šð$ñ	
ô 	
ð 	
ð
 ˆtˆtðøøøð ˆdØØØÝÔ"ØØ#ðñ ô €Gð €Ns$   §AA+ Á+5B#Â"B#Â'B9 Â9$C!Ã C!Úmodelc                óº  — | j         j        D �]}|j        dk    r±|j        t          j        j        j        j        u r�t          |j
        ¦  «        dk    r$t          dt          |j
        ¦  «        › �¦  «        ‚t          |j
        d         ¦  «        r9|j
        d         t          j        k    r|j
        d         t          j        f|_
        |j        dk    rU|j                             d¦  «        }|�9t          |¦  «        r*t!          |j        ¦  «        }t          j        |d<   ||_        �Œ!| j                              ¦   «          |                      ¦   «          | S )NÚcall_functionr–   z"Expected node to have 2 args, got r   r   r¢   )ÚgraphÚnodesÚopr;   r®   ÚopsÚprimsÚconvert_element_typeÚdefaultr…   r©   r²   r   Úfloat64ÚkwargsÚgetÚdictÚlintÚ	recompile)r’  Únoder¢   Ú
new_kwargss       r$   Úcast_dtype_args_to_fp64r¤  ‚  s/  € Ø”Ô!ð )ñ )ˆàŒG�Ò&Ð&Ø”�uœyœÔCÔKÐKÐKå�4”9‰~Œ~ Ò"Ð"Ý$ØI½¸T¼Y¹¼ÐIÐIñô ð õ ˜dœi¨œlÑ+Ô+ð :°´	¸!´ÅÄÒ0MÐ0MØ!œY qœ\­5¬=Ð9�”	ØŒ7�oÒ%Ð%Ø”K—O’O GÑ,Ô,ˆEØÐ ¥^°EÑ%:Ô%:Ð Ý! $¤+Ñ.Ô.�
Ý&+¤m�
˜7Ñ#Ø(�”ùà	„K×ÒÑÔÐØ	‡O‚OÑÔÐØ€Lr&   r¢   útorch.dtypeÚinputsú&tuple[torch.fx.GraphModule, list[Any]]c                óž   ‡ — ddl m} |                     ‰ ¦  «        }‰ t          j        k    rt          |¦  «        } |ˆ fd„|¦  «        }||fS )Nr   )Útree_mapc                óŽ   •— t          | t          j        ¦  «        r)|                      ¦   «         r|                      ‰¦  «        n| S rØ   )rh  r®   r
   rë   Úto)r#   r¢   s    €r$   ú<lambda>zcast_to.<locals>.<lambda>¦  sA   ø€ Ý�a�œÑ&Ô&ðØ+,×+>Ò+>Ñ+@Ô+@ð�!—$’$�u‘+”+�+àð r&   )Útorch.utils._pytreer©  r«  r®   rœ  r¤  )r¢   r’  r¦  r©  s   `   r$   Úcast_tor®  š  sx   ø€ ð -Ð,Ð,Ð,Ð,Ð,à�HŠH�U‰OŒO€EØ•”ÒÐõ (¨Ñ.Ô.ˆàˆXð	ð 	ð 	ð 	ð 	ñ	ô €Fð �&ˆ=Ðr&   c                ó8   — t          t          j        | |¦  «        S rØ   )r®  r®   rœ  )r’  r¦  s     r$   r‡  r‡  ®  s   € õ •5”= %¨Ñ0Ô0Ð0r&   Úcompiler_fnúACallable[[torch.fx.GraphModule, list[Any]], torch.fx.GraphModule]c               óÜ   — 	  |t          j        | ¦  «        t          |¦  «        ¦  «        }t          | |||||¬¦  «         S # t          $ r t
                               d¦  «         Y dS w xY w)Nr}  z�While minifying the program in accuracy minification mode, ran into a runtime exception which is likely an unrelated issue. Skipping this graphF)rw  rx  rm  r‘  rˆ  rT   r]  )r~   rd  r°  rn  r~  r  Úcompiled_gms          r$   Úbackend_accuracy_failsr´  ´  s£   € ðØ!�kÝŒM˜"ÑÔÕ>¸~ÑNÔNñ
ô 
ˆõ #ØØØØØ%Ø'ð
ñ 
ô 
ð 
ð 	
øõ ð ð ð õ 	�Šð#ñ	
ô 	
ð 	
ð
 ˆuˆuðøøøs   ‚A A Á$A+Á*A+r¾   ú%torch._prims_common.StrideType | Nonerí   útorch._prims_common.ShapeTypeútorch._prims_common.StrideTypec               ó2   — | �| nt          j        |¦  «        S rØ   )r…  Úmake_contiguous_strides_for)r¾   rí   s     r$   Ú_stride_or_defaultrº  Ý  s   € ð
 Ð'ˆ6ˆ6­UÔ-NÈuÑ-UÔ-UÐUr&   ÚdúCallable[[T | None], T]c                ó   ‡ — ˆ fd„S )Nc                ó   •— | �| n‰S rØ   r    )r#   r»  s    €r$   r¬  z_mk_defaulter.<locals>.<lambda>æ  s   ø€ ˜!˜-�Q�Q¨Q€ r&   r    )r»  s   `r$   Ú_mk_defaulterr¿  å  s   ø€ Ø.Ð.Ð.Ð.Ð.r&   rÝ   c                  óV   — e Zd Zdd„Zdddœd d„Zd!d„Zd"d„Zd#d„Zd#d„Zd$d„Z	d%d„Z
dS )&ÚNopInputReaderr-   r.   c                ó   — d| _         d S )Nr   ©Útotal)r>   s    r$   r@   zNopInputReader.__init__ñ  s   € ØˆŒ
ˆ
ˆ
r&   N©rä   Ú
dtype_hintÚstorage_hashr“   Únbytesrž   rä   ú)torch._prims_common.DeviceLikeType | NonerÆ  útorch.dtype | Nonec               ó&   — | xj         dz  c_         d S ©Nr   rÃ  )r>   rÇ  rÈ  rä   rÆ  s        r$   ÚstoragezNopInputReader.storageô  s   € ð 	ˆ
Œ
�a‰ˆ
Œ
ˆ
ˆ
r&   r©   r   r�  útorch.Tensor | Nonec                ó   — d S rØ   r    ©r>   r©   r�  s      r$   ÚtensorzNopInputReader.tensorþ  ó   € Øˆr&   ú
int | Nonec                ó   — d S rØ   r    rÐ  s      r$   ÚsymintzNopInputReader.symint  rÒ  r&   r,  r,   c                ó   — d S rØ   r    ©r>   r,  s     r$   ÚconstzNopInputReader.const  rÒ  r&   c                ó   — d S rØ   r    r×  s     r$   ÚunsupportedzNopInputReader.unsupported  rÒ  r&   Údevice_typeÚdevice_indexc                ó   — d S rØ   r    )r>   rÛ  rÜ  s      r$   Ú	generatorzNopInputReader.generator
  rÒ  r&   Úscript_class_namec                ó&   — | xj         dz  c_         d S rÌ  rÃ  ©r>   rß  s     r$   ÚopaquezNopInputReader.opaque  s   € Øˆ
Œ
�a‰ˆ
Œ
ˆ
ˆ
r&   ©r-   r.   )
rÇ  r“   rÈ  rž   rä   rÉ  rÆ  rÊ  r-   r.   )r©   r   r�  r   r-   rÎ  )r©   r   r�  r   r-   rÓ  ©r,  r,   r-   r.   )rÛ  r,   rÜ  rž   r-   r.   ©rß  r,   r-   r.   ©rZ   r[   r\   r@   rÍ  rÑ  rÕ  rØ  rÚ  rÞ  râ  r    r&   r$   rÁ  rÁ  ð  sÇ   € € € € € ðð ð ð ð =AØ)-ðð ð ð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð ð r&   rÁ  c                  óv   — e Zd Z	 d1ddœd2d	„Zddd
œd3d„Z	 d1dddddœd4d#„Zdd$œd5d'„Zd6d*„Zd6d+„Zd7d.„Z	d8d0„Z
dS )9ÚInputReaderN)ÚpbarÚsave_dirr“   ré  útqdm | Noner-   r.   c               óŠ   — |€t                                d¦  «         |�t          |¦  «        nd | _        g | _        || _        d S )Nz0no save_dir specified, will generate random data)rT   rU   r   Ústorer©   ré  )r>   rê  ré  s      r$   r@   zInputReader.__init__  sI   € ð ÐÝ�KŠKÐJÑKÔKÐKØ5=Ð5IÕ'¨Ñ1Ô1Ð1ÈtˆŒ
Ø!ˆŒ	ØˆŒ	ˆ	ˆ	r&   rÅ  rÇ  rÈ  rž   rä   rÉ  rÆ  rÊ  r   c               óê  — | j         �| j                              d¦  «         t          |¦  «        }t          |¦  «        }| j        �[|�Y	 | j                             |¦  «        }||j        k    r!t                               d||j        ¦  «         |S # t          $ r Y nw xY wt          d|› d�¦  «         ||j        z  f}t          d |¬¦  «        }t          ||||¦  «                             ¦   «         S )Nr   zdevice mismatch: %s != %szcould not load z , generating random data instead©rí   )ré  ÚupdateÚ_device_or_defaultÚ_dtype_or_defaultrí  Úread_storagerä   rT   rU   r$  r   Úitemsizerº  r   Úuntyped_storage)r>   rÇ  rÈ  rä   rÆ  rÍ  rí   r¾   s           r$   rÍ  zInputReader.storage!  s  € ð Œ9Ð ØŒI×Ò˜QÑÔÐÝ# FÑ+Ô+ˆÝ& zÑ2Ô2ˆ
ØŒ:Ð! lÐ&>ð
Øœ*×1Ò1°,Ñ?Ô?�ð ˜Wœ^Ò+Ð+Ý—K’KÐ ;¸VÀWÄ^ÑTÔTÐTð �øõ %ð ð ð Ø�ðøøøõ 	ÐR LÐRÐRÐRÑSÔSÐSØ˜:Ô.Ñ.Ð0ˆÝ# D°Ð6Ñ6Ô6ˆÝ˜E 6¨:°vÑ>Ô>×NÒNÑPÔPÐPs   Á
B Â
BÂB)Ústorage_offsetr¢   rj  Úis_leafrÍ  rí   r¶  r¾   rµ  rö  rÓ  r¢   rj  úbool | Noner÷  Úmetadatar   útorch.Tensorc               ó²  — t          ||¬¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }t	          |¦  «        }t          j        g ||j        |¬¦  «        }	t          j        ¦   «         5  |	 	                    ||||¦  «         d d d ¦  «         n# 1 swxY w Y   |sŽt          j
        ¦   «         5  |	                     t
          j        ¬¦  «        }	d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         5  |	 	                    ||||¦  «         d d d ¦  «         n# 1 swxY w Y   t
          j        j                             |	¦  «        |k    r7t!          dt
          j        j                             |	¦  «        › d|› �¦  «        ‚t
          j                             |	|¦  «         | j                             |	¦  «         |	S )Nrï  )r¢   rä   rj  )Úmemory_formatz/Tensor leaf status mismatch: safe_is_leaf(t) = z, expected )rº  Ú_storage_offset_or_defaultrò  Ú_is_leaf_or_defaultÚ_requires_grad_or_defaultr®   rÑ  rä   Úno_gradÚset_Úenable_gradÚcloneÚpreserve_formatÚ_subclassesÚ
meta_utilsÚsafe_is_leafr²   Ú_utilsÚset_tensor_metadatar©   r¦   )
r>   rÍ  rí   r¾   rö  r¢   rj  r÷  rù  Úts
             r$   rÑ  zInputReader.tensor>  s�  € õ $ F°%Ð8Ñ8Ô8ˆÝ3°NÑCÔCˆÝ! %Ñ(Ô(ˆÝ% gÑ.Ô.ˆÝ1°-Ñ@Ô@ˆÝŒLØ�e G¤NÀ-ð
ñ 
ô 
ˆõ Œ]‰_Œ_ð 	;ð 	;Ø�FŠF�7˜N¨E°6Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;àð 	?åÔ"Ñ$Ô$ð Að AØ—G’G­%Ô*?�GÑ@Ô@�ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aå”‘”ð ?ð ?Ø—’�w °°vÑ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?åÔÔ'×4Ò4°QÑ7Ô7¸7ÒBÐBÝ ðVÝÔ$Ô/×<Ò<¸QÑ?Ô?ðVð VØLSðVð Vñô ð õ 	Œ×(Ò(¨¨HÑ5Ô5Ð5ØŒ	×Ò˜ÑÔÐØˆs6   Á>B#Â#B'Â*B'Ã!C0Ã0C4Ã7C4ÄD3Ä3D7Ä:D7)ÚexprÚvalr  c               óª   — | j                              |¦  «         |�6t          | d¦  «        si | _        || j        t	          | j         ¦  «        dz
  <   |S )NÚsymint_exprsr   )r©   r¦   r¥   r  r…   )r>   r  r  s      r$   rÕ  zInputReader.symintc  sW   € ØŒ	×Ò˜ÑÔÐØÐÝ˜4 Ñ0Ô0ð 7Ø46�Ô!Ø48ˆDÔ�c $¤)™nœn¨qÑ0Ñ1Øˆ
r&   r,  r,   c                ó:   — | j                              d ¦  «         d S rØ   ©r©   r¦   r×  s     r$   rØ  zInputReader.constk  ó   € ØŒ	×Ò˜ÑÔÐÐÐr&   c                ó:   — | j                              d ¦  «         d S rØ   r  r×  s     r$   rÚ  zInputReader.unsupportedn  r  r&   rÛ  rÜ  c                óŽ   — t          j        ||¦  «        }t          j        |¬¦  «        }| j                             |¦  «         |S )N)rä   )r®   rä   Ú	Generatorr©   r¦   )r>   rÛ  rÜ  rä   Úgens        r$   rÞ  zInputReader.generatorq  s@   € Ý”˜k¨<Ñ8Ô8ˆÝŒo VÐ,Ñ,Ô,ˆØŒ	×Ò˜ÑÔÐØˆ
r&   rß  c                ó:   — | j                              d ¦  «         d S rØ   r  rá  s     r$   râ  zInputReader.opaquew  r  r&   rØ   )rê  r“   ré  rë  r-   r.   )
rÇ  r“   rÈ  rž   rä   rÉ  rÆ  rÊ  r-   r   )rÍ  r   rí   r¶  r¾   rµ  rö  rÓ  r¢   rÊ  rj  rø  r÷  rø  rù  r   r-   rú  )r  r   r  r“   r-   r   rä  )rÛ  r,   rÜ  rž   r-   r   rå  ræ  r    r&   r$   rè  rè    s  € € € € € à%)ðØBFðð ð ð ð ð ð$ =AØ)-ðQð Qð Qð Qð Qð QðB 9=ð	#ð &*Ø$(Ø%)Ø#ð#ð #ð #ð #ð #ð #ðJ 6:ð ð ð ð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð ð r&   rè  c                  ód   — e Zd Zddœd$d	„Zd%d„Zdddœd&d„Zd'd„Zd(d„Zd)d„Zd*d„Z	d+d!„Z
d,d#„ZdS )-ÚInputWriterF©Ústable_hashrê  r“   r  rK   r-   r.   c               ó”   — g | _         t          j        ¦   «         | _        || _        |�t          ||¬¦  «        nd | _        i | _        d S )Nr  )Ú_linesÚ	itertoolsr-  Ústorage_counterrê  r   rí  Úseen_storages)r>   rê  r  s      r$   r@   zInputWriter.__init__ˆ  sW   € Ø!#ˆŒå(œÑ0Ô0ˆÔØ ˆŒð Ð#õ ˜x°[ÐAÑAÔAÐAàð 	Œ
ð
 9;ˆÔÐÐr&   rL   c                ó~   — dg}|                      d„ | j        D ¦   «         ¦  «         |                     d¦  «         |S )Nzdef load_args(reader):c              3  ó    K  — | ]	}d |› �V — Œ
dS )rÜ   Nr    )r"   Úls     r$   r  z$InputWriter.lines.<locals>.<genexpr>˜  s(   è è € Ð1Ð1 �˜��Ð1Ð1Ð1Ð1Ð1Ð1r&   zload_args._version = 0)rÄ   r  r¦   )r>   Úrs     r$   ÚlineszInputWriter.lines”  sK   € à$ð
ˆð 	
�ŠÐ1Ð1 T¤[Ð1Ñ1Ô1Ñ1Ô1Ð1ð 	
�ŠÐ)Ñ*Ô*Ð*Øˆr&   N)Údevice_hintrÆ  rõ  r   r%  rÉ  rÆ  rÊ  r,   c          
     óJ  — t          |¦  «        }| j                             |¦  «        }|�|S dt          | j        ¦  «        › �}d}t          d ¦  «        t          |¦  «        k    rd|›�}d}|j        }|j        dk    r|€t          d¦  «        ‚|}t          d ¦  «        |k    rd|›�}| 
                    ¦   «         }	d }
| j        �*|j        j        dk    r| j                             |¦  «        }
| j                             |› d|
›d|	›|› |› d	�¦  «         || j        |<   |S )
NÚbufr   z, dtype_hint=Úmetaz:device_hint must be provided when storage device is 'meta'z	, device=z = reader.storage(rš   r›   )r   r  rž  rá   r  rò  rä   r�   r²   rñ  rÈ  rí  Úwrite_storager  r¦   )r>   rõ  r%  rÆ  ÚwsÚvÚmaybe_dtype_hintrú   rä   rÈ  rÇ  s              r$   rÍ  zInputWriter.storage£  so  € õ ˜OÑ,Ô,ˆØÔ×"Ò" 2Ñ&Ô&ˆØˆ=ØˆHØ.•$�tÔ+Ñ,Ô,Ð.Ð.ˆØÐÝ˜TÑ"Ô"Õ&7¸
Ñ&CÔ&CÒCÐCØ=¨zÐ=Ð=Ðð ˆØ Ô'ˆØŒ;˜&Ò Ð ØÐ"Ý$ØPñô ð ð !ˆFÝ˜dÑ#Ô# vÒ-Ð-Ø1 vÐ1Ð1ˆLØ ×'Ò'Ñ)Ô)ˆØˆØŒ:Ð! oÔ&<Ô&AÀVÒ&KÐ&KØœ:×3Ò3°OÑDÔDˆLØŒ×ÒØÐaÐa LÐaÐa°fÐaÀÐaÐN^ÐaÐaÐañ	
ô 	
ð 	
ð "#ˆÔ˜2ÑØˆr&   r,  r
  rú  c                óò  — ddl m}m} |                      |                     ¦   «         |j        |j        ¬¦  «        }g } | |t          d |j        ¬¦  «        | 	                    ¦   «         ¦  «        ¦  «        sA| 
                    t          t          | 	                    ¦   «         ¦  «        ¦  «        ¦  «         t          d ¦  «        |j        k    r| 
                    d|j        ›�¦  «          |t          d ¦  «        |                     ¦   «         k    ¦  «        s*| 
                    d|                     ¦   «         ›�¦  «         t           j                             |¦  «        }|r1|                     d„ |                     ¦   «         D ¦   «         ¦  «         t+          d ¦  «        |j        k    r| 
                    d|j        ›�¦  «         t           j        j                             |¦  «        }t5          d ¦  «        |k    r| 
                    d	|›�¦  «         | j         
                    d
d                     |t          t          |j        ¦  «        ¦  «        g|¢¦  «        z   d|› �z   ¦  «         d S )Nr   )Ústatically_known_trueÚsym_eq)rÆ  r%  rï  r—   zstorage_offset=c              3  ó*   K  — | ]\  }}|› d |›�V — ŒdS )ú=Nr    )r"   Úkr+  s      r$   r  z%InputWriter.tensor.<locals>.<genexpr>Ü  s0   è è € ÐIÐI©¨¨A˜1˜˜˜q˜˜ÐIÐIÐIÐIÐIÐIr&   zrequires_grad=zis_leaf=zreader.tensor(rš   ú)  # )Ú%torch.fx.experimental.symbolic_shapesr.  r/  rÍ  rõ  r¢   rä   rº  rí   r¾   r¦   r,   Útuplerò  rý  rö  r®   r  Úget_tensor_metadatarÄ   ræ   rÿ  rj  r  r  r  rþ  r  rC   )	r>   r,  r
  r.  r/  rÍ  r©   Útensor_metadatar÷  s	            r$   rÑ  zInputWriter.tensorÈ  sl  € ØWÐWÐWÐWÐWÐWÐWÐWà—,’,Ø×ÒÑÔ¨A¬GÀÄð ñ 
ô 
ˆð ˆà$Ð$ØˆFÕ% d°!´'Ð:Ñ:Ô:¸A¿HºH¹J¼JÑGÔGñ
ô 
ð 	0ð �KŠK��E !§(¢(¡*¤*Ñ-Ô-Ñ.Ô.Ñ/Ô/Ð/Ý˜TÑ"Ô" a¤gÒ-Ð-Ø�KŠKÐ, ¤Ð,Ð,Ñ-Ô-Ð-Ø$Ð$Ý& tÑ,Ô,°×0@Ò0@Ñ0BÔ0BÒBñ
ô 
ð 	Bð �KŠKÐ@¨!×*:Ò*:Ñ*<Ô*<Ð@Ð@ÑAÔAÐAÝœ,×:Ò:¸1Ñ=Ô=ˆØð 	JØ�KŠKÐIÐI°×1FÒ1FÑ1HÔ1HÐIÑIÔIÑIÔIÐIÝ$ TÑ*Ô*¨a¬oÒ=Ð=Ø�KŠKÐ<¨¬Ð<Ð<Ñ=Ô=Ð=ÝÔ#Ô.×;Ò;¸AÑ>Ô>ˆÝ˜tÑ$Ô$¨Ò/Ð/Ø�KŠKÐ. 7Ð.Ð.Ñ/Ô/Ð/ØŒ×ÒØØ�iŠi˜¥#¥e¨A¬G¡n¤nÑ"5Ô"5Ð=¸Ð=Ñ>Ô>ñ?à�dˆnˆnññ	
ô 	
ð 	
ð 	
ð 	
r&   Úargr   c                ó<  — | j                              d|›dt          |¦  «        › �¦  «         t          |t          t
          f¦  «        rÒ| j                              d¦  «         t          |¦  «        D ]Œ\  }}|› d|› d�}t          |t          j        ¦  «        r|  	                    ||¦  «         Œ>t          |t          t          j        f¦  «        r|                      ||¦  «         Œv|                      ||¦  «         Œ�| j                              d¦  «         d S d S )Nzreader.unsupported(z#)  # unsupported type for dumping: z"""ú[ú])r  r¦   r�   rh  rì   r5  Ú	enumerater®   r
   rÑ  rž   ÚSymIntrÕ  rÚ  )r>   r,  r8  r  ÚaÚname_is         r$   rÚ  zInputWriter.unsupportedè  s(  € àŒ×ÒØX $ÐXÐXÍTÐRUÉYÌYÐXÐXñ	
ô 	
ð 	
õ
 �c�D¥%˜=Ñ)Ô)ð 
	&ØŒK×Ò˜uÑ%Ô%Ð%Ý! #™œð 0ð 0‘��1Ø ˜˜ 1˜˜˜�Ý˜a¥¤Ñ.Ô.ð 0Ø—K’K ¨Ñ*Ô*Ð*Ð*Ý ¥C­¬Ð#6Ñ7Ô7ð 0Ø—K’K ¨Ñ*Ô*Ð*Ð*à×$Ò$ V¨QÑ/Ô/Ð/Ð/ØŒK×Ò˜uÑ%Ô%Ð%Ð%Ð%ð
	&ð 
	&r&   c                óH   — | j                              d|›d|› d�¦  «         d S )Nzreader.const(r3  z!, filtered out during compilation©r  r¦   r×  s     r$   rØ  zInputWriter.constü  s<   € ØŒ×ÒØP˜DÐPÐP¨ÐPÐPÐPñ	
ô 	
ð 	
ð 	
ð 	
r&   r  c                ó  — t          |t          j        ¦  «        rJt          |j        j        ¦  «        }|j        j        }| j                             d|›d|›d|› �¦  «         d S | j                             d|›d|› �¦  «         d S )Nzreader.symint(z, expr=r3  )	rh  r®   r=  r,   r¢  r  Úhintr  r¦   )r>   r,  r  Úexpr_strrC  s        r$   rÕ  zInputWriter.symint  s”   € Ý�c�5œ<Ñ(Ô(ð 	DÝ˜3œ8œ=Ñ)Ô)ˆHØ”8”=ˆDØŒK×ÒÐV°ÐVÐV¸xÐVÐVÐPTÐVÐVÑWÔWÐWÐWÐWàŒK×ÒÐB°ÐBÐB¸DÐBÐBÑCÔCÐCÐCÐCr&   útorch._C.Generatorc                ón   — |j         }| j                             d|j        ›d|j        ›d|› �¦  «         d S )Nzreader.generator(rš   r3  )rä   r  r¦   r�   Úindex)r>   r,  r8  rä   s       r$   rÞ  zInputWriter.generator
  sL   € Ø”ˆØŒ×ÒØL ¤ÐLÐL°´ÐLÐLÀdÐLÐLñ	
ô 	
ð 	
ð 	
ð 	
r&   rß  c                óF   — | j                              d|›d|› �¦  «         d S )Nzreader.opaque(r3  rA  )r>   r,  rß  s      r$   râ  zInputWriter.opaque  s0   € ØŒ×ÒÐLÐ,=ÐLÐLÀdÐLÐLÑMÔMÐMÐMÐMr&   )rê  r“   r  rK   r-   r.   )r-   rL   )rõ  r   r%  rÉ  rÆ  rÊ  r-   r,   )r,  r,   r
  rú  r-   r.   )r,  r,   r8  r   r-   r.   rä  )r,  r,   r  r   r-   r.   )r,  r,   r8  rE  r-   r.   )r,  r,   rß  r,   r-   r.   )rZ   r[   r\   r@   r$  rÍ  rÑ  rÚ  rØ  rÕ  rÞ  râ  r    r&   r$   r  r  ‡  sõ   € € € € € ØDIð 
;ð 
;ð 
;ð 
;ð 
;ð 
;ðð ð ð ð& BFØ)-ð#ð #ð #ð #ð #ð #ðJ
ð 
ð 
ð 
ð@&ð &ð &ð &ð(
ð 
ð 
ð 
ðDð Dð Dð Dð
ð 
ð 
ð 
ðNð Nð Nð Nð Nð Nr&   r  r  Úfuncú&Callable[[list[Tensor]], list[Tensor]]rä   Ú
sym_shapesúdict[str, int] | NoneÚdefault_sym_shaperÓ  údict[str, Any]c           	     óî  ‡‡‡‡— ddl m} d„ |                     ¦   «         D ¦   «         }d                     |                     ¦   «         ¦  «        }t          j        | ¦  «        }d|› d�}d|› d�}	d	}
 G d
„ d¦  «        }i }|pi Šdˆˆfd„Šdˆˆfd„}| j        } |j        ¦   «         D ]«\  }}|dk    rŒt          j	        |	|¦  «        }|rP| 
                    ¦   «         \  }}t          |                     d¦  «        ¦  «        }||         } |||¦  «        ||<   t          j	        |
|¦  «        }|r! ‰|                     d¦  «        ¦  «        ||<   Œ¬dt          j        | ¦  «        j        v r… |¦   «         }||d<   t          j        ||¦  «        D ]`}| 
                    ¦   «         \  }}}}t          |                     d¦  «        ¦  «        }||         }t#          || |||¦  «        ¦  «         Œa|S )a  
    Takes in a function which has been printed with print_readable() and constructs kwargs to run it.

    Handles Tensor inputs, Symints, and a graph module which might have tensor constants.

    Consider a function `forward` defined as follows:

    def forward(self, primals_1: "f32[1001, 6]", primals_2: "f32[s0]", primals_3: "Sym(s0)",):
        _tensor_constant0: "i64[4190]" = self._tensor_constant0
        # Further implementation

    kwargs = aot_graph_input_parser(forward)
    forward(**kwargs)
    r   )Údtype_abbrsc                ó   — i | ]\  }}||“Œ	S r    r    )r"   r:  rE  s      r$   ú
<dictcomp>z*aot_graph_input_parser.<locals>.<dictcomp>+  s+   € ð )ð )ð )Ù!�s˜Eˆˆsð)ð )ð )r&   ú|z(_tensor_constant\d+): \"(z0)\[\s*(.*?)\s*\]\" = self\.(_tensor_constant\d+)r™   z)\[\s*(.*?)\s*\]zSym\((s\d+)\)c                  ó   — e Zd ZdZdS )ú/aot_graph_input_parser.<locals>.TensorContainerz#Container for tensors as attributesN)rZ   r[   r\   Ú__doc__r    r&   r$   ÚTensorContainerrU  8  s   € € € € € Ø-Ð-Ð-Ð-r&   rW  rÕ  r,   r-   rž   c                ón   •‡ — t          j        ‰ ‰v p‰d uˆ fd„¦  «         ‰                     ‰ ‰¦  «        S )Nc                 ó   •— ‰ › d�S )Nz; not in symbolic_shapes and default sym shape not passed inr    )rÕ  s   €r$   r¬  z=aot_graph_input_parser.<locals>.get_sym_int.<locals>.<lambda>C  s   ø€ �vÐZÐZÐZ€ r&   )r®   Ú_checkrž  )rÕ  rM  Úsym_shapes_dicts   `€€r$   Úget_sym_intz+aot_graph_input_parser.<locals>.get_sym_int@  sP   øø€ ÝŒØ�oÐ%ÐFÐ):À$Ð)FØZÐZÐZÐZñ	
ô 	
ð 	
ð ×"Ò" 6Ð+<Ñ=Ô=Ð=r&   rí   r¶  r¢   r¥  r
   c                óÂ  •— g }g }t          | ¦  «        D ]w\  }}|                     ¦   «         }d|v r6 ‰|¦  «        }|                     |¦  «         |                     |¦  «         ŒS|r"|                     t          |¦  «        ¦  «         Œx|j        rt
          j        nt
          j        } |||‰
¬¦  «        }|D ]"}	t
          j         	                    ||	¦  «         Œ#|S )Nr  )r¢   rä   )
r<  Ústripr¦   rž   rë   r®   ÚrandnÚzerosrR  Úmark_dynamic)rí   r¢   Úresolved_shapeÚdynamic_dimsr  Údimr  Úconstructorrz  r»  rä   r\  s             €€r$   Ú
gen_tensorz*aot_graph_input_parser.<locals>.gen_tensorG  sõ   ø€ àˆØˆÝ Ñ&Ô&ð 	4ð 	4‰FˆAˆsØ—)’)‘+”+ˆCØ�cˆzˆzØ�K Ñ$Ô$�Ø×%Ò% aÑ(Ô(Ð(Ø×#Ò# AÑ&Ô&Ð&Ð&àð 4Ø"×)Ò)­#¨c©(¬(Ñ3Ô3Ð3øà%*Ô%<ÐM•e”k�kÅ%Ä+ˆØˆk˜.°¸fÐEÑEÔEˆØð 	/ð 	/ˆAÝŒM×&Ò& s¨AÑ.Ô.Ð.Ð.Øˆ
r&   ú,r   r>   )rÕ  r,   r-   rž   )rí   r¶  r¢   r¥  r-   r
   )Útorch.utils._dtype_abbrsrP  ræ   rC   ÚvaluesÚinspectÚ	getsourceÚ__annotations__ÚreÚsearchrÁ   r5  r6   ÚgroupÚ	signaturerâ   ÚfinditerÚsetattr)rI  rä   rK  rM  rP  Ú	dtype_mapÚdtype_patternÚsourceÚtensor_assignment_regexÚtensor_regexÚsym_shape_regexrW  r�  rf  r   rù   Ú
annotationÚmatchÚ	data_typeÚ	shape_strrí   r¢   Ú	containerÚ	attr_namer‡   r\  r[  s    ` `                     @@r$   Úaot_graph_input_parserr    sš  øøøø€ ð* 5Ð4Ð4Ð4Ð4Ð4ð)ð )Ø%0×%6Ò%6Ñ%8Ô%8ð)ñ )ô )€Ið Ÿš +×"4Ò"4Ñ"6Ô"6Ñ7Ô7€Mõ Ô˜tÑ$Ô$€Fð |¸MÐ{Ð{Ð{ÐØ7˜Ð7Ð7Ð7€LØ&€Oð.ð .ð .ð .ð .ñ .ô .ð .ð  €Fà&0Ð&6°B€Oð>ð >ð >ð >ð >ð >ð >ðð ð ð ð ð ð ð* Ô&€KØ.˜[Ô.Ñ0Ô0ð 8ð 8Ñˆˆzà�HÒÐØå”	˜,¨
Ñ3Ô3ˆØð 	5Ø#(§<¢<¡>¤>Ñ ˆI�yÝ˜)Ÿ/š/¨#Ñ.Ô.Ñ/Ô/ˆEØ˜iÔ(ˆEà&˜J u¨eÑ4Ô4ˆF�5‰Må”	˜/¨:Ñ6Ô6ˆØð 	8Ø'˜K¨¯ª°A©¬Ñ7Ô7ˆF�5‰Møà•Ô" 4Ñ(Ô(Ô3Ð3Ð3Ø#�OÑ%Ô%ˆ	Ø"ˆˆv‰Ý”[Ð!8¸&ÑAÔAð 	Dð 	DˆEØ16·²±´Ñ.ˆI�y )¨QÝ˜)Ÿ/š/¨#Ñ.Ô.Ñ/Ô/ˆEØ˜iÔ(ˆEå�I˜y¨*¨*°U¸EÑ*BÔ*BÑCÔCÐCÐCà€Mr&   r+   úCallable[[T], T]c                óê   ‡ ‡— t          j        ¦   «         Št          j                             t          j                             ‰ ¦  «        ¦  «        Š dˆfd„}dˆ ˆfd„}t          j        |¦  «         |S )	z–
    Decorator to cProfile a given function and save the result to disk on process exit.

    Args:
        filename: filename to save profile to
    Úfnr   r-   c                óL   •‡ — t          j        ‰ ¦  «        dˆ ˆfd„¦   «         }|S )Nr©   r   r�  r-   c                 ó˜   •— ‰                      ¦   «          	  ‰| i |¤Ž‰                     ¦   «          S # ‰                     ¦   «          w xY wrØ   )ÚenableÚdisable)r©   r�  r‚  Úprofs     €€r$   Úwrapperz3profile_to_file.<locals>.decorator.<locals>.wrapper†  sH   ø€ à�KŠK‰MŒMˆMðØ�r˜4Ð* 6Ð*Ð*à—’‘”��ø�—’‘”��øøøs	   —3 ³A	)r©   r   r�  r   r-   r   )Ú	functoolsÚwraps)r‚  rˆ  r‡  s   ` €r$   Ú	decoratorz"profile_to_file.<locals>.decorator…  sC   øø€ Ý	Œ˜Ñ	Ô	ð	ð 	ð 	ð 	ð 	ð 	ñ 
Ô	ð	ð ˆr&   r.   c            	     ó¢   •— ‰                      ‰ ¦  «         t          j                             t	          j        d‰ › d‰ › d�¦  «        ¦  «         d S )Nz!                Wrote profile to z+, view with:

                    snakeviz z

                )Ú
dump_statsÚsysÚstderrrR   rE   rF   )r+   r‡  s   €€r$   Úsave_itz profile_to_file.<locals>.save_it�  sn   ø€ Ø�Š˜Ñ!Ô!Ð!ÝŒ
×ÒÝŒOðØ"*ðð ð 'ðð ð ñô ñ		
ô 		
ð 		
ð 		
ð 		
r&   )r‚  r   r-   r   rã  )ÚcProfileÚProfiler4   r5   r7   Ú
expanduserÚatexitÚregister)r+   r‹  r�  r‡  s   `  @r$   Úprofile_to_filer–  {  s�   øø€ õ ÔÑÔ€DÝŒw�Š�rœw×1Ò1°(Ñ;Ô;Ñ<Ô<€Hð	ð 	ð 	ð 	ð 	ð 	ð
ð 
ð 
ð 
ð 
ð 
ð 
õ „O�GÑÔÐØÐr&   rY   )r/  rK   r-   r,   )rY  r,   r-   r.   )rd  re  r-   rf  )FF)
r~   r   r©   re  rn  rK   ro  rK   r-   r   )F)r~   r   r€  r   rd  re  rn  rK   r~  rK   r  rK   r-   rK   )r’  r   r-   r   )r¢   r¥  r’  r   r¦  rf  r-   r§  )r’  r   r¦  rf  r-   r§  )r~   r   rd  re  r°  r±  rn  rK   r~  rK   r  rK   r-   rK   )r¾   rµ  rí   r¶  r-   r·  )r»  r   r-   r¼  )r  NN)
rI  rJ  rä   r,   rK  rL  rM  rÓ  r-   rN  )r+   r,   r-   r€  )lrV  Ú
__future__r   r”  rw  r‘  r‰  rb   rj  r  Úloggingr4   rm  r!  rŽ  r`   rE   Úcollectionsr   Ú	importlibr   Útypingr   r   r   r	   r®   Útorch._prims_commonÚ_prims_commonr…  Útorch._subclasses.meta_utilsr
   Útorch._dynamo.testingr   Útorch._inductor.cpp_builderr   r   Ú torch.multiprocessing.reductionsr   Útorch.utils._content_storer   r   r   r   r   r   r   Úcollections.abcr   r   Ú	torch.hubr   Útorch.storager   Ú	getLoggerrZ   rT   r   Úinductor_configÚ	is_fbcoder[  Úlibfb.py.build_infoÚlibfbrD   Úextra_importsrG   ÚpyÚ
build_infoÚ	BuildInfoÚget_build_ruler:   rC   rS   r*   rf   rè   r²   ri   rm   Úcacher.  rJ  rV  rX  ra  rˆ  rc  rm  r|  r‘  r¤  r®  r‡  r´  rº  r¿  Úfloat32rò  rä   rñ  rý  rÿ  rþ  rÁ  rè  r  r  r–  r    r&   r$   ú<module>r²     s{  ððð ð$ #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ø @Ð @Ð @Ð @Ð @Ð @Ø .Ð .Ð .Ð .Ð .Ð .Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mà Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð ð -Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2àÐÐÐÐÐØ,Ð,Ð,Ð,Ð,Ð,ð €gÔ˜Ñ!Ô!€à€GˆC�L„L€ð  �-Ð 8Ñ9Ô9€Ø×$Ò$Ñ&Ô&€àð ØÐÐÐð €
Ø€Ø€
Øð Vðð ð €Jð ”Ô$Ô.×=Ò=Ñ?Ô?×GÒGÈ	ÐSWÑXÔX€JØ—I’IÐTÐTÈÐTÑTÔTÑUÔU€Mð 6Ð5Ð5€ð4ð 4ð 4ð 4ð 4ñ 4ô 4ð 4ðnð ð ð ð Ð ð	ð 	ð 	ð 	ð 	˜~ñ 	ô 	ð 	ðPð Pð Pð Pð Pñ Pô Pð Pðf „ðð ð ñ „ðð6 7<ð 	ð 	ð 	ð 	ð 	ð 	ð@ 5:ð ð ð ð ð ð ð(@ð @ð @ð @ðVð Vð Vð Vð	ð 	ð 	ð 	ð 	�Iñ 	ô 	ð 	ð
ð 
ð 
ð 
ð  Øð	0ð 0ð 0ð 0ð 0ðH ð	7ð Øð7ð 7ð 7ð 7ð 7ð 7ðtð ð ð ð0ð ð ð ð(1ð 1ð 1ð 1ð ð	ð Øðð ð ð ð ð ðRVð Vð Vð Vð/ð /ð /ð /ð "�M %¤-Ñ0Ô0Ð Ø"�] < 5¤<°Ñ#6Ô#6Ñ7Ô7Ð Ø*˜]¨1Ñ-Ô-Ð Ø)˜M¨%Ñ0Ô0Ð Ø#�m EÑ*Ô*Ð ðð ð ð ð ñ ô ð ðFeð eð eð eð eñ eô eð eðhJNð JNð JNð JNð JNñ JNô JNð JNð^ Ø(,Ø$(ð	dð dð dð dð dðN#ð #ð #ð #ð #ð #r&   