§
    ž²Åjœs  ã                   ó.  — 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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%m&Z& d
dl'm(Z( d
dlm)Z)m*Z*  ej+        e,¦  «        Z- ed¦  «        Z. ed¦  «        Z/e/ 0                    ¦   «         Z1e1rd dl2Z3g Z4dZ5e1rZg d¢Z4e3j6        j7        j8         9                    ¦   «          :                    dd¦  «        Z;d <                    d„ e4D ¦   «         ¦  «        Z5g d¢Z= G d„ d¦  «        Z>d„ Z?dZ@ G d„ d¦  «        ZA ejB        d¦  «        d„ ¦   «         ZCddœd„ZDd „ ZEd!„ ZF G d"„ d#eG¦  «        ZHd$„ ZIdCd%„ZJ	 dDddd&œd'„ZKd(„ ZLd)„ ZMd*„ ZN	 dDddd&œd+„ZOd,ed-         d.d/d0d-fd1„ZPd2e.d0eee.         ge.f         fd3„ZQ eQejR        ¦  «        ZS eQ ejT        d4¦  «        ¦  «        ZU eQd ¦  «        ZV eQd¦  «        ZW eQd¦  «        ZX G d5„ d6¦  «        ZY G d7„ d8¦  «        ZZ G d9„ d:¦  «        Z[	 	 	 dEd<eee         gee         f         d=e\d>eee\e]f                  d?ee]         d0ee\ef         f
d@„Z^dAe\d0ee.ge.f         fdB„Z_dS )Fé    N)ÚCounter)Úimport_module)ÚAnyÚCallableÚDictÚListÚOptionalÚTypeVar)ÚTensor)Úrand_strided)Úis_float_dtype)ÚStorageWeakRef)ÚContentStoreReaderÚContentStoreWriteré   )Úconfig)Úclone_inputsÚget_debug_dirÚ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("z")© ©Ú.0Úxs     úJC:\Projects\Historical\venv\Lib\site-packages\torch/_dynamo/debug_utils.pyú
<listcomp>r   8   s$   € ÐTÐTÐTÀAÐ?¸!Ð?Ð?Ð?ÐTÐTÐTó    )Úbuck2Úrunz@mode/dev-nosanc                   ó"   — e Zd Zd„ Zd„ Zdd„ZdS )ÚBuckTargetWriterc                 ó(  — 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)ÚselfÚfilenameÚ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>N   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/functorch:functorch",
        "//triton:triton",
        "z",
    ],
    cpp_deps = [
z
    ],
    main_module = "z",
    par_style = "xar",
)
)ÚjoinÚ
extra_depsÚtextwrapÚdedentr1   r/   Ú
cur_targetr+   )r4   Úextra_cpp_depss     r   ÚbuildzBuckTargetWriter.buildM   s‘   € ØŸšÐ#JÐ#J½zÐ#JÑ#JÔ#JÑKÔKˆÝŒðð Œ;ð	ð ð
 Œlðð õ ðð ð ðð ð  ”Ið!ð ð ñ
ô 
ð 	
r    Tc                 ó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ú )r*   r+   r:   r.   ÚopenÚwriter@   ÚBUCK_CMD_PREFIXr3   ÚlogÚwarning)r4   Ú	print_msgÚtarget_fileÚfdÚ	cmd_splits        r   rF   zBuckTargetWriter.writef   sß   € Ý”g—l’l 4¤;°	Ñ:Ô:ˆÝ�+˜sÑ#Ô#ð 	# rØ�HŠH�T—Z’Z‘\”\Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ $ tÔ'9Ð&:Ñ:ˆ	Øð 	Ý�KŠKØXØ—’˜Ñ#Ô#ñô ð ð Ðs   ¶(A*Á*A.Á1A.N)T)Ú__name__Ú
__module__Ú__qualname__r7   r@   rF   r   r    r   r$   r$   >   sF   € € € € € ð6ð 6ð 6ð
ð 
ð 
ð2ð ð ð ð ð 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)
r*   r+   r:   r   ÚtempfileÚ
gettempdirÚgetpassÚgetuserÚexistsÚmakedirs)r+   s    r   Úminifier_dirrZ   t   st   € ÝŒ7�<Š<�™œ¨Ñ4Ô4€DØ€|ÝÔ%Ñ'Ô'ÐFÐFµ7´?Ñ3DÔ3DÐFÐFˆÝŒ7�>Š>˜$ÑÔð )Ý
Œ�D 4Ð(Ñ(Ô(Ð(Ø€Kr    é   c                   ó  — e 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„ ¦   «         Zed„ ¦   «         ZdS )ÚNNModuleToStringc                 ó  — t          ¦   «         }|                      ¦   «         D ]5\  }}t          |¦  «        t          j        vr|                     |¦  «         Œ6t          |¦  «        dk    rt                               d|¦  «         dS )Nr   z-We have not tested reprs of some modules - %sT)	ÚsetÚnamed_childrenÚtyper]   Ú
safe_reprsÚaddÚlenrH   rI   )ÚgmÚcant_convertÚ_Úmodules       r   Úcan_convert_to_stringz&NNModuleToString.can_convert_to_string™   s�   € å‘u”uˆØ×*Ò*Ñ,Ô,ð 	)ð 	)‰IˆAˆvÝ�F‰|Œ|Õ#3Ô#>Ð>Ð>Ø× Ò  Ñ(Ô(Ð(øåˆ|ÑÔ˜qÒ Ð Ý�KŠKÐGÈÑVÔVÐVàˆtr    c                 ó¾  — ddl m} d}t          j        d¦  «        }|                      ¦   «         D ][\  }}|                     ¦   «         › }t          |                     ¦   «         d ¦  «        }|�|j        r|› d�}||dz  › d|› d|› d	�z  }Œ\| j	         
                    ¦   «         D ]¿\  }}	|	€Œ|	                     ¦   «         t          k    r(dd
lm}
 |
j        t          k    sJ ‚t!          |	¦  «        }nUt#          j        |	¦  «        r!dt'          |	j        ¦  «        › d|	j        › d�}n dt'          |	j        ¦  «        › d|	j        › d�}|	j        r|› d�}||dz  › d|› d|› d�z  }ŒÀ| j         
                    ¦   «         D ]F\  }}|€Œd}|j        rd}dt'          |j        ¦  «        › d|j        › |› d�}||dz  › d|› d|› d	�z  }ŒG| || j        d¦  «        › d	�z  }|S )Nr   )Ú
_addindentú    z­
            from torch.nn import *
            class Repro(torch.nn.Module):
                def __init__(self) -> None:
                    super().__init__()
            z.cuda()é   zself.z = r   )Ú
PRINT_OPTSztorch.randn(z, dtype=ú)ztorch.randint(1, size=zself.register_buffer('z', z)
r   z, device="cuda"ztorch.nn.Parameter(torch.randn(z))r[   )Útorch.nn.modules.modulerk   r<   r=   r`   Ú__repr__ÚnextÚ
parametersÚis_cudaÚ_buffersÚitemsÚnumelÚMAX_CONSTANT_NUMEL_INLINEÚtorch._tensor_strrn   Ú	thresholdÚreprÚtorchÚis_floating_pointÚlistÚshapeÚdtypeÚ_parametersÚcode)re   rk   ÚtabÚ	model_strÚmodule_namerh   Ú
module_strÚexample_paramÚbuffer_nameÚbufferrn   Ú
tensor_strÚ
param_nameÚparamÚmaybe_devices                  r   ÚconvertzNNModuleToString.convert¥   sŸ  € à6Ð6Ð6Ð6Ð6Ð6àˆå”Oðñ
ô 
ˆ	ð $&×#4Ò#4Ñ#6Ô#6ð 	Gð 	GÑˆK˜Ø"ŸOšOÑ-Ô-Ð/ˆJõ ! ×!2Ò!2Ñ!4Ô!4°dÑ;Ô;ˆMØÐ(¨]Ô-BÐ(Ø *Ð3Ð3Ð3�
Ø˜C ™EÐFÐF¨ÐFÐF¸
ÐFÐFÐFÑFˆIˆIà#%¤;×#4Ò#4Ñ#6Ô#6ð 	Yð 	YÑˆK˜Øˆ~Øà�|Š|‰~Œ~Õ!:Ò:Ð:Ø8Ð8Ð8Ð8Ð8Ð8à!Ô+Õ/HÒHÐHÐHÐHÝ! &™\œ\�
�
ÝÔ(¨Ñ0Ô0ð ØW­D°´Ñ,>Ô,>ÐWÐWÈÌÐWÐWÐW�
�
ð Y­T°&´,Ñ-?Ô-?ÐXÐXÈÌÐXÐXÐXð ð Œ~ð 4Ø *Ð3Ð3Ð3�
Ø˜C ™EÐXÐX¸ÐXÐXÈÐXÐXÐXÑXˆIˆIà!#¤×!5Ò!5Ñ!7Ô!7ð 	Fð 	FÑˆJ˜Øˆ}ØØˆLØŒ}ð 1Ø0�Øs½4ÀÄÑ;LÔ;LÐsÐsÐV[ÔVaÐsÐcoÐsÐsÐsˆJØ˜C ™EÐEÐE¨
ÐEÐE°zÐEÐEÐEÑEˆIˆIð 	˜
˜
 2¤7¨AÑ.Ô.Ð2Ð2Ð2Ñ2ˆ	ØÐr    N)rN   rO   rP   r|   ÚnnÚLinearÚConv1dÚConv2dÚConv3dÚBatchNorm1dÚBatchNorm2dÚBatchNorm3dÚ	LayerNormÚDropoutÚSoftmaxÚReLUÚGELUÚIdentityÚ	MaxPool2dÚ	EmbeddingÚTanhÚConvTranspose1dÚGLUÚLSTMÚFlattenÚAdaptiveAvgPool2drb   Ústaticmethodri   rŽ   r   r    r   r]   r]   €   sð   € € € € € àŒŒØŒŒØŒŒØŒŒØŒÔØŒÔØŒÔØŒÔØŒÔØŒÔØŒŒØŒŒØŒÔØŒÔØŒÔØŒŒØŒÔ ØŒŒØŒŒØŒÔØŒÔ"ð+€Jð0 ð	ð 	ñ „\ð	ð ð;ð ;ñ „\ð;ð ;ð ;r    r]   c                  ó<  — t           j                             ¦   «         sdS d} 	 t          j        ddg¦  «        }|                     ¦   «                              d¦  «        }d                     d„ |D ¦   «         ¦  «        }| |› 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 v¯d|› d�‘ŒS ))r   ú# ú 
r   )r   Úss     r   r   z-_cuda_system_info_comment.<locals>.<listcomp>í   s%   € ÐTÐTÐT¨1ÀaÈtÀmÀm˜; ˜;˜;˜;ÀmÀmÀmr    z# nvcc not found
c              3   óT   K  — | ]#}t           j                             |¦  «        V — Œ$d S ©N)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Ú
subprocessÚcheck_outputÚdecoder,   r:   ÚFileNotFoundErrorÚCalledProcessErrorr   ÚrangeÚdevice_countrv   )r„   Úcuda_version_outÚcuda_version_linesÚcommentÚ	gpu_namesÚnameÚcounts          r   Ú_cuda_system_info_commentrÀ   ä   sa  € åŒ:×"Ò"Ñ$Ô$ð MØLÐLà!€Ið*Ý%Ô2°F¸KÐ3HÑIÔIÐØ-×4Ò4Ñ6Ô6×<Ò<¸TÑBÔBÐØ—'’'ÐTÐTÐ0BÐTÑTÔTÑUÔUˆØ˜�^�^�^Ñ#ˆ	ˆ	øÝ�zÔ<Ð=ð *ð *ð *ØÐ)Ñ)ˆ	ˆ	ˆ	ð*øøøõ ð ð Ý/4µU´Z×5LÒ5LÑ5NÔ5NÑ/OÔ/Oðñ ô ñ ô €Ið Ð*Ñ*€IØ —’Ñ(Ô(ð .ð .‰ˆˆeØÐ-˜$Ð-Ð- 5Ð-Ð-Ð-Ñ-ˆ	ˆ	Ø�Ñ€IØÐs   ¤A$B	 Â	B'Â&B'F)Ústable_outputc           	      ó&  — 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_stringrÍ   ý   sÁ   € Ø"Ð"Ð"Ð"Ø!Ð!Ð!Ð!àð <Ø;Ð;àœ(Ô/Ô7×FÒFÑHÔHÐð	ð
 „Ô×$Ò$Ñ&Ô&ð	ð 	ð „Ô×&Ò&Ñ(Ô(ð	ð 	ð ÔÔ×'Ò'Ñ)Ô)ð	ð 	ð ð	ð 	ð 	ð 	r    c                  óZ   — t           j                             t          ¦   «         d¦  «        S )Nzminifier_launcher.py)r*   r+   r:   rZ   r   r    r   Úget_minifier_repro_pathrÏ     s   € ÝŒ7�<Š<�™œÐ(>Ñ?Ô?Ð?r    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          $ r/}t                               d¦  «         t          d¦  «        |‚d }~ww xY w)NzWriting minified repro to:
%srC   r   z(Could not write to {minified_repro_path})
rÏ   rH   rI   Úuse_buckr$   rF   rE   ÚOSErrorÚ	exceptionÚNotImplementedError)ÚcontentsÚminified_repro_pathrL   Úes       r   Úhelper_for_dump_minifyrØ     s  € Ý1Ñ3Ô3ÐÝ‡K‚KÐ0Ð2EÑFÔFÐFåð 6ÝÐ,Ñ-Ô-×3Ò3Ñ5Ô5Ð5ðUÝÐ% sÑ+Ô+ð 	¨rØ�HŠH�XÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	øõ ð Uð Uð UÝ�Š�bÑÔÐÝ!Ð"LÑMÔMÐSTÐTøøøøðUøøøs<   ÁB Á#BÁ9B ÂB
Â
B ÂB
ÂB Â
CÂ*CÃCc                   ó   — e Zd ZdS )ÚAccuracyErrorN)rN   rO   rP   r   r    r   rÚ   rÚ   $  s   € € € € € Ø€Dr    rÚ   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¸   rd   Ú
isinstancer|   r   Úrequires_grad_Úrequires_grad)Úexample_inputsÚcloned_inputsÚidxs      r   Úclone_inputs_retaining_gradnessrâ   (  st   € õ ! Ñ0Ô0€MÝ•S˜Ñ(Ô(Ñ)Ô)ð Qð QˆÝ�m CÔ(­%¬,Ñ7Ô7ð 	QØ˜#Ô×-Ò-¨n¸SÔ.AÔ.OÑPÔPÐPøØÐr    c                 ób  — ddl m}m}m} t	          j        | ¦  «        } |st          |¦  «        }t          | d¦  «        r|                      d¦  «         t          | 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_callN)
Útestingrä   rå   ræ   ÚcopyÚdeepcopyrâ   Úhasattrrç   Úbackward)	re   ÚargsÚonly_fwdÚdisable_clonerä   rå   ræ   ÚoutÚlosss	            r   Úrun_fwd_maybe_bwdró   5  sæ   € ð SÐRÐRÐRÐRÐRÐRÐRÐRÐRå	Œ�rÑ	Ô	€BØð 5Ý.¨tÑ4Ô4ˆåˆr�;ÑÔð Ø
�Š�TÑÔÐõ ˜b -Ñ0Ô0Ð
?ˆ"ˆ"ˆT‰(Œ(ˆ(°b°b¸$°i€Càð Øˆ
ØÐ˜ÑÔð Ø$Ð$ SÑ)Ô)ˆØ�Š‰ŒˆØˆ?˜2˜s D¨$Ñ/Ô/Ð/r    ©Úrequire_fp64Úignore_non_fpc                ó  — 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          |||¦  «        }n2# t          $ r%}t                               d¦  «         Y d}~dS d}~w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_fp64rê   rë   râ   Ú	ExceptionÚRuntimeErrorrH   rI   rÓ   Úrepro_tolerance)re   Úopt_gmrß   rï   rõ   rö   rø   ÚrefÚfp64_refÚ
fp64_modelÚfp64_examplesÚresr×   Úpassings                 r   Úsame_two_modelsr  P  sg  € ð" ÐÐÐÐÐå
˜B °Ñ
9Ô
9€Cà€HÝÔ&ð ;ð
	;Ý(4Ý”˜bÑ!Ô!Õ#BÀ>Ñ#RÔ#Rñ)ô )Ñ%ˆJ˜õ )¨°]ÀHÑMÔMˆHˆHøÝð 	;ð 	;ð 	;Øð Ý"Ø|ñô ð õ �KŠKÐ9Ñ:Ô:Ð:Ð:Ð:ð	;øøøð
Ý ¨¸ÑAÔAˆˆøÝð ð ð õ 	�Šð$ñ	
ô 	
ð 	
ð
 ˆtˆtˆtˆtˆtøøøøðøøøð ˆdØØØÝÔ"ØØ#ðñ ô €Gð €Ns*   §AA+ Á+5B#Â"B#Â'B9 Â9
C(ÃC#Ã#C(c                 óv  — | j         j        D ]þ}|j        dk    r‘|j        t          j        j        j        j        k    rmt          |j
        ¦  «        dk    s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_functionrm   r   r   r€   )ÚgraphÚnodesÚopr1   r|   ÚopsÚprimsÚconvert_element_typeÚdefaultrd   rî   r   Úfloat64ÚkwargsÚgetÚdictÚlintÚ	recompile)ÚmodelÚnoder€   Ú
new_kwargss       r   Úcast_dtype_args_to_fp64r  Š  s  € Ø”Ô!ð )ð )ˆàŒG�Ò&Ð&Ø”�uœyœÔCÔKÒKÐKå�t”y‘>”> QÒ&Ð&Ð&Ð&Ý˜dœi¨œlÑ+Ô+ð :°´	¸!´ÅÄÒ0MÐ0MØ!œY qœ\­5¬=Ð9�”	ØŒ7�oÒ%Ð%Ø”K—O’O GÑ,Ô,ˆEØÐ ¥^°EÑ%:Ô%:Ð Ý! $¤+Ñ.Ô.�
Ý&+¤m�
˜7Ñ#Ø(�”øà	„K×ÒÑÔÐØ	‡O‚OÑÔÐØ€Lr    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­   )rÜ   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  Úinputsr  s   `   r   Úcast_tor#  Ÿ  sv   ø€ Ø,Ð,Ð,Ð,Ð,Ð,à�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    c                óê   — 	  |t          j        | ¦  «        t          |¦  «        ¦  «        }t          | |||||¬¦  «         S # t          $ r%}t
                               d¦  «         Y d }~dS d }~w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)rê   rë   râ   r  rþ   rH   rÓ   )re   rß   Úcompiler_fnrï   rõ   rö   Úcompiled_gmr×   s           r   Úbackend_accuracy_failsr(  µ  s­   € ðØ!�kÝŒM˜"ÑÔÕ>¸~ÑNÔNñ
ô 
ˆõ #ØØØØØ%Ø'ð
ñ 
ô 
ð 
ð 	
øõ ð ð ð õ 	�Šð#ñ	
ô 	
ð 	
ð
 ˆuˆuˆuˆuˆuøøøøðøøøs   ‚A A Á
A2ÁA-Á-A2Ústrideztorch._prims_common.StrideTyper   ztorch._prims_common.ShapeTypeÚreturnc                ó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    Údc                 ó   ‡ — ˆ 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_defaulterr1  æ  s   ø€ Ø.Ð.Ð.Ð.Ð.r    Úcpuc                   ó0   — e Zd Zdd„Zdddœd„Zd„ Zd„ ZdS )	ÚNopInputReaderr*  Nc                 ó   — d| _         d S )Nr   ©Útotal)r4   s    r   r7   zNopInputReader.__init__ò  s   € ØˆŒ
ˆ
ˆ
r    ©ÚdeviceÚ
dtype_hintc                ó&   — | xj         dz  c_         d S )Nr   r6  )r4   Ústorage_hashÚnbytesr9  r:  s        r   ÚstoragezNopInputReader.storageõ  s   € Øˆ
Œ
�a‰ˆ
Œ
ˆ
ˆ
r    c                 ó   — d S r­   r   ©r4   rî   r  s      r   ÚtensorzNopInputReader.tensorø  ó   € Øˆr    c                 ó   — d S r­   r   r@  s      r   ÚsymintzNopInputReader.symintû  rB  r    ©r*  N©rN   rO   rP   r7   r>  rA  rD  r   r    r   r4  r4  ñ  sf   € € € € € ðð ð ð ð 7;Àtð ð ð ð ð ðð ð ðð ð ð ð r    r4  c                   óF   — e Zd Zd	ddœd„Zdddœd„Z	 d	dddddœd„Zd„ ZdS )
ÚInputReaderN)Úpbarc                óŠ   — |€t                                d¦  «         |�t          |¦  «        nd | _        g | _        || _        d S )Nz0no save_dir specified, will generate random data)rH   rI   r   Ústorerî   rI  )r4   Úsave_dirrI  s      r   r7   zInputReader.__init__  sI   € ð
 ÐÝ�KŠKÐJÑKÔKÐKØ5=Ð5IÕ'¨Ñ1Ô1Ð1ÈtˆŒ
ØˆŒ	ØˆŒ	ˆ	ˆ	r    r8  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|¦  «         ||j
        z  f}t          d |¬¦  «        }t          ||||¦  «                             ¦   «         S )Nr   zdevice mismatch: %s != %sz1could not load %s, generating random data instead©r   )rI  ÚupdateÚ_device_or_defaultÚ_dtype_or_defaultrK  Úread_storager9  rH   rI   r¶   Úitemsizer-  r   Úuntyped_storage)r4   r<  r=  r9  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ð �øõ %ð ð ð Ø�ðøøøõ 	�ŠÐGÈÑVÔVÐVØ˜:Ô.Ñ.Ð0ˆÝ# D°Ð6Ñ6Ô6ˆÝ˜E 6¨:°vÑ>Ô>×NÒNÑPÔPÐPs   Á
B Â
BÂB)Ústorage_offsetr€   rÞ   Úis_leafc                óH  — 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    sJ ‚t
          j                             |	|¦  «         | j                             |	¦  «         |	S )NrN  )r€   r9  rÞ   )Úmemory_format)r-  Ú_storage_offset_or_defaultrQ  Ú_is_leaf_or_defaultÚ_requires_grad_or_defaultr|   rA  r9  Úno_gradÚset_Úenable_gradÚcloneÚpreserve_formatÚ_subclassesÚ
meta_utilsÚsafe_is_leafÚ_utilsÚset_tensor_metadatarî   Úappend)
r4   r>  r   r)  rU  r€   rÞ   rV  ÚmetadataÚts
             r   rA  zInputReader.tensor#  sJ  € õ $ 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Ñ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?åÔ Ô+×8Ò8¸Ñ;Ô;¸wÒFÐFÐFÐFÝŒ×(Ò(¨¨HÑ5Ô5Ð5ØŒ	×Ò˜ÑÔÐØˆs6   Á>B#Â#B'Â*B'Ã!C0Ã0C4Ã7C4ÄD3Ä3D7Ä:D7c                 ó:   — | j                              |¦  «         |S r­   )rî   rf  )r4   Úvals     r   rD  zInputReader.symintD  s   € ØŒ	×Ò˜ÑÔÐØˆ
r    r­   rF  r   r    r   rH  rH    sš   € € € € € ð	¨dð 	ð 	ð 	ð 	ð 	ð 7;Àtð Qð Qð Qð Qð Qð4 ð	ð ØØØðð ð ð ð ðBð ð ð ð r    rH  c                   óR   — e Zd Zddœd„Zd„ Zdddœdefd„Zdd	„Zd
„ Zdd„Z	dd„Z
dS )ÚInputWriterF©Ústable_hashc                ó”   — g | _         t          j        ¦   «         | _        || _        |�t          ||¬¦  «        nd | _        i | _        d S )Nrm  )Ú_linesÚ	itertoolsr¿   Ústorage_counterrL  r   rK  Úseen_storages)r4   rL  rn  s      r   r7   zInputWriter.__init__V  sW   € ØˆŒå(œÑ0Ô0ˆÔØ ˆŒð Ð#õ ˜x°[ÐAÑAÔAÐAàð 	Œ
ð
  ˆÔÐÐr    c                 ó~   — dg}|                      d„ | j        D ¦   «         ¦  «         |                     d¦  «         |S )Nzdef load_args(reader):c              3   ó    K  — | ]	}d |› �V — Œ
dS )rl   Nr   )r   Úls     r   r±   z$InputWriter.lines.<locals>.<genexpr>f  s(   è è € Ð1Ð1 �˜��Ð1Ð1Ð1Ð1Ð1Ð1r    zload_args._version = 0)Úextendrp  rf  )r4   Úrs     r   ÚlineszInputWriter.linesb  sK   € à$ð
ˆð 	
�ŠÐ1Ð1 T¤[Ð1Ñ1Ô1Ñ1Ô1Ð1ð 	
�ŠÐ)Ñ*Ô*Ð*Øˆr    N©r:  Údevice_hintr*  c          
      ó0  — t          |¦  «        }| j                             |¦  «        }|�|S dt          | j        ¦  «        › �}d}t          d ¦  «        t          |¦  «        k    rd|›�}d}|j        }|j        dk    r|€J ‚|}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=z = reader.storage(ú, ro   )r   rs  r  rr   rr  rQ  r9  ra   rP  r=  rK  Úwrite_storagerp  rf  )r4   rT  r:  r{  ÚwsÚvÚmaybe_dtype_hintr�   r9  r=  r<  s              r   r>  zInputWriter.storageq  s\  € Ý˜OÑ,Ô,ˆØÔ×"Ò" 2Ñ&Ô&ˆØˆ=ØˆHØ.•$�tÔ+Ñ,Ô,Ð.Ð.ˆØÐÝ˜TÑ"Ô"Õ&7¸
Ñ&CÔ&CÒCÐCØ=¨zÐ=Ð=Ðð ˆØ Ô'ˆØŒ;˜&Ò Ð ØÐ*Ð*Ð*Ø ˆ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    c                 óÐ  — ddl m} |                      |                     ¦   «         |j        |j        ¬¦  «        }g }t          d |j        ¬¦  «        |                     ¦   «         k    rA| 	                    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                             |¦  «        }t3          d ¦  «        |k    r| 	                    d	|›�¦  «         | j         	                    d
d                     |t          t          |j        ¦  «        ¦  «        g|¢¦  «        z   d|› �z   ¦  «         d S )Nr   )Ústatically_known_truerz  rN  zdtype=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>  rT  r€   r9  r-  r   r)  rf  ÚstrÚtuplerQ  rY  rU  r|   rd  Úget_tensor_metadatarw  rv   r[  rÞ   ra  rb  rc  rZ  rp  r:   )r4   r¾   rh  r…  r>  rî   Útensor_metadatarV  s           r   rA  zInputWriter.tensor�  sJ  € ØOÐOÐOÐOÐOÐOà—,’,Ø×ÒÑÔ¨A¬GÀÄð ñ 
ô 
ˆð ˆå˜d¨!¬'Ð2Ñ2Ô2°a·h²h±j´jÒ@Ð@Ø�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    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 )Nr©   z# was unsupported type for dumping: z"""ú[ú])rp  rf  ra   rÜ   r~   rŒ  Ú	enumerater|   r   rA  ÚintÚSymIntrD  Úunsupported)r4   r¾   Úargr°   ÚaÚname_is         r   r•  zInputWriter.unsupported«  s!  € àŒ×ÒÐT ÐTÐTÍÈcÉÌÐTÐTÑUÔUÐUõ �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(r‰  z!, filtered out during compilation)rp  rf  )r4   r¾   s     r   ÚconstzInputWriter.const½  s<   € ØŒ×ÒØP˜DÐPÐP¨ÐPÐPÐPñ	
ô 	
ð 	
ð 	
ð 	
r    c                 ó’   — t          |t          j        ¦  «        r|j        j        }| j                             d|›d|› �¦  «         d S )Nzreader.symint(r‰  )rÜ   r|   r”  r  Úhintrp  rf  )r4   r¾   rj  s      r   rD  zInputWriter.symintÃ  sL   € Ý�c�5œ<Ñ(Ô(ð 	 Ø”(”-ˆCØŒ×ÒÐ>¨CÐ>Ð>¸Ð>Ð>Ñ?Ô?Ð?Ð?Ð?r    rE  )rN   rO   rP   r7   ry  r‹  r>  rA  r•  rš  rD  r   r    r   rl  rl  U  s½   € € € € € Ø05ð 
 ð 
 ð 
 ð 
 ð 
 ðð ð ð 6:Àtð ð ð ÐPSð ð ð ð ð8
ð 
ð 
ð 
ð<&ð &ð &ð$
ð 
ð 
ð 
ð@ð @ð @ð @ð @ð @r    rl  r®   Úfuncr9  Ú
sym_shapesÚdefault_sym_shapec           	      ó  ‡‡‡‡— ddl m} d„ |                     ¦   «         D ¦   «         }d                     |                     ¦   «         ¦  «        }t          j        | ¦  «        }d|› d�}d|› d�}	d	}
 G d
„ d¦  «        }i }‰pi Šˆˆfd„Šdt          fˆˆfd„}| 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   ÚkeyÚvalues      r   ú
<dictcomp>z*aot_graph_input_parser.<locals>.<dictcomp>à  s   € ÐBÐBÐB¡
  U�˜ÐBÐBÐBr    ú|z(_tensor_constant\d+): \"(z0)\[\s*(.*?)\s*\]\" = self\.(_tensor_constant\d+)ú(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)rN   rO   rP   Ú__doc__r   r    r   ÚTensorContainerr©  ë  s   € € € € € Ø-Ð-Ð-Ð-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   )rD  s   €r   r   z=aot_graph_input_parser.<locals>.get_sym_int.<locals>.<lambda>ö  s   ø€ �vÐZÐZÐZ€ r    )r|   Ú_checkr  )rD  rŸ  rž  s   `€€r   Úget_sym_intz+aot_graph_input_parser.<locals>.get_sym_intó  sN   øø€ ÝŒØ�jÐ ÐAÐ$5¸TÐ$AØZÐZÐZÐZñ	
ô 	
ð 	
ð �~Š~˜fÐ&7Ñ8Ô8Ð8r    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€   r9  )
r’  Ústriprf  r“  r}   r|   ÚrandnÚzerosrÉ   Úmark_dynamic)r   r€   Úresolved_shapeÚdynamic_dimsr°   Údimr«   Úconstructorrñ   r.  r9  r¯  s             €€r   Ú
gen_tensorz*aot_graph_input_parser.<locals>.gen_tensorú  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   r4   )Útorch.fx.graphr¡  rv   r:   ÚvaluesÚinspectÚ	getsourcer   Ú__annotations__ÚreÚsearchÚgroupsrŒ  r,   ÚgroupÚ	signaturers   ÚfinditerÚsetattr)r�  r9  rž  rŸ  r¡  Ú	dtype_mapÚdtype_patternÚsourceÚtensor_assignment_regexÚtensor_regexÚsym_shape_regexr«  r  r¹  ÚannotationsrŒ   Ú
annotationÚmatchÚ	data_typeÚ	shape_strr   r€   Ú	containerÚ	attr_namerg   r¯  s    ```                     @r   Úaot_graph_input_parserrÔ  É  s�  øøøø€ ð* +Ð*Ð*Ð*Ð*Ð*àBÐB¨k×.?Ò.?Ñ.AÔ.AÐBÑBÔB€IØ—H’H˜[×/Ò/Ñ1Ô1Ñ2Ô2€Mõ Ô˜tÑ$Ô$€Fð |¸MÐ{Ð{Ð{ÐØ7˜Ð7Ð7Ð7€LØ&€Oð.ð .ð .ð .ð .ñ .ô .ð .ð  €FàÐ!˜r€Jð9ð 9ð 9ð 9ð 9ð 9ð¥Fð ð ð ð ð ð ð ð* Ô&€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    r5   c                 óæ   ‡ ‡— t          j        ¦   «         Št          j                             t          j                             ‰ ¦  «        ¦  «        Š ˆf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
    c                 óJ   •‡ — t          j        ‰ ¦  «        ˆ ˆfd„¦   «         }|S )Nc                  ó˜   •— ‰                      ¦   «          	  ‰| i |¤Ž‰                     ¦   «          S # ‰                     ¦   «          w xY wr­   )ÚenableÚdisable)rî   r  ÚfnÚprofs     €€r   Úwrapperz3profile_to_file.<locals>.decorator.<locals>.wrapper7  sH   ø€ à�KŠK‰MŒMˆMðØ�r˜4Ð* 6Ð*Ð*à—’‘”��ø�—’‘”��øøøs	   —3 ³A	)Ú	functoolsÚwraps)rÚ  rÜ  rÛ  s   ` €r   Ú	decoratorz"profile_to_file.<locals>.decorator6  s>   øø€ Ý	Œ˜Ñ	Ô	ð	ð 	ð 	ð 	ð 	ñ 
Ô	ð	ð ˆr    c            	      ó¢   •— ‰                      ‰ ¦  «         t          j                             t	          j        d‰ › d‰ › d�¦  «        ¦  «         d S )Nz!                Wrote profile to z+, view with:

                    snakeviz z

                )Ú
dump_statsÚsysÚstderrrF   r<   r=   )r5   rÛ  s   €€r   Úsave_itz profile_to_file.<locals>.save_itA  sn   ø€ Ø�Š˜Ñ!Ô!Ð!ÝŒ
×ÒÝŒOðØ"*ðð ð 'ðð ð ñô ñ		
ô 		
ð 		
ð 		
ð 		
r    )ÚcProfileÚProfiler*   r+   r-   Ú
expanduserÚatexitÚregister)r5   rß  rä  rÛ  s   `  @r   Úprofile_to_filerê  ,  s†   øø€ õ ÔÑÔ€DÝŒw�Š�rœw×1Ò1°(Ñ;Ô;Ñ<Ô<€Hð	ð 	ð 	ð 	ð 	ð
ð 
ð 
ð 
ð 
ð 
õ „O�GÑÔÐØÐr    )FF)F)r®   NN)`rè  rê   rå  rÝ  rV   r½  rq  Úloggingr*   rÀ  r³   râ  rT   r<   Úcollectionsr   Ú	importlibr   Útypingr   r   r   r   r	   r
   r|   Útorch._prims_commonÚ_prims_commonrû   Útorch._subclasses.meta_utilsr   Útorch._dynamo.testingr   r   Ú torch.multiprocessing.reductionsr   Útorch.utils._content_storer   r   r   r   r   r   Ú	getLoggerrN   rH   r   Úinductor_configÚ	is_fbcoderÑ   Úlibfb.py.build_infoÚlibfbr;   Úextra_importsÚpyÚ
build_infoÚ	BuildInfoÚget_build_ruler0   r>   r:   rG   r$   rZ   rx   r]   Ú	lru_cacherÀ   rÍ   rÏ   rØ   rþ   rÚ   râ   ró   r  r  r#  rý   r(  r-  r1  Úfloat32rQ  r9  rP  rY  r[  rZ  r4  rH  rl  r‹  r“  rÔ  rê  r   r    r   ú<module>r     s:  ðð €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ø .Ð .Ð .Ð .Ð .Ð .Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mà Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ð €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€ð3ð 3ð 3ð 3ð 3ñ 3ô 3ð 3ðlð ð ð Ð ðað að að að añ aô að aðH €Ô�TÑÔðð ñ Ôðð0 -2ð ð ð ð ð ð(@ð @ð @ðUð Uð Uð	ð 	ð 	ð 	ð 	�Iñ 	ô 	ð 	ð
ð 
ð 
ð0ð 0ð 0ð 0ð> ð	7ð Øð7ð 7ð 7ð 7ð 7ðtð ð ð*ð ð ð$1ð 1ð 1ð ð	ð Øðð ð ð ð ðRVØÐ5Ô6ðVð +ðVð &ð	Vð Vð Vð Vð/�Qð /˜8 X¨a¤[ M°1Ð$4Ô5ð /ð /ð /ð /ð "�M %¤-Ñ0Ô0Ð Ø"�] < 5¤<°Ñ#6Ô#6Ñ7Ô7Ð Ø*˜]¨1Ñ-Ô-Ð Ø)˜M¨%Ñ0Ô0Ð Ø#�m EÑ*Ô*Ð ðð ð ð ð ñ ô ð ð Eð Eð Eð Eð Eñ Eô Eð Eðhq@ð q@ð q@ð q@ð q@ñ q@ô q@ð q@ðl Ø+/Ø'+ð	`ð `Ø
�D˜”L�> 4¨¤<Ð/Ô
0ð`àð`ð ˜˜c 3˜hœÔ(ð`ð   ”}ð	`ð
 
ˆ#ˆsˆ(„^ð`ð `ð `ð `ðF#˜cð # h°¨s°A¨vÔ&6ð #ð #ð #ð #ð #ð #r    