Ë
    ÃÓ^jâ‹ ã                  óÒ
  — U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddl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ZddlmZ ddlmZ ddlmZm Z m!Z!m"Z" ddlm#Z#m$Z$m%Z%m&Z& ddl'm(Z( dd	lm)Z) ddl*Z*ddl+Z*dd
l,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8 ddl+m9Z9 ddl:m;Z;m<Z<m=Z= ddl>m?Z? ddl@mAZAmBZB ddlCmDZE ddlFmGZG ddlHmIZI ddlJmKZKmLZLmMZMmNZN ddlOmPZPmQZQ ddlRmSZSmTZTmUZUmVZVmWZW ddlXmYZY ddlZm[Z[m\Z\ ddl]m^Z^m_Z_m`Z`maZambZb ddlcmdZdmeZemfZfmgZg ddlhmhZh ddlimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZs dd lUmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZm€Z€ dd!l�m‚Z‚ dd"lƒm„Z„m…Z…m†Z† dd#l‡mˆZˆ dd$l‰mŠZŠm‹Z‹mŒZŒ dd%l�mŽZŽm�Z�m�Z� dd&l‘m’Z’ dd'l“m”Z” dd(l•m–Z–m—Z—m˜Z˜m™Z™mšZš dd)lWm›Z› dd*lmœZœm�Z�mžZž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ªm«Z«m¬Z¬m­Z­m®Z®m¯Z¯m°Z°m±Z±m²Z²m³Z³m´Z´mµZµm¶Z¶ dd,l·m¸Z¸ d-e¹d.<   	 ddlºZ»e�jz                  r.dd/l¾m¿Z¿ dd0lÀmÁZÁ dd1lXmÂZÂ dd2lÃmÄZÄ dd3lÅmÆZÆ dd4lmÇZÇmÈZÈmÉZÉ dd5lÊmËZË  e�j˜                  eÍ«      ZÎe*�jž                  �j¡                  eÍd6«      ZÑe*�jž                  �j¡                  eÍd7«      ZÒ e�j¦                  «       ZÔ e&d8«      ZÕ e(d9«      ZÖ G d:„ d;«      Z×	 	 	 	 d€d<„ZØ	 	 	 	 	 	 d�d=„ZÙ G d>„ d?«      ZÚ eÚ«       ZÛ eÚ«       ZÜdaÝd@e¹dA<    e�j¼                  eE«      	 d‚	 	 	 	 	 	 	 dƒdB„«       Zßd„d…dC„Zàd†dD„Záes�jÄ                  d‡dE„«       Zã	 	 dˆ	 	 	 	 	 	 	 	 	 d‰dG„Zädaå e�jÌ                  «       ZçdHe¹dI<   dŠdJ„ZèdŠdK„Zée G dL„ dM«      «       Zê	 	 	 	 d‹dN„Zë G dO„ dP«      Zì	 	 	 	 	 dŒ	 	 	 	 	 	 	 	 	 	 	 	 	 d�dR„ZíddSlmîZî ddTlïmðZð  eî«       ZñdUe¹dV<   dWZò	 	 	 	 dŽdX„Zód�dY„Zôd�dZ„Zõd‘d[„ZöeádFddddd\œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d’d]„«       Z÷e G d^„ d_«      «       Zøe G d`„ da«      «       Zù edQ¬b«       G dc„ dd«      «       Zúd“de„Zûe G df„ dg«      «       Züe G dh„ di«      «       Zýd”dj„Zþd•dk„Zÿ	 d‚	 	 	 	 	 	 	 d–dm„�Z 	 d‚ddFdnœ	 	 	 	 	 	 	 	 	 	 	 d—do„�Ze G dp„ dl«      «       �ZddFdnœ	 	 	 	 	 	 	 d˜dq„�Zd™ds„�ZdFddddd\œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dšdt„�Z	 	 d›dddduœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dœdv„�Z G dw„ dx«      �Z	 	 d›	 	 	 	 	 	 	 	 	 d�dy„�Zdždz„�Z	dŸd{„�Z
 G d|„ dre�j                  «      �Z G d}„ d~«      �Z	 	 	 	 	 	 d d„�Zy# e¼$ r dZ»Y �ŒQw xY w)¡aÖ  
This module implements TorchDynamo's core frame conversion functionality, transforming Python
frames into FX graphs. It handles:

- Frame analysis and bytecode transformation
- Guard creation and management for dynamic behaviors
- Cache management for recompilation
- Error handling and fallback mechanisms

Key classes:
- ConvertFrame: Main entry point for frame conversion with error handling
- ConvertFrameAssert: Implements core frame to graph conversion logic
- Tracker: Tracks input/output code objects during conversion
- CatchErrorsWrapper: Provides error handling and suppression logic

The conversion process preserves program semantics while enabling optimizations
through torch.compile() and related systems.

NOTE: _torchdynamo_orig_backend is used for convert frame wrappers to identify the inner wrapped function.
By going down the _torchdynamo_orig_backend chain, one can recover the original unwrapped backend,
which is checked for during the Dynamo cache lookup.
é    )ÚannotationsN)Ú	dataclass)ÚPath)ÚCellTypeÚCodeTypeÚFunctionTypeÚ
ModuleType)ÚAnyÚcastÚNoReturnÚTypeVar)Ú	ParamSpec)ÚReferenceType)ÚGlobalStateGuard)ÚCallbackTrigger)Úget_compile_pg)ÚTensorifyState)Úcompile_contextÚCompileContextÚ	CompileIdÚtracing)Ú
structured)Úcompile_time_strobelight_metaÚ#maybe_upload_prof_stats_to_manifoldÚsignpost_event)Ú_use_lazy_graph_module)ÚConstraintViolationErrorÚGuardOnDataDependentSymNode)Ú_forward_from_src)Ú_WaitCounter)ÚDistributedDataParallel)Ú_disable_current_modesÚ any_torch_dispatch_mode_on_stackÚ/is_in_any_mode_without_ignore_compile_internalsÚis_traceable_wrapper_subclass)ÚCapturedTracebackÚformat_traceback_shorté   )ÚconfigÚ
decoratorsÚexcÚgraph_break_hintsÚtrace_rules)Ú_is_registered_backend)Úremove_dead_codeÚremove_pointless_jumps)Ú check_inst_exn_tab_entries_validÚInstructionÚis_generatorÚ propagate_inst_exn_table_entriesÚtransform_code_object)ÚCacheSizeRelevantForFrameÚcompute_cache_sizeÚexceeds_recompile_limitÚis_recompilation)Úcode_context)
Ú_get_cache_entries_for_regionÚ_get_total_cache_entry_countÚadd_skip_reasonÚalways_optimize_code_objectsÚ
ConstraintÚ
dynamo_tlsÚ$get_eval_frame_isolate_recompiles_idÚinnermost_backendÚ	skip_codeÚTorchPatcher)Úaugment_exc_messageÚBackendCompilerFailedÚFailOnRecompileLimitHitÚformat_error_msgÚInternalTorchDynamoErrorÚPackageErrorÚResumePrologueTracingErrorÚShortenTracebackÚTorchRuntimeErrorÚUncapturedHigherOrderOpErrorÚunimplementedÚUnsupportedÚ	UserError)Úreset_user_object_tracking)ÚCheckFunctionManagerÚ'get_and_maybe_log_recompilation_reasonsÚGuardedCode)ÚHooks)ÚCodeOptionsÚDynamoTracerOutputÚOutputGraphCommon)Ú_log_size_mismatch_recompileÚlog_frame_dynamic_whitelistÚput_code_state)ÚExecutionRecord)ÚTORCH_DYNAMO_RESUME_IN_PREFIX)ÚDistributedStateÚExceptionStackÚInstructionTranslatorÚ
LocalStateÚSpeculationLog)Úis_numpy)ÚConvertFrameReturnÚFrameActionÚFrameExecStrategyÚwrap_guarded_code)Ú_get_error_on_graph_breakÚchromium_event_timedÚCleanupManagerÚCompileTimeInstructionCounterÚcountersÚdynamo_timedÚformat_bytecodeÚgen_record_file_nameÚ#get_hook_for_recompile_user_contextÚget_metrics_contextÚincrement_frameÚis_namedtupleÚistypeÚ
LazyStringÚmaybe_disable_inference_modeÚ*maybe_disable_inference_mode_for_fake_propÚorig_code_mapÚreset_graph_break_dup_checkerÚsetup_compile_debugÚ	to_int_usÚtroubleshooting_urlÚwrite_record_to_file)Ú#torch_function_mode_stack_state_mgrzModuleType | NoneÚnp)ÚCallable)ÚWeakIdKeyDictionary)Ú
CompilerFn)ÚCompilePackage)ÚWrapBackendDebug)ÚBytecodeHookÚ
CacheEntryÚDynamoFrameType)ÚFrameStateSizeEntryÚbytecodeÚgraph_breaksÚ_TÚ_Pc                  ó   — e Zd Zy)ÚTODO_UNKNOWNN)Ú__name__Ú
__module__Ú__qualname__© ó    úf/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/convert_frame.pyr�   r�   Ó   s   „ Ør”   r�   c                ó²   — | €y| j                   j                  j                  }|j                  j	                  «        |j
                  j	                  «        y)z:Clear WeakIdRef entries from a FakeTensorMode's describer.N)Úfake_tensor_converterÚmeta_converterÚ	describerÚlookup_tensorÚclearÚlookup_storage)Ú	fake_moder™   s     r•   Ú_clear_fake_mode_weakrefsrž   ×   sH   € ð ÐØØ×/Ñ/×>Ñ>×HÑH€IØ×Ñ×!Ñ!Ô#Ø×Ñ×"Ñ"Õ$r”   c                ó2  — t         j                  }|€t        t        |«      «      }|r| sy| j                  }|€y|j
                  }|j                  j                  «        t        |j                  «       t        |d«      rt        |j                  «       yy)zBClear WeakIdRef entries that can block swap_tensors after compile.NÚ_old_fake_mode)r)   Ú#invalidate_compile_context_weakrefsr.   rB   Úoutput_graph_for_cleanupÚtracing_contextÚtensor_to_contextr›   rž   r�   Úhasattrr    )Útracer_outputÚcompiler_fnÚshould_clearÚoutput_graphÚtcs        r•   Úclear_compile_context_weakrefsr«   â   sŠ   € ô
 ×=Ñ=€LØÐÜ-Ô.?ÀÓ.LÓMˆÙ™}Øð !×9Ñ9€LØÐØØ	×	%Ñ	%€BØ×Ñ×ÑÔ Ü˜bŸl™lÔ+Üˆ|Ð-Ô.Ü! ,×"=Ñ"=Õ>ð /r”   c                  ó,   — e Zd Zdd„Zdd„Zdd„Zdd„Zy)	ÚTrackerc                ó0   — g | _         t        «       | _        y ©N)ÚseenÚsetÚseen_ids©Úselfs    r•   Ú__init__zTracker.__init__ù   s   € Ø35ˆŒ	Ü"%£%ˆ�r”   c                óÜ   ‡ ‡— t        |«      Š‰‰ j                  vrQt        j                  |ˆˆ fd„«      }‰ j                  j                  |«       ‰ j                  j                  ‰«       y y )Nc                ó:   •— ‰j                   j                  ‰«      S r¯   )r²   Úremove)Ú_Úidxr´   s    €€r•   ú<lambda>zTracker.add.<locals>.<lambda>   s   ø€ °D·M±M×4HÑ4HÈÓ4M€ r”   )Úidr²   ÚweakrefÚrefr°   ÚappendÚadd)r´   Ú
strong_objÚobjrº   s   `  @r•   rÀ   zTracker.addý   sR   ù€ Ü�‹nˆØ�d—m‘mÑ#Ü—+‘+˜jÔ*MÓNˆCØ�I‰I×Ñ˜SÔ!Ø�M‰M×Ñ˜cÕ"ð $r”   c                ó0   — t        |«      | j                  v S r¯   )r¼   r²   )r´   Úitems     r•   Ú__contains__zTracker.__contains__  s   € Ü�$‹x˜4Ÿ=™=Ð(Ð(r”   c                ól   — | j                   j                  «        | j                  j                  «        y r¯   )r°   r›   r²   r³   s    r•   r›   zTracker.clear  s    € Ø�	‰	�‰ÔØ�‰×ÑÕr”   N©ÚreturnÚNone)rÁ   r   rÈ   rÉ   )rÄ   r   rÈ   Úbool)r�   r‘   r’   rµ   rÀ   rÅ   r›   r“   r”   r•   r­   r­   ø   s   „ ó(ó#ó)ôr”   r­   zGlobalStateGuard | NoneÚinitial_global_statec                óJ   — t        | ||«      }t        |j                  «       |S r¯   )Úoriginal_forward_from_srcrC   Ú__code__)ÚsrcÚglobalsÚ	co_fieldsÚresults       r•   Úfx_forward_from_src_skip_resultrÓ     s#   € ô ' s¨G°YÓ?€FÜˆf�o‰oÔØ€Mr”   c           	     óœ  ‡‡— t        j                  t        «      Št        j                  d|z   ¬«      j                  «       }t        j                  |«      }t        t        j                  ˆfd„|«      «      | j                  | j                  t        j                  | j                  «      dœgz   Št        j                  j                  dˆfd„«       |D �cg c]:  }|j                   ‰k7  r)d|j"                  › d|j$                  › d	|j                   › �‘Œ< c}d| j                  › d| j                  › d	| j                  › �gz   }|S c c}w )
Né   ©Úskipc                ó   •— | d   ‰k7  S )NÚfilenamer“   )ÚfÚconvert_frame_interns    €r•   r»   z"log_dynamo_start.<locals>.<lambda>$  s   ø€ �a˜
‘mÐ';Ñ;€ r”   )ÚlineÚnamerÙ   Údynamo_startc                 ó   •— d‰ iS )NÚstackr“   )rà   s   €r•   r»   z"log_dynamo_start.<locals>.<lambda>1  s   ø€ �˜%Ð € r”   zLine: z, Name: z, Filename: )r   Úintern_stringÚ__file__r&   ÚextractÚsummaryÚfrom_tracebackÚlistÚ	itertoolsÚ	takewhileÚco_firstlinenoÚco_nameÚco_filenameÚtorchÚ_loggingÚtrace_structuredrÙ   ÚlinenorÝ   )Úcoder×   Úcaptured_tbÚframes_internedÚframeÚstack_stringsrÛ   rà   s         @@r•   Úlog_dynamo_startrõ     s6  ù€ Ü%×3Ñ3´HÓ=ÐÜ#×+Ñ+°°T±Ô:×BÑBÓD€KÜ ×/Ñ/°Ó<€OäÜ×ÑÛ;Øó	
óð ×'Ñ'Ø—L‘LÜ"×0Ñ0°×1AÑ1AÓBñ	
ð	ñ€Eô 
‡N�N×#Ñ#ØÛ ôð !öàØ�>‰>Ð1Ò1ð �—‘�˜h u§z¡z l°,¸u¿~¹~Ð>NÒOòð
 �×$Ñ$Ð% X¨d¯l©l¨^¸<È×HXÑHXÐGYÐZð	ñ	€Mð Ðùòs   Ã?E	c                óR   ‡ — t        j                  ‰ «      dˆ fd„«       }‰ |_        |S )a@  
    Context manager to:
        1) Save/restore torch.is_grad_enabled() state
        2) Save/restore torch random state
        3) Monkey patch torch.fx.graph_module._forward_from_src

    NOTE: Python random state is preserved in eval_frame_cpp.cpp instead,
    so that it wraps more of the compilation pipeline.
    c                 óÆ  •— t        «       }t        j                  «       }t        j                  j	                  «       5  t        «       5  t        «       5  t        j                  «       }t        j                  «       }t        j                  «       }t        j                  j                  «       }t        j                  «       }t        j                  j                  «       }	d }
t        j                  j                  «       rEt        j                  j!                  «       5  t        j                  j                  «       }
d d d «       t        j                  j#                  dd«      }t        j$                  j&                  j(                  }t*        t        j$                  j&                  _        t-        «       }t/        j0                  «       }|j3                  t        j$                  j4                  j7                  «       «       t9        «        	  ‰| i |¤Ž|j;                  «        |j;                  «        t        j                  j=                  |«       t        j>                  j@                  jC                  |«       t        jD                  ||¬«       t        j                  jG                  |	«       t        jH                  |«       t        j                  j                  «       }||k7  rt        j                  jK                  «        |
�Ft        j                  j!                  «       5  t        j                  jG                  |
«       d d d «       t        j                  jM                  dd|«       |t        j$                  j&                  _        |jO                  «       stQ        d|jS                  «       › d�«      ‚cd d d «       cd d d «       cd d d «       S # 1 sw Y   �Œ�xY w# 1 sw Y   ŒŸxY w# |j;                  «        |j;                  «        t        j                  j=                  |«       t        j>                  j@                  jC                  |«       t        jD                  ||¬«       t        j                  jG                  |	«       t        jH                  |«       t        j                  j                  «       }||k7  rt        j                  jK                  «        |
�St        j                  j!                  «       5  t        j                  jG                  |
«       d d d «       n# 1 sw Y   nxY wt        j                  jM                  dd|«       |t        j$                  j&                  _        |jO                  «       stQ        d|jS                  «       › d�«      ‚w xY w# 1 sw Y   nxY wd d d «       n# 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY w)NÚcudaÚmatmul)Ú	warn_onlyzGlobal z7state changed while dynamo tracing, please report a bug)*r   rì   Úis_grad_enabledÚ_CÚ_PreserveDispatchKeyGuardrw   rx   Úis_inference_mode_enabledÚ$are_deterministic_algorithms_enabledÚ-is_deterministic_algorithms_warn_only_enabledÚ$_is_default_mobile_cpu_allocator_setÚget_default_dtypeÚrandomÚget_rng_staterø   Úis_availableÚDisableTorchFunctionÚ_get_fp32_precision_getterÚfxÚgraph_moduler   rÓ   r{   Ú
contextlibÚ	ExitStackÚenter_contextÚ_symbolic_traceÚ_maybe_revert_all_patchesrR   ÚcloseÚ_set_grad_enabledÚautogradÚ	grad_modeÚ_enter_inference_modeÚuse_deterministic_algorithmsÚset_rng_stateÚset_default_dtypeÚ#_unset_default_mobile_cpu_allocatorÚ_set_fp32_precision_setterÚcheckÚAssertionErrorÚreason)ÚargsÚkwargsÚguardsÚprior_grad_modeÚprior_inference_modeÚprior_deterministicÚprior_warn_onlyÚprior_mobile_allocator_stateÚprior_dtypeÚtorch_rng_stateÚcuda_rng_stateÚcuda_matmul_fp32_precÚprior_fwd_from_srcÚcleanupÚ
exit_stackÚcurr_mobile_allocator_stateÚfns                   €r•   Ú_fnz"preserve_global_state.<locals>._fnJ  s\  ø€ ä!Ó#ˆÜ×/Ñ/Ó1ˆô �H‰H×.Ñ.Ó0ñ7	ä(Ó*ñ7	ô 7Ó8ñ7	ô
 $)×#BÑ#BÓ#DÐ Ü"'×"LÑ"LÓ"NÐÜ#×QÑQÓSˆOä—‘×=Ñ=Ó?ð )ô  ×1Ñ1Ó3ˆKÜ#Ÿl™l×8Ñ8Ó:ˆOØ!ˆNÜ�z‰z×&Ñ&Ô(Ü—X‘X×2Ñ2Ó4ñ @Ü%*§Z¡Z×%=Ñ%=Ó%?�N÷@ä$)§H¡H×$GÑ$GØ˜ó%Ð!ô "'§¡×!6Ñ!6×!HÑ!HÐÜ6UŒE�H‰H×!Ñ!Ô3Ü)Ó+ˆGÜ#×-Ñ-Ó/ˆJØ×$Ñ$Ü—‘×(Ñ(×BÑBÓDôô 'Ô(ðÙ˜4Ð* 6Ñ*à—‘”Ø× Ñ Ô"Ü—‘×*Ñ*¨?Ô;Ü—‘×(Ñ(×>Ñ>Ð?SÔTÜ×2Ñ2Ø'°?õô —‘×*Ñ*¨?Ô;Ü×'Ñ'¨Ô4ä—H‘H×AÑAÓCð ,ð 0Ð3NÒNÜ—H‘H×@Ñ@ÔBØ!Ð-ÜŸ™×6Ñ6Ó8ñ AÜŸ
™
×0Ñ0°Ô@÷Aä—‘×3Ñ3Ø˜HÐ&;ôð ;M”—‘×%Ñ%Ô7Ø—|‘|”~Ü(Ø! &§-¡-£/Ð!2Ð2iÐjóð ÷k7	÷ 7	÷ 7	ó 7	÷@ñ @ú÷>Að Aûð —‘”Ø× Ñ Ô"Ü—‘×*Ñ*¨?Ô;Ü—‘×(Ñ(×>Ñ>Ð?SÔTÜ×2Ñ2Ø'°?õô —‘×*Ñ*¨?Ô;Ü×'Ñ'¨Ô4ä—H‘H×AÑAÓCð ,ð 0Ð3NÒNÜ—H‘H×@Ñ@ÔBØ!Ð-ÜŸ™×6Ñ6Ó8ñ AÜŸ
™
×0Ñ0°Ô@÷A÷ Añ Aúä—‘×3Ñ3Ø˜HÐ&;ôð ;M”—‘×%Ñ%Ô7Ø—|‘|”~Ü(Ø! &§-¡-£/Ð!2Ð2iÐjóð ð &ú÷i7	ð 7	ú÷ 7	÷ 7	ñ 7	ú÷ 7	÷ 7	ñ 7	ús§   ¾WÁ	WÁCV-ÄO	Ä>CV-ÈO2ÈDV-Ì( O&ÍA5V-Î=	WÏ	WÏO#ÏV-Ï&O/Ï+V-Ï2DV*	Ô T0Ô'	V*	Ô0T9Ô5A5V*	Ö*V-Ö-V6Ö2WÖ9	W×W	×W×W ©r  z_P.argsr  z	_P.kwargsrÈ   rŒ   )Ú	functoolsÚwrapsÚ_torchdynamo_orig_backend)r,  r-  s   ` r•   Úpreserve_global_stater2  ?  s0   ø€ ô ‡_�_�RÓô?ó ð?ðB %'€CÔ!Ø€Jr”   c                óÈ  ‡‡— | j                   t        v ry| j                   j                  D ]‚  }|| j                  v sŒ| j                  |   }t	        |t
        «      r%|j                  j                  d«      s|t        u r yt        sŒ]t        j                  sŒn|t        u st        |«      sŒ‚ y i Šdˆˆfd„Š| j                  j                  «       D ]  } ‰|«      sŒ y y)z+Check if the frame has torch.* related bitsTztorch.c           	     ó˜  •‡ — t        ‰ «      }|‰v r‰|   S d‰|<   t        ‰ t        j                  t        j                  j
                  f«      s4t        ‰ t        «      r.t        ‰ t        j                  j
                  «      r
d‰|<   ‰|   S t        j                  rDt        r>t        ‰ t        j                  «      st        ‰ t        j                  «      r
d‰|<   ‰|   S t        ‰ t        t        f«      rt!        ˆfd„‰ D «       «      ‰|<   ‰|   S t        ‰ t"        «      r5t        ‰ j%                  «       «      }t!        ˆfd„|D «       «      ‰|<   ‰|   S t        ‰ t&        t(        t*        t        d«      t,        f«      r
d‰|<   ‰|   S t/        ‰ «      r3t1        ‰ d«      r't!        ˆˆ fd„‰ j2                  D «       «      ‰|<   ‰|   S y)z)Recursively check if the obj has a tensorFTc              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr¯   r“   ©Ú.0ÚvÚ
has_tensors     €r•   ú	<genexpr>z:has_tensor_in_frame.<locals>.has_tensor.<locals>.<genexpr>¹  s   øè ø€ Ò">°Q¡:¨a§=Ñ">ùó   ƒc              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr¯   r“   r6  s     €r•   r:  z:has_tensor_in_frame.<locals>.has_tensor.<locals>.<genexpr>À  s   øè ø€ Ò"A°Q¡:¨a§=Ñ"Aùr;  NÚ_fieldsc              3  óB   •K  — | ]  } ‰t        ‰|«      «      –— Œ y ­wr¯   )Úgetattr)r7  r8  r9  rÂ   s     €€r•   r:  z:has_tensor_in_frame.<locals>.has_tensor.<locals>.<genexpr>Æ  s   øè ø€ Ò"TÀ1¡:¬g°c¸1«o×#>Ñ"Tùs   ƒ)r¼   Ú
isinstancerì   ÚTensorÚnnÚModuleru   ÚtypeÚ
issubclassr)   Útrace_numpyr€   ÚndarrayÚgenericræ   ÚtupleÚanyÚdictÚvaluesÚstrÚintÚfloatrÊ   rt   r¥   r=  )rÂ   Úobj_idrL  r9  r²   s   `  €€r•   r9  z'has_tensor_in_frame.<locals>.has_tensor¥  s‚  ù€ ä�C“ˆØ�XÑØ˜FÑ#Ð#Ø ˆ�Ñä�cœEŸL™L¬%¯(©(¯/©/Ð:Ô;Ü�3œÔ¤*¨S´%·(±(·/±/Ô"Bà#ˆH�VÑØ˜FÑ#Ð#ä×ÒÝÜ˜œRŸZ™ZÔ(¬J°s¼B¿J¹JÔ,Gà#ˆH�VÑØ˜FÑ#Ð#Ü�Cœ$¤˜Ô'Ü"Ó">¸#Ô">Ó>ˆH�VÑØ˜FÑ#Ð#Ü�CœÔô ˜#Ÿ*™*›,Ó'ˆFÜ"Ó"A¸&Ô"AÓAˆH�VÑØ˜FÑ#Ð#Ü�Cœ#œs¤E¬4°«:´tÐ<Ô=Ø$ˆH�VÑØ˜FÑ#Ð#Ü˜3Ô¤G¨C°Ô$;Ü"Ô"TÈÏÉÔ"TÓTˆH�VÑØ˜FÑ#Ð#ð r”   F)rÂ   ÚobjectrÈ   rÊ   )Úf_coder>   Úco_namesÚ	f_globalsr@  r	   r�   Ú
startswithrì   r€   r)   rF  rd   Úf_localsrL  )ró   rê   rÂ   Úvaluer9  r²   s       @@r•   Úhas_tensor_in_framerX  �  sÄ   ù€ ð ‡|�|Ô3Ñ3Øð —<‘<×(Ñ(ò 	ˆØ�e—o‘oÒ%Ø—/‘/ 'Ñ*ˆCÜ˜#œzÔ*Ø—‘×'Ñ'¨Ô1°S¼E±\áæ”f×(Ó(¨c´R©i¼8ÀC½=Ùð	ð !#€Hö(ðV —‘×&Ñ&Ó(ò ˆÙ�eÕÙðð r”   Fc                óŒ   — d }t        | d«      r)t        | |«      }t        || j                  «       || _        t        | |¬«       y )NÚexec_record©Úexport)r¥   rp   r~   rZ  Úrecord_filenamerE   )Úerð   ró   r\  r]  s        r•   Úexception_handlerr_  ×  s?   € ð €OÜˆq�-Ô Ü.¨q°$Ó7ˆÜ˜_¨a¯m©mÔ<Ø+ˆÔä˜ &Ö)r”   z)typing.Counter[int | FrameStateSizeEntry]ÚFRAME_COMPILE_COUNTERc                ó<   — t         j                  rt        | «      S | S r¯   )r)   ÚcprofileÚcprofile_wrapper)Úfuncs    r•   Úmaybe_cprofilere  ê  s   € Ü‡‚Ü Ó%Ð%Ø€Kr”   c                óD   ‡ — t        j                  ‰ «      dˆ fd„«       }|S )Nc                 ó  •‡— t        j                  «       }|st        d«      ‚t        t        j
                  j                  t        j                  «       ‰j                  › dt        |«      j                  dd«      › d�«      «      }t        j                  «       }	 t        j                  «       } |j                  ‰g| ¢­i |¤Ž}t        j                  «       |z
  }t"        j'                  d‰j                  ||«       t)        j*                  |«      }	 |j-                  |«       t"        j'                  d	|«       |j1                  d
«      }		 t3        j4                  ddddddt        |«      gt2        j6                  ¬«      5 }
t3        j8                  dddt        |	«      g|
j:                  ¬«       t"        j'                  d|	«       d d d «       tI        t        |«      «      xŠr#tJ        jL                  jO                  dˆfd„«       |S # t         $ r# t"        j%                  d«       d} ‰| i |¤Ž}Y �ŒYw xY w# t.        $ r t"        j%                  d|«       Y �Œ6w xY w# 1 sw Y   Œ™xY w# t<        $ r‰ t"        j'                  d«       |j?                  t(        j@                  jB                  «      jE                  d«       |j?                  t(        j@                  jF                  «      jE                  d«       Y �Œ-w xY w)NzTrace id is Noner¹   ú/z.profilezfailed to enable cProfiler   z7### Cprofile for %s trace id [%s] took %.3f seconds ###zCannot write to %szRaw profile at %sz.svgÚ	gprof2dotz-fÚpstatsz"--node-label=total-time-percentagez!--node-label=self-time-percentagez--node-label=total-time)ÚstdoutÚdotz-Tsvgz-o)Ústdinz Generated SVG from profile at %szxFailed to generate SVG from profile -- dumping stats instead.Try installing gprof2dot and dot for a better visualizationé   Úlinkc                 ó   •— d‰ dœS )NÚcprofile_manifold_url)rÝ   Úurlr“   )Úmanifold_links   €r•   r»   z;cprofile_wrapper.<locals>.profile_wrapper.<locals>.<lambda>5  s   ø€ Ð!8ÀÑO€ r”   )(r   Úcurrent_trace_idr  r   ÚosÚpathÚjoinÚtempfileÚ
gettempdirr�   rM  ÚreplaceÚcProfileÚProfileÚtimeÚruncallÚ
ValueErrorÚlogÚ	exceptionÚwarningrj  ÚStatsÚ
dump_statsÚOSErrorÚwith_suffixÚ
subprocessÚPopenÚPIPEÚ
check_callrk  ÚFileNotFoundErrorÚ
sort_statsÚSortKeyÚTIMEÚprint_statsÚ
CUMULATIVEr   rì   rí   rî   )r  r  Útrace_idÚprofile_pathÚprofÚstart_tsÚretvalÚprofile_latencyÚpsÚsvg_pathÚgprof2dot_processrs  rd  s              @€r•   Úprofile_wrapperz)cprofile_wrapper.<locals>.profile_wrapperñ  s¤  ù€ ä!×2Ñ2Ó4ˆÙÜ Ð!3Ó4Ð4ÜÜ�G‰G�L‰LÜ×#Ñ#Ó%Ø—=‘=�/ ¤3 x£=×#8Ñ#8¸¸cÓ#BÐ"CÀ8ÐLóó
ˆô ×ÑÓ!ˆð	+Ü—y‘y“{ˆHð
 "�T—\‘\ $Ð8¨Ò8°Ñ8ˆFÜ"Ÿi™i›k¨HÑ4ˆOô
 	�‰ØEØ�M‰MØØô		
ô �\‰\˜$Óˆð	>Ø�O‰O˜LÔ)ô 	�‰Ð'¨Ô6Ø×+Ñ+¨FÓ3ˆð	EÜ×!Ñ!àØØØ8Ø7Ø-Ü˜Ó%ðô "—‘ôð Jð #Ü×%Ñ%Ø˜G T¬3¨x«=Ð9Ø+×2Ñ2õô —‘Ð>ÀÔI÷!Jô2 @Ü�Óó
ð 
ˆ=ð 
ô �N‰N×+Ñ+ØÛOôð ˆøôe ò 	+Ü�M‰MÐ5Ô6ØˆOÙ˜4Ð* 6Ñ*‹Fð	+ûô ò 	>Ü�M‰MÐ.°×=ð	>ú÷
Jð Jûô" !ò 	EÜ�K‰KðNôð �M‰Mœ&Ÿ.™.×-Ñ-Ó.×:Ñ:¸2Ô>Ø�M‰Mœ&Ÿ.™.×3Ñ3Ó4×@Ñ@À×Dð	EúsQ   ÂAH ÄH; Å5I- ÆAI!Ç	I- È(H8È7H8È;IÉIÉ!I*É&I- É-BK?Ë>K?r.  )r/  r0  )rd  rš  s   ` r•   rc  rc  ð  s)   ø€ Ü‡_�_�TÓôEó ðEðN Ðr”   c                  ó   — e Zd ZU dZded<   y)ÚConvertFrameBoxNzbool | NoneÚerror_on_graph_break)r�   r‘   r’   r�  Ú__annotations__r“   r”   r•   rœ  rœ  <  s   … à(,Ð˜+Ô,r”   rœ  c                ó  — d| vrt         | d<   t         dz  a | d   }t        |t        «      st        dt	        |«      › �«      ‚t
        |   }t
        |xx   dz  cc<   d }t        j                  «       x}r|j                  }t        |||¬«      S )NÚ_idr(   zframe_id must be an int, got )Úcompiled_autograd_idÚframe_idÚframe_compile_id)
ÚFRAME_COUNTERr@  rN  r  rD  r`  r   Úcurrent_compile_idr¡  r   )Úframe_stater¢  r£  r¡  Úpriors        r•   Úget_compile_idr¨  A  s£   € ð �KÑÜ*ˆ�EÑÜ˜ÑˆØ˜5Ñ!€HÜ�h¤Ô$ÜÐ<¼TÀ(»^Ð<LÐMÓNÐNä,¨XÑ6ÐÜ˜(Ó# qÑ(Ó#àÐÜ×1Ñ1Ó3Ð3€uÐ3Ø$×9Ñ9ÐÜØ1ØØ)ôð r”   c                  óp   — e Zd Z	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zed	d„«       Zddœ	 	 	 	 	 	 	 	 	 	 	 d
d„Zy)ÚConvertFrameAssertNc                óŠ   — t        «        || _        || _        || _        || _        || _        || _        t        «       | _        y r¯   )	rz   r1  Ú
_one_graphÚ_exportÚ_export_constraintsÚ_packageÚ_recompile_limitrœ  Ú_box)r´   r§   Ú	one_graphr\  Úexport_constraintsÚpackageÚrecompile_limits          r•   rµ   zConvertFrameAssert.__init__Z  sA   € ô 	&Ô'Ø)4ˆÔ&Ø#ˆŒØˆŒØ#5ˆÔ ØˆŒØ /ˆÔÜ#Ó%ˆ�	r”   c                ó   ‡ — ˆ fd„S )Nc                ót   •— t        | ‰j                  ‰j                  ‰j                  ‰j                  ¬«      S ©N©rµ  )Úconvert_frame_assertr¬  r­  r®  r°  ©Úbackendr´   s    €r•   r»   z8ConvertFrameAssert._clone_with_backend.<locals>.<lambda>o  s0   ø€ Ô3ØØ�O‰OØ�L‰LØ×$Ñ$Ø ×1Ñ1ô 
€ r”   r“   r³   s   `r•   Ú_clone_with_backendz&ConvertFrameAssert._clone_with_backendm  s   ø€ ó
ð 	
r”   r   rÖ   c               óö	  — t        «        |j                  }t        «       }t        ||«      }|dk\  r|t        |d«      z   }	n|}	t	        |«      }
t        |||
«      }t        j                  |«       |t        v rt        d¬«      S t        j                  j                  d«      r8t        j                  j                  d«      |j                  k7  rt        d¬«      S |j                  dk(  r'|j                  j                  d«      rt        d	¬«      S |j                  d
k(  rt        d¬«      S |j                  dk(  r\|j                  j!                  t        j"                  j%                  t&        j(                  j*                  «      «      rt        d¬«      S |j                  dk(  r|j                  dk(  rt        d¬«      S |j                  dk(  r0|j                  dk(  r!t-        |j.                  «      st        d¬«      S t1        |«      r t3        ddddgt4        j6                  ¢¬«       t9        |«      st        d¬«      S t;        j<                  «       }|r?d|j                  j                  v r'|j>                  }|rd|j                  j                  v rŒ'|r)|j                  t@        jB                  u rt        dd¬«      S tD        }tG        «       a"tI        |«      }|jJ                  }tM        dd|j                  |tO        |«      |j                  |jP                  |jR                  |jT                  dœ«       |j                  j!                  tV        «      sG|j                  › d |j                  › d!|jP                  › �}tX        jZ                  j]                  |«       	 t_        ta        |«      «      }| jb                  � te        jf                  | jb                  ¬"«      nti        jj                  «       }|5  |5  tm        |j                  |jn                  |jp                  |j.                  |jr                  | jt                  | jv                  | jx                  | jz                  ||||	|||||d#z   | j|                  | j~                  ¬$«      }d d d «       d d d «       |a"td        j€                  r-| j|                  �!d#d%lAmB} |j‡                  | j|                  «       S # 1 sw Y   ŒRxY w# 1 sw Y   ŒVxY w# |a"w xY w)&Nr   éÿÿÿÿz&frame is already Dynamo-generated code©Úskip_reasonÚTORCHDYNAMO_DEBUG_FUNCTIONz>function name does not match TORCHDYNAMO_DEBUG_FUNCTION filterz	<genexpr>)ztransformers/file_utils.pyztransformers/utils/generic.pyzdiffusers/utils/outputs.pyz7skipping generator expression in transformers/diffusersÚ__setattr__z#__setattr__ frames are not compiledrµ   z,torch.optim __init__ frames are not compiledz<module>ú<string>zframe was generated by exec()z<lambda>z!frame is a namedtuple constructorzAttempt to trace generatorÚ z<Generators cannot be compiled directly with `torch.compile`.zbCall a generator from inside of a non-generator Python function and compile that function instead.©Úgb_typeÚcontextÚexplanationÚhintsz(no tensor-related objects found in frameztorch/_dynamo/convert_frame.pyFz2tracing is non-recursively disabled for this frame)Úapply_to_coderÁ  Údynamoz_convert_frame_assert._compile)rê   r¢  Ú
compile_idrë   ré   Ú
cache_sizeÚaccumulated_cache_sizeú ú:r¹  r(   )r¦  rÍ  r×   r´  Úconvert_frame_box)ÚDynamoCache)Drs   rR  rA   r;   r<   r7   Úinput_codesrÀ   Úoutput_codesre   ru  ÚenvironÚgetrê   rë   ÚendswithrU  rv  Údirnamerì   Úoptimrâ   rÊ   Ú
f_builtinsr3   rO   r,   ÚFUNDAMENTALrX  ÚsysÚ	_getframeÚf_backr*   Ú"_nonrecursive_disable_wrapper_coderË   r   r¨  r¢  r   rM  ré   Ú+num_cache_entries_with_same_id_matched_objsÚnum_cache_entriesr^   r@   Útraced_frame_infosr¿   r   r   r°  r)   Úpatchr
  ÚnullcontextÚ_compilerT  rV  Úclosurer1  r¬  r­  r®  r¯  r±  Úcaching_precompiler´  rÓ  Úrecord_package)r´   ró   Úcache_entryÚhooksr¦  r×   rð   Úisolate_recompiles_idÚcache_entriesÚcache_entries_for_reasonsÚtotal_countrÎ  Ú
prev_frameÚprev_initial_global_staterÍ  r¢  ÚinfoÚcompile_ctxÚrecompile_ctxrÒ   rÓ  s                        r•   Ú__call__zConvertFrameAssert.__call__w  s~  € ô 	ÔØ�|‰|ˆä DÓ FÐÜ5°dÐ<QÓRˆð ! AÒ%Ø(5Ô8UØ�bó9ñ )Ñ%ð )6Ð%Ü2°4Ó8ˆÜ'¨¨}¸kÓJˆ
Ü�‰˜ÔØ”<ÑÜ%ØDôð ô �J‰J�N‰NÐ7Ô8Ü—
‘
—‘Ð;Ó<ÀÇÁÒLä%Ø\ôð ð �<‰<˜;Ò&¨4×+;Ñ+;×+DÑ+Dðô,
ô &ØUôð ð �<‰<˜=Ò(Ü%Ð2WÔXÐXØ�<‰<˜:Ò%¨$×*:Ñ*:×*EÑ*EÜ�G‰G�O‰OœEŸK™K×0Ñ0Ó1ô+
ô &ØJôð ð �<‰<˜:Ò%¨$×*:Ñ*:¸jÒ*HÜ%Ð2QÔRÐRð �L‰L˜JÒ&Ø× Ñ  JÒ.Ü˜×)Ñ)Ô*ô &Ð2UÔVÐVä˜ÔÜØ4ØØZð5ðô '×2Ñ2ðõ		ô # 5Ô)Ü%ØFôð ô —]‘]“_ˆ
ñ Ø0°J×4EÑ4E×4QÑ4QÑQà#×*Ñ*ˆJñ Ø0°J×4EÑ4E×4QÑ4QÒQñ Ø×!Ñ!¤Z×%RÑ%RÑRä%Ø#ØPôð ô %9Ð!Ü/Ó1Ðä# KÓ0ˆ
Ø×&Ñ&ˆäØØ,àŸ<™<Ø$Ü! *›oØ#×/Ñ/Ø"&×"5Ñ"5Ø(×TÑTØ*4×*FÑ*Fñô	
ð �|‰|×&Ñ&Ô'DÔEØ—l‘l�^ 1 T×%5Ñ%5Ð$6°a¸×8KÑ8KÐ7LÐMˆDÜ×)Ñ)×0Ñ0°Ô6ð"	=Ü)¬.¸Ó*DÓEˆKð
 ×(Ñ(Ð4ô —‘¨T×-BÑ-BÕCä×+Ñ+Ó-ð ð
 ñ ˜mñ Ü!Ø—L‘LØ—O‘OØ—N‘NØ×$Ñ$Ø—M‘MØ×2Ñ2Ø—O‘OØ—L‘LØ×,Ñ,ØØØ!Ø-ØØØ +Ø)Ø ™Ø ŸM™MØ&*§i¡iô)�÷÷ ð2 $=Ð ä×$Ò$¨¯©Ð)BÝ,ð ×&Ñ& t§}¡}Ô5Øˆ÷Að ú÷ ð ûð2 $=Ñ ús>   Î!AS4 Ï7S(Ï:BSÒS(ÒS4 ÓS%	Ó!S(Ó(S1Ó-S4 Ó4S8©TFNNN)r§   rƒ   r²  rÊ   r\  rÊ   r³  ú
Any | Noner´  úCompilePackage | Nonerµ  ú
int | NonerÈ   rÉ   )rÈ   z*Callable[[CompilerFn], ConvertFrameAssert]©ró   rˆ   rê  úCacheEntry | Nonerë  rV   r¦  ú$dict[str, int | FrameStateSizeEntry]r×   rN  rÈ   re   ©r�   r‘   r’   rµ   Úpropertyr½  rõ  r“   r”   r•   rª  rª  Y  s»   „ ð ØØ)-Ø)-Ø&*ð&àð&ð ð&ð ð	&ð
 'ð&ð 'ð&ð $ð&ð 
ó&ð& ò
ó ð
ð  ñqàðqð 'ðqð ð	qð
 :ðqð ðqð 
ôqr”   rª  Tc                ó"   — t        | |||||«      S )zHFully convert a frame into an FX graph, raising an exception if we fail.)rª  )r§   r²  r\  r³  r´  rµ  s         r•   rº  rº  +  s#   € ô ØØØØØØóð r”   )ÚOrderedDict)ÚRemovableHandlezdict[int, BytecodeHook]Ú_bytecode_hooksÚbytecode_hook_side_effectsc                óˆ   — t        j                  | «      syt        j                  | «      j                  t        «      }|€y|S )z±Return Dynamo's replayed Python side-effect sources for compiled code.

    Returns ``None`` when ``code`` was not produced by Dynamo or no metadata was
    attached to it.
    N)r:   Úhas_contextÚget_contextr×  Ú'_BYTECODE_HOOK_SIDE_EFFECTS_CONTEXT_KEY)rð   Úside_effectss     r•   Úget_compiled_code_side_effectsr	  H  sD   € ô ×#Ñ# DÔ)ØÜ×+Ñ+¨DÓ1×5Ñ5Ü/ó€Lð ÐØØÐr”   c                ó*   — t        t        | «      «      S )zNReturn whether Dynamo recorded replayed Python side effects for compiled code.)rÊ   r	  ©rð   s    r•   Úcompiled_code_has_side_effectsr  Z  s   € äÔ.¨tÓ4Ó5Ð5r”   c                ó²   — t        j                  | «      sy t        j                  | «      }t        |v r$|t           t        j                  |«      t        <   y y r¯   )r:   r  r  r  )Úsrc_codeÚdst_codeÚsrc_contexts      r•   Ú_copy_code_contextr  _  sO   € Ü×#Ñ# HÔ-ØÜ×*Ñ*¨8Ó4€KÜ.°+Ñ=àÔ?Ñ@ô 	× Ñ  Ó*Ô+RÒSð >r”   c                óJ   — t        t        «      }| t        |j                  <   |S )a*  Register hooks for bytecode generated by Dynamo. The hook can do some
    logging, as well as return a new code object to be used. Hooks can query
    `get_compiled_code_side_effects(new_code)` for replayed Python side effect
    sources. Please refer to `BytecodeHook` for the hook signature.
    )r  r  r¼   )ÚhookÚhandles     r•   Úregister_bytecode_hookr  i  s!   € ô œ_Ó-€FØ!%„O�F—I‘IÑØ€Mr”   ©r\  r³  r¦  Údistributed_stater´  c               ó  ‡‡‡‡— ddl mŠmŠ ‰j                  «        t	        «       }t        |	| ||||||
|||||‰|||¬«      Šd	ˆˆˆˆfd„}	  |«        t        ‰«      }|j                  }|€t        d«      ‚|j                  st        d«      ‚|j                  |	d d  |
j                  |j                  «       t        |	«       t        |	«       t        t        |	«      «      |	d d  |S # t         $ r}t        ‰d¬«      |_        ‚ d }~ww xY w)
Nr   )ÚbisectÚtranslation_validation_enabled)r¦  Úspeculation_logÚexn_vt_stackr  r´  c                 ó¨  •— 	 ‰j                   j                  «        t        ‰j                   j                  «      5  ‰j	                  «       5  ‰j                  «        d d d «       d d d «       ‰j                   j                  «        i ‰_        y # 1 sw Y   Œ3xY w# 1 sw Y   Œ7xY w# t        j                  $ r ‰j                  «        ‚ t        j                  t        j                  t        j                  f$ r ‚ t        $ r%  ‰«       r ‰ ‰j                   j                  «       ‚ w xY w# ‰j                   j                  «        i ‰_        w xY wr¯   )ÚoutputÚmark_bytecode_tracing_startr   r£   Úset_current_txÚrunr+   ÚUnspecializeRestartAnalysisr›   ÚSpeculationRestartAnalysisÚTensorifyScalarRestartAnalysisÚ	SkipFrameÚ	ExceptionÚ	shape_envÚcall_cleanup_hooksrV  )r  r  Útracerr  s   €€€€r•   Ú
run_tracerztrace_frame.<locals>.run_tracer£  s	  ø€ ð	!Ø�M‰M×5Ñ5Ô7Ü˜Ÿ™×6Ñ6Ó7ñ ¸×9NÑ9NÓ9Pñ Ø—
‘
”÷÷ ð  �M‰M×,Ñ,Ô.Ø ˆF�O÷#ð ú÷ ð ûä×.Ñ.ò 	Ø×!Ñ!Ô#Øä×*Ñ*Ü×.Ñ.Ü�M‰Mð
ò 	ð
 Üò 	Ù-Ô/Ù�v—}‘}×.Ñ.Ô/Øð	ûð
 �M‰M×,Ñ,Ô.Ø ˆF�OúsG   ƒ9B( ¼BÁBÁBÁ&B( ÂB	ÂBÂB%Â!B( Â(BD+Ä+D. Ä.#Ez$tracer output_graph must not be Nonez*output_graph must have output_instructionsT)ÚerrorrÇ   )Útorch.fx.experimental.validatorr  r  Úrestartr`   ra   rX   r©   r  Úoutput_instructionsÚupdateÚcode_optionsr4   r1   r0   r/   r&  Ú_torch_dynamo_tracer_output)rð   rÐ   ÚlocalsÚbuiltinsrç  r§   Útf_mode_stackr²  r  Úinstructionsr0  r\  r³  r¦  r  r´  r  r*  r¦   r  r^  r  r)  r  s           `            @@@r•   Útrace_framer6  w  s  û€ ÷( Wà×ÑÔÜ!Ó#€LÜ"ØØØØØØØØØØØØØØ'Ø!Ø+Øô#€F÷(!ð !ð,ÙŒÜ*¨6Ó2ˆØ×+Ñ+ˆØˆ>Ü Ð!GÓHÐHØ×)Ò)Ü Ð!MÓNÐNØ ×4Ñ4ˆ‘QˆØ×Ñ˜F×/Ñ/Ô0Ü(¨Ô6Ü(¨Ô6Ü0Ô1AÀ,Ó1OÓPˆ‘Qˆð Ðøô ò Ü(:¸6ÈÔ(NˆÔ%Øûðús   ÁBC( Ã(	D	Ã1DÄD	c                  óz   — e Zd ZU dZded<   ded<   ded<   ded	<   	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 dd„Zy
)ÚDynamoOutputao  
    Represents the core data returned from a single dynamo run, including:
      - Guards, wrapped inside tracer_output.output_graph.guards
      - Generated bytecode
      - Other information needed for compilation.
    This data structure should capture all the "interesting" information dynamo
    produces on the frontend side before it enters user backend.
    rX   r¦   útypes.CodeTyperŠ   úlist[list[str] | None]Úpycodezfloat | NoneÚlast_attempt_start_timeNc           	     ó¤   — | j                   j                  }|€t        d«      ‚t        ||||r|j                  nd |r|j
                  nd ||¬«      S )Nz2output_graph must not be None when building guards©Úsave_guardsÚstrict_error)r¦   r©   r  rS   Úguard_fail_fnÚguard_filter_fn)r´   rð   rë  Úsaverí  r@  r©   s          r•   Úbuild_guardszDynamoOutput.build_guardsÜ  s]   € ð ×)Ñ)×6Ñ6ˆØÐÜ Ð!UÓVÐVÜ#ØØØÙ#(ˆE×Ò¨dÙ%*ˆE×!Ò!°ØØ%ô
ð 	
r”   c                ó”  — | j                   j                  }|€t        d«      ‚t        t	        |j                  «       |j                  |j                  |j                  |j                  «      |j                  |j                  | j                  | j                  | j                   j                  ||| j                   j                  «	      S )NzAoutput_graph must not be None when producing graph capture output)r¦   r©   r  ÚGraphCaptureOutputrY   Údump_guards_stateÚimport_sourcesr'  Úexport_metadataÚtracked_fakes_id_to_sourceÚtraced_coderŠ   r;  rç  rT  )r´   ÚargdefsÚ
kwdefaultsr©   s       r•   Úgraph_capture_outputz!DynamoOutput.graph_capture_outputñ  s¸   € ð
 ×)Ñ)×6Ñ6ˆØÐÜ ØSóð ô "ÜØ×.Ñ.Ó0Ø×+Ñ+Ø×&Ñ&Ø×,Ñ,Ø×7Ñ7óð ×'Ñ'Ø×$Ñ$Ø�M‰MØ�K‰KØ×Ñ×&Ñ&ØØØ×Ñ×(Ñ(ó
ð 	
r”   ©NFNF©rð   r9  rë  zHooks | NonerC  rÊ   rí  zlist[CacheEntry] | Noner@  rÊ   rÈ   rS   ©NN)rL  útuple[Any, ...] | NonerM  údict[str, Any] | NonerÈ   rF  )r�   r‘   r’   Ú__doc__rž  rD  rN  r“   r”   r•   r8  r8  Ì  s—   … ñð &Ó%ØÓØ"Ó"Ø)Ó)ð
 #ØØ15Ø"ð
àð
ð ð
ð ð	
ð
 /ð
ð ð
ð 
ó
ð. +/Ø,0ð
à'ð
ð *ð
ð 
ô	
r”   r8  c                  óD   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   y)ÚBackendInputa   
    Represents core data structure that dynamo will pass to a backend, including:
      - Graph module
      - Example inputs
      - The FakeTensorMode used for compiling graph.
    This data structure should capture all the information dynamo produces
    on for the user backend.
    rM  Ú
backend_idútorch.fx.GraphModuler	  r
   Úexample_inputsz,torch._subclasses.fake_tensor.FakeTensorModer�   r‚   r¤   N)r�   r‘   r’   rT  rž  r“   r”   r•   rV  rV    s&   … ñð ƒOØ&Ó&ØÓØ;Ó;Ø*Ô*r”   rV  )Úfrozenc                  óÎ   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   d	ed<   dZded<    ej                  e¬«      Zded<   dddœ	 	 	 	 	 	 	 	 	 dd„Z	dd„Z
	 	 	 	 	 	 dd„Zdd„Zy)ÚGraphRuntimeEnvr9  rŠ   r:  r;  údict[str, str]rH  údict[str, Any]Úused_globalsrR  rç  rL  NrS  rM  )Údefault_factoryúset[str]Úexternal_refsF©Úextra_globalsÚuse_python_codegenc               ó¾  — | j                   j                  «       D ��ci c]  \  }}|t        j                  |«      “Œ }}}i |¥| j                  ¥|xs i ¥||i¥}| j                  |«       |r| j                  ||«      }	n| j                  }	t        j                  |	|| j                  | j                  ¬«      }
| j                  r| j                  |
_        |
S c c}}w )N)rç  rL  )rH  ÚitemsÚ	importlibÚimport_moduler_  Ú_check_external_refsÚ_build_python_wrapperrŠ   Útypesr   rç  rL  rM  Ú__kwdefaults__)r´   rW  Úcompiled_fnrd  re  ÚaliasÚmodule_namerH  rT  rŠ   r,  s              r•   Úforward_callablez GraphRuntimeEnv.forward_callable+  sí   € ð '+×&9Ñ&9×&?Ñ&?Ó&A÷
á"��{ð ”9×*Ñ*¨;Ó7Ñ7ð
ˆñ 
ð
Øð
à×Ñð
ð Ò" ð
ð ˜ñ	
ˆ	ð 	×!Ñ! )Ô,áØ×1Ñ1°)¸ZÓH‰Hà—}‘}ˆHä×ÑØØØ—L‘LØ—L‘Lô	
ˆð �?Š?Ø $§¡ˆBÔØˆ	ùó7
s   ž Cc                óÊ  — | j                   D �cg c]  }|€Œ|‘Œ	 }}|st        d«      ‚| j                  }|j                  }|j                  d| }dj                  |«      }dg}|j                  d|› d�«       |D ]  }|D ]  }	|j                  d|	› �«       Œ Œ |j                  d«       |j                  d	«       |j                  d
«       dj                  |«      S c c}w )zCBuild Python source for the wrapper function from generated pycode.Nz%No Python code generated from Dynamo.ú, zdef __generate_func__():z    def __dynamo_func__(z):z        z        return __retz    return __dynamo_func__z/__dynamo_generated_func__ = __generate_func__()ú
)r;  ÚRuntimeErrorrŠ   Úco_argcountÚco_varnamesrw  r¿   )
r´   ÚpÚpycode_partsÚ	orig_codeÚargcountÚvarnamesÚargnamesÚ
func_linesÚpartrÜ   s
             r•   Ú_build_python_wrapper_sourcez,GraphRuntimeEnv._build_python_wrapper_sourceP  s÷   € à#'§;¡;Ö@˜a°!±-šÐ@ˆÐ@ÙÜÐFÓGÐGØ—M‘Mˆ	Ø×(Ñ(ˆØ×(Ñ(¨¨(Ð3ˆØ—9‘9˜XÓ&ˆà0Ð1ˆ
Ø×ÑÐ4°X°J¸bÐAÔBØ ò 	5ˆDØò 5�Ø×!Ñ! H¨T¨FÐ"3Õ4ñ5ð	5ð 	×ÑÐ0Ô1Ø×ÑÐ6Ô7Ø×ÑÐKÔLØ�y‰y˜Ó$Ð$ùò! As
   �C —C c                ó|   — | j                  «       }|j                  «       }t        ||«       |d   }|j                  S )z=Build a Python code object from the generated pycode strings.Ú__dynamo_generated_func__)r€  ÚcopyÚexecrÎ   )r´   rT  rW  Úfunc_sourceÚ	namespacerd  s         r•   rk  z%GraphRuntimeEnv._build_python_wrapperd  s?   € ð ×7Ñ7Ó9ˆà$-§N¡NÓ$4ˆ	ô 	ˆ[˜)Ô$ØÐ4Ñ5ˆØ�}‰}Ðr”   c                óx   — g }| j                   D ]  }||vsŒ|j                  |«       Œ |rt        d|› d�«      ‚y )Nz&Missing required external references: zM. Please load AOT compiled function with `f_globals=<enclosing global scope>`)rb  r¿   ru  )r´   rT  Úmissing_refsr¾   s       r•   rj  z$GraphRuntimeEnv._check_external_refsr  s]   € àˆØ×%Ñ%ò 	)ˆCØ˜)Ò#Ø×#Ñ# CÕ(ð	)ñ ÜØ8¸¸ð G^ð ^óð ð r”   )
rW  rM  rn  úCallable[..., Any]rd  rS  re  rÊ   rÈ   r‰  )rÈ   rM  )rT  r^  rW  rM  rÈ   r9  )rT  r^  rÈ   rÉ   )r�   r‘   r’   rž  rM  ÚdataclassesÚfieldr±   rb  rq  r€  rk  rj  r“   r”   r•   r\  r\     s­   … àÓØ"Ó"Ø"Ó"Ø Ó Ø#Ó#Ø#Ó#Ø(,€JÐ%Ó,Ø/˜k×/Ñ/ÀÔD€M�8ÓDð 04Ø#(ñ#àð#ð (ð#ð
 -ð#ð !ð#ð 
ó#óJ%ð(Ø'ðØ58ðà	óôr”   r\  c                óŽ   — ddl }i }| j                  «       D ]  \  }}	 |j                  |«       |||<   Œ |S # t        $ r Y Œ,w xY w)zCFilter a builtins dict to only picklable entries for serialization.r   N)Úpicklerg  Údumpsr&  )Úbuiltins_dictr�  rÒ   Úkr8  s        r•   Ú_safe_builtins_dictr‘  €  sZ   € ãà€FØ×#Ñ#Ó%ò ‰ˆˆ1ð	Ø�L‰L˜ŒOØˆF�1ŠIðð €Møô ò 	Ùð	ús   ž8¸	AÁAc                  ó®   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zedd„«       Zy)rF  z)
    Minimal version of DynamoOutput
    rY   r©   r]  rH  zlist[CodeType]rK  r   rŠ   r:  r;  rR  rç  rL  rS  rM  r^  rT  Nc           	     ór   — t        || j                  ||r|j                  nd |r|j                  nd ||¬«      S )Nr>  )rS   r©   rA  rB  )r´   rð   rë  rC  rí  r@  s         r•   rD  zGraphCaptureOutput.build_guardsž  s@   € ô $ØØ×ÑØÙ#(ˆE×Ò¨dÙ%*ˆE×!Ò!°ØØ%ô
ð 	
r”   c           
     ór  — ddl m} i }| j                  j                  j                  j                  «       D ].  } ||«      }|€Œ|| j                  v sŒ| j                  |   ||<   Œ0 | j                  | j                  «      }dd l	}|D ]^  }||vsŒ|j                  d«      r*|| j                  v rt        | j                  |   «      ||<   ŒCt        ||«      sŒPt        ||«      ||<   Œ` t        | j                  | j                  | j                   || j"                  | j$                  | j&                  |¬«      S )Nr   )Úget_global_source_nameÚ__builtins_dict__)rŠ   r;  rH  r_  rç  rL  rM  rb  )Útorch._dynamo.sourcer•  r©   rI  Úgraph_input_idx_to_local_sourcerL  rT  Ú_get_external_refsrŠ   r3  rU  r‘  r¥   r?  r\  r;  rH  rç  rL  rM  )r´   r•  r_  ÚsourceÚglobal_namerb  Ú	_builtinsr¾   s           r•   Úget_runtime_envz"GraphCaptureOutput.get_runtime_env°  s+  € Ý?àˆð ×Ñ×.Ñ.×NÑN×UÑUÓWò	HØá0°Ó8ˆKØÐ"ØØ˜dŸn™nÒ,Ø,0¯N©N¸;Ñ,G�˜[Ò)ð	Hð ×/Ñ/°·±Ó>ˆó 	%à ò 	@ˆCØ˜,Ò&Ø—>‘>Ð"5Ô6¸3À$Ç.Á.Ñ;PÜ(;¸D¿N¹NÈ3Ñ<OÓ(P�L Ò%Ü˜Y¨Õ,Ü(/°	¸3Ó(?�L Ò%ð	@ô Ø—]‘]Ø—;‘;Ø×.Ñ.Ø%Ø—L‘LØ—L‘LØ—‘Ø'ô	
ð 		
r”   c                ó0  — dd l }t        «       } |j                  | «      D ]r  }|j                  dk(  r)|j                  sŒ|j                  |j                  «       Œ;|j                  dk(  sŒK|j                  sŒX|j                  |j                  «       Œt |S )Nr   ÚLOAD_GLOBALÚ	LOAD_NAME)Údisr±   Úget_instructionsÚopnameÚargvalrÀ   )rŠ   r¡  rb  Úinstructions       r•   r™  z%GraphCaptureOutput._get_external_refsÖ  sˆ   € ãä"%£%ˆð 0˜3×/Ñ/°Ó9ò 	:ˆKà×!Ñ! ]Ò2Ø×%Ó%Ø!×%Ñ% k×&8Ñ&8Õ9à×#Ñ# {Ó2Ø×%Ó%Ø!×%Ñ% k×&8Ñ&8Õ9ð	:ð Ðr”   rO  rP  )rÈ   r\  )rŠ   r9  rÈ   ra  )	r�   r‘   r’   rT  rž  rD  r�  Ústaticmethodr™  r“   r”   r•   rF  rF  Ž  s¦   … ñð $Ó#Ø"Ó"ØÓØÓØ"Ó"Ø#Ó#Ø#Ó#Ø%Ó%ØÓð
 #ØØ15Ø"ð
àð
ð ð
ð ð	
ð
 /ð
ð ð
ð 
ó
ó$$
ðL òó ñr”   rF  c                  óF   — e Zd ZU dZded<   ded<   ddddœ	 	 	 	 	 	 	 d
d	„Zy)ÚCaptureOutputaÐ  
    CaptureOutput should represent all the information produced from torch
    compiler for a single graph capture. This intends to be consumed by
    various compiler frontends so that we can share as much compiler internals
    as possible and avoid great divergence between different stacks.
    This data structure should eventually contain all the information compiler
    produces as more refactors happens to converge different compiler
    frontends.
    rF  rN  zBackendInput | NoneÚbackend_inputNF)rn  rd  re  c               óî   — | j                   j                  «       }| j                  €t        d«      ‚| j                  j                  }|xs | j                  j
                  }|j                  ||||¬«      S )Nzbackend_input must not be Nonerc  )rN  r�  r©  r  rW  r	  rq  )r´   rn  rd  re  Úruntime_envrW  s         r•   rq  zCaptureOutput.forward_callableú  s{   € ð ×/Ñ/×?Ñ?ÓAˆØ×ÑÐ%Ü Ð!AÓBÐBØ×'Ñ'×2Ñ2ˆ
Ø!ÒD T×%7Ñ%7×%DÑ%DˆØ×+Ñ+ØØØ'Ø1ð	 ,ó 
ð 	
r”   )rn  zCallable[..., Any] | Nonerd  rS  re  rÊ   rÈ   r‰  )r�   r‘   r’   rT  rž  rq  r“   r”   r•   r¨  r¨  ê  sM   … ñð -Ó,à&Ó&ð
 26Ø/3Ø#(ñ
ð /ð
ð -ð	
ð
 !ð
ð 
ô
r”   r¨  c                ó:  — ddl }t        | t        j                  j                  «      �r+| j
                  }t        |d«      r|j                  }| j                  }t        |d«      r|j                  }t        | j                  «      dk(  �r�t        | j                  «      dk(  �rtt        t        j                  j                  j                  j                  «      dk(  �r9t        t        j                  j                  j                  j                  «      dk(  rÿt        | j                   «      dk(  rçt        | j"                  «      dk(  rÏt        t        j                  j                  j                  j$                  «      dk(  r•t        t        j                  j                  j                  j&                  «      dk(  r[|t        j                  j                  j
                  k7  r4|t        j                  j                  j                  k(  r| j
                  } n=t        | t        j(                  j*                  «      r| j,                  } n| j                  } t        | d«      r| j                  | j.                  fS  |j0                  | «      r| dfS t3        d| › �«      ‚)z’
    Utility function to get the function to trace, and optionally a bound self
    object, from a callable (nn.Module, function, or method).
    r   NÚ__self__zUnsupported model code type )Úinspectr@  rì   rB  rC  Úforwardr¥   Ú__func__rõ  ÚlenÚ_forward_pre_hooksÚ_forward_hooksÚmodulesÚmoduleÚ_global_forward_pre_hooksÚ_global_forward_hooksÚ_backward_pre_hooksÚ_backward_hooksÚ_global_backward_pre_hooksÚ_global_backward_hooksr  ÚGraphModuleÚ
_call_implr­  Ú
isfunctionru  )Úmodr®  Úresolved_forwardÚresolved_calls       r•   Úget_traced_fnrÂ    sÙ  € ó
 ä�#”u—x‘x—‘Õ'ØŸ;™;ÐÜÐ# ZÔ0à/×8Ñ8ÐàŸ™ˆÜ�= *Ô-Ø)×2Ñ2ˆMô
 �×&Ñ&Ó'¨1Ó,Ü�C×&Ñ&Ó'¨1Ó,Ü”E—H‘H×$Ñ$×+Ñ+×EÑEÓFÈ!ÓKÜ”E—H‘H×$Ñ$×+Ñ+×AÑAÓBÀaÒGÜ�C×+Ñ+Ó,°Ò1Ü�C×'Ñ'Ó(¨AÒ-Ü”E—H‘H×$Ñ$×+Ñ+×FÑFÓGÈ1ÒLÜ”E—H‘H×$Ñ$×+Ñ+×BÑBÓCÀqÒHØ ¤E§H¡H§O¡O×$;Ñ$;Ò;Ø¤§¡§¡×!9Ñ!9Ò9ð —+‘+‰CÜ˜œUŸX™X×1Ñ1Ô2Ø—.‘.‰Cà—,‘,ˆCäˆs�JÔØ�|‰|˜SŸ\™\Ð)Ð)Ø	ˆ×	Ñ	˜CÔ	 Ø�DˆyÐäÐ9¸#¸Ð?Ó@Ð@r”   c                ó0   — t        j                  | d¬«      S )NF)Úfollow_wrapped)r®  Ú	signature)r,  s    r•   Ú_get_signaturerÆ  ?  s   € Ü×Ñ˜R°Ô6Ð6r”   Ú	FrameInfoc           	     óœ  — ddl }t        | «      \  }}|�|f|z   }|€i }t        |«      } |j                  |i |¤Ž}|j	                  «        |j
                  }|j                  xs d}	|j                  j                  }
|
s|	rtt        |	«      t        |
«      k7  r$t        dt        |	«      › dt        |
«      › d�«      ‚|j                  t        |
|	«      D ��ci c]  \  }}||j                  “Œ c}}«       t        |j                  |j                  ||j                   |j                  xs d|j"                  |j$                  ¬«      S c c}}w )zL
    Create a frame to trace, given a model, args, and optional kwargs.
    r   Nr“   zclosure length (z) must match freevars length (ú))rç  rL  rM  )r3  rÂ  rÆ  ÚbindÚapply_defaultsÚ	argumentsÚ__closure__rÎ   Úco_freevarsr±  r  r/  ÚzipÚcell_contentsrÇ  Ú__globals__Ú__dict__Ú__defaults__rm  )r¿  r  r  r3  r,  Úself_optrÅ  Úbound_argumentsrV  rç  ÚfreevarsrÝ   Úcells                r•   Ú
_get_framerØ  C  s@  € ó ä  Ó%�L€BˆØÐØˆ{˜TÑ!ˆØ€~Øˆä˜rÓ"€IØ$�i—n‘n dÐ5¨fÑ5€OØ×"Ñ"Ô$Ø×(Ñ(€Hà�n‰nÒ" €GØ�{‰{×&Ñ&€HÙ‘7Üˆw‹<œ3˜x›=Ò(Ü Ø"¤3 w£< .Ð0NÌsÐS[Ë}ÈoÐ]^Ð_óð ð 	�‰Ü8;¸HÀgÓ8N×O©*¨$°ˆT�4×%Ñ%Ñ%ÓOô	
ô Ø
�‰Ø
�‰ØØ×ÑØ—‘Ò$ "Ø—‘Ø×$Ñ$ôð ùó Ps   ÃE
©ÚconstraintsÚ _is_export_deprecated_do_not_usec               óž   — t        | ||«      }t        t        t        i «      «      «      5  t	        |||¬«      cddd«       S # 1 sw Y   yxY w)a�  
    This API captures a full graph for a model, given example inputs to trace with.

    Specifically, it takes a callable (nn.Module, method, or function), args, and
    optional kwargs, and returns Dynamo-captured graph along with other important
    compile-time information. This serves as the common graph-capture mechanism
    for different torch compiler AOT frontends (e.g. AOT precompile, export).

    Note that this API doesn't apply context managers like metrics context,
    and the expectation is that the caller will apply them depending
    on the use case.

    The CaptureOutput is separated into two parts:
    1. Frontend specific information, which includes:
        - guards
        - generated bytecode
        - other information tracked by OutputGraphCommon.
    2. Backend specific information (indexed by unique backend id) such as:
        - fx graph
        - example inputs
    rÙ  N)rØ  r   r   r¨  Ú_fullgraph_capture_frame)r¿  r  r  rÚ  rÛ  ró   s         r•   Úfullgraph_capturerÞ  n  sJ   € ô: �s˜D &Ó)€Eä	œ¬°rÓ(:Ó;Ó	<ñ 
Ü'ØØ#Ø-Mô
÷
÷ 
ò 
ús   «AÁAc                  óT   — e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   ded<   y)rÇ  r9  rð   údict[str, object]rÐ   r2  r3  útuple[CellType]rç  rR  rL  rS  rM  N)r�   r‘   r’   rž  r“   r”   r•   rÇ  rÇ  •  s,   … à
ÓØÓØÓØÓØÓØ#Ó#Ø%Ô%r”   c               ó\  ‡‡— ddl mŠ d Š	 	 	 	 	 	 dˆˆfd„}	 t        | j                  | j                  | j
                  | j                  | j                  |||dt        «       ¬«
      }t#        |j%                  | j&                  | j(                  «      ‰«      S # t        t        t        f$ r}t        |«       t        j                  r‚ |}|j                  �4|j                  j!                  d «       |j                  }|j                  �Œ4|j!                  d «      |j                  ‚d }~ww xY w)Nr   )ÚTracingContextc                ó,  •— ‰j                  «       }|j                  }|j                  }|€t        d«      ‚t	        | j
                  d   t        «      s$t        dt        | j
                  d   «      › �«      ‚t        | j
                  d   | |||«      Š| S )Nzfake_mode must not be NonerW  z)gm.meta['backend_id'] must be a str, got )	r×  r�   r¤   r  r@  ÚmetarM  rD  rV  )ÚgmrY  r£   r�   r¤   rã  r©  s        €€r•   Úfullgraph_compilerz4_fullgraph_capture_frame.<locals>.fullgraph_compilerª  s�   ø€ ð )×,Ñ,Ó.ˆØ#×-Ñ-ˆ	Ø+×=Ñ=ÐØÐÜ Ð!=Ó>Ð>Ü˜"Ÿ'™' ,Ñ/´Ô5Ü Ø;¼DÀÇÁÈÑAVÓ<WÐ;XÐYóð ô %Ø�G‰G�LÑ! 2 ~°yÐBSó
ˆð ˆ	r”   T)r§   r\  r³  r²  Úrestart_reasons)ræ  rX  rY  zlist[torch.Tensor]rÈ   rX  )Útorch._guardsrã  Úcompile_framerð   rÐ   r2  r3  rç  r±   rP   rN   rQ   rE   r)   ÚverboseÚ	__cause__Úwith_tracebackr¨  rN  rL  rM  )	ró   rÚ  rÛ  rç  Údynamo_outputr^  Úcur_exnrã  r©  s	          @@r•   rÝ  rÝ     s  ù€ õ -à)-€MðØ ðØ2Dðà	öð$6ä%Ø�J‰JØ�M‰MØ�L‰LØ�N‰NØ�M‰MØ*Ø3Ø*ØÜ›Eô
ˆô2 Ø×*Ñ*¨5¯=©=¸%×:JÑ:JÓKØóð øô Ô5´yÐAò 
6Ü˜AÔÜ�>Š>Øà!"ˆØ×ÑÐ+Ø×Ñ×,Ñ,¨TÔ2Ø×'Ñ'ˆGð ×ÑÑ+ð ×Ñ˜tÓ$¨!¯+©+Ð5ûð
6ús   ™AB ÂD+Â,AD&Ä
D&Ä&D+ÚConvertFrameProtocolc                óP   ‡ ‡— t        ‰ dd «      }|�|S dd„Šdˆ ˆfd„}|‰ _        |S )NÚ_dynamo_fail_callbackc                 ó   — t        d«      ‚)Nz¨Dynamo: expected not to compile nested code - this happens because a Dynamo callback was triggered and succeeded in compiling when running fullgraph=True compiled code.)ru  )r  r  s     r•   Úcompile_frame_errorz.get_fail_callback.<locals>.compile_frame_errorã  s   € Üð9ó
ð 	
r”   c                 óz   •— t        j                  t        dz   ‰«      5   ‰| i |¤Žcd d d «       S # 1 sw Y   y xY w)Nz.compile_frame)Úmockrä  r�   )r  r  Úcallbackrô  s     €€r•   Úfail_callbackz(get_fail_callback.<locals>.fail_callbackê  s:   ø€ Ü�Z‰ZœÐ#3Ñ3Ð5HÓIñ 	-Ù˜TÐ, VÑ,÷	-÷ 	-ò 	-ús   Ÿ1±:)r  r
   r  r
   rÈ   r   )r  r
   r  r
   rÈ   re   )r?  rò  )r÷  rø  rô  s   ` @r•   Úget_fail_callbackrù  Þ  s8   ù€ Ü˜HÐ&=¸tÓD€MØÐ ØÐó
ö-ð
 &3€HÔ"ØÐr”   c               óz  ‡ ‡‡‡‡‡‡‡‡	‡
‡‡‡— t        «       Š	 	 	 	 	 	 dˆˆˆ ˆˆˆˆ	ˆ
ˆˆˆˆˆfd„}d}t        j                  «       D ]�  }|t        j                  «       _        	 t        d|› �d¬«      5  t        ‰ |«      \  }}|€t        d«      ‚|j                  €t        d«      ‚t        |||j                  j                  |¬«      cddd«       c S  y# 1 sw Y   nxY wŒž# t        j                  $ rß}t        |t        j                  «      st!        j"                  «        t$        j'                  d	t)        t*        |j,                  «      «       t/        |d
d«      }|r|j1                  «        |j3                  |j4                  xs t7        t9        |«      «      «       t;        j:                  «       }|dkD  rt=        dddg ¬«       Y d}~�Œ‹d}~wt        j>                  $ rS}t        |t        j                  «      st!        j"                  «        t/        |d
d«      }|r|j1                  «        ‚ d}~ww xY w)a  
    A helper function taking a frame and backend, then return the generated bytecode
    and guards as a common data structure.
    This is a shared interface for multiple compiler frontends (e.g. torch.compile,
    torch.export) that needs to capture a graph out of python code.
    c                ó¦   •— t        t        j                  «      }t        ‰‰‰‰‰‰|‰‰| t	        t
        |«      ‰	‰
‰‰‰¬«      }|€t        d«      ‚|S )Nr  z.tracer_output must not be None after transform)ræ   r   rà   r6  r   rW   r  )r5  r0  r4  r¦   r3  rç  rð   r§   r  r\  r³  r¦  rÐ   r2  r²  r´  r  s       €€€€€€€€€€€€€r•   Ú	transformz compile_frame.<locals>.transform  sx   ø€ ô BFÜ/×5Ñ5óB
ˆô $ØØØØØØØØØØÜ”˜lÓ+ØØ1Ø#Ø/Øô!
ˆð& Ð Ü Ð!QÓRÐRØÐr”   NÚcompile_attempt_T©Úlog_pt2_compile_eventz:tracer_output must not be None after transform_code_objectzGtracer_output.output_graph must not be None after transform_code_object)r¦   rŠ   r;  r<  zRestarting analysis due to %sr1  éd   z!Excessive RestartAnalysis() callsrÅ  z’Dynamo attempted to trace the same frame 100+ times. Giving up on compiling as the compile time tradeoff is likely not worth the performance gain.rÆ  )r5  úlist[Instruction]r0  r^  rÈ   rX   ) rc   rç   Úcountr   r×  Úattemptrn   r5   r  r©   r8  Úoutput_pycoder+   ÚRestartAnalysisr@  r$  r   r›   r€  rò  rv   r'   Ú__traceback__r?  Ú_cleanup_output_graphrÀ   Úrestart_reasonrM  rD  r}  rO   r%  )rð   rÐ   r2  r3  rç  r§   r²  rè  r\  r³  r¦  r  r´  rü  r<  r  rŠ   r¦   r^  Úfailed_tracer_outputr  s   ``````` `````       @r•   rê  rê  ó  s  ÿü€ ô0 %Ó&€OðØ'ðØ7Eðà	÷÷ ñ ð: #ÐÜ—?‘?Ó$ò 3ˆØ'.Œ×ÑÓÔ$ð0	ÜÐ 0°°	Ð:ÐRVÔWñ Ü*?ÀÀiÓ*PÑ'�˜-Ø Ð(Ü(ØTóð ð !×-Ñ-Ð5Ü(Øaóð ô $Ø"/Ø%Ø(×5Ñ5×CÑCØ,Cô	÷ó ñ	3÷ð úð øô  ×"Ñ"ò 	Ü˜a¤×!CÑ!CÔDÜ×$Ñ$Ô&Ü�H‰HØ/ÜÔ1°1·?±?ÓCôô
 $+¨1Ð.KÈTÓ#RÐ Ù#Ø$×:Ñ:Ô<à×Ñ × 0Ñ 0Ò @´C¼¸Q»³LÔAä&*§i¡i£kÐ#Ø˜Š}ÜØ?Øð!2ð õÿùô �}‰}ò 	Ü˜a¤×!CÑ!CÔDÜ×$Ñ$Ô&ä#*¨1Ð.KÈTÓ#RÐ Ù#Ø$×:Ñ:Ô<Øûð	ús?   Á#C$Á3ACÃ		C$ÃC 	ÃC$Ã$H:Ã7CGÇH:Ç'AH5È5H:)r×   r´  rÒ  c               ó@  ‡‡‡‡‡‡‡‡
‡‡‡‡‡?‡@‡A‡B‡C— ddl m}m} dŠAt        d¬«      	 	 	 	 	 	 	 	 d@ˆ?ˆfd„«       }t        	 	 	 	 	 	 	 	 dAˆˆˆ
ˆˆˆˆ@ˆAˆˆˆˆˆˆˆCfd„«       Š?t        «       }‰�‰j                  | «      nt        j                  «       }t        t        j                  «      5  t        t        ‰«      «      5  t        dd	d	¬
«      5  t        d«      j!                  «       5  |5  t#        ddd¬«      5  |5  t%        «       ŠCt'        «       x}rt)        |t+        «       «      Š@nd Š@d }t-        |«      r!|rt/        ||t1        ‰«      «      }|sdn|d   }|j3                  |ddœ«       t5        «       }|r)|D �ch c]  } |«       d d ’Œ }}|j%                  d|«       t7        |‰«      \  }ŠB|rDdBd„} t8        j;                  d‰Bt=        t        ‰B«       | | «      |t>        «       dCˆBfd„}!	  |!«        t8        jO                  d| jP                  | jR                  | jT                  |dz   djW                  tY        jZ                  d|z   ¬«      j]                  «       «      «       t_        | |«      }#ta        jb                  «       }$d }%d }&d }'d }(d })td        jf                  jh                  jj                  jm                  «        d }*d }+t        jn                  s t        jp                  st        jr                  rsddl:m;},m<}-m=}.  |,t        jn                  «      x}/rt}        |/«      ‚ |-t        jp                  «      x}/rt}        |/«      ‚ |.t        jr                  «      x}/rt}        |/«      ‚	  || ||	«      \  }*}+t        «        |+r9|+j€                  x}0r+|0jƒ                  «       rt…        | «       |rd |v r
t‡        «        t‰        |+‰«       |*td        jf                  j                  jŠ                  r@t#        d!d"¬#«      5  t8        j�                  d$«       t�        j�                  d«       d d d «       d }1|+r|+j€                  }1|1ri |1_I        |1j”                  x}2ri |2_K        dd%l4mL}3 t›        |3«      }4|&�€|1��t�        |1jž                  «      }5t�        |1j                   jž                  «      }6|1j£                  «       }7t�        |1j¤                  j¦                  «      }8|1j©                  «       }9t�        |1jª                  «      }:|1j¬                  D �;ch c]  };|;j®                  ’Œ }<};|1j°                  D �;ch c]  };|;j®                  ’Œ }=};td        jf                  jh                  jj                  j9                  «        nFd }5d }6d }7d }8i }9d }:t%        i «      }<t%        i «      }=t%        «       ŠCta        jb                  «       |$z
  d&z  ŠAi d'|4“d(| jP                  “d)| jR                  “d*| jT                  “d+|j²                  “d,|j´                  “d-|5“d.|6“d/|7“d0|8“d1|:“d2|%“d3|&“d4|(“d5|)“d6|<“d7|=“‰C‰A|*d ut        j¶                  d	t¹        ‰A«      |#t›        |9«      |'d8œ	¥}>|j3                  |>«       |r|+r|+jº                  n	t½        «       |_]        |+�Z|+j€                  �N|+j€                  j¾                  s8|+j€                  jÀ                  jÂ                  jÄ                  jm                  «        t‰        |+‰«       cd d d «       cd d d «       cd d d «       cd d d «       cd d d «       cd d d «       cd d d «       S c c}w # t@        $ r]}"t        jB                  rtE        d«      |"‚|rtE        d«      |"‚tG        tH        jJ                  tH        jJ                  «      |"_&        ‚ d }"~"ww xY w# 1 sw Y   �ŒqxY wc c};w c c};w # tÆ        $ �r$}"tÉ        |"«      j®                  }%t›        |"«      }&tË        jÌ                  «       g}'tÏ        |"| |‰¬9«       td        jÐ                  jÓ                  d:d;„ d<„ ¬=«       tÕ        jÖ                  |"‰«      \  }(})t=        |"d>d «      }+tÙ        |"t@        tÚ        tÜ        tÞ        tà        tâ        tä        tæ        |tè        |tê        tì        tî        f«      r‚ tñ        tÉ        |"«      j®                  › d?t›        |"«      › �«      jó                  |"jô                  «      d ‚d }"~"ww xY w# td        jf                  j                  jŠ                  rMt#        d!d"¬#«      5  t8        j�                  d$«       t�        j�                  d«       d d d «       n# 1 sw Y   nxY wd }1|+r|+j€                  }1|1ri |1_I        |1j”                  x}2ri |2_K        dd%l4mL}3 t›        |3«      }4|&�€|1��t�        |1jž                  «      }5t�        |1j                   jž                  «      }6|1j£                  «       }7t�        |1j¤                  j¦                  «      }8|1j©                  «       }9t�        |1jª                  «      }:|1j¬                  D �;ch c]  };|;j®                  ’Œ nc c};w }<};|1j°                  D �;ch c]  };|;j®                  ’Œ nc c};w }=};td        jf                  jh                  jj                  j9                  «        nFd }5d }6d }7d }8i }9d }:t%        i «      }<t%        i «      }=t%        «       ŠCta        jb                  «       |$z
  d&z  ŠAi d'|4“d(| jP                  “d)| jR                  “d*| jT                  “d+|j²                  “d,|j´                  “d-|5“d.|6“d/|7“d0|8“d1|:“d2|%“d3|&“d4|(“d5|)“d6|<“d7|=“‰C‰A|*d ut        j¶                  d	t¹        ‰A«      |#t›        |9«      |'d8œ	¥}>|j3                  |>«       |r|+r|+jº                  n	t½        «       |_]        |+�Z|+j€                  �N|+j€                  j¾                  s8|+j€                  jÀ                  jÂ                  jÄ                  jm                  «        t‰        |+‰«       w xY w# 1 sw Y   nxY wd d d «       n# 1 sw Y   nxY wd d d «       n# 1 sw Y   nxY wd d d «       n# 1 sw Y   nxY wd d d «       n# 1 sw Y   nxY wd d d «       n# 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY w)DNr   )ÚBisectValidationExceptionÚValidationExceptiong        Úcompile_inner)Ú
phase_namec           
     ór  •— t        j                  «       5 }‰s-|j                  t        j                  j                  «       «       |j                  t        j                  j                  j                  t        j                  t        t        j                  «       «      «      «       |j                  t        j                  «       «       |j                  t         «        ‰| ||«      }t        j"                  j%                  «       dk7  rt'        d«      ‚|cd d d «       S # 1 sw Y   nxY wt)        «       d fS )Nr   zQTorch function mode stack state changed while dynamo tracing, please report a bug)r
  r  r  rì   ÚcompilerÚ_compile_session_contextÚ_dynamoÚcallback_handlerÚinstall_callbacksr   ÚDYNAMOrM  r   r¥  rl   Úrecordr   rü   Ú_len_torch_function_stackr  re   )rð   r²  rë  rà   rÒ   Ú_compile_innerr\  s        €€r•   r  z_compile.<locals>.compile_innerƒ  sý   ø€ ô ×!Ñ!Ó#ð 	 uñ Ø×#Ñ#¤E§N¡N×$KÑ$KÓ$MÔNØ×ÑÜ—‘×.Ñ.×@Ñ@Ü#×*Ñ*¬C´×0QÑ0QÓ0SÓ,Tóôð
 ×ÑÔ =× DÑ DÓ FÔGØ×ÑÔ CÔDÙ# D¨)°UÓ;ˆFÜ�x‰x×1Ñ1Ó3°qÒ8Ü$Øgóð ð ÷+	÷ 	ò 	úô0 Ó Øð
ð 	
s   –DD!Ä!D*c                ó   •‡ ‡— t        j                   «       x}}	 	 	 	 	 	 	 	 	 	 	 	 d.d„} |d‰ j                  ‰ j                  ‰ j                  ‰ «       d‰ j                  v }|r(t        j
                  j                  dˆ fd„ˆ fd„¬«       d Šdd	lm}  |‰ t        j                  «      }	 |rt        j                  |«      nt        j                  «       5  t        ‰ ‰'‰(‰‰‰!|‰*‰$‰%‰&‰"‰)¬
«      }	d d d «       ‰"�‰"j,                  €t)        d«      ‚	j.                  Š|	j0                  }|	j2                  �|	j2                  }‰€t)        d«      ‚ |d‰ j                  ‰ j                  ‰ j                  ‰«       |r(t        j
                  j                  dˆ fd„ˆfd„¬«       |j4                  €t)        d«      ‚|j4                  }t7        |j9                  «       «      t;        j<                  ‰«      t>        <   tA        tB        jE                  «       «      D ];  \  }}tG        d|› �d¬«      5   |‰ ‰«      }|�|‰urtI        ‰|«       |Šd d d «       Œ= ‰ tJ        ‰<   tL        jO                  ‰«       ||z
  Š#ddl(m)} |‰jT                  v rddl+m,}  |‰«       d/d„}‰€t)        d«      ‚ |‰ «      } |‰«      }‰ jZ                  d | ‰jZ                  d | k7  r8d}|d‰ jZ                  d | › d�z  }|d ‰jZ                  d | › �z  }t)        |«      ‚‰ j\                  ‰j\                  k7  r2d!}|d"‰ j\                  › d�z  }|d#‰j\                  › �z  }t)        |«      ‚‰ j^                  ‰j^                  k7  r2d$}|d%‰ j^                  › d�z  }|d&‰j^                  › �z  }t)        |«      ‚|j`                  r|jc                  «       rt+        d'¬«      |fS |jd                  €t)        d(«      ‚|jf                  th        jj                  ‰<   t        jl                  «       }tn        jp                  r#|js                  to        jt                  «       «       tG        d)d¬«      5  |5  |	jw                  ‰ |‰)d u‰¬*«      }d d d «       d d d «       ‰)�}jx                  €t)        d+«      ‚‰)j{                  |jx                  ‰«       ‰)j}                  |j~                  j€                  «       ‰)jƒ                  |j„                  j†                  «       ‰ �t‰        ‰ «      nd,}d-|z   }t‹        ‰jŒ                  ‰ |«      }|jc                  «       s'|jŽ                  �|j�                  |jd                  «       t‘        |«      |fS # 1 sw Y   �Œ„xY w# t        j                   $ rT}
|rt"        j%                  d«       |
j&                  €t)        d«      d ‚t+        d|
› �¬«      |
j&                  fcY d }
~
S d }
~
ww xY w# 1 sw Y   �ŒÞxY w# 1 sw Y   �Œ…xY w# 1 sw Y   �ŒŠxY w)0Nc           	     ó�   — t         j                  t        j                  «      r#t         j	                  t        | ||||«      «       y y r¯   )Úbytecode_logÚisEnabledForÚloggingÚDEBUGÚdebugro   )ÚprefixrÝ   rÙ   Úline_norð   s        r•   Úlog_bytecodez6_compile.<locals>._compile_inner.<locals>.log_bytecode¬  s9   € ô ×(Ñ(¬¯©Ô7Ü×"Ñ"Ü# F¨D°(¸GÀTÓJõð 8r”   zORIGINAL BYTECODEÚtorch_dynamo_resume_inÚartifactc                 ó(   •— ‰ j                   dz   ddœS )NÚ_ORIGINAL_BYTECODEÚstring©rÝ   Úencoding©rê   r  s   €r•   r»   z2_compile.<locals>._compile_inner.<locals>.<lambda>Á  ó   ø€ Ø ŸL™LÐ+?Ñ?Ø (ñ%€ r”   c                 óJ   •— t        j                  ‰ «      j                  «       S r¯   ©r¡  ÚBytecoder  s   €r•   r»   z2_compile.<locals>._compile_inner.<locals>.<lambda>Å  s   ø€ ¤3§<¡<°Ó#5×#9Ñ#9Ó#;€ r”   ©Úmetadata_fnÚ
payload_fnr(   )Ú)get_dynamo_config_override_for_compile_idr  z,No graph captured with export/fullgraph=Truez=SkipFrame exception must have _torch_dynamo_tracer_output setz0Dynamo decided to skip the frame while tracing: rÀ  z;compiler collective wasn't run before compilation completedz+out_code must not be None after compilationzMODIFIED BYTECODEc                 ó(   •— ‰ j                   dz   ddœS )NÚ_MODIFIED_BYTECODEr'  r(  r*  r  s   €r•   r»   z2_compile.<locals>._compile_inner.<locals>.<lambda>  r+  r”   c                 óJ   •— t        j                  ‰ «      j                  «       S r¯   r-  )Úout_codes   €r•   r»   z2_compile.<locals>._compile_inner.<locals>.<lambda>  s   ø€ ¤3§<¡<°Ó#9×#=Ñ#=Ó#?€ r”   z+tracer_output.output_graph must not be NoneÚbytecode_hooks_Trþ  )ÚBREAKPOINT_MARKERr   )Úregister_breakpoint_codec                óÈ   — dd l }| j                  | j                  z   t        | j                  |j
                  z  «      z   t        | j                  |j                  z  «      z   S )Nr   )r®  rv  Úco_kwonlyargcountrÊ   Úco_flagsÚ
CO_VARARGSÚCO_VARKEYWORDS)rð   r®  s     r•   Ú
count_argsz4_compile.<locals>._compile_inner.<locals>.count_args-  s]   € Ûð × Ñ Ø×(Ñ(ñ)ä�t—}‘} w×'9Ñ'9Ñ9Ó:ñ;ô �t—}‘} w×'=Ñ'=Ñ=Ó>ñ?ðr”   z8out_code must not be None after bytecode hook processingzarg mismatch: zold code object has args rs  znew code object has args zfree var mismatch: zold code object has free var znew code object has free var zcell var mismatch: zold code object has cell var znew code object has cell var z#export mode produced an empty graphzoutput.guards must not be NonerD  )rë  rC  rí  z&check_fn.guards_state must not be NoneÚUnknownzTorch-Compiled Region: )r   rM  rÝ   rM  rÙ   rM  r!  rN  rð   r   rÈ   rÉ   ©rð   r   rÈ   rN  )Ir}  rê   rë   ré   rì   rí   rî   Úgraph_id_filterr2  r)   Údebug_dynamo_config_overriderä  r
  rå  rê  r+   r%  r€  r  r1  r  re   Ú
all_statesrŠ   r¦   r<  r©   rI  Ú$get_replayed_side_effect_source_refsr:   r  r  Ú	enumerater  rL  rn   r  ry   rÕ  rÀ   Úbytecode_debuggerr8  Ú	co_constsÚtorch._C._dynamo.eval_framer9  rw  rÎ  Úco_cellvarsr\  Úis_empty_graphr  Úcleanupsrk   Úinstancer  r   rà   r  Útemp_restore_stackrD  Úguards_stateÚadd_guarded_codeÚadd_inlined_sourcer£   rK  Úupdate_device_typeÚcurrent_tracerÚgraphrM  rU   Úguard_managerÚguard_export_fnrh   )+rð   r²  rë  r<  Ú
start_timer"  Úis_resumption_framer2  Údynamo_config_overriderî  r^  r¦   r  rº   r  Úhook_outputr8  r9  r?  Útotal_argcount_oldÚtotal_argcount_newÚmsgÚbuild_guards_ctxÚcheck_fnÚcompile_id_strÚannotation_strÚguarded_coder6  r3  rí  rê  rç  rÍ  r§   r  Údynamo_time_before_restartr\  r³  r¦  rÐ   r2  r´  rè  s+   `                          @€€€€€€€€€€€€€€€r•   r  z _compile.<locals>._compile_inner£  s˜  ú€ ô 04¯y©y«{Ð:Ð *ð	Øð	Ø"ð	Ø.1ð	Ø<?ð	ØGOð	àó	ñ 	ØØ�L‰LØ×ÑØ×ÑØô	
ð 7¸$¿,¹,ÐFÐÙÜ�N‰N×+Ñ+Øóó <ð ,ô ð ˆÝNá!JØœ×;Ñ;ó"
Ðð!	ñ *ô —‘Ð3Ô4ä×+Ñ+Ó-ñô
 !.ØØØØØØØØ#Ø!Ø'9Ø +Ø&7Ø#ô!�÷ðD Ð(Ð->×-IÑ-IÐ-QÜ ØMóð ð !×)Ñ)ˆØ%×3Ñ3ˆØ×0Ñ0Ð<Ø&3×&KÑ&KÐ#àÐÜ Ð!NÓOÐOÙØØ�L‰LØ×ÑØ×ÑØô	
ñ Ü�N‰N×+Ñ+Øóó @ð ,ô ð ×%Ñ%Ð-Ü Ð!NÓOÐOØ×+Ñ+ˆä�&×=Ñ=Ó?Ó@ô 	× Ñ  Ó*Ô+RÑSô #¤?×#9Ñ#9Ó#;Ó<ò 	+‰IˆC�Ü °¨uÐ5ÈTÔRñ +Ù" 4¨Ó2�ØÐ*Ø"¨(Ñ2Ü*¨8°[ÔAØ*�H÷+ð +ð	+ð #'Œ�hÑÜ×Ñ˜Ô"Ø%<¸zÑ%IÐ"å8à × 2Ñ 2Ñ2ÝLá$ XÔ.ó	ð ÐÜ ØJóð ñ (¨Ó-ÐÙ'¨Ó1Ðà×ÑÐ0Ð0Ð1Ø×#Ñ#Ð$7Ð%7Ð8ò9ð #ˆCØÐ.¨t×/?Ñ/?Ð@SÐASÐ/TÐ.UÐUWÐXÑXˆCØØ+¨H×,@Ñ,@ÐATÐBTÐ,UÐ+VÐWñˆCô ! Ó%Ð%à×Ñ˜x×3Ñ3Ò3Ø'ˆCØÐ2°4×3CÑ3CÐ2DÀBÐGÑGˆCØÐ2°8×3GÑ3GÐ2HÐIÑIˆCÜ  Ó%Ð%à×Ñ˜x×3Ñ3Ò3Ø'ˆCØÐ2°4×3CÑ3CÐ2DÀBÐGÑGˆCØÐ2°8×3GÑ3GÐ2HÐIÑIˆCÜ  Ó%Ð%ð �=Š=˜V×2Ñ2Ô4ä"Ð/TÔUØðð ð
 �=‰=Ð Ü Ð!AÓBÐBØ,2¯O©OŒ×Ñ Ñ)ô &×/Ñ/Ó1ÐÜ.×4Ò4Ø×*Ñ*Ü3×FÑFÓHôô ˜.ÀÔEñ 	ÐGWñ 	Ø$×1Ñ1ØØØ DÐ(Ø+ð	 2ó ˆH÷	÷ 	ð ÐØ×$Ñ$Ð,Ü$Ð%MÓNÐNØ×$Ñ$ X×%:Ñ%:¸HÔEØ×&Ñ& v×'=Ñ'=×'IÑ'IÔJØ×&Ñ& v×'<Ñ'<×'BÑ'BÔCà,6Ð,Bœ˜ZœÈ	ˆØ2°^ÑCˆÜ"ØØ×"Ñ"ØØó	
ˆð ×$Ñ$Ô&¨5×+@Ñ+@Ð+Lð ×!Ñ! &§-¡-Ô0ä  Ó.°Ð=Ð=÷Añ ûô( �}‰}ò 	ÙÜ—	‘	ÐHÔIØ×,Ñ,Ð4Ü$ØSóàðô #Ø"RÐSTÐRUÐ Vôð ×-Ñ-ð	õ ûð	ú÷h+ñ +ú÷p	ñ 	ú÷ 	ñ 	úsg   Â,+U? ÃU2Ã0U? È+W)ÑXÑW6Ñ3XÕ2U<Õ7U? Õ?W&ÖA	W!×W&×!W&×)W3	×6X 	×;XØXrÌ  T)Úreset_event_log_on_exitrÿ  z+pytorch.wait_counter.entire_forward_compilez_compile.compile_innerÚentire_frame_compileÚ!dynamo_cumulative_compile_time_us)r  Údynamo_compile_column_usz$Unable to find recompilation reasonsF)Úrecompile_reasonÚ#inline_inbuilt_nn_modules_candidateé   Úrecompile_user_contextsc                óV   — d| j                   › d| j                  › d| j                  › d�S )Nú'z' (rÑ  rÉ  )rê   rë   ré   r  s    r•   Úformat_func_infoz"_compile.<locals>.format_func_infoÅ  s0   € Ø˜4Ÿ<™<˜.¨¨D×,<Ñ,<Ð+=¸Q¸t×?RÑ?RÐ>SÐSTÐUÐUr”   z«torch._dynamo hit config.%s (%s)
   function: %s
   last reason: %s
To log all recompilation reasons, use TORCH_LOGS="recompiles".
To diagnose recompilation issues, see %sc                 óp   •— t        dd‰ › �d‰ › dt        t        ‰ «      › d�d‰ › d�dt        › d	�g¬
«       y )NzDynamo recompile limit exceededzLimit type: zLDynamo attempted to recompile the code object too many times, exceeding the z$ cache size limit (currently set to zj). Excessive recompilations can degrade performance due to the compilation overhead of each recompilation.z‚To monitor recompilations, enable TORCH_LOGS=recompiles. If recompilations are expected, consider increasing torch._dynamo.config.z to an appropriate value.zSee z) for tips on dealing with recompilations.rÆ  )rO   r?  r)   r}   )Ú
limit_types   €r•   Ú(raise_unimplemented_cache_limit_exceededz:_compile.<locals>.raise_unimplemented_cache_limit_exceeded×  sj   ø€ ÜØ=Ø*¨:¨,Ð7ð!%Ø%/ LÐ0TÔU\Ô]cÐeoÓUpÐTqð rYð!Yð
;à;E¸,ÐF_ðað Ô2Ð3Ð3\Ð]ð	ör”   z/Hard failure due to fail_on_recompile_limit_hitz"Hard failure due to fullgraph=TruezBtorchdynamo start compiling %s %s:%s, stack (elided %s frames):
%sé   rÅ  rÖ   r(   )Ú_validate_backend_namesÚ_validate_dynamo_config_keysÚ_validate_inductor_config_keyszsize mismatch at indexÚgcÚ
gc_time_us)rg  z run_gc_after_compile: running gc)Ú
curr_frameg    eÍÍAÚ	frame_keyrê   rë   ré   rÎ  rÏ  Úguard_countÚshape_env_guard_countÚgraph_op_countÚgraph_node_countÚgraph_input_countÚ	fail_typeÚfail_reasonÚfail_user_frame_filenameÚfail_user_frame_linenoÚnon_compliant_opsÚcompliant_custom_ops)	rè  Údynamo_time_before_restart_sÚhas_guarded_codeÚspecialize_floatÚ
is_forwardÚ%dynamo_compile_time_before_restart_usÚstack_traceÚgraph_node_shapesÚexception_stack_tracer[  r$  c                 ó   — dddœS )NÚdynamo_errorr'  r(  r“   r“   r”   r•   r»   z_compile.<locals>.<lambda>X  s   € Ø*Ø (ñ%€ r”   c                 ó*   — t        j                  «       S r¯   ©Ú	tracebackÚ
format_excr“   r”   r•   r»   z_compile.<locals>.<lambda>\  s   € ¤9×#7Ñ#7Ó#9€ r”   r/  r1  z: )rð   r   r²  rÊ   rë  rV   rÈ   z4tuple[ConvertFrameReturn, DynamoTracerOutput | None])rð   r   r²  rÊ   rë  rV   rÈ   z-tuple[ConvertFrameReturn, DynamoTracerOutput])rð   r   rÈ   rM  )rÈ   r   ){r,  r  r  r   re  rr   r:   r
  rå  r   r)   Úuse_lazy_graph_moduler   r   rj   r    Úguardrn   r±   r   r_   rb   r9   rT   rB   Úupdate_outerrq   r8   r€  r‚  r?  r}   rP   Úfail_on_recompile_limit_hitrG   rg   rf   ÚRUN_ONLYÚframe_exec_strategyr  rê   rë   ré   rw  r&   rã   Úformatrõ   r}  Útime_nsrì   r  ÚutilsÚReinplaceCountersr›   Údebug_backend_overriderC  Údebug_inductor_config_overriderB  rs  rt  ru  r  r\   r©   Úhas_outputsr[   rZ   r«   Úrun_gc_after_compilerò  rv  ÚcollectÚlocal_scopeÚroot_txrV  rx  rM  r±  r  r'  Úcount_callsrT  ÚnodesÚget_graph_sizes_structuredÚplaceholdersrƒ  r’   r„  rá  râ  r‡  r|   r�  ri   r\  r£   Úguards_contextÚdynamo_guardsr&  rD  r‘  r’  r_  rí   rî   r+   Úget_exc_messager@  rQ   rM   rF   r  Ú
IndexErrorr   r   rN   rL   rJ   rK   rI   rí  r  )Drð   rÐ   r2  r3  rç  r§   r²  r\  r³  rë  rê  rí  rî  rÎ  ró   r¦  rÍ  r×   r´  rÒ  r  r  r  Úmetrics_contextÚpackage_code_contextÚ
compile_pgrh  Úreasonsrk  Úuser_contextÚuser_contexts_msgÚexceededrn  rq  r^  rŠ  Ústart_time_nsr  r€  rŒ  r�  r‚  rb  r¦   rs  rt  ru  Úerrr©   r  r)  rx  ry  rz  r{  r|  r}  r‹  r~  Úoprƒ  r„  Úmetricsr  r  rc  rp  rè  sD    ````` `` ``   `` `                                            @@@@@r•   ræ  ræ  a  sn  ÿÿø€ ÷2ð ),Ðä"¨oÔ>ð
Øð
Ø#'ð
Ø05ð
à	=õ
ó ?ð
ô> ðj>Øðj>àðj>ð ðj>ð 
7÷	j>÷ j>ò j>ó ðj>ôX *Ó+€Oà&-Ð&9ˆ×Ñ˜TÔ"¼z×?UÑ?UÓ?Wð ô 	œv×;Ñ;Ó<ñRGäœ zÓ2Ó3ñRGô 	Ø¨dÈ$ô	
ñRGô 	ÐBÓC×IÑIÓKñRGð 	ñRGô 	Ø$Ø-Ø%Hô	
ñRGð 	ñRGô %(£EˆÜ'Ó)Ð)ˆ:Ð)Ü 0°¼Z»\Ó JÑà $Ðð (,ÐÜ˜JÔ'©EÜ=Ø)¨5Ô2CÀKÓ2PóˆGñ ?FÑ6È7ÐSTÉ:ð ð 	×$Ñ$à$4Ø7<ñô	
ô #FÓ"GÐÙ"ð :Qö!Ø)5‘“˜t Ò$ð!Ðð !ð ×ÑÐ 9Ð;LÔMä6°zÀ:ÓNÑˆ�*ÙóVô
 �K‰Kð;ð
 Üœ 
Ó+Ù  Ó&Ø Ü#ôõð Ù8Ô:ô" 	�	‰	ØQØ�L‰LØ×ÑØ×ÑØ�1‰Hà�G‰GÔ%×-Ñ-°1°t±8Ô<×CÑCÓEÓFô	
ô4 ' t¨TÓ2ˆÜŸ™›ˆØ $ˆ	Ø"&ˆØ26ÐØ/3Ð Ø-1ÐÜ�‰×Ñ×-Ñ-×3Ñ3Ô5ØˆØˆô ×)Ò)Ü×2Ò2Ü×4Ò4÷
ñ ñ .¬f×.KÑ.KÓLÐLˆsÐLÜ  “oÐ%Ù2´6×3VÑ3VÓWÐWˆsÐWÜ  “oÐ%Ù4Ü×5Ñ5óð ˆsð ô ! “oÐ%ðq	GÙ*7¸¸iÈÓ*OÑ'ˆL˜-ô ÔáØ%2×%?Ñ%?Ð?�\Ð?Ø ×,Ñ,Ô.ä+¨DÔ1Ù#Ð(@ÐDTÑ(TÜ0Ô2ä*¨=¸+ÔFØôj �}‰}×#Ñ#×8Ò8Ü! $ÀÔNñ "Ü—H‘HÐ?Ô@Ü—J‘J˜q”M÷"ð ˆFÙØ&×3Ñ3�Ùà%'�Ô"à#Ÿ^™^Ð+�6Ð+à&(�F”Oå)ä˜J›ˆIØÑ" vÑ'9Ü! &§-¡-Ó0�Ü(+¨F×,<Ñ,<×,CÑ,CÓ(DÐ%Ø!'×!3Ñ!3Ó!5�Ü#& v§|¡|×'9Ñ'9Ó#:Ð Ø$*×$EÑ$EÓ$GÐ!Ü$'¨×(;Ñ(;Ó$<Ð!Ø?E×?WÑ?WÖ$X¸ R§_£_Ð$XÐ!Ð$Xà.4×.IÑ.Iö(Ø(*�B—O“Oð(Ð$ð (ô —‘×#Ñ#×5Ñ5×9Ñ9Õ;à"�Ø(,Ð%Ø!%�Ø#'Ð à$&Ð!Ø$(Ð!Ü$'¨£GÐ!Ü'*¨2£wÐ$Ü"%£%�ä.2¯l©l«n¸}Ñ.LÐPSÑ-SÐ*ðØ˜Yðà˜4Ÿ<™<ðð ˜t×/Ñ/ðð ! $×"5Ñ"5ð	ð
 ˜j×TÑTðð )¨*×*FÑ*Fðð ˜{ðð (Ð)>ðð ! .ðð #Ð$4ðð $Ð%6ðð ˜Yðð ˜{ðð +Ð,Dðð )Ð*@ðð  $Ð%6ð!ð" 'Ð(<ð#ð$ $3Ø0JØ$0¸Ð$<Ü$*×$;Ñ$;Ø"Ü9BØ.ó:ð  +Ü%(Ð):Ó%;Ø)>ò9ˆGðB ×(Ñ(¨Ô1ñ !ñ %ð "×6Ò6ä2Ó4ð "Ô6ð Ð)Ø!×.Ñ.Ð:Ø%×2Ñ2×9Ò9à×*Ñ*×:Ñ:×IÑI×WÑW×]Ñ]Ô_ä*¨=¸+ÔF÷e
RG÷ RG÷ RG÷ RG÷ RG÷ RG÷ RG÷ RGùòR!øôX ò Ü×5Ò5Ü1ØIóàðñ Ü1Ø<óàðô
 ->Ü#×,Ñ,¬k×.BÑ.Bó-�AÔ)ð ûðú÷r"ñ "üò2 %Yùò(øô_ ó -	<ô ˜Q›×,Ñ,ˆIÜ˜a›&ˆKÜ%.×%9Ñ%9Ó%;Ð$<Ð!Ü˜a  u°VÕ<ä�N‰N×+Ñ+Øññ :ð ,ô ô @C×?RÑ?RØ�:ó@Ñ<Ð$Ð&<ô $ AÐ'DÀdÓKˆMÜØäÜÜ%Ü)Ü"ÜÜ,Ü/Ø'Ü0Ø-Ü$Ü Ü.ðôð& ô /Ü˜A“w×+Ñ+Ð,¨B¬s°1«v¨hÐ7óç ‘. §¡Ó1°tð<ûðW-	<ûôh �}‰}×#Ñ#×8Ò8Ü! $ÀÔNñ "Ü—H‘HÐ?Ô@Ü—J‘J˜q”M÷"÷ "ñ "úð ˆFÙØ&×3Ñ3�Ùà%'�Ô"à#Ÿ^™^Ð+�6Ð+à&(�F”Oå)ä˜J›ˆIØÑ" vÑ'9Ü! &§-¡-Ó0�Ü(+¨F×,<Ñ,<×,CÑ,CÓ(DÐ%Ø!'×!3Ñ!3Ó!5�Ü#& v§|¡|×'9Ñ'9Ó#:Ð Ø$*×$EÑ$EÓ$GÐ!Ü$'¨×(;Ñ(;Ó$<Ð!Ø?E×?WÑ?WÖ$X¸ R§_£_Ñ$XùÒ$XÐ!Ð$Xà.4×.IÑ.Iö(Ø(*�B—O“Oñ(ùò (Ð$ð (ô —‘×#Ñ#×5Ñ5×9Ñ9Õ;à"�Ø(,Ð%Ø!%�Ø#'Ð à$&Ð!Ø$(Ð!Ü$'¨£GÐ!Ü'*¨2£wÐ$Ü"%£%�ä.2¯l©l«n¸}Ñ.LÐPSÑ-SÐ*ðØ˜Yðà˜4Ÿ<™<ðð ˜t×/Ñ/ðð ! $×"5Ñ"5ð	ð
 ˜j×TÑTðð )¨*×*FÑ*Fðð ˜{ðð (Ð)>ðð ! .ðð #Ð$4ðð $Ð%6ðð ˜Yðð ˜{ðð +Ð,Dðð )Ð*@ðð  $Ð%6ð!ð" 'Ð(<ð#ð$ $3Ø0JØ$0¸Ð$<Ü$*×$;Ñ$;Ø"Ü9BØ.ó:ð  +Ü%(Ð):Ó%;Ø)>ò9ˆGðB ×(Ñ(¨Ô1ñ !ñ %ð "×6Ò6ä2Ó4ð "Ô6ð Ð)Ø!×.Ñ.Ð:Ø%×2Ñ2×9Ò9à×*Ñ*×:Ñ:×IÑI×WÑW×]Ñ]Ô_ä*¨=¸+ÕFú÷e
RGð RGú÷ RG÷ RGñ RGú÷ RG÷ RGñ RGú÷ RG÷ RGñ RGú÷ RG÷ RGñ RGú÷ RG÷ RGñ RGú÷ RG÷ RGñ RGúsŠ  Â)rÂ>q?Ãq*Ã'q	Ã*q Ã9p+Ã<B pÅ<\%ÆA!pÇ/\*Ç6E2pÍ)A^*Ï1pÏ9+^Ð$C#pÔ^ ÔpÔ*^%Ô=F(pÛ%	p+Û.	q Û7	q	Ü 	q*Ü		q?Ü	rÜ%pÜ*	^Ü3A^Þ^ÞpÞ^ÞpÞ*
cÞ4Dcãcãcã2pä+eä8	påe
åC"pè(h<è;péi%é$F/pðpðpðp+ð"	q ð+p4ð0q ð7	q	ñ q	ñq	ñ	q*ñqñq*ñ!	q?ñ*q3ñ/q?ñ6	rñ?r	òròrc                  ó`   — e Zd Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zedd„«       Z	 d	 	 	 	 	 	 	 	 	 	 	 d	d„Zy)
ÚConvertFrameNc                óV   — || _         t        |d||¬«      | _        || _        || _        y )NF)r²  r´  rµ  )r1  rº  Ú_inner_convertÚ_hooksr°  )r´   r§   rë  r´  rµ  s        r•   rµ   zConvertFrame.__init__ê  s6   € ð *5ˆÔ&Ü2ØØØØ+ô	
ˆÔð ˆŒØ /ˆÕr”   c                ó   ‡ — ˆ fd„S )Nc                óH   •— t        | ‰j                  ‰j                  ¬«      S r¸  )Úconvert_framer»  r°  r»  s    €r•   r»   z2ConvertFrame._clone_with_backend.<locals>.<lambda>þ  s   ø€ œ}ØØ�K‰KØ ×1Ñ1ô 
€ r”   r“   r³   s   `r•   r½  z ConvertFrame._clone_with_backendû  s   ø€ ó
ð 	
r”   c                óÆ  ‡— t         j                  |j                  «       t        d   dxx   dz  cc<   	 | j	                  |||||dz   ¬«      }t        d   dxx   dz  cc<   |S # t
        $ �re}t        |t        «      r‚ | j                  j                  j                  d u}|€t        d«      d ‚| j                  j                  j                  r‚ t        |t        «      r‚ t        |t        t        f«      }	|j                  }
|	�rt        |dd«      �st        j!                  t"        j$                  «      råt'        |d	«      rÙt'        |d
«      rÍt)        t+        |j,                  «      «      5  |j.                  }dj1                  t3        j4                  |«      «      }t7        j8                  |
«      }d|› d|› �Št:        j<                  j?                  dd„ ˆfd„¬«       t        jA                  ‰dtB        jD                  ¬«       d d d «       n# 1 sw Y   nxY wtB        jF                  s|	s‚ t        |dd «      }|j                  }
tI        ||
||«      }|	rtJ        jM                  |d¬«       ntJ        jO                  |d¬«       t        |t6        jP                  «      r(|jR                  �tU        |jR                  d¬«      cY d }~S Y d }~nd }~ww xY wtU        d¬«      S )NÚframesÚtotalr(   rÖ   Úokz%error_on_graph_break must not be NoneÚloggedFrÍ  Ú
real_stackrÅ  zŒGraph break: torch.compile cannot properly resume from this graph break, which results in a skip.
torch.compile will skip tracing the frame zN and fall back to eager.
The graph break occurred in the following user code:
r$  c                 ó   — dddœS )NÚdynamo_graph_break_reasonr'  r(  r“   r“   r”   r•   r»   z'ConvertFrame.__call__.<locals>.<lambda>U	  s   € Ø(CØ,4ñ1€ r”   c                 ó6   •— ‰ › dt        j                  «       › �S )Nrt  r�  )Úuser_stack_traces   €r•   r»   z'ConvertFrame.__call__.<locals>.<lambda>Y	  s   ø€ Ð2BÐ1CÀ2Äi×FZÑFZÓF\ÐE]Ð/^€ r”   r/  T)Úexc_infoÚ
stack_infor]  )rÉ  z9compilation failed with a custom frame execution strategy)r˜  rÁ  z*an error was suppressed during compilationrÀ  )+rÔ  rÀ   rR  rm   rº  r&  r@  rK   r±  r�  r  rN   rP   rQ   r?  Úgraph_break_logr  r  r  r¥   r   r   rÍ  rÄ  rw  r‘  Úformat_listr+   Úformat_frame_inforì   rí   rî   r  r)   rë  Úsuppress_errorsrH   r€  rò  r‚  ÚTorchDynamoExceptionr˜  re   )r´   ró   rê  rë  r¦  r×   rÒ   r^  r�  Ú	soft_failrð   Ú
user_stackÚuser_stack_formattedÚ
frame_infor]  Ú	error_msgrÈ  s                   @r•   rõ  zConvertFrame.__call__	  s¶  ø€ ô 	�‰˜Ÿ™Ô%Ü�Ñ˜7Ó# qÑ(Ó#ðk	Ø×(Ñ(Ø�{ E¨;¸TÀA¹Xð )ó ˆFô �XÑ˜tÓ$¨Ñ)Ó$ØˆMøÜó e	ä˜!Ô7Ô8Øð ×#Ñ#×(Ñ(×=Ñ=ÀTÐIð !ð $Ð+Ü$Ð%LÓMÐSWÐWØ×"Ñ"×'Ñ'×<Ò<ð ô  ˜!Ô9Ô:Øä" 1¤{´IÐ&>Ó?ˆIØ—<‘<ˆDò Ü  8¨UÕ3Ü#×0Ñ0´·±Ô?ô
 ˜1˜lÔ+´¸¸<Ô0HÜ(¬¸¿¹Ó)EÓFñ Ø%&§\¡\˜
Ø/1¯w©wÜ%×1Ñ1°*Ó=ó0Ð,ô &)×%:Ñ%:¸4Ó%@˜
ðIØISÈð UUà3Ð4ð6ð )ô Ÿ™×7Ñ7Ø&ñ)ó (_ð 8ô ô (×-Ñ-Ø,Ø%)Ü'-§~¡~ð .ô ÷)÷ ñ úô4 ×)Ò)±)Øô & aÐ):¸DÓAˆOØ—<‘<ˆDÜ(¨¨D°/À5ÓIˆIáÜ—‘˜¨T�Õ2ä—‘˜I°�Ô5ô ˜1œc×6Ñ6Ô7Ø×)Ñ)Ð5ä)Ø()×(=Ñ(=Ø [ôõ ÿøðEe	úôN "ØDô
ð 	
s8   ¶.A% Á%
KÁ/C?KÅ.BHÈ	KÈH	ÈB.KËKËKrQ  )
r§   rƒ   rë  rV   r´  rø  rµ  rù  rÈ   rÉ   )rÈ   z*Callable[[WrapBackendDebug], ConvertFrame]©r   rú  rý  r“   r”   r•   r¸  r¸  é  sž   „ ð
 *.Ø&*ð0àð0ð ð0ð 'ð	0ð
 $ð0ð 
ó0ð" ò
ó ð
ð ðy
àðy
ð 'ðy
ð ð	y
ð
 :ðy
ð ðy
ð 
ôy
r”   r¸  c                ó    — t        | |||¬«      S )zHTry to convert a frame into an FX graph, if error leave frame unmodified)r´  rµ  )r¸  )r§   rë  r´  rµ  s       r•   r¾  r¾  €	  s   € ô ØØØØ'ô	ð r”   c                óº  — ddl m} t        j                  }dt        _        t	        | d«      5 }t        j                  |«      }d d d «       t        t        j                  j                  j                  «       t        «       j                  «       «      «      |_
        t        j                  d«      5  	 t        |j                  |j                  |j                   |j"                  |j$                  |ddd t'        «       d g g t)        dd«      d i t+        dd¬«      ¬	«       |t        _        	 d d d «       y # 1 sw Y   ŒòxY w# |t        _        w xY w# 1 sw Y   y xY w)
Nr(   )ÚeagerFÚrbr   é*   iç  )r¢  r£  )r§   r²  r\  r³  rë  rê  rí  rî  rÎ  ró   r¦  rÍ  )Úbackends.debuggingrØ  r)   Úreplay_record_enabledÚopenr]   ÚloadrK  rç   ÚchainrÐ   rg  r*   r�  ræ  rð   r2  r3  rç  rV   r6   r   )rÙ   rØ  Úoriginal_replay_valÚin_filer  s        r•   Úreplayrâ  �	  s  € Ý)ä ×6Ñ6ÐØ#(„FÔ Ü	ˆh˜Ó	ð / Ü ×%Ñ% gÓ.ˆ÷/äœ)Ÿ/™/¨&¯.©.×*>Ñ*>Ó*@Ä'Ã)Ç/Á/ÓBSÓTÓU€F„Nä	×	(Ñ	(¨Ó	/ñ ?ð	?ÜØ—‘Ø—‘Ø—‘Ø—‘Ø—‘Ø!ØØØ#'Ü“gØ Ø Ø*,Ü4°Q¸Ó:ØØÜ$¨bÀ3ÔGõ#ð( ,?ŒFÕ(÷-?ð ?÷	/ð /ûð4 ,?ŒFÕ(ú÷-?ð ?ús0   ®D5Â3EÂ5A+EÄ EÄ5D>ÅEÅEÅEc                ó´   — t         j                  dk  ryt        j                  | «      D ]"  }|j                  dk(  sŒ|j
                  dz  c S  t        d«      ‚)N)é   é   r   ÚRESUMErr  z$RESUME instruction not found in code)rÝ  Úversion_infor¡  r¢  r£  Úoffsetru  )rð   Úinsts     r•   Úfirst_real_inst_idxrê  ²	  sV   € Ü
×Ñ˜'Ò!ØÜ×$Ñ$ TÓ*ò $ˆØ�;‰;˜(Ó"Ø—;‘; !Ñ#Ò#ð$ô Ð=Ó
>Ð>r”   c                  ó0   — e Zd Zddœ	 	 	 	 	 	 	 	 	 	 	 dd„Zy)rð  r   rÖ   c                ó   — y r¯   r“   )r´   ró   rê  rë  r¦  r×   s         r•   rõ  zConvertFrameProtocol.__call__¼	  s   € ð !r”   Nrú  )r�   r‘   r’   rõ  r“   r”   r•   rð  rð  »	  sF   „ ð ñ!àð!ð 'ð!ð ð	!ð
 :ð!ð ð!ð 
ô!r”   c                  ó@   — e Zd Zdd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zy)ÚCatchErrorsWrapperc                óV   —  t        j                  |«      | «       || _        || _        y r¯   )r/  r0  r1  rë  )r´   r÷  rë  s      r•   rµ   zCatchErrorsWrapper.__init__È	  s$   € Ø!Œ	�‰˜Ó! $Ô'Ø)1ˆÔ&Øˆ�
r”   c                óö   — |j                   �l|j                  €`t        j                  d|j                  j
                  |j                   |j                  j                  «       t        |j                   |«       |S )Nz#skipping: %s (reason: %s, file: %s))rÁ  rb  r€  r  rR  rê   rë   r=   )r´   rÒ   ró   s      r•   Ú_handle_skipzCatchErrorsWrapper._handle_skipÍ	  sd   € ð ×ÑÐ)¨f×.AÑ.AÐ.IÜ�I‰IØ5Ø—‘×$Ñ$Ø×"Ñ"Ø—‘×(Ñ(ô	ô ˜F×.Ñ.°Ô6Øˆr”   c           	     ó–  — |€t        d«      ‚t        j                  |j                  «       t	        j
                  |j                  |¬«      }t        j                  dk\  r#|j                  t        |j                  «      kD  }n"|j                  t        |j                  «      k\  }t        j                  rt        «       }n
t        «       }|s+|s)t        j                  s|rRt        | j                   dd«      s;|rd}n|rd}nt        j                  rd}nd	}| j#                  t%        |¬
«      |«      S |j                  j&                  dk(  r|j                  j(                  dk(  s>|j                  j&                  j+                  d«      r5|j                  j(                  dk(  r| j#                  t%        d¬
«      |«      S |j                  j(                  dk(  r†|j                  j,                  dkD  rm|j                  j.                  rWt1        |j2                  j5                  |j                  j.                  d   «      «      r| j#                  t%        d¬
«      |«      S t6        j8                  j:                  j=                  «       dk(  r¿t?        j@                  «       }|r©tB        5  ddl"m#}	  |	|jH                  | j                   j                   ¬«      }
tK        | j                   d«      st        d«      ‚| j                   jM                  |
jN                  «      }| j#                   |||| jP                  |«      |«      cd d d «       S tB        5  tS        «       5  | j!                  ||| jP                  |d¬«      }| j#                  ||«      cd d d «       cd d d «       S # 1 sw Y   Œ_xY w# 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY w)Nzframe_state must not be None)ró   )rä  é   r­  Fz#frame has already started executingz%frame is in the Dynamo skipfiles listzDynamo tracing is disabledzSnon-infra torch dispatch mode present, this is not supported today in torch.compilerÀ  rÄ  Ú__new__zcollections/__init__.pyÚ_makez/frame is a namedtuple __new__/_make constructorrµ   r   z9__init__ of a traceable wrapper subclass cannot be tracedÚddp_optimizer)ÚDDPOptimizer)Úbucket_bytes_capÚbackend_compile_fnr½  zJDDPOptimizer only supports callback fns that know how to clone themselves.r(   rÖ   )*r  rÔ  rÀ   rR  r-   r  rÝ  rç  Úf_lastirê  r)   Ú#inline_torch_dispatch_torch_compiler#   r$   Údisabler?  r1  rñ  re   rë   rê   rØ  rv  rw  r%   rV  r×  rì   r  r›  Úget_optimize_ddp_moder!   Ú_get_active_ddp_moduleÚcompile_lockÚ"torch._dynamo.backends.distributedr÷  rø  r¥   r½  Ú
compile_fnrë  r"   )r´   ró   rê  r¦  Úis_skipfileÚhas_started_executionÚshould_skip_for_dispatch_moderÁ  Ú
ddp_moduler÷  rö  Úhijacked_callbackrÒ   s                r•   rõ  zCatchErrorsWrapper.__call__Ú	  sP  € ð ÐÜ Ð!?Ó@Ð@Ü�‰˜Ÿ™Ô%ä!×'Ñ'¨¯©¸EÔBˆÜ×Ñ˜wÒ&Ø$)§M¡MÔ4GÈÏÉÓ4UÑ$UÑ!à$)§M¡MÔ5HÈÏÉÓ5VÑ$VÐ!ô ×5Ò5Ü,LÓ,NÑ)ô @ÓAð *ñ "ÙÜ�~Š~á-Ü × >Ñ >À	È5ÔQñ %ØC‘ÙØE‘Ü—’Ø:‘ð8ð ð ×$Ñ$Ô%7ÀKÔ%PÐRWÓXÐXð �L‰L×$Ñ$¨
Ò2°u·|±|×7KÑ7KÈyÒ7Xà�L‰L×$Ñ$×-Ñ-Ð.GÔHØ—‘×$Ñ$¨Ò/à×$Ñ$Ü"Ø Qôð ó	ð ð �L‰L× Ñ  JÒ.Ø—‘×(Ñ(¨1Ò,Ø—‘×(Ò(Ü-Ø—‘×"Ñ" 5§<¡<×#;Ñ#;¸AÑ#>Ó?ôð ×$Ñ$Ü"Ø [ôð ó	ð ô �=‰=×Ñ×4Ñ4Ó6¸/ÒIÜ0×GÑGÓIˆJÙÜ!ñ ÝOá$0Ø)3×)DÑ)DØ+/×+IÑ+I×+cÑ+cô%�Mô #Ø×6Ñ6Ð8Môô -Øhóð ð ×6Ñ6×JÑJØ)×4Ñ4óð &ð
  ×,Ñ,Ù)¨%°¸d¿j¹jÈ+ÓVØó÷%ñ ô. ñ 	4Ô1Ó3ñ 	4à×3Ñ3Ø�{ D§J¡J°À!ð 4ó ˆFð ×$Ñ$ V¨UÓ3÷	4÷ 	4ò 	4÷/ð ú÷.	4ð 	4ú÷ 	4÷ 	4ñ 	4ús1   Ê%BNÍN?Í2N*Î	N?ÎN'Î*N3	Î/N?Î?ON)r÷  rð  rë  rV   rÈ   rÉ   )rÒ   re   ró   rˆ   rÈ   re   )ró   rˆ   rê  rû  r¦  rü  rÈ   re   )r�   r‘   r’   rµ   rñ  rõ  r“   r”   r•   rî  rî  Ç	  sT   „ óð
Ø(ðØ1@ðà	óðm4àðm4ð 'ðm4ð :ð	m4ð
 
ôm4r”   rî  c                ó   — t        | |«      S r¯   )rî  )r÷  rë  s     r•   Úcatch_errors_wrapperr  J
  s   € ô ˜h¨Ó.Ð.r”   )r�   z3torch._subclasses.fake_tensor.FakeTensorMode | NonerÈ   rÉ   )r¦   zDynamoTracerOutput | Noner§   rƒ   rÈ   rÉ   r¯   )rÏ   rM  rÐ   r^  rÑ   zdict[str, str] | NonerÈ   r   rÕ  )rð   r   r×   rN  rÈ   z	list[str])r,  úCallable[_P, _T]rÈ   r	  )ró   rˆ   rÈ   rÊ   )NF)
r^  r&  rð   r   ró   úDynamoFrameType | Noner\  rÊ   rÈ   rÉ   )rd  r	  rÈ   r	  )r¦  rü  rÈ   r   rö  )r§   rƒ   r²  rÊ   r\  rÊ   r³  r÷  r´  rø  rµ  rù  rÈ   rª  )rð   r9  rÈ   ztuple[str, ...] | None)rð   r9  rÈ   rÊ   )r  r9  r  r9  rÈ   rÉ   )r  r†   rÈ   r  )"rð   r9  rÐ   rà  r2  rà  r3  rà  rç  rá  r§   rƒ   r4  z'list[torch.overrides.TorchFunctionMode]r²  rÊ   r  rc   r5  r  r0  rW   r\  rÊ   r³  r÷  r¦  ú+dict[str, int | FrameStateSizeEntry] | Noner  úDistributedState | Noner´  rø  rÈ   rX   )r�  r^  rÈ   r^  )r¿  r
   rÈ   z"tuple[FunctionType, object | None])r,  r
   rÈ   zinspect.Signature)r¿  r
   r  útuple[Any, ...]r  rS  rÈ   rÇ  )r¿  r
   r  r  r  rS  rÚ  úlist[Constraint] | NonerÛ  rÊ   rÈ   r¨  )ró   rÇ  rÚ  r  rÛ  rÊ   rÈ   r¨  )r÷  rð  rÈ   rð  )rð   r9  rÐ   rà  r2  rà  r3  rà  rç  rá  r§   rƒ   r²  rÊ   rè  ra  r\  rÊ   r³  r÷  r¦  r  r  r  r´  rø  rÈ   r8  rQ  )*rð   r   rÐ   rà  r2  rà  r3  rà  rç  rá  r§   rƒ   r²  rÊ   r\  rÊ   r³  r÷  rë  rV   rê  rû  rí  úlist[CacheEntry]rî  r  rÎ  r6   ró   r
  r¦  r  rÍ  r   r×   rN  r´  rø  rÒ  zConvertFrameBox | NonerÈ   re   )
r§   rƒ   rë  rV   r´  rø  rµ  rù  rÈ   r¸  )rÙ   rM  rÈ   rÉ   rA  )r÷  rð  rë  rV   rÈ   rî  (  rT  Ú
__future__r   Úcollectionsr
  r{  rŠ  r¡  r/  rv  rh  r®  rç   r  ru  rj  r  r‡  rÝ  rx  Ú	threadingr}  r‘  rl  ÚtypingÚunittest.mockrö  r½   r   Úpathlibr   r   r   r   r	   r
   r   r   r   Útyping_extensionsr   r   rì   Útorch._loggingÚtorch._C._dynamo.guardsr   Útorch._dynamo.callbackr   Útorch._dynamo.distributedr   Útorch._dynamo.symbolic_convertr   ré  r   r   r   r   r   Útorch._utils_internalr   r   r   Útorch.fx._lazy_graph_moduler   Ú%torch.fx.experimental.symbolic_shapesr   r   Útorch.fx.graph_moduler   rÍ   Útorch.monitorr    Útorch.nn.parallel.distributedr!   Útorch.utils._python_dispatchr"   r#   r$   r%   Útorch.utils._tracebackr&   r'   rÅ  r)   r*   r+   r,   r-   Úbackends.registryr.   Úbytecode_analysisr/   r0   Úbytecode_transformationr1   r2   r3   r4   r5   rÎ  r6   r7   r8   r9   r:   Ú
eval_framer;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   Úgraph_bytecode_inputsrR   r  rS   rT   rU   rë  rV   r©   rW   rX   rY   ÚpgorZ   r[   r\   Úreplay_recordr]   Úresume_executionr^   Úsymbolic_convertr_   r`   ra   rb   rc   rd   re   rf   rg   rh   r›  ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   Úvariables.torch_functionr   rž  Únumpyr€   ÚModuleNotFoundErrorÚTYPE_CHECKINGÚcollections.abcr�   Útorch.utils.weakr‚   rƒ   r´  r„   Úrepro.after_dynamor…   r†   r‡   rˆ   Úvariables.builderr‰   Ú	getLoggerr�   r€  rí   ÚgetArtifactLoggerr  rË  ÚRLockrÿ  rŒ   r�   r�   rž   r«   r­   rÔ  rÕ  rË   r0  rÓ   rõ   r2  Ú#suppress_torch_distributed_warningsrX  r_  r¤  ÚCounterr`  re  rc  rœ  r¨  rª  rº  r   Útorch.utils.hooksr  r  r  r	  r  r  r  r6  r8  rV  r\  r‘  rF  r¨  rÂ  rÆ  rØ  rÞ  rÇ  rÝ  rù  rê  ræ  r¸  r¾  râ  rê  ÚProtocolrð  rî  r  r“   r”   r•   ú<module>r<     sÂ  ðòõ. #ã Û Û Û Û 
Û Û 	Û Û Û Û Û 	Û Û Û Û 
Û Û Û Û Û Û Ý Û Ý !Ý ß >Ó >ß /Ó /Ý 'Ý !ã Û Ý 4Ý 2Ý 4Ý 9ß MÓ MÝ %÷ñ õ
 ?÷õ QÝ &Ý A÷ó ÷ Mç EÕ EÝ 5ß G÷õ ÷ó õ '÷÷ ÷ ÷÷ ÷ õ õ >÷ñ õ
 ß LÑ L÷ñ õ
 +Ý ;÷õ õ "ß XÓ X÷÷ ÷ ÷ ÷ ÷ õ0 Jð Ó ðÛð
 
×ÓÝ(å4å-Ý'Ý4ß@Ñ@Ý6ð €g×Ò˜Ó!€Ø�~Š~×/Ò/°¸*ÓE€Ø—.’.×2Ò2°8¸^ÓL€ð ˆy�ŠÓ €áˆTƒ]€Ùˆtƒ_€÷	ñ 	ð%ØBð%à	ó%ð?Ø,ð?àð?ð 
ó?÷,ñ ñ( ‹i€Ù‹y€à04Ð Ð-Ó 4ð €‡‚Ð*Ó+àJNðØ	ðØ%ðØ2Gðàòó ,ðôóDNðb ×1Ò1òCó 2ðCðR %)Øð	*Øð*à
ð*ð "ð*ð ð	*ð
 
ó*ð €ØCVÀ;×CVÒCVÓCXÐ Ð@Ó XóóIðX ÷-ð -ó ð-ðØ5ðàó÷0Oñ Oðh ØØ%)Ø%)Ø"&ðØðàðð ðð #ð	ð
 #ðð  ðð óõ& $å -ñ ,7«=€Ð(Ó 8Ø*FÐ 'ðØ
ðàóó$6ó

óð ð Ø%)Ø?CØ15Ø%)ñ#QØ
ðQàðQð ðQð  ð	Qð
 ðQð ðQð ;ðQð ðQð $ðQð $ðQð ðQð ðQð #ðQð =ðQð  /ð!Qð" #ð#Qð$ ò%Qó ðQðh ÷>
ð >
ó ð>
ðB ÷+ð +ó ð+ñ" �$Ô÷\ð \ó ð\ó~ð ÷Xð Xó ðXðv ÷ 
ð  
ó ð 
óF.Aób7ð %)ð(Ø	ð(à
ð(ð "ð(ð ô	(ð\ %)ð$
ð
 ,0Ø-2ñ$
Ø	ð$
à
ð$
ð "ð$
ð
 )ð$
ð '+ð$
ð ô$
ðN ÷&ð &ó ñ&ð ,0Ø-2ñ	:Øð:ð )ð:ð '+ð	:ð
 ô:ô|ð> Ø%)Ø?CØ15Ø%)ñkØ
ðkàðkð ðkð  ð	kð
 ðkð ðkð ðkð ðkð ðkð #ðkð =ðkð /ðkð #ðkð  ô!kðz %)Ø?Cð!E
Gð& Ø%)ð 15ñ/E
GØ
ðE
GàðE
Gð ðE
Gð  ð	E
Gð
 ðE
Gð ðE
Gð ðE
Gð ðE
Gð #ðE
Gð ðE
Gð #ðE
Gð $ðE
Gð  0ðE
Gð *ðE
Gð "ðE
Gð  =ð!E
Gð$ ð%E
Gð& ð'E
Gð( #ð)E
Gð. .ð/E
Gð0 ô1E
G÷PT
ò T
ðt &*Ø"&ð	Øðàðð #ðð  ð	ð
 ôô ?ôD?ô	!˜6Ÿ?š?õ 	!÷@4ò @4ðF/Ø"ð/Ø+0ð/àõ/øðeL ò Ø	ƒBðús   ÈU ÕU&Õ%U&