§
    ž²ÅjB² ã                   ó¾  — 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mZmZmZmZmZmZmZmZmZ d dlZd dlZd dlZd dlmZ d dlZd dl m!c m"Z# d dlm$Z$ d dl%m&Z& d dlm'Z'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d d	l0m1Z1 d d
l2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9 ddl:m;Z;m<Z<mZ=m>Z> ddl?m@Z@mAZA ddlBmCZCmDZDmEZEmFZFmGZG ddlHmHZH ddlImJZJ ddlKmLZL ddl<mMZMmNZNmOZOmPZPmQZQ ddlRmSZS ddlTmUZU ddlVmWZWmXZX ddlYmZZZ ddl[m\Z\m]Z] ddl^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZk ddl!mlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z| ddl}m~Z~ ddlm€Z€m�Z�m‚Z‚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Žm�Z� dd"l�m‘Z‘ erd d#l’m“Z“  ej”        e•¦  «        Z–ej—         ˜                    e•d$¦  «        Z™ej—         ˜                    e•d%¦  «        Zšej—         ˜                    e•d&¦  «        Z›ej—         ˜                    e•d'¦  «        Zœ ed(¬)¦  «         G d*„ d+¦  «        ¦   «         Z� G d,„ d-¦  «        Zž ejŸ        d¦  «        d.„ ¦   «         Z e G d/„ d0¦  «        ¦   «         Z¡d1„ Z¢ G d2„ d3ej£        j¤        ¦  «        Z¥ G d4„ d5¦  «        Z¦ee§e¨f         Z© G d6„ d7¦  «        Zªd8Z«d9„ Z¬ ej­        ¦   «         Z® G d:„ d;¦  «        Z¯ G d<„ d=e$j°        ¦  «        Z±dS )>é    N)Ú	dataclass)
ÚAnyÚCallableÚcastÚDictÚListÚOptionalÚSetÚTupleÚTYPE_CHECKINGÚUnion)Úfx)ÚTensorifyScalarRestartAnalysis)ÚCompileContextÚ	CompileIdÚGlobalContextCheckpointStateÚSourceÚTracingContext)Úsignpost_event)Ú_make_graph_module)ÚBackwardState)Úfree_symbolsÚis_symbolicÚShapeEnv)Úinsert_deferred_runtime_asserts)Úis_traceable_wrapper_subclassé   )ÚconfigÚexcÚloggingÚ	variables)Ú
CompiledFnÚ
CompilerFn)Úcreate_call_functionÚcreate_instructionÚcreate_load_constÚInstructionÚ	unique_id)Úcode_context)Ú	PyCodegen)Úenter_new_scope)ÚBackendCompilerFailedÚ!exceptions_allowed_to_be_fallbackÚ	SkipFrameÚunimplementedÚunimplemented_with_warning)Úapply_graph_deduplication)ÚGraphRegionTracker)ÚGuardBuilderÚinstall_guard)Úis_dynamic_nn_module)ÚAttributeMutationExistingÚSideEffects)Ú
AttrSourceÚBackwardStateSourceÚConstantSourceÚGetItemSourceÚGlobalStateSourceÚis_constant_sourceÚis_from_local_sourceÚLocalSourceÚParamBufferSourceÚShapeEnvSourceÚSyntheticLocalSourceÚTensorPropertyÚTensorPropertySource)Ú_extract_tensor_dictÚcheckpoint_paramsÚCleanupHookÚclone_inputsÚcount_callsÚcountersÚdynamo_timedÚget_instruction_source_311Úget_locals_to_stealÚget_static_address_typeÚgraph_break_reasonsÚincrement_op_countÚlazy_format_graph_codeÚ
LazyStringÚnn_module_proxyÚsameÚset_example_value)ÚVariableTracker)ÚBackwardStateGraphArgÚGraphArgÚTrackedFakeÚwrap_fx_proxy)ÚBaseListVariable)ÚCellVariableÚNullVariable)ÚNNModuleVariable)ÚNumpyNdarrayVariableÚSymNodeVariableÚTensorVariableÚUnspecializedPythonVariable)ÚTensorWithTFOverrideVariable)ÚInstructionTranslatorBaseÚgraphÚ
graph_codeÚgraph_sizesÚ
trace_callT)Úfrozenc                   ó$   — e Zd ZU eed<   eed<   dS )ÚVariableTrackerCacheKeyÚvt_idÚsourceN)Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__r   © ó    úKC:\Projects\Historical\venv\Lib\site-packages\torch/_dynamo/output_graph.pyrk   rk   Š   s$   € € € € € € à€J€J�Jð €N€N�N€N€Nrt   rk   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚVariableTrackerCachec                 ó   — i | _         d S ©N)Úcache©Úselfs    ru   Ú__init__zVariableTrackerCache.__init__”   s   € ØˆŒ
ˆ
ˆ
rt   c                 ól   — t          t          |¦  «        |¦  «        }|| j        vrd S | j        |         S ry   ©rk   Úidrz   )r|   Úvaluerm   Úkeys       ru   ÚlookupzVariableTrackerCache.lookup—   s5   € Ý%¥b¨¡i¤i°Ñ8Ô8ˆØ�d”jÐ Ð Ø�4ØŒz˜#ŒÐrt   c                 óT   — t          t          |¦  «        |¦  «        }|| j        |<   d S ry   r   )r|   r�   rm   Úvtr‚   s        ru   ÚaddzVariableTrackerCache.add�   s&   € Ý%¥b¨¡i¤i°Ñ8Ô8ˆØˆŒ
�3‰ˆˆrt   c                 ó`   — t          ¦   «         }|j                             | j        ¦  «         |S ry   )rw   rz   Úupdate)r|   Ú	new_caches     ru   ÚclonezVariableTrackerCache.clone¡   s+   € å(Ñ*Ô*ˆ	ØŒ×Ò˜tœzÑ*Ô*Ð*ØÐrt   c                 ó8   — | j                              ¦   «          d S ry   )rz   Úclearr{   s    ru   rŒ   zVariableTrackerCache.clear§   s   € ØŒ
×ÒÑÔÐÐÐrt   N)rn   ro   rp   r}   rƒ   r†   rŠ   rŒ   rs   rt   ru   rw   rw   “   s_   € € € € € ðð ð ðð ð ðð ð ðð ð ðð ð ð ð rt   rw   c                  ó4   — t          j        t          ¦  «        S ry   )Útorchdynamo_loggingÚget_step_loggerÚlogrs   rt   ru   Ú_step_loggerr‘   «   s   € åÔ.­sÑ3Ô3Ð3rt   c                   óR   — e Zd ZU dZeed<   eej                 ed<   dZ	e
ed<   d„ ZdS )ÚGraphCompileReasonzOStores why a given output graph was compiled; i.e. what caused the graph break.ÚreasonÚ
user_stackTÚgraph_breakc                 ó@   — | j         rt          j        | ¦  «         d S d S ry   )r–   rO   Úappendr{   s    ru   Ú__post_init__z GraphCompileReason.__post_init__º   s.   € ØÔð 	-ÝÔ& tÑ,Ô,Ð,Ð,Ð,ð	-ð 	-rt   N)rn   ro   rp   Ú__doc__Ústrrr   r   Ú	tracebackÚFrameSummaryr–   Úboolr™   rs   rt   ru   r“   r“   °   sZ   € € € € € € àYÐYà€K€K�KØ�YÔ+Ô,Ð,Ð,Ñ,ð €K�ÐÐÑð-ð -ð -ð -ð -rt   r“   c                 ó   ‡ — ˆ fd„}|S )Nc                  ó   •— d„ ‰ D ¦   «         S )Nc                 ó&   — g | ]\  }}} ||i |¤Ž‘ŒS rs   rs   )Ú.0ÚfnÚargsÚkwargss       ru   ú
<listcomp>zE_get_gen_rand_values_fn.<locals>._gen_rand_values.<locals>.<listcomp>Á   s.   € ÐIÐIÐIÑ(8¨¨D°&���DÐ#˜FÐ#Ð#ÐIÐIÐIrt   rs   )Úrandom_callss   €ru   Ú_gen_rand_valuesz1_get_gen_rand_values_fn.<locals>._gen_rand_valuesÀ   s   ø€ ØIÐI¸LÐIÑIÔIÐIrt   rs   )r§   r¨   s   ` ru   Ú_get_gen_rand_values_fnr©   ¿   s)   ø€ ðJð Jð Jð Jð Jð Ðrt   c                   óX   ‡ — e Zd ZdZdeeej        j        f         fˆ fd„Z	defd„Z
ˆ xZS )ÚFakeRootModulez'Trick the constructor of fx.GraphModuleÚ
nn_modulesc                 óž   •— t          ¦   «                              ¦   «          |                     ¦   «         D ]\  }}t          | ||¦  «         Œd S ry   )Úsuperr}   ÚitemsÚsetattr)r|   r¬   ÚkÚvÚ	__class__s       €ru   r}   zFakeRootModule.__init__É   sW   ø€ Ý‰Œ×ÒÑÔÐØ×$Ò$Ñ&Ô&ð 	 ð 	 ‰DˆAˆqÝ�D˜!˜QÑÔÐÐð	 ð 	 rt   Úreturnc                 ó   — dS )NzFakeRootModule(...)rs   r{   s    ru   Ú__repr__zFakeRootModule.__repr__Î   s   € Ø$Ð$rt   )rn   ro   rp   rš   r   r›   ÚtorchÚnnÚModuler}   r¶   Ú__classcell__©r³   s   @ru   r«   r«   Æ   ss   ø€ € € € € Ø1Ð1ð  4¨¨U¬X¬_Ð(<Ô#=ð  ð  ð  ð  ð  ð  ð
%˜#ð %ð %ð %ð %ð %ð %ð %ð %rt   r«   c                   óT   — e Zd Zdefd„Zdej        j        deej	                 fd„Z
dS )ÚWrapperBackendÚbackendc                 ó   — || _         d S ry   )r¾   )r|   r¾   s     ru   r}   zWrapperBackend.__init__Ó   s   € Ø#*ˆŒˆˆrt   ÚgmÚexample_inputsc                 óx  — t          |¦  «        | _        || _        t          j        | j        ¦  «        }|                      ||¦  «        | _        | j        �| j        | j        j        u r| j        j        S t          j	        s| j        S 	  | j        j        t          |¦  «        Ž } | j        t          |¦  «        Ž }t          ||¦  «        r| j        |                      ¦   «          S t          d| › �¦  «        ‚# t          $ r t                               d¦  «         ‚ w xY w# |                      ¦   «          w xY w)Nzincorrect results of backend zerror in verify_correctness)rF   ÚrestorerÀ   ÚcopyÚdeepcopyr¾   Ú	candidateÚforwardr   Úverify_correctnessrH   rT   ÚRuntimeErrorÚ	Exceptionr�   Ú	exception)r|   rÀ   rÁ   Úcopy_gmÚcorrectÚresults         ru   Ú__call__zWrapperBackend.__call__Ö   s1  € Ý(¨Ñ,Ô,ˆŒØˆŒÝ”- ¤Ñ(Ô(ˆØŸš g¨~Ñ>Ô>ˆŒàŒ>Ð! T¤^°t´w´Ð%FÐ%FØ”7”?Ð"åÔ(ð 	"Ø”>Ð!ð	Ø%�d”g”o¥|°NÑ'CÔ'CÐDˆGØ#�T”^¥\°.Ñ%AÔ%AÐBˆFõ �G˜VÑ$Ô$ð &Ø”~ð �LŠL‰NŒNˆNˆNõ ÐE¸tÐEÐEÑFÔFÐFøõ ð 	ð 	ð 	Ý�MŠMÐ7Ñ8Ô8Ð8Øð	øøøøð �LŠL‰NŒNˆNˆNøøøs   Â
A	C: Ã(C: Ã:&D Ä D# Ä#D9N)rn   ro   rp   r#   r}   r·   r   ÚGraphModuler   ÚTensorrÏ   rs   rt   ru   r½   r½   Ò   s]   € € € € € ð+ 
ð +ð +ð +ð +ð˜5œ8Ô/ð ÀÀeÄlÔASð ð ð ð ð ð rt   r½   c            
       ó‚  ‡ — e Zd ZdZdeeef         dee         de	de
de
f
ˆ fd„Zd„ ZdRd	efd
„Zd„ Zd„ Zd„ Zdeg ef         fd„Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z e!j"        d„ ¦   «         Z#ed„ ¦   «         Z$ed„ ¦   «         Z%ed„ ¦   «         Z&ed e'j(        j)        fd!„¦   «         Z*ed eeef         fd"„¦   «         Z+dSd$„Z,d%„ Z-d&„ Z.ed'„ ¦   «         Z/d(„ Z0d)„ Z1d*„ Z2dTd,„Z3d-„ Z4e5d.„ ¦   «         Z6d/e7e'j8        j9        e'j:        ef         fd0„Z;d1„ Z<	 dUd3ee=         fd4„Z>d5„ Z?d6„ Z@d7„ ZAd8efd9„ZBe!j"        d:„ ¦   «         ZCd;„ ZDd<„ ZEed eFeGjH                 fd=„¦   «         ZIed eFeJ         fd>„¦   «         ZKd?eGjL        d eMfd@„ZNd?eGjL        d eMfdA„ZOdB„ ZPdC„ ZQd eFe'j:                 fdD„ZRdVdE„ZSdFeFeT         d d#fdG„ZUdVdH„ZVd efdI„ZWd efdJ„ZXdVdK„ZYdLe	d d#fdM„ZZdNeeGjL        gd#f         d d#fdO„Z[dPe'jG        jH        fdQ„Z\ˆ xZ]S )WÚOutputGrapha  
    Wrapper class to hold outputs of InstructionTranslator.  Mainly the
    generated fx.Graph.

    OutputGraph is 1:1 with a frame being processed. Each frame is associated
    with some root InstructionTranslator. When user code calls a function,
    we construct a InliningInstructionTranslator that continues to write into
    the root InstructionTranslator's OutputGraph.
    Úcode_optionsÚcompiler_fnÚexportÚlocal_scopeÚglobal_scopec                 óØ  •— t          ¦   «                              ¦   «          t          | |¬¦  «        g| _        i | _        || _        || _        || _        i | _        g | _	        t          t          ¦  «        | _        t          ¦   «         | _        |	j        |	j        |	j        dœ| _        t'          ¦   «         | _        g | _        t-          | j        t.          j        t.          j        t.          j        t.          j        | j        ¬¦  «        }dd lmc m} |                     d¬¦  «        5  t>          j          !                    || j        rdnd| j        ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   tE          |¦  «        | _#        tI          j%        ¦   «         | _&        |  '                    ¦   «          tQ          j)        tT          ¦  «        | _+        i | _,        t[          | ¦  «        | _.        t_          ¦   «         | _0        tc          j2        ¦   «         | _3        ti          |¦  «        | _5        g | _6        d| _7        g | _8        || _9        || _:        || _;        || _<        i | _=        g | _>        g | _?        d| _@        i | _A        t>          jB         C                    ¦   «         | _D        t>          jB         E                    ¦   «         | _F        |
| _G        d| _H        t          i ¦  «        | _I        t          i ¦  «        | _J        |  K                    ¦   «          i | _L        g | _M        d | _N        g | _O        i | _P        d | _Q        d | _R        |  S                    ¦   «         | _T        t          ¦   «         | _U        d S )	N)Ú	is_export)Úco_nameÚco_filenameÚco_firstlineno)Útracked_fakesÚallow_scalar_outputsÚallow_dynamic_output_shape_opsÚ+prefer_deferred_runtime_asserts_over_guardsÚ'allow_complex_guards_as_runtime_assertsÚ	co_fieldsr   F©Ú(fake_tensor_allow_unsafe_data_ptr_accessT)Ú	shape_envÚallow_non_fake_inputsrÖ   )Vr®   r}   ÚSubgraphTracerÚtracersÚinput_source_to_varrÖ   Úexport_constraintsÚframe_stateÚinput_source_to_sizes_stridesÚcleanup_hooksÚnextÚ_compile_id_counterÚ
compile_idÚsetÚinstalled_globalsrÛ   rÜ   rÝ   rã   r2   Úregion_trackerrÞ   r   r   Úcapture_scalar_outputsÚ capture_dynamic_output_shape_opsrá   râ   Útorch._functorch.configÚ
_functorchÚpatchr·   Ú_subclassesÚFakeTensorModer   Útracing_contextr   Úcurrent_compile_idÚdynamo_compile_idÚinit_ambient_guardsÚcollectionsÚdefaultdictÚlistÚtracked_fakes_id_to_sourceÚparam_name_to_sourcer7   Úside_effectsrw   Úvariable_tracker_cacheÚ	itertoolsÚcountÚunique_var_idÚdictrÔ   Úoutput_instructionsÚ	timestampÚregister_finalizer_fnsrÕ   rØ   r×   Úroot_txÚsource_to_user_stacksÚ_current_txÚcleanupsÚshould_exitÚunspec_variable_mapÚ_CÚ_is_torch_function_enabledÚtorch_function_enabledÚ_is_torch_function_mode_enabledÚtorch_function_mode_enabledÚtorch_function_mode_stackÚ!has_user_defined_allowed_in_graphÚnon_compliant_opsÚcompliant_custom_opsÚsave_global_stateÚ dynamo_flat_name_to_original_fqnr§   Úrandom_values_varÚpregraph_bytecodeÚbackward_stateÚbackward_state_proxyÚbackward_state_varÚ!install_builtins_dict_in_fglobalsÚ%name_of_builtins_dict_key_in_fglobalsÚguard_on_key_order)r|   rÔ   rÕ   r  rÖ   rë   rì   r×   rØ   Úf_coder  ræ   Ú_configÚ	fake_moder³   s                 €ru   r}   zOutputGraph.__init__  s¢  ø€ õ 	‰Œ×ÒÑÔÐÝ& t°vÐ>Ñ>Ô>Ð?ˆŒð CEˆÔ ØˆŒØ"4ˆÔØ&ˆÔàKMˆÔ*Ø68ˆÔå#Õ$7Ñ8Ô8ˆŒå+.©5¬5ˆÔð
 ”~Ø!Ô-Ø$Ô3ð
ð 
ˆŒõ 1Ñ2Ô2ˆÔð 13ˆÔåð Ô,Ý!'Ô!>Ý+1Ô+RÝ8>Ô8jÝ4:Ô4bØ”nð
ñ 
ô 
ˆ	ð$ 	2Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1à�]Š]ÀEˆ]ÑJÔJð 	ð 	ÝÔ)×8Ò8Ø#à.2¬kÐ&D d d¸uØ”{ð	 9ñ ô ˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 0>¸iÑ/HÔ/HˆÔõ Ô-Ñ/Ô/ð 	Ôð 	× Ò Ñ"Ô"Ð"õ Ô#¥DÑ)Ô)ð 	Ô'ð BDˆÔ!Ý'¨Ñ-Ô-ˆÔõ ';Ñ&<Ô&<ˆÔ#Ý&œ_Ñ.Ô.ˆÔÝ  Ñ.Ô.ˆÔØ68ˆÔ ð ˆŒð OQˆÔ#ð 2=ˆÔØ(ˆÔØ&ˆÔØˆŒð RTˆÔ"à<>ˆÔØ+-ˆŒØ ˆÔØKMˆÔ õ ',¤h×&IÒ&IÑ&KÔ&KˆÔ#å+0¬8×+SÒ+SÑ+UÔ+UˆÔ(à)BˆÔ&ð 27ˆÔ.õ >AÀ¹W¼WˆÔõ ADÀBÁÄˆÔ!ð 	×ÒÑ Ô Ð ð ACˆÔ-ð ð 	Ôð "&ˆÔð 57ˆÔð ;=ˆÔØ>BˆÔ!Ø15ˆÔð ×2Ò2Ñ4Ô4ð 	Ô2õ -0©E¬EˆÔÐÐs   Ä)1E&Å&E*Å-E*c                 ó€   — | j         d         }t          |t          ¦  «        s|j        }|                      d|¦  «        S )NÚ__builtins__Ú__builtins_dict__)rØ   Ú
isinstancer
  Ú__dict__Úinstall_global)r|   Ú
f_builtinss     ru   r$  z-OutputGraph.install_builtins_dict_in_fglobals¹  sB   € ð Ô& ~Ô6ˆ
Ý˜*¥dÑ+Ô+ð 	-Ø#Ô,ˆJØ×"Ò"Ð#6¸
ÑCÔCÐCrt   Úhookc                 óˆ   — |› t          | j        ¦  «        › �}|| j        vsJ ‚|| j        |<   ||                      ¦   «         fS ry   )Úlenr!  Úget_backward_state_proxy)r|   r1  ÚprefixÚnames       ru   Úadd_backward_state_hookz#OutputGraph.add_backward_state_hookÌ  sU   € ØÐ4�#˜dÔ1Ñ2Ô2Ð4Ð4ˆØ˜4Ô.Ð.Ð.Ð.Ð.Ø$(ˆÔ˜DÑ!Ø�T×2Ò2Ñ4Ô4Ð4Ð4rt   c                 óP  — | j         €™| j        rt          d¦  «         t          ¦   «         }| j                             dt          |¦  «        |t          ¦   «         ¬¦  «        | _         t          ¦   «         | j         j	        j
        d<   |                      ¦   «         | _        | j         S )Nz&backward_state does not support exportÚdynamo_backward_state©rm   Úgrapharg)r"  rÖ   r/   r   Úroot_tracerÚcreate_graph_inputÚtyper9   rW   ÚnodeÚmetaÚnew_varr#  )r|   Úexample_values     ru   r4  z$OutputGraph.get_backward_state_proxyÒ  sž   € ØÔ$Ð,ØŒ{ð HÝÐFÑGÔGÐGÝ)™OœOˆMØ(,Ô(8×(KÒ(KØ'Ý�]Ñ#Ô#ØÝ*Ñ,Ô,ð	 )Lñ )ô )ˆDÔ%õ ?TÑ>UÔ>UˆDÔ%Ô*Ô/°
Ñ;Ø&*§l¢l¡n¤nˆDÔ#ØÔ(Ð(rt   c                 óx  — | j                              t          ¦   «                              t          j        ¦  «        ¦  «         | j                              t          ¦   «                              t          j        ¦  «        ¦  «         | j                              t          ¦   «                              t          j        ¦  «        ¦  «         | j                              t          ¦   «                              t          j	        ¦  «        ¦  «         | j                              t          ¦   «                              t          j
        ¦  «        ¦  «         t          j        j                             ¦   «         }|�E| j                              t          ¦   «                              t          j        ¦  «        ¦  «         d S d S ry   )Úguardsr†   rA   Ú
make_guardr3   Ú	SHAPE_ENVr<   ÚDETERMINISTIC_ALGORITHMSÚ	GRAD_MODEÚDEFAULT_DEVICEÚTORCH_FUNCTION_STATEr·   r  rø   Úpeek_interpreter_stackÚFUNCTORCH_STACK_MATCH)r|   Úcis     ru   rÿ   zOutputGraph.init_ambient_guardsâ  sM  € ð 	Œ�Š�Ñ(Ô(×3Ò3µLÔ4JÑKÔKÑLÔLÐLàŒ�ŠÝÑÔ×*Ò*­<Ô+PÑQÔQñ	
ô 	
ð 	
ð 	Œ�ŠÕ)Ñ+Ô+×6Ò6µ|Ô7MÑNÔNÑOÔOÐOàŒ�ŠÕ)Ñ+Ô+×6Ò6µ|Ô7RÑSÔSÑTÔTÐTàŒ�ŠÝÑÔ×*Ò*­<Ô+LÑMÔMñ	
ô 	
ð 	
õ ŒXÔ ×7Ò7Ñ9Ô9ˆØˆ>ØŒK�OŠOÝ!Ñ#Ô#×.Ò.­|Ô/QÑRÔRñô ð ð ð ð ˆ>rt   c                 óv  ‡‡—  ‰|Ž }|                       ¦   «         }t          | j        ¦  «        Š‰                     ˆˆfd„¦  «         ‰                     t          t          j        j        |¦  «        ¦  «         ‰ 	                    t          |¦  «        d¦  «         ‰                     |¦  «         | j                             ‰                     ¦   «         ¦  «         t          |¦  «        }t!          j        | j        ||¦  «        }t%          j        ¦   «         j        j                             |¦  «         |S )z]
        call fn(*args) before the graph runs and turn the result into a fake input.
        c                  óD   •— ‰                       ‰j        ‰j        ¦  «        S ry   )Úload_import_fromro   rn   )Úcgr£   s   €€ru   ú<lambda>z3OutputGraph.synthetic_graph_input.<locals>.<lambda>  s!   ø€ �B×'Ò'Ø”Ø”ñô € rt   F)rA  r*   r  Úadd_push_nullÚforeachÚmapr!   ÚConstantVariableÚcreateÚcall_functionr3  Ústorer   ÚextendÚget_instructionsrB   rV   Úbuildr   ÚgetÚguards_contextÚdynamo_guardsÚremove_guards_with_source)r|   r£   r¤   rB  Úvarnamerm   rÎ   rQ  s    `     @ru   Úsynthetic_graph_inputz!OutputGraph.synthetic_graph_inputù  s'  øø€ ð ˜˜D˜	ˆØ—,’,‘.”.ˆÝ�t”|Ñ$Ô$ˆØ
×Òðð ð ð ð ñ	
ô 	
ð 	
ð 	�
Š
•3•yÔ1Ô8¸$Ñ?Ô?Ñ@Ô@Ð@Ø
×Ò�˜T™œ EÑ*Ô*Ð*Ø
�Š�ÑÔÐØÔ×%Ò% b×&9Ò&9Ñ&;Ô&;Ñ<Ô<Ð<Ý% gÑ.Ô.ˆÝ Ô& t¤|°]ÀFÑKÔKˆÝÔÑÔÔ+Ô9×SÒSØñ	
ô 	
ð 	
ð ˆrt   r£   c                 ó:   — | j                              |¦  «         d S ry   )rî   r˜   )r|   r£   s     ru   Úadd_cleanup_hookzOutputGraph.add_cleanup_hook  s   € ØÔ×!Ò! "Ñ%Ô%Ð%Ð%Ð%rt   c                 óz   — t          | j        ¦  «        D ]} |¦   «          Œ| j                             ¦   «          d S ry   )Úreversedrî   rŒ   )r|   r1  s     ru   Úcall_cleanup_hookszOutputGraph.call_cleanup_hooks  sD   € Ý˜TÔ/Ñ0Ô0ð 	ð 	ˆDØˆD‰FŒFˆFˆFØÔ× Ò Ñ"Ô"Ð"Ð"Ð"rt   c                 ó   — | j         d         S ©Nr   ©ré   r{   s    ru   r<  zOutputGraph.root_tracer  s   € àŒ|˜AŒÐrt   c                 ó   — | j         d         S ©Néÿÿÿÿrj  r{   s    ru   Úcurrent_tracerzOutputGraph.current_tracer  s   € àŒ|˜BÔÐrt   c                 ó2   — t          | j        ¦  «        dk    S )Nr   )r3  ré   r{   s    ru   Úis_root_tracerzOutputGraph.is_root_tracer!  s   € å�4”<Ñ Ô  AÒ%Ð%rt   c                 ó   — | j         j        S ry   ©rn  re   r{   s    ru   re   zOutputGraph.graph%  s   € àÔ"Ô(Ð(rt   c                 ó   — || j         _        d S ry   rr  )r|   r�   s     ru   re   zOutputGraph.graph*  s   € à$)ˆÔÔ!Ð!Ð!rt   c                 ó   — | j         j        S ry   )rn  Úinput_name_to_proxyr{   s    ru   ru  zOutputGraph.input_name_to_proxy.  s   € àÔ"Ô6Ð6rt   c                 ó   — | j         j        S ry   )rn  Úreal_value_cacher{   s    ru   rw  zOutputGraph.real_value_cache2  s   € àÔ"Ô3Ð3rt   c                 ó   — | j         j        S ry   )rn  Úbound_symbolsr{   s    ru   ry  zOutputGraph.bound_symbols6  s   € àÔ"Ô0Ð0rt   c                 ó&   —  | j         j        |i |¤ŽS ry   )rn  Úcreate_proxy©r|   r¤   r¥   s      ru   r{  zOutputGraph.create_proxy@  s   € Ø/ˆtÔ"Ô/°Ð@¸Ð@Ð@Ð@rt   c                 ó&   —  | j         j        |i |¤ŽS ry   )rn  Úcreate_noder|  s      ru   r~  zOutputGraph.create_nodeC  ó   € Ø.ˆtÔ"Ô.°Ð?¸Ð?Ð?Ð?rt   c                 ó&   —  | j         j        |i |¤ŽS ry   )rn  Úremove_noder|  s      ru   r�  zOutputGraph.remove_nodeF  r  rt   c              #   óÆ  K  — t          ¦   «         }	 |r|j        | j        u sJ ‚|                     ¦   «          |r|n!t	          | | j        || j        j        ¬¦  «        }| j                             |¦  «         |V — |                     d d d ¦  «         | j         	                    ¦   «          d S # |                     d d d ¦  «         | j         	                    ¦   «          w xY w)N)ÚparentÚsource_targetrÚ   )
r+   rƒ  rn  Ú	__enter__rè   rÚ   ré   r˜   Ú__exit__Úpop)r|   r„  Úprior_tracerÚnew_scope_ctxÚtracers        ru   Ú	subtracerzOutputGraph.subtracerI  s
  è è € å'Ñ)Ô)ˆð	Øð Bà#Ô*¨dÔ.AÐAÐAÐAÐAØ×#Ò#Ñ%Ô%Ð%ð  ð��å#ØØÔ.Ø"/Ø"Ô1Ô;ð	ñ ô ð ð ŒL×Ò Ñ'Ô'Ð'ØˆLˆLˆLà×"Ò" 4¨¨tÑ4Ô4Ð4ØŒL×ÒÑÔÐÐÐøð ×"Ò" 4¨¨tÑ4Ô4Ð4ØŒL×ÒÑÔÐÐøøøs   ’A*B. Â.2C c                 ó   — | S ry   rs   r{   s    ru   ÚoutputzOutputGraph.outputa  s   € àˆrt   c                 ó   — | j         j        S ry   )rü   r)  r{   s    ru   r)  zOutputGraph.fake_modee  s   € àÔ#Ô-Ð-rt   c                 ó$   — | j         j        j        S ry   )rü   r)  ræ   r{   s    ru   ræ   zOutputGraph.shape_envi  s   € àÔ#Ô-Ô7Ð7rt   r´   c                 ó$   — | j         j        j        S ry   )rü   r^  r_  r{   s    ru   rD  zOutputGraph.guardsm  s   € àÔ#Ô2Ô@Ð@rt   c                 ó$   — | j         j        j        S ry   )rü   Úmodule_contextr¬   r{   s    ru   r¬   zOutputGraph.nn_modulesq  s   € àÔ#Ô2Ô=Ð=rt   Nc                 ó  — t          t          t          t          t          dt
          f         t          f         f         |�|n| j        j        j	        ¦  «        }| j
        | j        f|d<   t          j        t          j        ¦   «         f|d<   t          j        t          j        d¦  «        t          j        d¦  «        f|d<   t          j        t          j        d¦  «        t          j        d¦  «        f|d<   t          j        t          j        d¦  «        t          j        d¦  «        f|d	<   t          j        t          j        d¦  «        t          j        d¦  «        f|d
<   t          j        t          j        ¦   «         f|d<   dS )zc
        Saves to out if it is provided. Else saves to the tracing context's global_state.
        .Nr  Úgrad_enabledÚcudaÚautocast_enabledÚcpuÚautocast_cpu_enabledÚautocast_gpu_dtypeÚautocast_cpu_dtypeÚautocast_cache_enabled)r   r   r›   r   r   r   rž   rü   Úglobal_contextÚglobal_stateÚset_torch_function_stater  r·   Úset_grad_enabledÚis_grad_enabledÚ	functoolsÚpartialÚset_autocast_enabledÚis_autocast_enabledÚset_autocast_dtypeÚget_autocast_dtypeÚset_autocast_cache_enabledÚis_autocast_cache_enabled)r|   Úoutr�  s      ru   r  zOutputGraph.save_global_stateu  sj  € õ Ý••e�H S­# XÔ.µÐ4Ô5Ð5Ô6àˆð ˆCàÔ%Ô4ÔAñ	
ô 
ˆð Ô)ØÔ'ð2
ˆÐ-Ñ.õ ).Ô(>ÅÔ@UÑ@WÔ@WÐ'Xˆ�^Ñ$õ Ô�eÔ8¸&ÑAÔAÝÔ% fÑ-Ô-ð,
ˆÐ'Ñ(õ
 Ô�eÔ8¸%Ñ@Ô@ÝÔ% eÑ,Ô,ð0
ˆÐ+Ñ,õ
 Ô�eÔ6¸Ñ?Ô?ÝÔ$ VÑ,Ô,ð.
ˆÐ)Ñ*õ
 Ô�eÔ6¸Ñ>Ô>ÝÔ$ UÑ+Ô+ð.
ˆÐ)Ñ*õ
 Ô,ÝÔ+Ñ-Ô-ð2
ˆÐ-Ñ.Ð.Ð.rt   c                 ó:   — | j                              |¦  «         d S ry   )r  r˜   )r|   Útxs     ru   Úpush_txzOutputGraph.push_tx¡  s   € ØÔ×Ò Ñ#Ô#Ð#Ð#Ð#rt   c                 ó4   — | j                              ¦   «         S ry   )r  r‡  r{   s    ru   Úpop_txzOutputGraph.pop_tx¤  s   € ØÔ×#Ò#Ñ%Ô%Ð%rt   c                 ó8   — | j         s| j        n| j         d         S rl  )r  r  r{   s    ru   Ú
current_txzOutputGraph.current_tx§  s   € à#'Ô#3ÐMˆtŒ|ˆ|¸Ô9IÈ"Ô9MÐMrt   c                 ó*   — t          | j        ¦  «        S ry   )rI   re   r{   s    ru   rI   zOutputGraph.count_calls«  s   € Ý˜4œ:Ñ&Ô&Ð&rt   c                 óV   — t          t          | j        j        ¦  «        ¦  «        dk    S ri  )r3  r  re   Únodesr{   s    ru   Úis_empty_graphzOutputGraph.is_empty_graph®  s"   € Ý•4˜œ
Ô(Ñ)Ô)Ñ*Ô*¨aÒ/Ð/rt   c                 ó¨   — |sJ ‚| j         }|                     d¦  «        D ]0}t          |t          ¦  «        r	||         }Œ t	          ||¦  «        }Œ1|S ©Nú.)r¬   Úsplitr-  r
  Úgetattr)r|   ÚkeysÚobjr±   s       ru   Úget_submodulezOutputGraph.get_submodule±  s\   € ØˆˆˆtØBFÄ/ˆØ—’˜C‘”ð 	&ð 	&ˆAÝ˜#�tÑ$Ô$ð &Ø˜!”f��å˜c 1‘o”o��Øˆ
rt   Útmpc                 ó¤   — t          | j        d         ¦  «        }	 |› dt          | j        ¦  «        › �}||vr| j        dxx         |fz  cc<   |S Œ6)NÚco_varnamesTÚ_)rò   rÔ   rï   r	  )r|   r6  ÚexistingÚvars       ru   rA  zOutputGraph.new_var»  sp   € Ý�tÔ(¨Ô7Ñ8Ô8ˆð	ØÐ6Ð6�D Ô!3Ñ4Ô4Ð6Ð6ˆCØ˜(Ð"Ð"ØÔ! -Ð0Ð0Ô0°S°FÑ:Ð0Ð0Ñ0Ø�
ð		rt   c                 óT   — || j         d         vr| j         dxx         |fz  cc<   dS dS )z/Ensure self.code_options.co_names contains nameÚco_namesN)rÔ   )r|   r6  s     ru   Úupdate_co_nameszOutputGraph.update_co_namesÄ  sD   € à�tÔ(¨Ô4Ð4Ð4ØÔ˜jÐ)Ð)Ô)¨d¨WÑ4Ð)Ð)Ñ)Ð)Ð)ð 5Ð4rt   c                  ó  — d                      t          t          | ¦  «        ¦  «        }t          j        dd|¦  «        }t          j        dd|¦  «        }t          j        dd|¦  «        }|r|d                              ¦   «         sd|z   }|S )	NrÀ  z^[GL]\['?(.*?)'?\]$z\1z	\[(\d+)\]z_\g<1>z[^a-zA-Z0-9]r   Úsub)ÚjoinrU  r›   ÚrerÇ  Úisalpha)Únamesr6  s     ru   Úmodule_key_namezOutputGraph.module_key_nameÉ  s‚   € ð �xŠx��C ™œÑ(Ô(ˆåŒvÐ,¨e°TÑ:Ô:ˆåŒv�l I¨tÑ4Ô4ˆåŒv�o s¨DÑ1Ô1ˆàð 	 ˜4 œ7Ÿ?š?Ñ,Ô,ð 	 Ø˜4‘<ˆDàˆrt   Útargetc                 ó  ‡ ‡‡‡‡‡— t          ‰‰ j        j        ¦  «        rt          j        ‰ j        ‰fi ‰¤ŽS t          ‰¦  «        Šd‰v sJ ‚‰d         Št          ‰t          ¦  «        rJ ‚t          ‰t          j
        ¦  «        r,‰ j        Š‰                      ¦   «         s‰ j        Šˆˆ ˆˆˆfd„}n°t          ‰t          j        j        ¦  «        r]t          ‰t          j        j        ¦  «        sJ ‚‰r3t!          ‰                     t$          j        ¦  «        ¦  «         ˆˆfd„}n;ˆˆfd„}n4t          ‰t          j        t          j        f¦  «        rˆˆ ˆfd„}nˆ ˆfd„}‰ j                             ¦   «         D ]\  }}|‰u r ||¦  «        c S Œt1          j        |Ž Š‰}t5          j        ¦   «         D ]Â}‰‰ j        vr°‰‰ j        vr§‰‰ j        ‰<   t          ‰t          j        j        ¦  «        rqˆˆ ˆfd„}	t;          ‰d¦  «        r%‰                     ¦   «         D ]\  }
} |	|
¦  «         Œt;          ‰d	¦  «        r%‰                     ¦   «         D ]\  }
} |	|
¦  «         Œ |‰¦  «        c S |› d
|› �ŠŒÃtA          d¦  «        ‚)Nrm   c           	      ó„  •— ‰j         €J ‚‰‰j         | <   ‰‰j        j        j        v r‰j        j        j        ‰         S t	          ‰¦  «        dk    r-t          ‰                     t          j        ¦  «        ¦  «         n;t          ‰¦  «        s,t          ‰                     t          j
        ¦  «        ¦  «         t          ‰j        ‰                     d| di ¦  «        fd‰i‰¤Ž}‰j        j        j                             ‰|¦  «        }d|j        j        j        vsJ ‚t#          ‰¦  «        |j        j        j        d<   |S )NÚguardedÚget_attrrs   rB  Útensor_dict)r  r  r�  r  rN   r4   rE  r3   ÚID_MATCHr=   ÚTENSOR_MATCHrZ   r{  Útrack_object_existingÚproxyr?  r@  rE   )Ú
module_keyr…   Úoptionsr|   rm   rÍ  rŠ  s     €€€€€ru   Ú	wrap_namez6OutputGraph.register_attr_or_module.<locals>.wrap_nameù  sF  ø€ ØÔ0Ð<Ð<Ð<Ø8>�Ô)¨*Ñ5ð ˜Tœ\Ô0Ô=Ð=Ð=Øœ<Ô.Ô;¸FÔCÐCå*¨6Ñ2Ô2°iÒ?Ð?Ý! &×"3Ò"3µLÔ4IÑ"JÔ"JÑKÔKÐKÐKÝ+¨FÑ3Ô3ð PÝ! &×"3Ò"3µLÔ4MÑ"NÔ"NÑOÔOÐOå"Ø”LØ×'Ò'¨
°JÀÀBÑGÔGðð ð #)ðð ð	ð �ð ”\Ô(Ô5×KÒKÈFÐTVÑWÔW�à$¨B¬H¬MÔ,>Ð>Ð>Ð>Ð>Ý4HÈÑ4PÔ4P�””Ô" =Ñ1à�	rt   c                 ó<   •— t          t          ‰¦  «        | ‰fi ‰¤ŽS ry   )r^   r>  ©r×  rØ  rÍ  s    €€ru   rÙ  z6OutputGraph.register_attr_or_module.<locals>.wrap_name  s$   ø€ Ý+­D°©L¬L¸*ÀfÐXÐXÐPWÐXÐXÐXrt   c                 ó(   •— t          j        ‰fi ‰¤ŽS ry   )r!   ÚUnspecializedNNModuleVariablerÛ  s    €€ru   rÙ  z6OutputGraph.register_attr_or_module.<locals>.wrap_name%  s   ø€ Ý$ÔBÀ6ÐUÐUÈWÐUÐUÐUrt   c           	      óZ   •— t          j        ‰‰                     d| di ¦  «        fd‰i‰¤ŽS )NrÑ  rs   Úsym_num)r`   rW  r{  )r×  rØ  r|   rÍ  s    €€€ru   rÙ  z6OutputGraph.register_attr_or_module.<locals>.wrap_name0  sK   ø€ Ý&Ô-ØØ×%Ò% j°*¸bÀ"ÑEÔEðð ð #ðð ð	ð ð rt   c                 ó”   •— ‰j                              | ¦  «         ‰‰j        | <   t          j        ‰‰t          | ¬¦  «        ¦  «        S )N)Úsource_name)r�  rÅ  rØ   rV   r\  r:   )r×  r|   rÍ  s    €€ru   rÙ  z6OutputGraph.register_attr_or_module.<locals>.wrap_name;  sM   ø€ Ø”×+Ò+¨JÑ7Ô7Ð7Ø06�Ô! *Ñ-Ý&Ô,Ø˜&¥.¸ZÐ"HÑ"HÔ"Hñô ð rt   c                 óò   •— ‰j         €J ‚t          ‰| ¦  «        }‰› d| › �}|‰j         |<   t          ‰t          ¦  «        r6| ‰j        t
                               |                     ¦   «         ¦  «        <   d S d S r¶  )r  r@   r-  r?   r  rÓ   rÌ  r6  )Ú	leaf_nameÚ
new_sourceÚnew_namer6  r|   rm   s      €€€ru   Úregister_leaf_namez?OutputGraph.register_attr_or_module.<locals>.register_leaf_nameO  s”   ø€ Ø#Ô8ÐDÐDÐDÝ%6°v¸yÑ%IÔ%I˜
Ø&*Ð#8Ð#8¨YÐ#8Ð#8˜Ø>H˜Ô1°(Ñ;Ý% f­kÑ:Ô:ð *ð !*ð !ÔAÝ +× ;Ò ;¸J¿OºOÑ<MÔ<MÑ NÔ Nñð ð ð*ð *rt   Ú_parametersÚ_buffersrÀ  Úunreachable)!r5   r  rÖ   rV   r\  r°  r
  r-  r@   r·   rÑ   rn  rp  r<  r¸   r¹   r4   rE  r3   Ú	NN_MODULEÚSymIntÚSymFloatr¬   r¯   rÓ   rÌ  r  r  rØ   ÚhasattrÚnamed_parametersÚnamed_buffersÚAssertionError)r|   rÍ  rË  rØ  rÙ  r±   r²   ÚbaseÚiræ  rã  rÀ  r6  rm   rŠ  s   `` `        @@@ru   Úregister_attr_or_modulez#OutputGraph.register_attr_or_moduleÙ  sŠ  øøøøøø€ õ   ¨¬Ô(;Ñ<Ô<ð 	Mõ #Ô(¨¬¸&ÐLÐLÀGÐLÐLÐLå�w‘-”-ˆØ˜7Ð"Ð"Ð"Ð"Ø˜Ô"ˆÝ˜fÕ&7Ñ8Ô8Ð8Ð8Ð8å�f�eœlÑ+Ô+ð W	ØÔ(ˆFØ×&Ò&Ñ(Ô(ð *ð Ô)�ðð ð ð ð ð ð ð ð ð õ< ˜¥¤¤Ñ0Ô0ð )	Ý˜f¥e¤h¤oÑ6Ô6Ð6Ð6Ð6àð VÝ˜f×/Ò/µÔ0FÑGÔGÑHÔHÐHðYð Yð Yð Yð Yð Yð YðVð Vð Vð Vð Vð Vð Võ ˜¥¤­u¬~Ð >Ñ?Ô?ð 	ðð ð ð ð ð ð ð ðð ð ð ð ð ð ”O×)Ò)Ñ+Ô+ð 	$ð 	$‰DˆAˆqØ�Fˆ{ˆ{à �y ‘|”|Ð#Ð#Ð#ð õ Ô*¨EÐ2ˆàˆÝ”Ñ"Ô"ð 	!ð 	!ˆAØ˜4œ?Ð*Ð*¨t¸4Ô;LÐ/LÐ/LØ(.�” Ñ%Ý˜f¥e¤h¤oÑ6Ô6ð :ð*ð *ð *ð *ð *ð *ð *õ ˜v }Ñ5Ô5ð :Ø,2×,CÒ,CÑ,EÔ,Eð :ð :™L˜I qØ.Ð.¨yÑ9Ô9Ð9Ð9Ý˜v zÑ2Ô2ð :Ø,2×,@Ò,@Ñ,BÔ,Bð :ð :™L˜I qØ.Ð.¨yÑ9Ô9Ð9Ð9à �y ‘”Ð&Ð&Ð&Ø�=�=˜Q�=�=ˆDˆDå˜]Ñ+Ô+Ð+rt   c                 ó0  — | j                              d¦  «        }t          |¦  «        }|sg i fS g }i }g |j        ¢|j                             ¦   «         ¢| j        j                             ¦   «         ¢}|rü| 	                    ¦   «         }t          |t          ¦  «        r't          |j        t          ¦  «        sJ ‚||j        z  }ŒR|| j        j        vst          |j        t          ¦  «        rLt          |j        t"          ¦  «        r2t          |j        j        t&          ¦  «        r|j        j        j        |v sŒÇ|j        j        j        }||vrg ||<   ||                              |¦  «         |°üi }	i }
| j        D �]}t          |j        t0          ¦  «        r(t          |j        t&          ¦  «        r|j        j        |v sŒF|j        j        }|| j        d         v sJ ‚||         D ]©}|j        |
v rŒ|j        j        }||	vrn|                      |› d�¦  «        }||	|<   |                     t;          d|¬¦  «        t=          |¦  «        t;          d¦  «        t;          d|¬¦  «        g¦  «         |j        }t'          |	|         ¦  «        |
|<   Œª�Œ||
fS )Nr|   r¿  Ú_refÚ	LOAD_FAST©ÚargvalÚBINARY_SUBSCRÚ
STORE_FAST)r×   r]  rM   ÚstackÚsymbolic_localsÚvaluesr  Ústore_attr_mutationsrº  r‡  r-  r[   r¯   r   Úmutation_typer6   rm   r;   rñ  r?   Ú
local_namer˜   Ú	graphargsÚ_exampler  rÔ   ÚindexrA  rZ  r%   r&   )r|   r«  Úmaybe_gmÚstolen_list_namesÚalias_instsÚneeds_aliasÚqueueÚxÚstolen_nameÚvisitedÚoverridden_sourcesÚargÚ	list_nameÚlist_idxÚ
alias_nameÚ
old_sources                   ru   Úhandle_aliases_for_stolen_listsz+OutputGraph.handle_aliases_for_stolen_listsg  s  € àÔ#×'Ò'¨Ñ/Ô/ˆÝ/°Ñ9Ô9ÐØ ð 	Ø�r�6ˆMàˆØ8:ˆð
ØŒXð
àÔ×&Ò&Ñ(Ô(ð
ð ÔÔ3×8Ò8Ñ:Ô:ð
ˆð ð 	/Ø—	’	‘”ˆAÝ˜!Õ-Ñ.Ô.ð Ý! !¤'­4Ñ0Ô0Ð0Ð0Ð0Ø˜œÑ �Øð ˜TÔ.ÔCÐCÐCÝ! !¤/Õ3LÑMÔMð Dõ ˜qœx­Ñ7Ô7ð Dõ ˜qœxœ}­kÑ:Ô:ð	 Dð
 ”H”MÔ,Ð0AÐAÐAààœ(œ-Ô2ˆKØ +Ð-Ð-Ø+-�˜KÑ(Ø˜Ô$×+Ò+¨AÑ.Ô.Ð.ð+ ð 	/ð. ˆØ35ÐØ”>ð %	Pñ %	PˆCå˜3œ<­Ñ.Ô.ðå˜sœz­;Ñ7Ô7ðð ”JÔ)¨[Ð8Ð8àð œ
Ô-ˆIØ Ô 1°-Ô @Ð@Ð@Ð@Ð@Ø  Ô+ð Pð P�à”8Ð1Ð1Ð1Øð œ8œ>�Ø 7Ð*Ð*Ø!%§¢Ø$Ð*Ð*Ð*ñ"ô "�Jð )3�G˜HÑ%à×&Ò&å.¨{À9ÐMÑMÔMÝ-¨hÑ7Ô7Ý.¨Ñ?Ô?Ý.¨|ÀJÐOÑOÔOð	ñô ð ð œX�
Ý1<¸WÀXÔ=NÑ1OÔ1OÐ" :Ñ.Ð.ñ5Pð@ Ð.Ð.Ð.rt   Fr”   c           
      ó  ‡ ‡‡‡— |€J ‚ddl m} |‰ _        |‰ _        d‰ _        t
                               d|¦  «         t          d„ ‰j        D ¦   «         ¦  «        st          d¦  «         g Št          j        dk    r®‰j        D ]¦}|j        d	k    r*‰                     t          d	|j        ¬
¦  «        ¦  «         Œ7|j        dk    r=‰                     t          dt#          ‰j        d         ¦  «        ¬¦  «        ¦  «         Œ‰                     t'          j        |¦  «        ¦  «         Œ§‰ j        r‰ j        r
J d¦   «         ‚‰                     ‰ j        ¦  «         ‰                      ‰¦  «        \  }Š‰                     |¦  «         ˆˆ fd„}t1          ‰j        ¦  «        D ]}|                     ‰|j        ¬¦  «         Œ‰                      ¦   «          ‰                     ¦   «          t;          ‰j        ¦  «        }	|	D ]}
|
                     ¦   «          Œ‰                       ¦   «         }d„ ‰ j!         "                    ¦   «         D ¦   «         }tG          |¦  «        }g }i }‰j$         "                    ¦   «         D ]É\  }}tK          |j&        tN          ¦  «        r|j&        j(        |k    rŒ0tK          |tR          ¦  «        r|j(        |k    rŒQt          j        dk    r"tT           +                    tX          |¦  «        rŒ‚n"tT           +                    tX          |¦  «        rJ ‚||vrg ||<   ||                              |¦  «         ŒÊ| -                    ¦   «         D ]I}|                     ||         ¦  «         |	                     |gt#          ||         ¦  «        z  ¦  «         ŒJt#          ‰ j.        ¦  «        dk    rþ |¦   «          g }‰  /                    d¦  «        ‰ _0         |tc          ‰ j.        ¦  «        ¦  «        }‰  2                    d|¦  «        }tg          ‰|‰¬¦  «        }|                     | 4                    |d¦  «        ¦  «         |                     tk          dd¦  «        ¦  «         |                     | 6                    ‰j7        j0        ¦  «        ¦  «         ‰  8                    |¦  «         |	�r9t          d„ |	D ¦   «         ¦  «        �rt          d„ |	D ¦   «         ¦  «        �rt#          ts          |	¦  «        ¦  «        t#          |	¦  «        k    rØ‰ j:         ;                    ¦   «         r¿t#          ‰j<        ¦  «        dk    s§‰ j=        s  |¦   «          ‰  8                    ‰  >                    ‰t;          t1          |	¦  «        ¦  «        ||¦  «        t          dt#          |	¦  «        ¬¦  «        gz   ¦  «         ‰  8                    ˆˆfd„t1          |¦  «        D ¦   «         ¦  «         dS ‰  /                    d¦  «        }tg          ‰||‰¬¦  «        }‰  ?                    ‰|	|¦  «         tg          ‰||d„ |j@         "                    ¦   «         D ¦   «         ‰¬¦  «        }‰  ?                    ‰|	|¦  «         d}g }tƒ          ‰ jB        ¦  «        dk    st#          |jC        ¦  «        dk    r£|                     ‰  >                    ‰| D                    ¦   «         ||¦  «        ¦  «         t#          |jC        ¦  «        dk    r+|                     | 6                    |¦  «        ¦  «         d}n8|                     t          d¦  «        ¦  «         n‰  E                    ‰¦  «          |¦   «          ‰  8                    || F                    ¦   «         z   ¦  «         ‰  8                    ˆˆfd „t1          |¦  «        D ¦   «         ¦  «         |r:‰  8                    tg          ‰‰¬¦  «         G                    |¦  «        g¦  «         dS dS )!zw
        Generate a subgraph to continue execution on user code.
        Automatically restore live variables.
        Nr   ©ÚdisableTzCOMPILING GRAPH due to %sc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S ry   )Úcan_restore)r¢   Úblocks     ru   ú	<genexpr>z/OutputGraph.compile_subgraph.<locals>.<genexpr>Î  s.   è è € ÐCÐC¨5�5×$Ò$Ñ&Ô&ÐCÐCÐCÐCÐCÐCrt   z&compile_subgraph with block_depth != 0©é   é   Ú	MAKE_CELLr÷  ÚCOPY_FREE_VARSÚco_freevars)r  z)export does not support pregraph_bytecodec                  óZ   •— ‰                      ‰ ¦  «         ‰                      ¦   «          d S ry   )Úadd_output_instructionsrŒ   )Úprefix_instsr|   s   €€ru   Úappend_prefix_instsz9OutputGraph.compile_subgraph.<locals>.append_prefix_instsè  s/   ø€ Ø×(Ò(¨Ñ6Ô6Ð6Ø×ÒÑ Ô Ð Ð Ð rt   )Úis_graph_breakc                 ó4   — i | ]\  }}|t          |¦  «        “ŒS rs   )rS   )r¢   r6  Úmods      ru   ú
<dictcomp>z0OutputGraph.compile_subgraph.<locals>.<dictcomp>   s3   € ð 
ð 
ð 
Ù+4¨4°ˆD•/ #Ñ&Ô&ð
ð 
ð 
rt   )r  é   r   Úrandom_valuesÚ__gen_rand_values©r  Fc              3   ó¾   K  — | ]X}t          |t          t          t          f¦  «         o0t          |t          ¦  «        o|                     ¦   «         t          u  V — ŒYd S ry   )r-  rb   r_   rc   r`   Úpython_typeÚfloat)r¢   r²   s     ru   r  z/OutputGraph.compile_subgraph.<locals>.<genexpr>8  s‚   è è € ð ð ð õ Øå3Ý,Ý4ðñô ð ð Võ $ A¥Ñ7Ô7ÐT¸A¿MºM¹O¼OÍuÐ<TÐUðð ð ð ð ð rt   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S ry   )r-  ra   ©r¢   r	  s     ru   r  z/OutputGraph.compile_subgraph.<locals>.<genexpr>D  s,   è è € ÐHÐH°a•J˜q¥.Ñ1Ô1ÐHÐHÐHÐHÐHÐHrt   ÚUNPACK_SEQUENCEc                 óX   •— g | ]&}t          ‰‰¬ ¦  «                             |¦  «        ‘Œ'S ©r+  ©r*   Úcreate_store©r¢   rÂ  r  r«  s     €€ru   r¦   z0OutputGraph.compile_subgraph.<locals>.<listcomp>T  óL   ø€ ð ð ð ð õ ˜bÐ5GÐHÑHÔH×UÒUØñô ðð ð rt   Ú	graph_outc                 ó&   — i | ]\  }}|d k    ¯|d“ŒS )r   Nrs   )r¢   Úvalr  s      ru   r'  z0OutputGraph.compile_subgraph.<locals>.<dictcomp>g  s$   € ÐVÐVÐV©
¨¨UÈEÐTUÊIÈI˜#˜tÈIÈIÈIrt   )Útempvarsr  ÚPOP_TOPc                 óX   •— g | ]&}t          ‰‰¬ ¦  «                             |¦  «        ‘Œ'S r3  r4  r6  s     €€ru   r¦   z0OutputGraph.compile_subgraph.<locals>.<listcomp>ƒ  r7  rt   )HÚ
decoratorsr  Úpartial_convertÚcompile_subgraph_reasonr  r�   ÚdebugÚallÚblock_stackr/   ÚsysÚversion_infor"  Úopnamer˜   r%   rø  r3  rÔ   rÄ   r   rÖ   rZ  r  rf  Úexitr–   Úcleanup_graphÚprune_dead_localsr  rû  ÚrealizeÚ
dedup_passr¬   r¯   r«   rü  r-  rm   r?   r   r\   r>  Ú__instancecheck__r]   rº  r§   rA  r  r©   r/  r*   Úload_function_namer$   r5  r�  r!  rò   r  Úis_emptyÚdebug_localsr!  Úcompile_and_call_fx_graphÚcodegen_suffixÚusesrI   re   Úgraph_outputsÚgraph_output_varsÚrun_compiler_collectiver[  Úcreate_delete)r|   r«  r?  r”   r  Úinstr  r#  r  Ústack_valuesr�   Úoutput_replacementsÚnn_modules_proxiesÚrootÚrestore_varsÚval_to_namesr±   r²   Úrandom_calls_instructionsÚrand_fnÚrand_fn_nameÚcodegenÚgraph_output_varÚpass1Úpass2Ústored_graph_output_varr�  r  r"  s   ``                         @@ru   Úcompile_subgraphzOutputGraph.compile_subgraph½  s'	  øøøø€ ð Ð!Ð!Ð!à'Ð'Ð'Ð'Ð'Ð'à.ˆÔØ'-ˆÔ$ØˆÔå�	Š	Ð-¨vÑ6Ô6Ð6åÐCÐC°B´NÐCÑCÔCÑCÔCð 	DÝÐBÑCÔCÐCà*,ˆÝÔ˜wÒ&Ð&àœð 9ð 9�Ø”; +Ò-Ð-Ø ×'Ò'Ý*¨;¸t¼{ÐKÑKÔKñô ð ð ð ”[Ð$4Ò4Ð4Ø ×'Ò'Ý*Ø,µ#°b´oÀmÔ6TÑ2UÔ2Uðñ ô ñô ð ð ð !×'Ò'­¬	°$©¬Ñ8Ô8Ð8Ð8àÔ"ð	7Ø'+¤{ð	7ð 	7à6ñ	7ô 	7ð 
ð 	×Ò˜DÔ2Ñ3Ô3Ð3Ø*.×*NÒ*NÈrÑ*RÔ*RÑ'ˆÐ'Ø×Ò˜KÑ(Ô(Ð(ð	!ð 	!ð 	!ð 	!ð 	!ð 	!õ ˜bœnÑ-Ô-ð 	>ð 	>ˆEØ�JŠJ�r¨&Ô*<ˆJÑ=Ô=Ð=Ð=à×ÒÑÔÐØ
×ÒÑÔÐÝ˜BœH‘~”~ˆð "ð 	ð 	ˆEØ�MŠM‰OŒOˆOˆOà"ŸošoÑ/Ô/Ðð
ð 
Ø8<¼×8MÒ8MÑ8OÔ8Oð
ñ 
ô 
Ðõ Ð0Ñ1Ô1ˆà"$ˆØ9;ˆð Ô&×,Ò,Ñ.Ô.ð 	&ð 	&‰DˆAˆqõ ˜!œ(¥KÑ0Ô0ð °Q´XÔ5HÈAÒ5MÐ5MØÝ˜!�\Ñ*Ô*ð ¨q¬|¸qÒ/@Ð/@ØåÔ 7Ò*Ð*å×)Ò)­,¸Ñ:Ô:ð Øðõ  ×1Ò1µ,ÀÑBÔBÐBÐBÐBØ˜Ð$Ð$Ø"$�˜Q‘Ø˜ŒO×"Ò" 1Ñ%Ô%Ð%Ð%Ø×"Ò"Ñ$Ô$ð 	<ð 	<ˆAØ×Ò ¨Q¤Ñ0Ô0Ð0Ø×Ò  ¥c¨,°q¬/Ñ&:Ô&:Ñ :Ñ;Ô;Ð;Ð;õ ˆtÔ Ñ!Ô! AÒ%Ð%ØÐÑ!Ô!Ð!Ø(*Ð%Ø%)§\¢\°/Ñ%BÔ%BˆDÔ"Ø�gÕ5°dÔ6GÑHÔHÑIÔIˆGØ×.Ò.Ð/BÀGÑLÔLˆLÝ  DÐ=OÐPÑPÔPˆGØ%×,Ò,Ø×*Ò*¨<¸Ñ>Ô>ñô ð ð &×,Ò,Õ-AÀ!ÀUÑ-KÔ-KÑLÔLÐLØ%×,Ò,Ø×$Ò$ R¤YÔ%@ÑAÔAñô ð ð ×(Ò(Ð)BÑCÔCÐCð ñ\	åð ð ð &ðñ ô ñ ô ñ\	õ ÐHÐH¸<ÐHÑHÔHÑHÔHñ\	õ •C˜Ñ%Ô%Ñ&Ô&­#¨lÑ*;Ô*;Ò;Ð;ØÔ!×*Ò*Ñ,Ô,ð <å˜œÑ(Ô(¨AÒ-Ð-ØÔ'ð .ð  ÐÑ!Ô!Ð!à×(Ò(Ø×.Ò.Ø��X lÑ3Ô3Ñ4Ô4°dÐ<Oñô õ &Ð&7½SÀÑ=NÔ=NÐOÑOÔOÐPñQñô ð ð ×(Ò(ðð ð ð ð õ  (¨Ñ5Ô5ð	ñ ô ñô ð ð ð ð  $Ÿ|š|¨KÑ8Ô8ÐÝØ�DÐ*Ð?Qðñ ô ˆEð ×Ò  L°%Ñ8Ô8Ð8õ ØØØ ØVÐV°e´j×6FÒ6FÑ6HÔ6HÐVÑVÔVØ#5ðñ ô ˆEð ×Ò  L°%Ñ8Ô8Ð8à&+Ð#ØˆFÝ˜4œ:Ñ&Ô&¨!Ò+Ð+­s°5Ô3FÑ/GÔ/GÈ1Ò/LÐ/LØ—’Ø×2Ò2Ø˜E×3Ò3Ñ5Ô5°tÐ=Pñô ñô ð õ �uÔ*Ñ+Ô+¨qÒ0Ð0Ø—M’M %×"4Ò"4Ð5EÑ"FÔ"FÑGÔGÐGØ.2Ð+Ð+à—M’MÕ"4°YÑ"?Ô"?Ñ@Ô@Ð@Ð@ð ×,Ò,¨RÑ0Ô0Ð0ØÐÑ!Ô!Ð!Ø×(Ò(¨°%×2HÒ2HÑ2JÔ2JÑ)JÑKÔKÐKð ×(Ò(ðð ð ð ð õ  (¨Ñ5Ô5ð	ñ ô ñô ð ð 'ð Ø×,Ò,å!ØÐ3Eðñ ô ç'š-Ð(8Ñ9Ô9ðñô ð ð ð ðð rt   c                 óê  ‡‡— | j                              ‰¦  «         | j        ru| j        rJ ‚| j                             ¦   «         D ]R\  }} ‰|¦  «         ‰                     ‰                     | j        ¦  «        ¦  «         ‰                     |¦  «         ŒS| j          	                    ‰¦  «         |j
        D ]�\  Š}‰                     ˆˆfd„¦  «         |D ]} ‰|¦  «         Œ‰                     t          t          |¦  «        d¦  «        ¦  «         ‰                     t          d¦  «        g¦  «         Œ‚‰                     ||j         ¬¦  «         | j                              ‰¦  «         d S )Nc                  ó   •—  ‰ ‰¦  «        S ry   rs   )rQ  Ú	debug_vars   €€ru   rR  z,OutputGraph.codegen_suffix.<locals>.<lambda>£  s   ø€  R R¨	¡]¤]€ rt   Fr<  )Úvalue_from_source)r  Úcodegen_save_tempvarsr!  rÖ   r¯   Úappend_outputÚcreate_loadr#  Ú
store_attrÚcodegen_hooksrO  rS  Úextend_outputr$   r3  r%   Úrestore_stackÚcodegen_update_mutated)	r|   r«  rX  rQ  r6  r:  r¤   r  ri  s	      `    @ru   rQ  zOutputGraph.codegen_suffix”  s‹  øø€ ð 	Ô×/Ò/°Ñ3Ô3Ð3ØÔð 	$Ø”{Ð"Ð"�?Ø!Ô0×6Ò6Ñ8Ô8ð $ð $‘	��cØ��3‘”�Ø× Ò  §¢°Ô0GÑ!HÔ!HÑIÔIÐIØ—’˜dÑ#Ô#Ð#Ð#ØÔ×'Ò'¨Ñ+Ô+Ð+ð  "œð 	>ð 	>‰OˆI�tØ×ÒÐ2Ð2Ð2Ð2Ð2Ñ3Ô3Ð3Øð ð �Ø��3‘”��Ø×ÒÕ1µ#°d±)´)¸UÑCÔCÑDÔDÐDØ×ÒÕ0°Ñ;Ô;Ð<Ñ=Ô=Ð=Ð=à
×Ò˜¸R¼Y¸ÐÑGÔGÐGØÔ×0Ò0°Ñ4Ô4Ð4Ð4Ð4rt   c                 ól  — | j         sJ ‚t          | j        j        ¦  «        }|D ]}|j                             dd¦  «         Œt          j        ¦   «         }t          ||dd…         ¦  «        D ]Å\  }}|j	        t          j
        j        u r¨t          |j        ¦  «        | fk    rŽ|j        s‡|j        d         }|j	        t          j
        j        u rbt          |j        ¦  «        | fk    rH|j        sA|j        d         }| j                             |¦  «         | j                             |¦  «         ŒÆdS )zÄ
        Remove "creation_timestamp" from node meta

        Remove this pattern from the graph:
            torch._C._set_grad_enabled(False)
            torch._C._set_grad_enabled(True)
        Úcreation_timestampNr   r   )r  r  re   r³  r@  r‡  r·   r   ÚziprÍ  r  Ú_set_grad_enabledÚtupler¤   Ú_erasedÚ
erase_node)r|   r³  r?  r”  Únode1Únode2s         ru   rH  zOutputGraph.cleanup_graph¬  sA  € ð ÔÐÐÐÝ�T”ZÔ%Ñ&Ô&ˆØð 	6ð 	6ˆDØŒI�MŠMÐ.°Ñ5Ô5Ð5Ð5åÔ,Ñ.Ô.ˆÝ  u¨Q¨R¨R¤yÑ1Ô1ð 	1ð 	1‰LˆE�5à”¥¤Ô :Ð:Ð:Ý˜%œ*Ñ%Ô%¨lÐ*:Ð)<Ò<Ð<Øœð =ð  %œz¨!œ}�à”L¥E¤HÔ$>Ð>Ð>Ý˜eœjÑ)Ô)°,Ð.>Ð-@Ò@Ð@Ø!œMð Að $)¤:¨a¤=�LØ”J×)Ò)¨%Ñ0Ô0Ð0Ø”J×)Ò)¨%Ñ0Ô0Ð0øð	1ð 	1rt   c                 óì   — i }| j         j        D ]d}|j                             dd ¦  «        }t	          |t
          j        j        ¦  «        r(|                     ¦   «         }d„ |D ¦   «         ||j	        <   Œe|S )NrB  c                 óZ   — g | ](}t          |t          ¦  «        r|nt          |¦  «        ‘Œ)S rs   )r-  rq   Úrepr)r¢   Úss     ru   r¦   z:OutputGraph.get_graph_sizes_structured.<locals>.<listcomp>Ð  s1   € Ð!UÐ!UÐ!UÈ1¥z°!µSÑ'9Ô'9Ð"F ! !½tÀA¹w¼wÐ!UÐ!UÐ!Urt   )
re   r³  r@  r]  r-  r·   rú   Ú
FakeTensorÚsizer6  )r|   Úretr?  rB  r�  s        ru   Úget_graph_sizes_structuredz&OutputGraph.get_graph_sizes_structuredÊ  s|   € ØˆØ”JÔ$ð 	Vð 	VˆDØ œIŸMšM¨/¸4Ñ@Ô@ˆMÝ˜-­Ô):Ô)EÑFÔFð VØ$×)Ò)Ñ+Ô+�Ø!UÐ!UÐPTÐ!UÑ!UÔ!U��D”I‘øØˆ
rt   r6  c                 ó0  — d}|d|› d�z  }| j         j        D ]ý}|j                             dd ¦  «        }t	          |t
          j        j        ¦  «        rÁ|                     ¦   «         }||j	        › dt          |¦  «        › d�z  }g }d}|D ]j}t	          |t          ¦  «        r|                     |¦  «         Œ-t	          |t
          j        ¦  «        r"d}|                     |j        j        ¦  «         Œi n|r||j	        › d	t          |¦  «        › d�z  }Œþ|S )
NzTRACED GRAPH TENSOR SIZES
z===== z =====
rB  z: ú
FTz (concrete): )re   r³  r@  r]  r-  r·   rú   r€  r�  r6  rw  rq   r˜   rë  r?  Úhint)	r|   r6  Úgraph_sizes_strr?  rB  r�  Úconcrete_sizeÚ
has_symintÚszs	            ru   Úget_graph_sizeszOutputGraph.get_graph_sizesÓ  sF  € Ø7ˆØÐ2 DÐ2Ð2Ð2Ñ2ˆØ”JÔ$ð 	ð 	ˆDØ œIŸMšM¨/¸4Ñ@Ô@ˆMÝ˜-­Ô):Ô)EÑFÔFð Ø$×)Ò)Ñ+Ô+�Ø d¤iÐ#BÐ#Bµ5¸±;´;Ð#BÐ#BÐ#BÑB�Ø "�Ø"�
Øð ð �BÝ! "¥cÑ*Ô*ð Ø%×,Ò,¨RÑ0Ô0Ð0Ð0Ý# B­¬Ñ5Ô5ð Ø%)˜
Ø%×,Ò,¨R¬W¬\Ñ:Ô:Ð:Ð:à˜à!ð Ø'Ø#œyÐOÐOµu¸]Ñ7KÔ7KÐOÐOÐOñ˜øð Ðrt   c              #   óx  K  — | j         j                             ¦   «         }i }|                      |¬¦  «         	 | j         j                             |¦  «         dV — | j         j                             t          |¦  «        ¦  «         dS # | j         j                             t          |¦  «        ¦  «         w xY w)zj
        Momentarily restores the global state to what it was prior to tracing the current output
        )r©  N)rü   rœ  Úcopy_graphstater  Úrestore_graphstater   )r|   Úprior_global_stateÚcurrent_global_states      ru   Úrestore_global_statez OutputGraph.restore_global_stateì  sÏ   è è € ð
 "Ô1Ô@×PÒPÑRÔRÐØ<>ÐØ×ÒÐ#7ÐÑ8Ô8Ð8ð	àÔ Ô/×BÒBÐCUÑVÔVÐVØˆEˆEˆEð Ô Ô/×BÒBÝ,Ð-AÑBÔBñô ð ð ð øˆDÔ Ô/×BÒBÝ,Ð-AÑBÔBñô ð ð øøøs   º#B Â.B9c                 óZ  ‡— |j         xŠ��‰j        �€‰j        }t                               d‰j        ¦  «         t          j                             dd„ ˆfd„¬¦  «         t          j	         
                    |                     ¦   «         t          j	                             ¦   «         z  ¦  «        5  d g|                     ¦   «         z  }t          j        |‰j        |¬¦  «         |‰_        d d d ¦  «         n# 1 swxY w Y   |j                             ¦   «          t$          j        ‚d S d S )Nzcompiler_collective %sÚartifactc                  ó   — dddœS )NÚcompiler_collectiveÚstring)r6  Úencodingrs   rs   rt   ru   rR  z5OutputGraph.run_compiler_collective.<locals>.<lambda>  s   € Ø1Ø (ð%ð %€ rt   c                  ó6   •— ‰ j                              ¦   «         S ry   )Úlocal_stateÚrender)Údss   €ru   rR  z5OutputGraph.run_compiler_collective.<locals>.<lambda>  s   ø€  2¤>×#8Ò#8Ñ#:Ô#:€ rt   )Úmetadata_fnÚ
payload_fn)Úgroup)Údistributed_stateÚ
all_statesÚ
compile_pgr�   Úinfor™  r·   Ú_loggingÚtrace_structuredr•  ÚdeviceÚrankÚdevice_countr�  ÚdistÚall_gather_objectÚspeculation_logrŒ   r   Ú CompileCollectiveRestartAnalysis)r|   r«  r¡  r   r›  s       @ru   rU  z#OutputGraph.run_compiler_collectiveþ  s_  ø€ ØÔ&Ð&ˆBÑ3¸¼Ñ8MØœˆJÝ�HŠHÐ-¨r¬~Ñ>Ô>Ð>ÝŒN×+Ò+Øðð ð ;Ð:Ð:Ð:ð ,ñ ô ð õ ”×"Ò" :§?¢?Ñ#4Ô#4µu´z×7NÒ7NÑ7PÔ7PÑ#PÑQÔQð +ð +Ø"˜V j§o¢oÑ&7Ô&7Ñ7�
ÝÔ& z°2´>ÈÐTÑTÔTÐTØ *�”ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð Ô×$Ò$Ñ&Ô&Ð&ÝÔ6Ð6ð% 4Ð3Ð8MÐ8Ms   Â1<C9Ã9C=Ä C=c                 ó²  ‡ ‡— t           j        j                             ¦   «         5  ddlm} ‰ j        sJ ‚‰                      |¦  «         t          d¦  «        }t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚‰                      dd‰ j                             t          d„ |D ¦   «         ¦  «        ¦  «        fi ¦  «        }|                     ¦   «         D ]\  }}	|                     |	¦  «         Œ|j        j                             ||¦  «         t(          j        s5t-          t/          j        |‰ j        ¦  «        ‰ j        |‰ j        ¬¦  «         ‰                      ¦   «          t;          ‰ j        ¦  «        }
t<          d         dxx         |
z  cc<   ‰ j                              ¦   «          tC          |‰ j        ¦  «        Š‰ j"        D ]} |‰¦  «         Œ‰ j#        ‰_#        ‰ j$         %                    ¦   «         ‰j&        d	<   ‰ j'        ‰j&        d
<   tP           )                    dtU          |‰ddd¬¦  «        ¦  «         t           j+         ,                    dˆ fd„ˆfd„¬¦  «         ‰  -                    ¦   «          ‰ j.        j/        }‰ j        shddl0m1c m} | 2                    d¬¦  «        5  t           j3         4                    |j        ¬¦  «        }ddd¦  «         n# 1 swxY w Y   |‰ j.        _/        ‰  5                    ¦   «         5  ‰  6                    ‰¦  «        }ddd¦  «         n# 1 swxY w Y   ddl7m8} t          ||¦  «        s*t          ts          |dd¦  «        |¦  «        rP|j:        dk    rEt          ||¦  «        r|n|j;        }| <                    |¦  «         t          ||¦  «        s|j=        } ||¦  «        }t<          d         dxx         dz  cc<   ‰  >                    ||¦  «         t          |¦  «        }| @                    |¦  «         | A                    ¦   «         cddd¦  «         S # 1 swxY w Y   dS )zr
        Generate code from self.graph and return the Instruction()s to
        call that generated code.
        r   r  Ú__compiled_fnr�  c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S ry   )Úas_proxyr0  s     ru   r  z8OutputGraph.compile_and_call_fx_graph.<locals>.<genexpr>'  s*   è è € Ð5OÐ5OÀq°a·j²j±l´lÐ5OÐ5OÐ5OÐ5OÐ5OÐ5Ort   )rÖ   ÚstatsÚcalls_capturedr  rþ   ú%sT)Úinclude_strideÚinclude_deviceÚcoloredÚdynamo_output_graphc                  ó0   •— d‰                       ¦   «         iS )NÚsizes)rƒ  r{   s   €ru   rR  z7OutputGraph.compile_and_call_fx_graph.<locals>.<lambda>Q  s   ø€ ˜ $×"AÒ"AÑ"CÔ"CÐD€ rt   c                  ó4   •— ‰                       ddd¬¦  «        S )NFT)Úprint_outputr³  r´  )Úprint_readable)rÀ   s   €ru   rR  z7OutputGraph.compile_and_call_fx_graph.<locals>.<lambda>R  s#   ø€  2×#4Ò#4Ø!&°tÈDð $5ñ $ô $€ rt   )r�  r   NFrä   )ræ   )Ú_LazyGraphModuleÚ__self__Ú_lazy_forwardÚunique_graphs)Br·   Ú_guardsr   Úclear_framer>  r  r  rU  r(   r-  r  r«   r~  rn  Ú
create_argrw  r¯   Úreplace_all_uses_withr�  Ú_maybe_preserve_original_metar   Údo_not_emit_runtime_assertsr   r   rÐ   re   ræ   rÖ   Úremove_unused_graphargsrI   rJ   rw  rŒ   r   r  r@  r  rÄ   r@  rþ   Úgraph_code_logrA  rQ   r£  r¤  rg  rü   r)  r÷   rø   rù   rú   rû   r‘  Úcall_user_compilerÚtorch.fx._lazy_graph_moduler¼  r¹  rn   r½  Úforce_recompilerÇ   Úinstall_global_unsafer*   Úmake_call_generated_coder[  )r|   r«  Úrvr[  Úreplaced_outputsr  r6  Úoutput_nodeÚold_nodeÚnew_nodeÚncallsÚregister_finalizerÚold_fake_moder(  Úbackend_fake_modeÚcompiled_fnr¼  Úlazy_gmrQ  rÀ   s   `                  @ru   rP  z%OutputGraph.compile_and_call_fx_graph  s­  øø€ õ
 Œ]Ô)×5Ò5Ñ7Ô7ð o	)ð o	)Ø+Ð+Ð+Ð+Ð+Ð+àÔ#Ð#Ð#Ð#à×(Ò(¨Ñ,Ô,Ð,å˜_Ñ-Ô-ˆDå˜b¥$Ñ'Ô'Ð'Ð'Ð'Ý˜d¥NÑ3Ô3Ð3Ð3Ð3à×*Ò*ØØØÔ$×/Ò/µÐ5OÐ5OÈBÐ5OÑ5OÔ5OÑ0OÔ0OÑPÔPÐRØñ	ô ˆKð '7×&<Ò&<Ñ&>Ô&>ð 9ð 9Ñ"�˜(Ø×.Ò.¨xÑ8Ô8Ð8Ð8àŒIÔ$×BÒBÀ2À{ÑSÔSÐSÝÔ5ð Ý/Ý”N 4¨¬Ñ4Ô4Ø”NØØœ;ð	ñ ô ð ð ×(Ò(Ñ*Ô*Ð*Ý  ¤Ñ,Ô,ˆFÝ�WÔÐ.Ð/Ð/Ô/°6Ñ9Ð/Ð/Ñ/ð Ô!×'Ò'Ñ)Ô)Ð)å# D¨$¬*Ñ5Ô5ˆBØ&*Ô&Að 'ð 'Ð"Ø"Ð" 2Ñ&Ô&Ð&Ð&à)-Ô)EˆBÔ&ð Ô5×:Ò:Ñ<Ô<ð ŒGØ2ñð ,0Ô+AˆBŒGÐ'Ñ(å× Ò ØÝ&Ø˜"¨TÀ$ÐPTðñ ô ñô ð õ ŒN×+Ò+Ø%ØDÐDÐDÐDðð ð ð ð ,ñ ô ð ð ×#Ò#Ñ%Ô%Ð%Ø Ô0Ô:ˆMØ”;ð CØ9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9à—]’]ÈE�]ÑRÔRð ð å(-Ô(9×(HÒ(HØ"/Ô"9ð )Iñ )ô )Ð%ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 2C�Ô$Ô.à×*Ò*Ñ,Ô,ð :ð :Ø"×5Ò5°bÑ9Ô9�ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð EÐDÐDÐDÐDÐDå˜+Ð'7Ñ8Ô8ð 2Ý�7 ;°
¸DÑAÔAÐCSÑTÔTð2àÔ(¨OÒ;Ð;õ " +Ð/?Ñ@Ô@ð.�K�Kà$Ô-ð ð !×0Ò0°Ñ9Ô9Ð9å! +Ð/?Ñ@Ô@ð 2à")¤/�Kà!˜' +Ñ.Ô.ˆKå�WÔ˜oÐ.Ð.Ô.°!Ñ3Ð.Ð.Ñ.à×&Ò& t¨[Ñ9Ô9Ð9å˜2‘”ˆBØ×'Ò'¨Ñ-Ô-Ð-Ø×&Ò&Ñ(Ô(ð_o	)ð o	)ð o	)ð o	)ñ o	)ô o	)ð o	)ð o	)ð o	)ð o	)ð o	)ð o	)øøøð o	)ð o	)ð o	)ð o	)ð o	)ð o	)s[   ¦JQÊ=&K/Ë#QË/K3	Ë3QË6K3	Ë7#QÌL<Ì0QÌ<M 	Í QÍM 	ÍC;QÑQÑQc                 ó8   — | j                              d¬¦  «        S )NÚplaceholder)Úop)re   Ú
find_nodesr{   s    ru   ÚplaceholderszOutputGraph.placeholders‰  s   € àŒz×$Ò$¨Ð$Ñ6Ô6Ð6rt   c                 ó$   — d„ | j         D ¦   «         S )Nc                 ó(   — g | ]}|j         d          ‘ŒS )r;  ©r@  )r¢   r?  s     ru   r¦   z)OutputGraph.graphargs.<locals>.<listcomp>�  s   € ÐDÐDÐD¨$�”	˜*Ô%ÐDÐDÐDrt   )rÜ  r{   s    ru   r  zOutputGraph.graphargs�  s   € àDÐD°$Ô2CÐDÑDÔDÐDrt   rÀ   c                 ó†   — t          dddd¬¦  «        5  |                      |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )NúOutputGraph.call_user_compilerÚbackend_compileTÚ'aot_autograd_cumulative_compile_time_us)Ú
phase_nameÚlog_pt2_compile_eventÚdynamo_compile_column_us)rK   Ú_call_user_compiler)r|   rÀ   s     ru   rÈ  zOutputGraph.call_user_compiler‘  sš   € ÝØ,Ø(Ø"&Ø%Nð	
ñ 
ô 
ð 	0ð 	0ð ×+Ò+¨BÑ/Ô/ð	0ð 	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s   ”6¶:½:c           
      óè  — | j         €J ‚d}g }|j        j        D ]0}|j        dv r|dz  }|j        dk    r|                     |¦  «         Œ1t          |¦  «         |D ]}|j        d         }|j        |_        Œ| j	        |_
        | j        |_        	 t          | j         d¦  «        r| j         j        nd} t          ¦   «         t           j        d|› �¦  «         | j         }t$          j        rt)          |¦  «        } |||                      ¦   «         ¦  «        }	 t          ¦   «         t           j        d	|› �¦  «         t-          |	¦  «        s
J d
¦   «         ‚nØ# t.          $ r ‚ t0          $ rw}
| j        r.t5          | j         |
¦  «                             |
j        ¦  «        d ‚d| j                             ¦   «         › d�}t?          |
| j        j         |¦  «         Y d }
~
nRd }
~
wtB          $ r}
|
‚d }
~
wtD          $ r3}
t5          | j         |
¦  «                             |
j        ¦  «        d ‚d }
~
ww xY wtG          ddi | j$        ¥|tK          |j        j        ¦  «        tK          |¦  «        dœ¥¦  «         |	S )Nr   ©rX  Úcall_methodÚcall_moduler   rÙ  r;  rn   Ú zcalling compiler function zdone compiler function z#compiler_fn did not return callablez9Backend compiler failed with a fake tensor exception at 
zAdding a graph break.Údynamorá  )Úop_countÚ
node_countÚinput_count)&rÕ   re   r³  rÚ  r˜   rP   r@  rm   Ú_dynamo_sourcer  Ú_param_name_to_sourcer  Ú_source_to_user_stacksrí  rn   r‘   r    ÚINFOr   rÈ   r½   rÁ   Úcallabler   r-   r  r,   Úwith_tracebackÚ__traceback__r  Úformat_frame_summaryr0   r'  r.   rÊ   r   rã   r3  )r|   rÀ   ÚtotrÜ  r?  Úplr  r6  rÕ   rÖ  ÚeÚmsgs               ru   rç  zOutputGraph._call_user_compilerš  s  € ØÔÐ+Ð+Ð+ØˆØˆØ”H”Nð 	*ð 	*ˆDØŒwÐIÐIÐIØ�q‘�ØŒw˜-Ò'Ð'Ø×#Ò# DÑ)Ô)Ð)øÝ˜3ÑÔÐØð 	+ð 	+ˆBØ”'˜*Ô%ˆCà #¤
ˆBÔÐà#'Ô#<ˆÔ Ø$(Ô$>ˆÔ!ð!	õ ˜4Ô+¨ZÑ8Ô8ð�Ô Ô)Ð)àð ð
 �L‰NŒN�7œ<Ð)LÀdÐ)LÐ)LÑMÔMÐMØÔ*ˆKÝÔ(ð :Ý,¨[Ñ9Ô9�Ø%˜+ b¨$×*=Ò*=Ñ*?Ô*?Ñ@Ô@ˆKØ�L‰NŒN�7œ<Ð)IÀ4Ð)IÐ)IÑJÔJÐJÝ˜KÑ(Ô(ÐOÐOÐ*OÑOÔOÐ(ÐOøÝ-ð 	ð 	ð 	ØÝ0ð 
	Dð 
	Dð 
	DØÔ5ð Ý+¨DÔ,<¸aÑ@Ô@×OÒOØ”Oñô àðð(Ø”<×4Ò4Ñ6Ô6ð(ð (ð (ð õ
 ' q¨$¬,Ô*=¸sÑCÔCÐCÐCÐCÐCÐCÐCøøøøÝð 	ð 	ð 	ð ˆGøøøøÝð 	ð 	ð 	Ý'¨Ô(8¸!Ñ<Ô<×KÒKØ”ñô àðøøøøð	øøøõ
 	ØØ,ðØ”.ðàÝ! "¤(¤.Ñ1Ô1Ý" <Ñ0Ô0ð	ð ð ñ		
ô 		
ð 		
ð Ðs2   ÂCE ÅH-Å,A-GÇH-Ç+G-Ç-H-Ç:.H(È(H-c                 óh   — t           j        j        j        rt	          | ¦  «        S t          ¦   «         S ry   )r·   Ú_dynamor   Úuse_graph_deduplicationr1   r
  r{   s    ru   rK  zOutputGraph.dedup_passÜ  s)   € ÝŒ=ÔÔ7ð 	Ý,¨TÑ2Ô2Ð2å‘6”6ˆMrt   c                 ó’   — d }d}|s|› d|› �}|| j         v r|dz  }n|}|¯||_        d|_        |                      ||d ¬¦  «         |S )Nr   rÀ  r   Fr:  )r¬   rn   Útorchdynamo_force_dynamicró  )r|   r6  Úsub_gmÚ	next_namerò  rÆ   s         ru   Úinstall_subgraphzOutputGraph.install_subgraphâ  s~   € Øˆ	ØˆØð 	&Ø˜˜ !˜˜ˆIØ˜DœOÐ+Ð+Ø�Q‘��à%�	ð ð 	&ð $ˆŒØ+0ˆÔ(ð 	×$Ò$ V¨Y¸tÐ$ÑDÔDÐDØÐrt   c                 ó(   — d„ | j         D ¦   «         }|S )Nc                 ó   — g | ]	}|j         ‘Œ
S rs   )Úexample)r¢   r  s     ru   r¦   z.OutputGraph.example_inputs.<locals>.<listcomp>ô  s   € Ð8Ð8Ð8 #�#”+Ð8Ð8Ð8rt   )r  )r|   rÎ   s     ru   rÁ   zOutputGraph.example_inputsó  s   € Ø8Ð8¨¬Ð8Ñ8Ô8ˆØˆrt   c                 ób  ‡ ‡‡‡— ‰ j         sJ ‚dt          j        j        fd„}dt          j        j        fd„Šˆfd„}ddlm} t          t          ‰ j        j	        ¦  «        ¦  «        D ]¯}t          t          |j        ¦  «        ¦  «        dk    rˆ|j        dk    sh|j        d	k    r|j        t          j        u sJ|j        d	k    r)|j        t           j        u r ||j        d         ¦  «        s ||¦  «        s ||¦  «        r‰                      |¦  «         Œ°d
„ }ˆ fd„}t)          ¦   «         Šdt*          t           j        t           j        f         fd„Šg }‰ j        D �]—} ||¦  «        d u}|r|j        s|                     |¦  «         Œ/|j        s,t5          |j        d         t8          ¦  «        s ||¦  «         Œb|j        d         }	t5          |	t8          ¦  «        rŒ…t5          |j        d         j        t           j        ¦  «        rÇ|j        d         j        }
|j        d         j        }t           j         j!         "                    |
¦  «        s}tG          |
 $                    ¦   «         ¦  «        }| %                    ¦   «         D ]G}tM          |j'        |¦  «        }tQ          j)        t           j        t           j        fˆˆfd„|¦  «         ŒH�Œv|	j*        �|	j*        n|	j        } ‰‰|¦  «         �Œ™|D ]4} ||¦  «        }|�%|‰vr ||¦  «         Œ‰ +                    |¦  «         Œ5d S )NÚb_nodec                 ó   — | du rdS t          | t          j        ¦  «        sdS | j                             d¦  «        }|€dS |du rdS t          |t
          j        ¦  «        r|j                             ¦   «         x}�|S dS )NTFrB  )	r-  r   ÚNoder@  r]  r·   ÚSymBoolr?  Úmaybe_as_bool)r	  ÚbÚrs      ru   Úis_static_truez;OutputGraph.remove_unused_graphargs.<locals>.is_static_true  s�   € Ø˜ˆ~ˆ~Ø�tÝ˜f¥b¤gÑ.Ô.ð Ø�uØ”—’ Ñ0Ô0ˆAØˆyØ�uØ�DˆyˆyØ�tå˜1�eœmÑ,Ô,ðàœ&×.Ò.Ñ0Ô0Ð0�QÐ=à�ð �5rt   Úac                 óÞ   — ddl m} t          | t          t          t
          f¦  «        rdS t          | t          j        ¦  «        r(t          | j         	                    d¦  «        |¦  «        S dS )Nr   ©ÚSymTypesTrB  F)
Útorch.fx.experimental.sym_noder  r-  rq   r.  rž   r   r  r@  r]  )r  r  s     ru   Úis_symnode_argz;OutputGraph.remove_unused_graphargs.<locals>.is_symnode_arg  sj   € Ø?Ð?Ð?Ð?Ð?Ð?å˜!�c¥5­$Ð/Ñ0Ô0ð Ø�tÝ˜!�RœWÑ%Ô%ð IÝ! !¤&§*¢*¨_Ñ"=Ô"=¸xÑHÔHÐHØ�5rt   c                 ó.  •— ddl m} | j        dk    rdS t          | j                             d¦  «        |¦  «        sdS t          ˆfd„| j        D ¦   «         ¦  «        sdS t          ˆfd„| j         	                    ¦   «         D ¦   «         ¦  «        sdS dS )	Nr   r  rX  FrB  c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S ry   rs   ©r¢   r  r  s     €ru   r  zWOutputGraph.remove_unused_graphargs.<locals>.is_symnode_compute_node.<locals>.<genexpr>.  s-   øè è € Ð<Ð<¨Q�~�~ aÑ(Ô(Ð<Ð<Ð<Ð<Ð<Ð<rt   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S ry   rs   r  s     €ru   r  zWOutputGraph.remove_unused_graphargs.<locals>.is_symnode_compute_node.<locals>.<genexpr>0  s-   øè è € ÐGÐG¨Q�~�~ aÑ(Ô(ÐGÐGÐGÐGÐGÐGrt   T)
r  r  rÚ  r-  r@  r]  rB  r¤   r¥   rý  )r?  r  r  s     €ru   Úis_symnode_compute_nodezDOutputGraph.remove_unused_graphargs.<locals>.is_symnode_compute_node#  s·   ø€ Ø?Ð?Ð?Ð?Ð?Ð?àŒw˜/Ò)Ð)Ø�uå˜dœiŸmšm¨OÑ<Ô<¸hÑGÔGð Ø�uõ Ð<Ð<Ð<Ð<°$´)Ð<Ñ<Ô<Ñ<Ô<ð Ø�uÝÐGÐGÐGÐG°$´+×2DÒ2DÑ2FÔ2FÐGÑGÔGÑGÔGð Ø�uØ�4rt   r   )Úis_accessor_noderÑ  rX  c                 óÂ   — | j         d         }|j        }t          |t          j        ¦  «        r0t          |j        j        t          j        ¦  «        r|j        j        S d S ©Nr;  )	r@  r  r-  r·   rë  r?  ÚexprÚsympyÚSymbol)r?  r  r  s      ru   Úplaceholder_binds_symbolzEOutputGraph.remove_unused_graphargs.<locals>.placeholder_binds_symbolE  sX   € Ø”)˜JÔ'ˆCØ”kˆGÝ˜'¥5¤<Ñ0Ô0ð )µZØ”Ô!¥5¤<ñ6ô 6ð )ð ”|Ô(Ð(Ø�4rt   c                 óò   •— t                                d| j        d         j                             ¦   «         ¦  «         | j        d= ‰                     | ¦  «         ‰j                             | d ¦  «         d S )NzREMOVE UNUSED GRAPHARG %sr;  )r�   rA  r@  rm   r6  r�  rw  r‡  )r?  r|   s    €ru   Úremove_unusedz:OutputGraph.remove_unused_graphargs.<locals>.remove_unusedN  sm   ø€ Ý�IŠIÐ1°4´9¸ZÔ3HÔ3O×3TÒ3TÑ3VÔ3VÑWÔWÐWð ”	˜*Ð%Ø×Ò˜TÑ"Ô"Ð"ØÔ!×%Ò% d¨DÑ1Ô1Ð1Ð1Ð1rt   Úfakec                 ó*   — | t          |¦  «        z  } d S ry   )r   )Úused_symbolsr%  s     ru   Úupdate_used_symbolsz@OutputGraph.remove_unused_graphargs.<locals>.update_used_symbolsX  s   € Ø�L¨Ñ.Ô.Ñ.ˆLˆLˆLrt   r;  c                 ó   •—  ‰‰| ¦  «        S ry   rs   )Útr(  r'  s    €€ru   rR  z5OutputGraph.remove_unused_graphargs.<locals>.<lambda>y  s   ø€ Ð.AÐ.AÀ,ÐPQÑ.RÔ.R€ rt   ),r  r   r?  ÚArgumentÚ%torch.fx.experimental.symbolic_shapesr  rf  r  re   r³  r3  ÚusersrÚ  rÍ  ÚoperatorÚgetitemr·   Ú_checkr¤   r�  rò   r   rë  rÑ   rÜ  r˜   r-  r@  rW   r  ÚScriptObjectÚexample_strong_refÚ_libraryÚfake_class_registryÚtracing_with_realr
  Ú__obj_flatten__rº  r¹  Úwrapped_objÚpytreeÚtree_map_onlyÚfake_tensorÚremove)r|   r  r  r  r?  r"  r$  Úrecheck_placeholdersÚbinds_symbolr  Úreal_script_objÚfake_script_objÚ	flat_dictÚattrÚfake_attr_valr%  Úsymbolr  r(  r'  s   `                @@@ru   rÆ  z#OutputGraph.remove_unused_graphargs÷  só  øøøø€ ð ÔÐÐÐð	¥2¤7Ô#3ð 	ð 	ð 	ð 	ð&	�bœgÔ.ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð" 	KÐJÐJÐJÐJÐJå�T $¤*Ô"2Ñ3Ô3Ñ4Ô4ð 	+ð 	+ˆDÝ•4˜œ
Ñ#Ô#Ñ$Ô$¨Ò)Ð)à”G˜zÒ)Ð)Øœ ?Ò2Ð2°t´{ÅhÔFVÐ7VÐ7Vàœ ?Ò2Ð2Ø œK­5¬<Ð7Ð7Ø*˜N¨4¬9°Q¬<Ñ8Ô8ð 8ð /Ð.¨tÑ4Ô4ð 8ð (Ð'¨Ñ-Ô-ð	 8ð ×$Ò$ TÑ*Ô*Ð*øð	ð 	ð 	ð	2ð 	2ð 	2ð 	2ð 	2õ +.©%¬%ˆð	/µE½%¼,ÍÌÐ:TÔ4Uð 	/ð 	/ð 	/ð 	/ð  "ÐØÔ%ð $	<ñ $	<ˆDØ3Ð3°DÑ9Ô9ÀÐEˆLàð !<Ø”zð 6Ø(×/Ò/°Ñ5Ô5Ð5øà”zð <­*Ø”I˜jÔ)Õ+@ñ+ô +ð <ð "�M $Ñ'Ô'Ð'Ð'ð œ) JÔ/�CÝ! #Õ'<Ñ=Ô=ð !Ø Ý! $¤)¨JÔ"7Ô"?ÅÔASÑTÔTð !Ø*.¬)°JÔ*?Ô*G˜Ø*.¬)°JÔ*?Ô*R˜Ý$œ~ÔA×SÒSØ+ñ ô  ð "õ )-¨_×-LÒ-LÑ-NÔ-NÑ(OÔ(O˜IØ(1¯ªÑ(8Ô(8ð "ð " Ý07Ø$3Ô$?Àñ1"ô 1" õ !'Ô 4Ý%*¤\µ5´<Ð$@Ø$RÐ$RÐ$RÐ$RÐ$RØ$1ñ!"ô !"ð !"ð !"ñ
 !à+.¬?Ð+F˜œ˜ÈCÌKð ð (Ð'¨°dÑ;Ô;Ð;Ñ;ð )ð 	0ð 	0ˆDØ-Ð-¨dÑ3Ô3ˆFØÐ!Ø Ð-Ð-Ø!�M $Ñ'Ô'Ð'Ð'ð !×'Ò'¨Ñ/Ô/Ð/øð	0ð 	0rt   r5  c                 óH   — | j                              |¦  «         d| _        dS )zt
        We call this on the creation of a new compiled subgraph that is inserted
        before user code.
        TN)r  rZ  r  )r|   r5  s     ru   r!  z#OutputGraph.add_output_instructionsŒ  s)   € ð
 	Ô ×'Ò'¨Ñ/Ô/Ð/ØˆÔÐÐrt   c                 ó¶   — || j         vsJ ‚| j                              |¦  «         | j                             t	          j        | j        ||¦  «        ¦  «         dS )a`  
        WARNING: prefer the safer `install_global_by_id/install_global`.
        torch.compile instances should be independent of each other;
        one footgun is to have one instance depend on the existence of
        a global installed by another instance. This can happen if we mangle
        a global the same way across both instances.
        N)ró   r†   r  r˜   rG   rW  rØ   )r|   r6  r�   s      ru   rË  z!OutputGraph.install_global_unsafe”  s]   € ð ˜4Ô1Ð1Ð1Ð1Ð1ØÔ×"Ò" 4Ñ(Ô(Ð(ØŒ×Ò�[Ô/°Ô0AÀ4ÈÑOÔOÑPÔPÐPÐPÐPrt   c                 ó€   — |› dt          |¦  «        › d| j        › �}|| j        v r|S |                      ||¦  «         |S )z¹
        Installs a global if it hasn't been installed already.
        This is determined by (prefix, id(value)) pair.

        Returns the name of the newly installed global.
        rÀ  Ú_c)r€   rñ   ró   rË  ©r|   r5  r�   r6  s       ru   Úinstall_global_by_idz OutputGraph.install_global_by_id   sU   € ð Ð9Ð9�2˜e™9œ9Ð9Ð9¨¬Ð9Ð9ˆØ�4Ô)Ð)Ð)ØˆKØ×"Ò" 4¨Ñ/Ô/Ð/Øˆrt   c                 óP   — t          |¦  «        }|                      ||¦  «         |S )z~
        Installs a global, generating a unique name for it.

        Returns the name of the newly installed global.
        )r(   rË  rH  s       ru   r/  zOutputGraph.install_global¯  s,   € õ ˜Ñ Ô ˆØ×"Ò" 4¨Ñ/Ô/Ð/Øˆrt   c                 óˆ  — d | _         | j                             ¦   «          d | _        | j        j        D ]}d|j        v r|j        d= Œ| j                             ¦   «          | j                             ¦   «          | j	                             ¦   «          | j
                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          | j                             ¦   «          d S r  )r  r¬   rŒ   r  re   r³  r@  rw  ru  r  r  r  r  rü   rê   r  r!  ©r|   r?  s     ru   ÚcleanupzOutputGraph.cleanupº  s+  € ð ˆŒØŒ×ÒÑÔÐØ$(ˆÔ!à”JÔ$ð 	*ð 	*ˆDØ˜TœYÐ&Ð&Ø”I˜jÐ)øØÔ×#Ò#Ñ%Ô%Ð%ØÔ ×&Ò&Ñ(Ô(Ð(ØÔ×ÒÑ!Ô!Ð!ØÔ#×)Ò)Ñ+Ô+Ð+ØÔ#×)Ò)Ñ+Ô+Ð+ØÔ-×3Ò3Ñ5Ô5Ð5ØÔ×"Ò"Ñ$Ô$Ð$ØÔ ×&Ò&Ñ(Ô(Ð(ØÔ ×&Ò&Ñ(Ô(Ð(ØÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#rt   Úenabledc                 ó   — || _         d S ry   )r  )r|   rN  s     ru   rž  z$OutputGraph.set_torch_function_stateÏ  s   € Ø&-ˆÔ#Ð#Ð#rt   rÓ  c                 ó:   — | j                              |¦  «         d S ry   )r  r˜   )r|   rÓ  s     ru   Úadd_graph_finalizerzOutputGraph.add_graph_finalizerÒ  s"   € ð 	Ô#×*Ò*Ð+=Ñ>Ô>Ð>Ð>Ð>rt   r?  c                 óz   — |j         dk    r|j        d         j        S |j         dk    sJ ‚| j        |j                 S )z#Extract the non-fake example tensorrÙ  r;  rÑ  )rÚ  r@  r  r¬   rÍ  rL  s     ru   Úexample_value_from_input_nodez)OutputGraph.example_value_from_input_node×  sA   € àŒ7�mÒ#Ð#Ø”9˜ZÔ(Ô0Ð0ØŒw˜*Ò$Ð$Ð$Ð$ØŒ˜tœ{Ô+Ð+rt   )r1  ry   )r½  ©FN)r´   N)^rn   ro   rp   rš   r   r›   r   r	   r#   rž   ÚScoper}   r$  rV   r7  r4  rÿ   rb  r   rd  rg  Úpropertyr<  rn  rp  re   Úsetterru  rw  ry  r{  r~  r�  Ú
contextlibÚcontextmanagerr‹  r�  r)  ræ   r·   rÀ  Ú	GuardsSetrD  r¬   r  r¬  r®  r°  rI   r´  r¼  rA  rÅ  ÚstaticmethodrÌ  r   r¸   r¹   rÑ   ró  r  r“   rf  rQ  rH  rƒ  r‹  r‘  rU  rP  r   r   r  rÜ  rX   r  rÐ   r"   rÈ  rç  rK  r  rÁ   rÆ  r'   r!  rË  rI  r/  rM  rž  rQ  rS  rº   r»   s   @ru   rÓ   rÓ   ø   s¹  ø€ € € € € ðð ðt2à˜3 ˜8”nðt2ð ˜jÔ)ðt2ð
 ðt2ð ðt2ð ðt2ð t2ð t2ð t2ð t2ð t2ðlDð Dð Dð&5ð 5¨Oð 5ð 5ð 5ð 5ð)ð )ð )ð ð ð ð.ð ð ð0& 8¨B°¨GÔ#4ð &ð &ð &ð &ð#ð #ð #ð
 ðð ñ „Xðð ð ð  ñ „Xð ð&ð &ð &ð ð)ð )ñ „Xð)ð „\ð*ð *ñ „\ð*ð ð7ð 7ñ „Xð7ð ð4ð 4ñ „Xð4ð ð1ð 1ñ „Xð1ðAð Að Að@ð @ð @ð@ð @ð @ð Ôðð ñ Ôðð. ðð ñ „Xðð ð.ð .ñ „Xð.ð ð8ð 8ñ „Xð8ð ðA˜œÔ/ð Að Að Añ „XðAð ð>˜D  c œNð >ð >ð >ñ „Xð>ð*
ð *
ð *
ð *
ðX$ð $ð $ð&ð &ð &ð ðNð Nñ „XðNð'ð 'ð 'ð0ð 0ð 0ðð ð ðð ð ð ð5ð 5ð 5ð
 ðð ñ „\ððL,à�e”h”o u¤|°SÐ8Ô9ðL,ð L,ð L,ð L,ð\T/ð T/ð T/ðn QUðUð UØ19Ð:LÔ1MðUð Uð Uð Uðn5ð 5ð 5ð01ð 1ð 1ð<ð ð ð Cð ð ð ð ð2 Ôðð ñ Ôðð"7ð 7ð 7ð*t)ð t)ð t)ðl ð7˜d 2¤7œmð 7ð 7ð 7ñ „Xð7ð ðE˜4 œ>ð Eð Eð Eñ „XðEð0 R¤^ð 0¸
ð 0ð 0ð 0ð 0ð@ b¤nð @¸ð @ð @ð @ð @ðDð ð ðð ð ð"  U¤\Ô 2ð ð ð ð ðS0ð S0ð S0ð S0ðj ¨d°;Ô.?ð  ÀDð  ð  ð  ð  ð
Qð 
Qð 
Qð 
Qð°Sð ð ð ð ð	¨sð 	ð 	ð 	ð 	ð$ð $ð $ð $ð*.°ð .¸ð .ð .ð .ð .ð?Ø"*¨B¬NÐ+;¸TÐ+AÔ"Bð?à	ð?ð ?ð ?ð ?ð
,°%´(´-ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,rt   rÓ   a  With the current config, we will graph break (and fall back to eager-mode PyTorch) on all ops that have do not have the 'pt2_compliant_tag'. Please see the following doc for how to mark this op as PT2 compliant https://pytorch.org/tutorials/advanced/custom_ops_landing_page.htmlc                 ó¶  ‡ — |dk    rd S ˆ fd„}ˆ fd„}t          |t          j        j        ¦  «        r7t          j        j        |j        v r ||¦  «         d S  ||d|› d�¦  «         d S t          |t          j        j        ¦  «        �rOt          | 	                    ¦   «         ¦  «        }t          |¦  «        dk    rMt          ||d         ¦  «        }t          j        j        |j        v r ||¦  «         d S  ||d|› d	�¦  «         d S t          j        j                             ‰ j        ||fd
¦  «        \  }}	 t          j        j        |j        g|¢R i |¤Ž}	n3# t&          $ r&}
t)          t+          |
¦  «        ¦  «         Y d }
~
nd }
~
ww xY wt          ||	¦  «        }t          j        j        |j        v r ||¦  «         d S  ||d|› d|	› d�¦  «         d S d S )NrX  c                 óR   •— | j         dv rd S ‰j                             | ¦  «         d S )N>   ÚatenÚprimÚprims)Ú	namespacer  r†   )rÍ  Úoutput_graphs    €ru   Úencountered_compliant_opz8check_pt2_compliant_op.<locals>.encountered_compliant_opì  s4   ø€ ØÔÐ8Ð8Ð8ØˆFØÔ)×-Ò-¨fÑ5Ô5Ð5Ð5Ð5rt   c                 óŒ   •— ‰j                              | ¦  «         t          j        rt	          |dz   t
          z   ¦  «         d S d S )Nú )r  r†   r   Úonly_allow_pt2_compliant_opsr/   Úerr_epilogue)rÍ  rü  rb  s     €ru   Úencountered_non_compliant_opz<check_pt2_compliant_op.<locals>.encountered_non_compliant_opñ  sL   ø€ ØÔ&×*Ò*¨6Ñ2Ô2Ð2ÝÔ.ð 	4Ý˜# ™)¥lÑ2Ñ3Ô3Ð3Ð3Ð3ð	4ð 	4rt   z%Encountered the torch.ops.OpOverload z that is not PT2 compliant.r   r   z:Encountered the non-overloaded torch.ops.OpOverloadPacket z that is not PT2 compliant. Fz+Encountered the torch.ops.OpOverloadPacket z! which resolves to the overload (z) that is not PT2 compliant.)r-  r·   Ú_opsÚ
OpOverloadÚTagÚpt2_compliant_tagÚtagsÚOpOverloadPacketrw  Ú	overloadsr3  r¹  rþ  ÚutilsÚget_fake_values_from_nodesr°  r  Ú_jit_resolve_packetÚ_qualified_op_namerÉ   r/   r›   )rb  ÚkindrÍ  r¤   r¥   rc  rh  ro  rÚ  Úoverloadrû  s   `          ru   Úcheck_pt2_compliant_oprv  è  s£  ø€ ØˆÒÐØˆð6ð 6ð 6ð 6ð 6ð
4ð 4ð 4ð 4ð 4õ
 �&�%œ*Ô/Ñ0Ô0ð 	ÝŒ9Ô&¨&¬+Ð5Ð5Ø$Ð$ VÑ,Ô,Ð,ØˆFØ$Ð$Øð*°Fð *ð *ð *ñ	
ô 	
ð 	
ð
 	ˆå�&�%œ*Ô5Ñ6Ô6ñ $Ý˜&×*Ò*Ñ,Ô,Ñ-Ô-ˆ	õ ˆy‰>Œ>˜QÒÐÝ˜ ¨1¤Ñ.Ô.ˆBÝŒyÔ*¨b¬gÐ5Ð5Ø(Ð(¨Ñ,Ô,Ð,Ø�Ø(Ð(Øð/Ø.4ð/ð /ð /ñô ð ð ˆFå”}Ô*×EÒEØÔ# d¨F ^°Uñ
ô 
‰ˆˆfð	"Ý”xÔ3ØÔ)ðØ,0ðð ð Ø4:ðð ˆHˆHøõ ð 	"ð 	"ð 	"Ý�#˜a™&œ&Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!øøøøð	"øøøõ �V˜XÑ&Ô&ˆÝŒ9Ô&¨"¬'Ð1Ð1Ø$Ð$ RÑ(Ô(Ð(Ð(Ð(à(Ð(Øð&¸fð &ð &Ø3;ð&ð &ð &ñô ð ð ð ð?$ð $s   Ä<E Å
FÅ&FÆFc                   ó   — e Zd Zd„ Zd„ ZdS )Ú	LazyProxyc                 ó>   — || _         || _        || _        || _        d S ry   )rŠ  r£   r¤   r¥   )r|   rŠ  r£   r¤   r¥   s        ru   r}   zLazyProxy.__init__,  s"   € ØˆŒØˆŒØˆŒ	ØˆŒˆˆrt   c                 ó0   —  | j         | j        i | j        ¤ŽS ry   )r£   r¤   r¥   r{   s    ru   rÏ   zLazyProxy.__call__2  s   € ØˆtŒw˜œ	Ð1 T¤[Ð1Ð1Ð1rt   N)rn   ro   rp   r}   rÏ   rs   rt   ru   rx  rx  +  s2   € € € € € ðð ð ð2ð 2ð 2ð 2ð 2rt   rx  c                   ó  ‡ — e Zd ZdZdˆ fd„	Zd„ Z	 	 	 dˆ fd„	Z	 dˆ fd„	Zd„ Z	 dd	„Z	d
„ Z
d„ Zdeeej        j        f         fd„Zdeej        ej        f         dee         fd„Zdej        deej                 fd„Zˆ xZS )rè   a  
    Holds an FX graph that is being traced. OutputGraph owns a SubgraphTracer
    and the separation of responsibilities is that SubgraphTracer is
    responsible for building the graph while OutputGraph is responsible for
    compiling and executing the graph.
    NFc                 ó  •— t          ¦   «                              ¦   «          t          j        |¦  «        | _        t
          j                             ¦   «         | _        || _	        i | _
        i | _        || _        i | _        i | _        d | _        d| _        d| _        |�
|j        dz   nd| _        d | _        d | _        d | _        d | _        | j        €	g | _        d S | j        j        | j                             |¦  «        |fgz   | _        d S )NFr   r   )r®   r}   ÚweakrefrÖ  rb  r·   r   ÚGraphre   rÚ   ru  rw  rƒ  Úlifted_freevarsry  Ú	prev_instÚunder_activation_checkpointÚ#allow_side_effects_under_checkpointÚdebug_levelÚ	_cur_codeÚ_orig_gm_metaÚ_orig_gm_lineno_mapÚ_orig_gm_firstlinenoÚsource_fn_stackÚ_target_to_str)r|   rb  rƒ  rÚ   r„  r³   s        €ru   r}   zSubgraphTracer.__init__>  s  ø€ Ý‰Œ×ÒÑÔÐÝ#œM¨,Ñ7Ô7ˆÔÝ”X—^’^Ñ%Ô%ˆŒ
ð #ˆŒð 9;ˆÔ à=?ˆÔð ˆŒð  "ˆÔð TVˆÔàˆŒð ,1ˆÔ(ð
 49ˆÔ0à:@Ð:L Ô 2°QÑ 6Ð 6ÐRSˆÔàˆŒØ!ˆÔØ#'ˆÔ Ø$(ˆÔ!ð
 Œ;ÐØ#%ˆDÔ Ð Ð à#'¤;Ô#>Ø”×*Ò*¨=Ñ9Ô9¸=ÐIðBñ $ˆDÔ Ð Ð rt   c                 ó@  — | j         rŽ| j        r‰| j        r„|j        j        }d }|�#| j                             || j        z
  d ¦  «        }|�Q| j         |         }t          j        j        D ]}||v r||         |j	        |<   Œd|v r|d         |j	        d<   d S d S d S d S d S d S )NÚstack_trace)
r…  r†  r‡  Úcurrent_instructionÚstarts_liner]  r   rÖ  Ú_COPY_META_FIELDSr@  )r|   r«  r?  ÚlinenoÚnode_idxr@  Úfields          ru   rÄ  z,SubgraphTracer._maybe_preserve_original_meta  sþ   € àÔð	CàÔ(ð	Cð Ô)ð	Cð
 Ô+Ô7ˆFØˆHØÐ!ØÔ3×7Ò7Ø˜TÔ6Ñ6¸ñô �ð Ð#ØÔ)¨(Ô3�ÝœXÔ7ð 7ð 7�EØ �}�}Ø+/°¬;˜œ	 %Ñ(øØ  DÐ(Ð(Ø/3°MÔ/B�D”I˜mÑ,Ð,Ð,ð#	Cð 	Cð 	Cð 	Cð 	Cð 	Cð $Ð#ð
 )Ð(rt   c           	      ó’	  •‡‡‡‡‡— | j         �bt          j        ||f¦  «        \  }}	g }
|D ],}|                      |¦  «        }|
                     |¦  «         Œ-t          j        |
|	¦  «        \  }}t          ¦   «                              |‰|||||¦  «        Š| j        j	        }t          j        dk    r…|dv r�|j        Š‰| j        urq‰j        �j‰j        j        �^|j        Š|                     ‰j        j        ¬¦  «        Šˆˆˆˆfd„}t$                               dt)          |¦  «        ¦  «         ‰| _        d}|j        | j        urª t-          j        |j        ¦  «                             dd„ ¦  «        ¦   «         }t3          |t4          j        j        ¦  «        r@d	}d
„ |j        j        D ¦   «         | _        |j         | _!        |j"        j#        j$        | _%        nd | _        d | _!        d | _%        |j&        }|r!| '                    ¦   «         ‰j(        j)        d<   |dv r%| j*        ‰j(        j+        ‰fgz   ‰j(        j)        d<   n{|dk    ru| j         �tY          d¦  «         | j*        ‰j(        j+        t[          ˆfd„‰j(        j)        d          .                    ¦   «         D ¦   «         ¦  «        fgz   ‰j(        j)        d<   |  /                    |‰j(        ¦  «         |sËd‰j(        j)        vr*|j&        }|r!| '                    ¦   «         ‰j(        j)        d<   d‰j(        j)        vr…|dv r%| j*        ‰j(        j+        ‰fgz   ‰j(        j)        d<   n\|dk    rV| j         �tY          d¦  «         | j*        ‰j(        j+        ‰j(        j)        d         ‰         d         fgz   ‰j(        j)        d<   d‰j(        j)        vr¶g }|rN| 0                    ¦   «         s'|                     | 1                    ¦   «         ¦  «         te          |dd ¦  «        }|°N| 3                    ¦   «          th          j5         6                    |¦  «         7                    ¦   «         }d 8                    |¦  «        ‰j(        _9        t4          j:        j;        j<        st4          j:        j;        j=        r/| j        j>         ?                    | j        j	        ‰j(        ¦  «         ‰S )Nr  ré  )r�  c                  ór   •— t          ‰‰¦  «                             ¦   «         } d‰j        j        › d‰› d| › �S )NzTRACE FX call z from r…  )rL   Úrstripr?  r6  )ÚlineÚcur_instÚheaderrÍ  Útx_codes    €€€€ru   Úget_trace_call_log_strz;SubgraphTracer.create_proxy.<locals>.get_trace_call_log_strÝ  s@   ø€ Ý5°g¸xÑHÔH×OÒOÑQÔQ�DØP¨B¬G¬LÐPÐPÀÐPÐPÈ$ÐPÐPÐPrt   r²  FÚorig_graphmodulec                  ó   — d S ry   rs   rs   rt   ru   rR  z-SubgraphTracer.create_proxy.<locals>.<lambda>è  s   € ¨D€ rt   Tc                 ó   — g | ]	}|j         ‘Œ
S rs   rß  )r¢   Únds     ru   r¦   z/SubgraphTracer.create_proxy.<locals>.<listcomp>ì  s'   € ð &ð &ð &Ø "�B”Gð&ð &ð &rt   Únn_module_stack>   rê  rX  rˆ  rë  z0Invoking an nn.Module inside HigherOrderOperatorc              3   óf   •K  — | ]+\  }\  }}|                      d ¦  «        d         ‰k    ¯'|V — Œ,dS )ú@r   N)r¸  )r¢   r±   rÀ  ÚtyrÍ  s       €ru   r  z.SubgraphTracer.create_proxy.<locals>.<genexpr>  sP   øè è € ð ð á&˜A™w  2ØŸ7š7 3™<œ<¨œ?¨fÒ4Ð4ð à4Ð4Ð4Ð4ðð rt   r   r‹  rƒ  rì  )@rƒ  r8  Útree_flattenÚ#maybe_lift_tracked_freevar_to_inputr˜   Útree_unflattenr®   r{  rb  r°  rD  rE  rŒ  r€  Ú	positionsr�  r'  Úget_line_of_code_headerÚtrace_call_logrA  rR   r„  r)   Úget_contextr]  r-  r·   r   rÐ   re   r³  r…  Ú_lineno_mapr†  rÇ   Ú__code__rÝ   r‡  rž  rÄ   r?  r@  rˆ  r6  r/   rï   r¯   rÄ  Úis_co_filename_from_nn_modulesÚframe_summaryr¹  Úreverserœ   ÚStackSummaryÚ	from_listÚformatrÈ  r‹  rþ  r   rÿ  Útrack_nodes_for_deduplicationrô   Ú
track_node)r|   rt  rÍ  r¤   r¥   r6  Ú	type_exprÚproxy_factory_fnÚ	flat_argsÚ	tree_specÚnew_flat_argsr  Úmaybe_new_argr«  r™  Úis_retracingÚorig_graphmodule_mayberž  Úframe_summariesÚmsgsr–  r—  rÍ  r˜  r³   s     `                 @@@@€ru   r{  zSubgraphTracer.create_proxy“  sl  øøøøøø€ ðV Œ;Ð"Ý#)Ô#6¸¸f°~Ñ#FÔ#FÑ ˆI�yØˆMØ ð 4ð 4�Ø $× HÒ HÈÑ MÔ M�Ø×$Ò$ ]Ñ3Ô3Ð3Ð3å!Ô0°À	ÑJÔJ‰LˆD�&å‰WŒW×!Ò!Ø�&˜$ ¨¨iÐ9Iñ
ô 
ˆð
 ÔÔ)ˆõ Ô˜wÒ&Ð&¨4ð 4
ð ,
ð ,
ð
 Ô-ˆHà ¤Ð.Ð.ØÔ&Ð2ØÔ&Ô-Ð9àœ)�Ø×3Ò3¸8Ô;MÔ;TÐ3ÑUÔU�ðQð Qð Qð Qð Qð Qð Qð Qõ ×$Ò$ T­:Ð6LÑ+MÔ+MÑNÔNÐNØ!)�”ð ˆØŒ9˜DœNÐ*Ð*ð&¥\Ô%=¸b¼iÑ%HÔ%H×%LÒ%LØ" L Lñ&ô &ñ &ô &Ð"õ Ð0µ%´(Ô2FÑGÔGð 1Ø#�ð&ð &Ø&<Ô&BÔ&Hð&ñ &ô &�Ô"ð ,BÔ+M�Ô(à*Ô2Ô;ÔJð Ô)Ð)ð &*�Ô"Ø+/�Ô(Ø,0�Ô)ØÔ,ˆØð 	EØ.=×.BÒ.BÑ.DÔ.DˆBŒGŒLÐ*Ñ+àÐ3Ð3Ð3Ø.2Ô.BØ””˜vÐ&ðFñ /ˆBŒGŒLÐ*Ñ+Ð+ð �]Ò"Ð"ØŒ{Ð&ÝÐPÑQÔQÐQà.2Ô.Bà”G”LÝð ð ð ð à*,¬'¬,Ð7HÔ*I×*OÒ*OÑ*QÔ*Qðñ ô ñ ô ðð	Fñ 	/ˆBŒGŒLÐ*Ñ+ð 	×*Ò*¨2¨r¬wÑ7Ô7Ð7àð 	Ø ¨¬¬Ð4Ð4Ø"$Ô"4�Ø"ð MØ6E×6JÒ6JÑ6LÔ6L�B”G”LÐ!2Ñ3à ¨¬¬Ð4Ð4ØÐ;Ð;Ð;Ø6:Ô6JØœœ vÐ.ðNñ 7�B”G”LÐ!2Ñ3Ð3ð ˜]Ò*Ð*Ø”{Ð.Ý%ØNñô ð ð 7;Ô6JàœGœLØœGœLÐ):Ô;¸FÔCÀAÔFððNñ 7�B”G”LÐ!2Ñ3ð  ¤¤Ð,Ð,Ø<>ˆOØð 1ð ×8Ò8Ñ:Ô:ð ?Ø#×*Ò*¨2×+;Ò+;Ñ+=Ô+=Ñ>Ô>Ð>Ý˜R ¨4Ñ0Ô0�ð ð 1ð ×#Ò#Ñ%Ô%Ð%õ Ô)×3Ò3°OÑDÔD×KÒKÑMÔMˆDØ"$§'¢'¨$¡-¤-ˆBŒGÔõ ŒMÔ Ô8ð	åŒ}Ô#ÔAð	ð ÔÔ,×7Ò7ØÔ!Ô,¨b¬gñô ð ð ˆ	rt   c                 óZ  •— t          | j        ||||¦  «         | j        �Pt          j        |i |¤Ž}|D ]<}t          |t          j        j        ¦  «        sŒ"|j	        | j	        k    s
J d¦   «         ‚Œ=t          ¦   «                              ||||||¦  «        }	| j        j        |	j        d<   |	S )Nz2create_node using arg not from this SubgraphTracerrt  )rv  rb  rƒ  r8  Úarg_tree_leavesr-  r·   r   r  re   r®   r~  r  r@  )r|   rÚ  rÍ  r¤   r¥   r6  r³  rµ  r  r?  r³   s             €ru   r~  zSubgraphTracer.create_node@  sÃ   ø€ õ 	˜tÔ0°"°f¸dÀFÑKÔKÐKØŒ;Ð"ÝÔ.°Ð?¸Ð?Ð?ˆIØ ð Hð H�Ý! #¥u¤x¤}Ñ5Ô5ð Øà”I ¤Ò+Ð+Ð+ØGñ ,Ô+Ð+Ð+õ ‰wŒw×"Ò" 2 v¨t°V¸TÀ9ÑMÔMˆØ*.Ô*;Ô*EˆŒ	Ð&Ñ'Øˆrt   c                 ó¶  — t          |j        ¦  «        dk    r†g }|j                             ¦   «         D ]K}|j        | j        k    r9|                     t          t          |j        j        ¦  «        ¦  «        ¦  «         ŒL|D ]}|j                             |¦  «         Œ| j                             |¦  «         | j	         
                    |j        d ¦  «         d S ri  )r3  r-  rº  re   rZ  rf  r  r³  ry  ru  r‡  r6  )r|   r?  Úuser_graph_nodesÚuserÚother_graph_nodes        ru   r�  zSubgraphTracer.remove_nodeS  sÙ   € ÝˆtŒz‰?Œ?˜QÒÐØ46ÐØœ
ŸšÑ)Ô)ð Nð N�ð ”: ¤Ò+Ð+ð %×+Ò+­HµT¸$¼*Ô:JÑ5KÔ5KÑ,LÔ,LÑMÔMÐMøØ$4ð Dð DÐ Ø Ô&×1Ò1Ð2BÑCÔCÐCÐCØŒ
×Ò˜dÑ#Ô#Ð#ØÔ ×$Ò$ T¤Y°Ñ5Ô5Ð5Ð5Ð5rt   c                 óf  — t                                d||�|                     ¦   «         nd|| j        |¦  «         |€| j        €J d|› d|› d�¦   «         ‚| j        r\| j        €Ut          |d¬¦  «        sD| j        j         	                    |g ¦  «         
                    t          j        ¦   «         ¦  «         || j        v r*t          j        ¦   «         D ]}|› d|› �}|| j        vr|} nŒ| j        rkt!          t#          | j        ¦  «        ¦  «        }| j        |         j        }	|r| j                             |	¦  «        }
n5| j                             |	¦  «        }
n| j                             d ¦  «        }
|
5  |                      d	|d
i |¬¦  «        }t/          |j        |¦  «         | j        r3|r1| j                             ¦   «         \  }}|| j        |<   || j        |<   n
|| j        |<   | j        }t2          j                             ¦   «         }|s2|s0t9          |t2          j        ¦  «        r|                      ||¦  «         t9          |t2          j        ¦  «        r8t9          |j        j         tB          j"        ¦  «        r|| j#        |j        j         <   |cd d d ¦  «         S # 1 swxY w Y   d S )Nz7create_graph_input %s %s %s at debug_level %s before=%sz(none)z0you are required to provide a source for inputs z example_val z on the root tracerT)Úonly_allow_inputrÀ  rÙ  rs   ©r³  )$r�   rA  r6  rƒ  rƒ  rÚ   r>   rb  r  Ú
setdefaultr˜   r   Úextract_stackru  r  r  rï   rf  r?  re   Úinserting_beforeÚinserting_afterr{  rU   Úpopitemr·   ÚcompilerÚis_compilingr-  rÑ   Ú_lift_basic_symbolsrë  r  r   r!  ry  )r|   r6  r³  rB  Úbeforerm   rò  Úcandidate_nameÚ	prev_namer?  ÚctxrÖ  r±   r²   Úis_strict_exportÚis_non_strict_exports                   ru   r=  z!SubgraphTracer.create_graph_inputi  sG  € õ 	�	Š	ØEØØ#Ð/ˆF�KŠK‰MŒMˆM°XØØÔØñ	
ô 	
ð 	
ð ˆ>à”Ð'Ð'ØwÀ$ÐwÐwÐUbÐwÐwÐwñ (Ô'Ð'ð Œ>ð 	˜dœkÐ1Ý'¨ÀÐFÑFÔFð ØÔ!Ô7×BÒBÀ6È2ÑNÔN×UÒUÝ"Ô0Ñ2Ô2ñô ð ð
 �4Ô+Ð+Ð+Ý”_Ñ&Ô&ð ð �Ø$(  ¨1  �Ø!¨Ô)AÐAÐAØ)�DØ�Eð Bð Ô#ð 	4Ý�X dÔ&>Ñ?Ô?Ñ@Ô@ˆIØÔ+¨IÔ6Ô;ˆDØð 7Ø”j×1Ò1°$Ñ7Ô7��à”j×0Ò0°Ñ6Ô6��à”*×-Ò-¨dÑ3Ô3ˆCØð /	ð /	Ø×%Ò% m°T¸2¸rÈYÐ%ÑWÔWˆEÝ˜eœj¨-Ñ8Ô8Ð8ØÔ'ð 7¨Fð 7ØÔ/×7Ò7Ñ9Ô9‘��1Ø16�Ô(¨Ñ.Ø./�Ô(¨Ñ+Ð+à16�Ô(¨Ñ.ð2  $œ~ÐÝ#(¤>×#>Ò#>Ñ#@Ô#@Ð à$ð@à,ð@õ ˜}­e¬lÑ;Ô;ð@ð
 ×(Ò(¨¸Ñ?Ô?Ð?õ ˜-­¬Ñ6Ô6ð D½:ØÔ"Ô'­¬ñ<ô <ð Dð ?D�Ô" =Ô#5Ô#:Ñ;Øð_/	ð /	ð /	ð /	ñ /	ô /	ð /	ð /	ð /	ð /	ð /	ð /	øøøð /	ð /	ð /	ð /	ð /	ð /	s   Å9D J&Ê&J*Ê-J*c                 óè  — | j         €
J d¦   «         ‚|j        j        d         }t          |t          j        ¦  «        r*|j        j        | j        v r| j        |j        j                 S || j        v r| j        |         S |j	        | j         k    r| j          
                    |¦  «         |j        j        d         }|                      |j        j        t          |¦  «        |¦  «        }|| j        |<   |S )NzIlift_tracked_freevar_to_input should not be called on root SubgraphTracerrB  )rƒ  r?  r@  r-  r·   rë  r  ry  r  rŠ  Úlift_tracked_freevar_to_inputr=  r6  r>  )r|   rÖ  rB  Ú	new_proxys       ru   rÕ  z,SubgraphTracer.lift_tracked_freevar_to_inputË  sû   € ð ŒKÐ#Ð#ØVñ $Ô#Ð#ð œ
œ¨Ô8ˆõ �}¥e¤lÑ3Ô3ð	?àÔ"Ô'¨4Ô+=Ð=Ð=àÔ% mÔ&8Ô&=Ô>Ð>ð
 �DÔ(Ð(Ð(ØÔ'¨Ô.Ð.ð
 Œ<˜4œ;Ò&Ð&ØŒK×5Ò5°eÑ<Ô<Ð<àœ
œ¨Ô8ˆØ×+Ò+ØŒJŒO�T -Ñ0Ô0°-ñ
ô 
ˆ	ð '0ˆÔ˜UÑ#ØÐrt   c                 ó  ‡ — t          |t          j        j        ¦  «        s>t          |t          ¦  «        r't	          ˆ fd„|j        |j        |j        fD ¦   «         Ž S |S |j        ‰ k    r|S ‰  	                    |¦  «        S )z£
        If arg is a free variable, then lift it to be an input.
        Returns the new lifted arg (if arg was a freevar), else the
        original arg.
        c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S ry   )r£  )r¢   Úsub_argr|   s     €ru   r  zESubgraphTracer.maybe_lift_tracked_freevar_to_input.<locals>.<genexpr> 	  sE   øè è € ð ð à#ð ×@Ò@ÀÑIÔIðð ð ð ð ð rt   )
r-  r·   r   ÚProxyÚsliceÚstartÚstopÚsteprŠ  rÕ  )r|   r  s   ` ru   r£  z2SubgraphTracer.maybe_lift_tracked_freevar_to_inputó  sœ   ø€ õ ˜#�uœxœ~Ñ.Ô.ð 	õ
 ˜#�uÑ%Ô%ð Ýðð ð ð à(+¬	°3´8¸S¼XÐ'Fðñ ô ðð ð �
ØŒZ˜4ÒÐØˆJØ×1Ò1°#Ñ6Ô6Ð6rt   Úe_proxyc                 ó<  ‡ ‡— |j         Št          ‰t          ¦  «        sJ ‚dt          fˆ fd„}ˆfd„}t          |t          j        ¦  «        �rt          |                     ¦   «         ¦  «        D ]ˆ\  }} ||¦  «        rxt           	                    d|||‰j
        ¦  «         t          ‰||dt          j        j        j        j        ||fi t!          |¦  «        ¬¦  «        }‰                      ||¦  «         Œ‰|j        t          j        u r¬t          |                     ¦   «         ¦  «        D ]ˆ\  }} ||¦  «        rxt           	                    d|||‰j
        ¦  «         t          ‰||dt          j        j        j        j        ||fi t!          |¦  «        ¬¦  «        }‰                      ||¦  «         Œ‰�nC|j        t          j        u rQ‰                      |                     ¦   «         |¦  «         ‰                      |                     ¦   «         |¦  «         nß|j        t          j        t          j        hv rQ‰                      |                     ¦   «         |¦  «         ‰                      |                     ¦   «         |¦  «         no|j        t          j        t          j        hv rP‰                      |                     ¦   «         |¦  «         ‰                      |                      ¦   «         |¦  «         tC          |¦  «        rP| "                    ¦   «         \  }}	|D ]8}
tG          ||
¦  «        }‰                      |tG          ||
¦  «        ¦  «         Œ7d S d S t          |t          j$        ¦  «        r# ||¦  «        r|j%        j&        }|‰j'        |<   d S d S d S )Nr´   c                 óæ   •— ddl m}  || ¦  «        o_t          | j        j        t
          j        ¦  «        o;| j        j                             | j        j        ¦  «        o| j        j        ‰j	        vS )Nr   )r   )
r,  r   r-  r?  r  r   r!  ræ   Úis_unbacked_symintry  )r  r   r|   s     €ru   Ú	need_bindz8SubgraphTracer.track_unbacked_symbols.<locals>.need_bind%	  st   ø€ ØIÐIÐIÐIÐIÐIð �˜A‘”ð :Ý˜qœvœ{­E¬LÑ9Ô9ð:à”FÔ$×7Ò7¸¼¼ÑDÔDð:ð ”F”K tÔ'9Ð9ð	rt   c                 óL   •—  ‰j         |i |¤Ž}t          |j        | ¦  «         |S ry   )r{  rU   r?  )rB  r¤   r¥   rÖ  rŠ  s       €ru   Ú_proxy_with_example_valuezHSubgraphTracer.track_unbacked_symbols.<locals>._proxy_with_example_value/	  s1   ø€ Ø'�FÔ'¨Ð8°Ð8Ð8ˆEÝ˜eœj¨-Ñ8Ô8Ð8ØˆLrt   z>_track_unbacked_symbols %s for %s.size()[%s] at debug_level %srX  rÅ  z@_track_unbacked_symbols %s for %s.stride()[%s] at debug_level %s)(rŠ  r-  rè   rž   r·   rÑ   Ú	enumerater�  r�   rA  rƒ  rx  Úopsr^  Úsym_sizerq   r>  Útrack_unbacked_symbolsÚlayoutÚstridedÚstrideÚ
sym_strideÚ
sparse_cooÚ_indicesÚ_valuesÚ
sparse_csrÚ
sparse_bsrÚcrow_indicesÚcol_indicesÚ
sparse_cscÚ
sparse_bscÚccol_indicesÚrow_indicesr   Ú__tensor_flatten__r¹  rë  r?  r  ry  )r|   rB  rß  rã  rå  rò  r  Ú
lazy_proxyÚattrsrÑ  rA  Úinner_tr  rŠ  s   `            @ru   ré  z%SubgraphTracer.track_unbacked_symbols	  sö  øø€ ð  ”ˆÝ˜&¥.Ñ1Ô1Ð1Ð1Ð1ð	�Dð 	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	õ
 �m¥U¤\Ñ2Ô2ñ >	5Ý! -×"4Ò"4Ñ"6Ô"6Ñ7Ô7ð ?ð ?‘��1Ø�9˜Q‘<”<ð ?Ý—I’IØXØØØØÔ*ñô ð õ "+ØØ1ØØ'Ýœ	œÔ/Ô3Ø  !˜ØÝ"& q¡'¤'ð	"ñ 	"ô 	"�Jð ×/Ò/°°:Ñ>Ô>Ð>øàÔ#¥u¤}Ð4Ð4Ý% m×&:Ò&:Ñ&<Ô&<Ñ=Ô=ð Cð C‘D�A�qØ �y ‘|”|ð CÝŸ	š	Ø^ØØ#ØØ"Ô.ñô ð õ &/Ø"Ø5ØØ+Ý!œIœNÔ5Ô9Ø$ a˜LØÝ&*¨1¡g¤gð	&ñ 	&ô 	&˜
ð ×3Ò3°A°zÑBÔBÐBøñ'Cð* Ô%­Ô)9Ð9Ð9Ø×+Ò+¨M×,BÒ,BÑ,DÔ,DÀgÑNÔNÐNØ×+Ò+¨M×,AÒ,AÑ,CÔ,CÀWÑMÔMÐMÐMØÔ%­%Ô*:½EÔ<LÐ)MÐMÐMØ×+Ò+¨M×,FÒ,FÑ,HÔ,HÈ'ÑRÔRÐRØ×+Ò+¨M×,EÒ,EÑ,GÔ,GÈÑQÔQÐQÐQØÔ%­%Ô*:½EÔ<LÐ)MÐMÐMØ×+Ò+¨M×,FÒ,FÑ,HÔ,HÈ'ÑRÔRÐRØ×+Ò+¨M×,EÒ,EÑ,GÔ,GÈÑQÔQÐQÝ,¨]Ñ;Ô;ð QØ*×=Ò=Ñ?Ô?‘
��sØ!ð Qð Q�DÝ% m°TÑ:Ô:�GØ×/Ò/°½ÀÈ$Ñ9OÔ9OÑPÔPÐPÐPð	Qð QðQð Qõ ˜¥u¤|Ñ4Ô4ð 	5àˆy˜Ñ'Ô'ð 5Ø$Ô)Ô.�Ø-4�Ô$ TÑ*Ð*Ð*ð		5ð 	5ð5ð 5rt   rB  Úsrcc           	      óN  ‡ — 	 d	dt           t          t          j        f         dt          t
                   dt          dd fˆ fd„}t          |t          j        ¦  «        �rŸt          | 
                    ¦   «         ¦  «        D ]0\  }} |||�t          |t          j        |¦  «        nd d¬¦  «         Œ1|j        t          j        u r�t          |                     ¦   «         ¦  «        D ]0\  }} |||�t          |t          j        |¦  «        nd d¬¦  «         Œ1 ||                     ¦   «         |�t          |t          j        ¦  «        nd d¬¦  «         �nC|j        t          j        u rQ‰                      |                     ¦   «         |¦  «         ‰                      |                     ¦   «         |¦  «         nß|j        t          j        t          j        hv rQ‰                      |                     ¦   «         |¦  «         ‰                      |                     ¦   «         |¦  «         no|j        t          j        t          j        hv rP‰                      |                     ¦   «         |¦  «         ‰                      |                     ¦   «         |¦  «         tA          |¦  «        rT| !                    ¦   «         \  }}|D ]<}tE          ||¦  «        }	‰                      |	|�tG          ||¦  «        nd ¦  «         Œ;d S d S t          |t          j        ¦  «        r |||¦  «         d S d S )
NFr  rm   rÎ  r´   c                 ó2  •— t          | ¦  «        sd S t          | t          j        ¦  «        sJ ‚‰                     | ¦  «        }t          |¦  «        dk    rd S ‰j        �Ø‰j                             | |¦  «         |D ]¸}‰j        j        |         }|j	        j
        d         }t          |t          j        ¦  «        sJ ‚‰                     t          |¦  «        t          |¦  «        |||¬¦  «        }t                               d||�|                     ¦   «         nd‰j        ¦  «         |‰j        |<   Œ¹d S t          |¦  «        dk    sJ d|› d| › �¦   «         ‚|€J d	| › d
| › d�¦   «         ‚t'          t)          |¦  «        ¦  «        }‰                     t          |¦  «        t          | ¦  «        | ||¬¦  «        }t                               d| |�|                     ¦   «         nd‰j        ¦  «         t+          || dd d¬¦  «        |j	        j
        d<   d S )Nr   rB  )rÎ  rm   z4_lift_symbols_in_symint %s from %s at debug_level %szsubgraph inputsr   zyFor root tracer, we only expect to bind basic symbols (compound symbols should be cached before) but got unbound symbols z in zSource of 'zÕ' is None when lifting it to input of top-level. If it's an unbacked symbol, this could be because it's not tracked with lazy_bind_unbacked_symbols. Otherwise, should provide a source when create_graph_input for `z` at root tracer.F)Úpass_arg_as_tensorr:  Ú	is_tensorr;  )r   r-  r·   rë  Úlookup_unbound_symbolsr3  rƒ  rÍ  ry  r?  r@  r=  r›   r>  r�   rA  r6  rƒ  r  rï   ÚiterrX   )	r  rm   rÎ  Úself_to_be_boundÚs0Úparent_proxyÚexample_valÚphr|   s	           €ru   Ú_lift_symbols_in_symintzCSubgraphTracer._lift_basic_symbols.<locals>._lift_symbols_in_symint|	  s’  ø€ õ
 ˜q‘>”>ð Ø�å˜a¥¤Ñ.Ô.Ð.Ð.Ð.Ø#×:Ò:¸1Ñ=Ô=ÐÝÐ#Ñ$Ô$¨Ò)Ð)Ø�ð Œ{Ð&à”×/Ò/°°6Ñ:Ô:Ð:Ø*ð <ð <�BØ#'¤;Ô#<¸RÔ#@�LØ".Ô"3Ô"8¸Ô"I�KÝ% kµ5´<Ñ@Ô@Ð@Ð@Ð@Ø×0Ò0Ý˜B™œÝ˜[Ñ)Ô)Ø#Ø%Ø%ð 1ñ ô �Bõ —I’IØNØØ)/Ð);˜Ÿš™œ˜ÐARØÔ(ñ	ô ð ð :<�DÔ(¨Ñ6Ð6ð#<ð <õ( Ð+Ñ,Ô,°Ò1Ð1Ð1ðbØHXðbð bØ^_ðbð bñ 2Ô1Ð1ð Ð)Ð)ðl !ð lð làWXðlð lð lñ *Ô)Ð)õ
 �$Ð/Ñ0Ô0Ñ1Ô1�Ø×,Ò,Ý˜‘G”GÝ˜‘G”GØØ!Ø!ð -ñ ô �õ —	’	ØJØØ%+Ð%7�F—K’K‘M”M�MÐ=NØÔ$ñ	ô ð õ ,4ØØØ',Ø $Ø#ð,ñ ,ô ,�””˜ZÑ(Ð(Ð(rt   T)rÎ  )F)$r   rq   r·   rë  r	   r   rž   r-  rÑ   ræ  r�  rD   rC   ÚSIZErê  rë  rì  ÚSTRIDEÚstorage_offsetÚSTORAGE_OFFSETrî  rÍ  rï  rð  rñ  rò  ró  rô  rõ  rö  r÷  rø  r   rù  r¹  r8   )
r|   rB  rý  r	  rò  r  rû  rÑ  rA  rü  s
   `         ru   rÍ  z"SubgraphTracer._lift_basic_symbolsu	  s¨  ø€ ð !ðB	ð B	Ý•S�%œ,Ð&Ô'ðB	å�VÔ$ðB	õ ðB	ð ð	B	ð B	ð B	ð B	ð B	ð B	õH �m¥U¤\Ñ2Ô2ñ 3	Ý! -×"4Ò"4Ñ"6Ô"6Ñ7Ô7ð 	ð 	‘��1Ø'Ð'Øð ˜?õ -¨Sµ.Ô2EÀqÑIÔIÐIà!àðñ ô ð ð ð Ô#¥u¤}Ð4Ð4Ý% m×&:Ò&:Ñ&<Ô&<Ñ=Ô=ð 	ð 	‘D�A�qØ+Ð+Øð  #˜õ 1°µnÔ6KÈQÑOÔOÐOà!%à#ðñ ô ð ð ð (Ð'Ø!×0Ò0Ñ2Ô2ð ˜?õ -¨Sµ.Ô2OÑPÔPÐPà!àðñ ô ð ñ ð Ô%­Ô)9Ð9Ð9Ø×(Ò(¨×)?Ò)?Ñ)AÔ)AÀ3ÑGÔGÐGØ×(Ò(¨×)>Ò)>Ñ)@Ô)@À#ÑFÔFÐFÐFØÔ%­%Ô*:½EÔ<LÐ)MÐMÐMØ×(Ò(¨×)CÒ)CÑ)EÔ)EÀsÑKÔKÐKØ×(Ò(¨×)BÒ)BÑ)DÔ)DÀcÑJÔJÐJÐJØÔ%­%Ô*:½EÔ<LÐ)MÐMÐMØ×(Ò(¨×)CÒ)CÑ)EÔ)EÀsÑKÔKÐKØ×(Ò(¨×)BÒ)BÑ)DÔ)DÀcÑJÔJÐJÝ,¨]Ñ;Ô;ð Ø*×=Ò=Ñ?Ô?‘
��sØ!ð ð �DÝ% m°TÑ:Ô:�GØ×,Ò,Ø¸#¸/¥¨C°Ñ!6Ô!6Ð!6Ètñô ð ð ð	ð ðð õ
 ˜¥u¤|Ñ4Ô4ð 	Ø#Ð#ØØñô ð ð ð ð	ð 	rt   r  r´   c                 ó–  — |j         j        j        }t          |¦  «        dk    rg S g }|D ]�}|| j        vr|                     |¦  «         Œ!| j        |         }t          |t          ¦  «        r |¦   «         }|| j        |<   t          |t          j	        j
        ¦  «        r	|j        | u sJ d|› d�¦   «         ‚ŒŽt          |d„ ¬¦  «        S )Nr   zThe proxy of symbol z" doesn't belong to current tracer.c                 ó   — | j         S ry   )r6  )r  s    ru   rR  z7SubgraphTracer.lookup_unbound_symbols.<locals>.<lambda>

  s   € °´€ rt   )r‚   )r?  r  r   r3  ry  r˜   r-  rx  r·   r   rÚ  rŠ  Úsorted)r|   r  r   Úto_be_boundr  rÖ  s         ru   r  z%SubgraphTracer.lookup_unbound_symbols÷	  sõ   € Ø”v”{Ô/ˆÝˆ|ÑÔ Ò!Ð!ØˆIàˆØð 	Mð 	MˆBØ˜Ô+Ð+Ð+Ø×"Ò" 2Ñ&Ô&Ð&ØàÔ& rÔ*ˆEÝ˜%¥Ñ+Ô+ð /Ø˜™œ�Ø).�Ô" 2Ñ&å˜5¥%¤(¤.Ñ1Ô1ðMØ6;´lÀdÐ6JÐ6JÐ6JØL bÐLÐLÐLñ 7KÔ6JÐJÐ6Jõ �kÐ'7Ð'7Ð8Ñ8Ô8Ð8rt   )NFN)NNN)NNNNrT  )rn   ro   rp   rš   r}   rÄ  r{  r~  r�  r=  rÕ  r£  r   rx  r·   r   rÚ  ré  rë  rÑ   r	   r   rÍ  r   r   r!  r  rº   r»   s   @ru   rè   rè   6  s–  ø€ € € € € ðð ð>ð >ð >ð >ð >ð >ðBCð Cð Cð4 ØØðkð kð kð kð kð kð\ HLðð ð ð ð ð ð&6ð 6ð 6ð. DHð_ð _ð _ð _ðD&ð &ð &ðP7ð 7ð 7ð>`5Ø&+¨I°u´x´~Ð,EÔ&Fð`5ð `5ð `5ð `5ðF~Ø" 5¤<°´Ð#=Ô>ð~ØEMÈfÔEUð~ð ~ð ~ð ~ðD9¨¬ð 9¸¸e¼lÔ9Kð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9rt   rè   )²r   rX  rÄ   r¡  r  r    r.  rÉ  rD  rœ   r}  Údataclassesr   Útypingr   r   r   r   r   r	   r
   r   r   r   r   Útorch._guardsr·   Útorch._loggingÚtorch.distributedÚdistributedr¨  Útorch.nnÚtorch.utils._pytreerp  Ú_pytreer8  r   Útorch._dynamo.excr   r   r   r   r   r   Útorch._utils_internalr   rÉ  r   Ú%torch.fx.experimental._backward_stater   r,  r   r   r   Útorch.fx.passes.runtime_assertr   Útorch.utils._python_dispatchr   rì  r   r   rŽ   r!   Úbackends.registryr"   r#   Úbytecode_transformationr$   r%   r&   r'   r(   r)   ra  r*   Úcurrent_scope_idr+   r,   r-   r.   r/   r0   Úgraph_deduplicationr1   Úgraph_region_trackerr2   rD  r3   r4   Úmutation_guardr5   r  r6   r7   rm   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   Úvariables.baserV   Úvariables.builderrW   rX   rY   rZ   Úvariables.listsr[   Úvariables.miscr\   r]   Úvariables.nn_moduler^   Úvariables.tensorr_   r`   ra   rb   Úvariables.torch_functionrc   Útorch._dynamo.symbolic_convertrd   Ú	getLoggerrn   r�   r£  ÚgetArtifactLoggerÚgraph_tabular_logrÇ  Úgraph_sizes_logr§  rk   rw   Ú	lru_cacher‘   r“   r©   r¸   r¹   r«   r½   r›   ÚobjectrU  rÓ   rg  rv  r  rð   rx  ÚTracerrè   rs   rt   ru   ú<module>r5     sj  ðà Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€à Ð Ð Ð Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 1Ð 0Ð 0Ð 0Ð 0Ð 0Ø :Ð :Ð :Ð :Ð :Ð :Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ JÐ JÐ JÐ JÐ JÐ JØ FÐ FÐ FÐ FÐ FÐ Fà DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 'Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð& ,Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ Bð ð IØHÐHÐHÐHÐHÐHð €gÔ˜Ñ!Ô!€Ø”N×4Ò4°X¸wÑGÔGÐ Ø”×1Ò1°(¸LÑIÔI€Ø”.×2Ò2°8¸]ÑKÔK€Ø”×1Ò1°(¸LÑIÔI€ð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôððð ð ð ð ñ ô ð ð0 €Ô�TÑÔð4ð 4ñ Ôð4ð ð-ð -ð -ð -ð -ñ -ô -ñ „ð-ðð ð ð	%ð 	%ð 	%ð 	%ð 	%�U”X”_ñ 	%ô 	%ð 	%ð ð  ð  ð  ð  ñ  ô  ð  ðF 	ˆS�&ˆ[Ô€ðd,ð d,ð d,ð d,ð d,ñ d,ô d,ð d,ðP/Jð ð=ð =ð =ð@ &�i”oÑ'Ô'Ð ð2ð 2ð 2ð 2ð 2ñ 2ô 2ð 2ðT9ð T9ð T9ð T9ð T9�R”Yñ T9ô T9ð T9ð T9ð T9rt   