
    7h                       % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSKJrJrJrJr  SSKJrJrJrJrJ r   SSK!J"r"  SSKJ#r#  SSK$r$SSK%r$SS	K&J'r'  SS
K(J)r)  SSK*J+r+  SSK,J-r-  SSK.J/r/J0r0J1r1J2r2  SSK%J3r3  SSK4J5r5J6r6J7r7J8r8  SSK9J:r:  SSK;J<r<J=r=  SSK>J?r@  SSKAJBrB  SSKCJDrD  SSKEJFrFJGrG  SSKHJIrIJJrJ  SSKKJLrLJMrMJNrNJOrOJPrP  SSKQJRrRJSrS  SSKTJUrUJVrVJWrWJXrXJYrY  SSKZJ[r[J\r\J]r]J^r^  SSK_J`r`JaraJbrbJcrc  SSKNJdrdJereJfrfJgrgJhrhJiriJjrjJkrkJlrlJmrmJnrnJoroJprp  SSKqJrrrJsrsJtrt  SSKuJvrv  SS KwJxrxJyry  SS!KzJ{r{  SS"K|J}r}  SS#K~JrJrJrJrJr  SS$KPJr  SS%KJrJrJrJr  SS&KJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SS'KJr  S(\S)'    SSKr\GRH                  (       a"  SS*KJr  SS+KJr  SS,KJr  SS-KJrJrJr  SS.KJr  \
GR`                  " \5      r\$GRf                  GRi                  \S/5      r\$GRf                  GRi                  \S05      r\GRn                  " 5       r\" S15      r\"" S25      r " S3 S45      r " S5 S65      r\" 5       r\" 5       rSqS7\S8'   \GR                  " \@5       SV       SWS9 jj5       rSXS: jr\cGR                  SYS; j5       r  SZ         S[S< jjrSq\GR                  " 5       rS=\S>'   S\S? jrS\S@ jr " SA SB5      r    S]           S^SC jjrSSDKJr  SSEKJr  \GRH                  (       a  SSFKJr  \" 5       rSG\SH'   S_SI jr  S`SSSJ.                                   SaSK jjjr " SL SM5      r SV       SbSN jjrScSO jrSdSP jr " SQ SR\GR                  5      r " SS ST5      r      SeSU jrg! \ a    Sr GN"f = f)fa  
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.
    )annotationsN)Path)CellTypeCodeTypeFunctionType
ModuleType)AnyCallableOptionalTypeVarUnion)	ParamSpec)ReferenceType)GlobalStateGuard)CallbackTrigger)get_compile_pg)TensorifyState)compile_contextCompileContext	CompileIdtracing)
structured)compile_time_strobelight_metajustknobs_check#maybe_upload_prof_stats_to_manifoldsignpost_event)_use_lazy_graph_module)ConstraintViolationErrorGuardOnDataDependentSymNode)_forward_from_src)_WaitCounter)DistributedDataParallel)_disable_current_modesis_in_torch_dispatch_mode)CapturedTracebackformat_traceback_short   )config
decoratorsexcgraph_break_hintstrace_rules)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)always_optimize_code_objects
dynamo_tls	skip_codeTorchPatcher)augment_exc_messageBackendCompilerFailedFailOnRecompileLimitHitformat_error_msgInternalTorchDynamoErrorPackageErrorRecompileLimitExceededShortenTracebackSkipCodeRecursiveExceptionTorchRuntimeErrorUncapturedHigherOrderOpErrorunimplemented_v2Unsupported)CheckFunctionManager'get_and_maybe_log_recompilation_reasonsGuardedCode)Hooks)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)chromium_event_timedCleanupManagerCompileTimeInstructionCountercountersdynamo_timedformat_bytecodegen_record_file_name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Optional[ModuleType]np)
CompilerFn)CompilePackage)WrapBackendDebug)BytecodeHook
CacheEntryDynamoFrameType)FrameStateSizeEntrybytecodegraph_breaks_T_Pc                      \ rS rSrSrg)TODO_UNKNOWN    N)__name__
__module____qualname____firstlineno____static_attributes__r       U/var/www/fran/franai/venv/lib/python3.13/site-packages/torch/_dynamo/convert_frame.pyr}   r}      s    r   r}   c                  <    \ rS rSrSS jrS	S jrS
S jrSS jrSrg)Tracker   c                0    / U l         [        5       U l        g N)seensetseen_idsselfs    r   __init__Tracker.__init__   s    35	"%%r   c                   ^ ^ [        U5      mTT R                  ;  aS  [        R                  " UUU 4S j5      nT R                  R                  U5        T R                  R                  T5        g g )Nc                :   > TR                   R                  T5      $ r   )r   remove)_idxr   s    r   <lambda>Tracker.add.<locals>.<lambda>   s    DMM4H4H4Mr   )idr   weakrefrefr   appendadd)r   
strong_objobjr   s   `  @r   r   Tracker.add   sR    ndmm#++j*MNCIIS!MMc" $r   c                2    [        U5      U R                  ;   $ r   )r   r   )r   items     r   __contains__Tracker.__contains__   s    $x4==((r   c                l    U R                   R                  5         U R                  R                  5         g r   )r   clearr   r   s    r   r   Tracker.clear   s     		r   )r   r   N)returnNone)r   r   r   r   )r   r   r   bool)	r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    (#)r   r   zOptional[GlobalStateGuard]initial_global_statec                H    [        XU5      n[        UR                  5        U$ r   )original_forward_from_srcr:   __code__)srcglobals	co_fieldsresults       r   fx_forward_from_src_skip_resultr      s!     'sY?FfooMr   c                X   ^  [         R                  " T 5      SU 4S jj5       nT Ul        U$ )z
Context manager to:
    1) Save/restore torch.is_grad_enabled() state
    2) Save/restore python random state
    3) Save/restore torch random state
    4) Monkey patch torch.fx.graph_module._forward_from_src
c            
       > [        5       n[        R                  " 5       n[        R                  R	                  5          [        5          [        5          [        R                  " 5       n[        R                  " 5       n[        R                  " 5       n[        R                  R                  5       n[        R                  " 5       n[        R                  " 5       n	[        R                  R                  5       n
S n[        R                  R!                  5       (       a  [        R                  R                  5       n[        R                  R#                  5       n[        R$                  R&                  R(                  n[*        [        R$                  R&                  l        [-        5       n[.        R0                  " 5       nUR3                  [        R$                  R4                  R7                  5       5        UR3                  [8        5         T" U 0 UD6UR;                  5         [        R                  R=                  5       S:X  d   S5       eUR;                  5         [        R                  R?                  U5        [        R@                  RB                  RE                  U5        [        RF                  " XVS9  [        RH                  " U5        [        R                  RK                  U
5        [        RL                  " U	5        [        R                  R                  5       nUU:w  a  [        R                  RO                  5         Ub  [        R                  RK                  U5        [        R                  RQ                  U5        U[        R$                  R&                  l        URS                  5       (       d   SURU                  5        S35       esS S S 5        sS S S 5        sS S S 5        $ ! UR;                  5         [        R                  R=                  5       S:X  d   S5       eUR;                  5         [        R                  R?                  U5        [        R@                  RB                  RE                  U5        [        RF                  " XVS9  [        RH                  " U5        [        R                  RK                  U
5        [        RL                  " U	5        [        R                  R                  5       nUU:w  a  [        R                  RO                  5         Ub  [        R                  RK                  U5        [        R                  RQ                  U5        U[        R$                  R&                  l        URS                  5       (       d   SURU                  5        S35       ef = f! , (       d  f       O= f S S S 5        O! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)Nr   zQTorch function mode stack state changed while dynamo tracing, please report a bug)	warn_onlyzGlobal z7state changed while dynamo tracing, please report a bug)+r   torchis_grad_enabled_C_PreserveDispatchKeyGuardrg   rh   is_inference_mode_enabled$are_deterministic_algorithms_enabled-is_deterministic_algorithms_warn_only_enabled$_is_default_mobile_cpu_allocator_setrandomgetstateget_default_dtypeget_rng_statecudais_available_get_cublas_allow_tf32fxgraph_moduler    r   rk   
contextlib	ExitStackenter_context_symbolic_trace_maybe_revert_all_patchesro   close_len_torch_function_stack_set_grad_enabledautograd	grad_mode_enter_inference_modeuse_deterministic_algorithmssetstateset_rng_stateset_default_dtype#_unset_default_mobile_cpu_allocator_set_cublas_allow_tf32checkreason)argskwargsguardsprior_grad_modeprior_inference_modeprior_deterministicprior_warn_onlyprior_mobile_allocator_statepy_rng_stateprior_dtypetorch_rng_statecuda_rng_state
allow_tf32prior_fwd_from_srccleanup
exit_stackcurr_mobile_allocator_statefns                    r   _fn"preserve_global_state.<locals>._fn   s#   !#//1 HH..0(*68#(#B#B#D "'"L"L"N#QQSO==? ) "??,L113K#ll88:O!Nzz&&((!&!9!9!;88:J!&!6!6!H!H6UEHH!!3)+G#--/J$$((BBD $$%HI4*6*xx99;q@ g@   "**?;((>>?ST22' -**?;''4HHAAC , 03NNHH@@B!-JJ,,^<//
;:L%%7||~~ fmmo..ef~a 98 +* 108 xx99;q@ g@   "**?;((>>?ST22' -**?;''4HHAAC , 03NNHH@@B!-JJ,,^<//
;:L%%7||~~ fmmo..ef~a 988 +** 100s\   W,
WF9V7O2G V7	W	W,2GV4	4V77
WW		W,
W 	W,,
W:r   z_P.argsr   z	_P.kwargsr   rz   )	functoolswraps_torchdynamo_orig_callable)r   r   s   ` r   preserve_global_stater      s0     __R= =~ &(C"Jr   c                  ^^ U R                   [        ;   a  gU R                   R                   H  nXR                  ;   d  M  U R                  U   n[	        U[
        5      (       a+  UR                  R                  S5      (       d	  U[        L a    g[        (       d  Mp  [        R                  (       d  M  U[        L d  [        U5      (       d  M    g   0 mSUU4S jjmU R                  R                  5        H  nT" U5      (       d  M    g   [        R!                  SU R                   R"                  U R                   R$                  U R                   R&                  5        g)z+Check if the frame has torch.* related bitsTztorch.c           	       >^  [        T 5      nUT;   a  TU   $ STU'   [        T [        R                  [        R                  R
                  45      (       d>  [        T [        5      (       a3  [        T [        R                  R
                  5      (       a
  STU'   TU   $ [        R                  (       aS  [        (       aH  [        T [        R                  5      (       d  [        T [        R                  5      (       a
  STU'   TU   $ [        T [        [        45      (       a  [!        U4S jT  5       5      TU'   TU   $ [        T ["        5      (       a6  [        T R%                  5       5      n[!        U4S jU 5       5      TU'   TU   $ [        T [&        [(        [*        [        S5      [,        45      (       a
  STU'   TU   $ [/        T 5      (       a9  [1        T S5      (       a(  [!        UU 4S jT R2                   5       5      TU'   TU   $ g)z)Recursively check if the obj has a tensorFTc              3  4   >#    U  H  nT" U5      v   M     g 7fr   r   .0v
has_tensors     r   	<genexpr>:has_tensor_in_frame.<locals>.has_tensor.<locals>.<genexpr>T  s     ">#Q:a==#   c              3  4   >#    U  H  nT" U5      v   M     g 7fr   r   r   s     r   r   r   [  s     "A&Q:a==&r   N_fieldsc              3  H   >#    U  H  nT" [        TU5      5      v   M     g 7fr   )getattr)r   r   r   r   s     r   r   r   a  s     "T1:gc1o#>#>s   ")r   
isinstancer   TensornnModulere   type
issubclassr(   trace_numpyrp   ndarraygenericlisttupleanydictvaluesstrintfloatr   rd   hasattrr   )r   obj_idr  r   r   s   `  r   r   'has_tensor_in_frame.<locals>.has_tensor@  s   CXF## cELL%((//:;;3*S%((//"B"B#HVF##RZZ((JsBJJ,G,G#HVF##C$''"">#">>HVF##C #**,'F""A&"AAHVF##C#sE4:t<==$HVF##3GC$;$;""T"TTHVF## r   z0skipping because no torch.* %s             %s %sF)r   objectr   r   )f_coder8   co_names	f_globalsr  r   r   
startswithr   rp   r(   r	  rV   f_localsr  logdebugco_nameco_filenameco_firstlineno)framer  r   valuer   r   s       @@r   has_tensor_in_framer$  +  s    ||33 <<((oo%//'*C#z**''11SE\rf(((cRi8C== ) !#H( (V &&(e ) II	  ## r   c                    S n[        U S5      (       a&  [        X5      n[        X@R                  5        X@l        [        XS9  g )Nexec_recordexport)r  ra   rn   r&  record_filenamer<   )ecoder"  r(  r)  s        r   exception_handlerr,  z  s:     Oq-  .q7_mm<+)r   z/typing.Counter[Union[int, FrameStateSizeEntry]]FRAME_COMPILE_COUNTERc                F    [         R                  (       a  [        U 5      $ U $ r   )r(   cprofilecprofile_wrapper)funcs    r   maybe_cprofiler2    s    %%Kr   c                J   ^  [         R                  " T 5      SU 4S jj5       nU$ )Nc                   >^ [         R                  " 5       nU(       d   S5       e[        STR                   S[	        U5      R                  SS5       S35      n[        R                  " 5       n UR                  5         [        R                  " 5       nUR                  " T/U Q70 UD6n[        R                  " 5       U-
  nUR                  5         [        R                  STR                  UU5        [         R"                  " U5      n UR%                  U5        [        R                  S
U5        UR)                  S5      n	 [*        R,                  " SSSSSS[	        U5      /[*        R.                  S9n
[*        R0                  " SSS[	        U	5      /U
R2                  S9  [        R                  SU	5        [A        [	        U5      5      =m(       a$  [B        RD                  RG                  SU4S j5        U$ ! [         a#    [        R                  S5        SnT" U 0 UD6n GNTf = f! [&         a    [        R                  S	U5         GN1f = f! [4         a    [        R                  S5        UR7                  [         R8                  R:                  5      R=                  S5        UR7                  [         R8                  R>                  5      R=                  S5         GN*f = f)NzTrace id is Nonez/tmp/r   /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                    > ST S.$ )Ncprofile_manifold_url)nameurlr   )manifold_links   r   r   ;cprofile_wrapper.<locals>.profile_wrapper.<locals>.<lambda>  s    !8Or   )$r   current_trace_idr   r   r  replacecProfileProfileenabletimeruncalldisable
ValueErrorr  	exceptionwarningr7  Stats
dump_statsOSErrorwith_suffix
subprocessPopenPIPE
check_callr8  FileNotFoundError
sort_statsSortKeyTIMEprint_stats
CUMULATIVEr   r   _loggingtrace_structured)r   r   trace_idprofile_pathprofstart_tsretvalprofile_latencypssvg_pathgprof2dot_processrA  r1  s              @r   profile_wrapper)cprofile_wrapper.<locals>.profile_wrapper  s~   !224+++xDMM?!CM$9$9#s$C#DHM
 !		+KKMyy{H\\$888F"iikH4OLLN
 	EMM		
 \\$	>OOL) 	'6++F3	E * 0 087-% "! !!s8}5'.. KK:HE @
 
= 
 NN++O e  	+MM56O4*6*F	+  	>MM.=	>, ! 	EKKN MM&..--.::2>MM&..334@@D	Es9   1A#G< H, A5I <)H)(H), IIBK&%K&r   )r   r   )r1  rg  s   ` r   r0  r0    s'    __T? ?B r   c                  |    \ rS rSr    S	           S
S jjr\SS j5       rSS.           SS jjrSrg)ConvertFrameAsserti  Nc                T    [        5         Xl        X l        X0l        X@l        XPl        g r   )rj   r   
_one_graph_export_export_constraints_package)r   compiler_fn	one_graphr(  export_constraintspackages         r   r   ConvertFrameAssert.__init__  s%     	&'*5'##5 r   c                   ^  U 4S j$ )Nc                \   > [        U TR                  TR                  TR                  5      $ r   )convert_frame_assertrl  rm  rn  backendr   s    r   r   8ConvertFrameAssert._clone_with_backend.<locals>.<lambda>  s%    3OOLL$$	 
r   r   r   s   `r   _clone_with_backend&ConvertFrameAssert._clone_with_backend  s    
 	
r   r   skipc               N	   [        5         UR                  n[        X5      n[        R	                  U5        U[
        ;   a
  [        5       $ [        R                  R                  S5      (       a7  [        R                  R                  S5      UR                  :w  a
  [        5       $ UR                  S:X  a*  UR                  R                  S5      (       a
  [        5       $ UR                  S:X  a
  [        5       $ UR                  S:X  a_  UR                  R                  [        R                  R                  [         R"                  R$                  5      5      (       a
  [        5       $ UR                  S:X  a  UR                  S:X  a
  [        5       $ UR                  S:X  a4  UR                  S:X  a$  ['        UR(                  5      (       d
  [        5       $ [+        U5      (       a  [-        S	S
SS/[.        R0                  QS9  [3        U5      (       d
  [        5       $ [4        R6                  " 5       nU(       aI  SUR                  R                  ;   a/  UR8                  nU(       a  SUR                  R                  ;   a  M/  U(       a&  UR                  [:        R<                  L a	  [        SS9$ [?        5       q SU;  a  [B        US'   [B        S-  q!US   n	[E        U	[F        5      (       d   e[H        U	   n
[H        U	==   S-  ss'   S n[J        RL                  " 5       =n(       a  URN                  n[Q        UU	U
S9n[S        SSUR                  U	[U        U5      UR                  URV                  URX                  URZ                  S.5        UR                  R                  [\        5      (       dG  UR                   SUR                   SURV                   3n[^        R`                  Rc                  U5        [e        [K        U5      5         [g        UR                  URh                  URj                  UR(                  URl                  U Rn                  U Rp                  U Rr                  U Rt                  UUUUUUUS-   U Rv                  S9sS S S 5        $ ! , (       d  f       g = f)NTORCHDYNAMO_DEBUG_FUNCTIONz	<genexpr>)ztransformers/file_utils.pyztransformers/utils/generic.pyzdiffusers/utils/outputs.py__setattr__r   z<module><string>z<lambda>z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torch/_dynamo/convert_frame.pyF)apply_to_code_idr'   )compiled_autograd_idframe_idframe_compile_iddynamoz_convert_frame_assert._compile)r  r  
compile_idr   r!  
cache_sizeaccumulated_cache_size :)frame_stater  r~  rs  )<rc   r  r5   input_codesr   output_codesrW   osenvirongetr  r   endswithr  pathdirnamer   optim__file__r   
f_builtinsr1   rG   r+   FUNDAMENTALr$  sys	_getframef_backr)   "_nonrecursive_disable_wrapper_coder   r   FRAME_COUNTERr  r  r-  r   current_compile_idr  r   r   r  r!  +num_cache_entries_with_same_id_matched_objsnum_cache_entriesrP   r9   traced_frame_infosr   r   _compiler  r  closurer   rl  rm  rn  ro  )r   r"  cache_entryhooksr  r~  r+  r  
prev_framer  r  r  priorr  infos                  r   __call__ConvertFrameAssert.__call__  s    	||';
<%''JJNN788

;<L%''<<;&4+;+;+D+D,
 ,
 &''<<=( &''<<:%$*:*:*E*EGGOOEKK001+
 +

 &''
 <<:%$*:*:j*H%'' LLJ&  J.))** &''4Z5 '22		 #5))%'' ]]_
0J4E4E4Q4QQ#**J 0J4E4E4Q4QQ !!Z%R%RR%E::  01 #!.KQMu%(C((((0:h'1,'#"557757#(#=#= !5-

 	,<<$!*o#//"&"5"5(TT*4*F*F	
 ||&&'DEEll^1T%5%5$6a8K8K7LMD))006^J78  //(('%AX# 988s   B R
R$)rm  rn  rl  ro  r   TFNN)rp  rq   rq  r   r(  r   rr  Optional[typing.Never]rs  Optional[CompilePackage]r   r   )r   z*Callable[[CompilerFn], ConvertFrameAssert]r"  rv   r  Optional[CacheEntry]r  rL   r  *dict[str, Union[int, FrameStateSizeEntry]]r~  r  r   rW   	r   r   r   r   r   propertyr{  r  r   r   r   r   rj  rj    s     59,0     	 
 3  *  
   
 
 RR *R 	R
 @R R 
R Rr   rj  c                    [        XX#U5      $ )z&Fully convert a frame into an FX graph)rj  )rp  rq  r(  rr  rs  s        r   rw  rw    s     G r   )OrderedDict)RemovableHandle)OutputGraphzdict[int, BytecodeHook]_bytecode_hooksc                J    [        [        5      nU [        UR                  '   U$ )zRegister hooks for bytecode generated by Dynamo. The hook can do some
logging, as well as return a new code object to be used. Please refer
to `BytecodeHook` for the hook signature.
)r  r  r   )hookhandles     r   register_bytecode_hookr    s!    
 _-F!%OFIIMr   )r~  rs  c                 ^ ^^^^^^^^^
^^^^^/^0^1^2^3^4^5^6^7^8^9 SSK Jm0JnJm9Jn  Sm3S m4S m8[
        R                  R                  5       m7[              SCU0UUU UU2UUUUUUU4UU6U7U8U94S jj5       n[        SS9          SDU/4S jj5       n[                  SDU
UU2U3U4UU54S jj5       m/[        5       nTb  TR                  T 5      O[        R                  " 5       n[        [         R"                  5         [%        ['        T5      5         [)        S	S
S
S9   [+        S5      R-                  5          U   [/        SSSS9   U   [1        5       m5[3        5       m6[5        5       =n(       a  [7        U[9        5       5      m2OS m2S n[;        U5      (       a!  U(       a  [=        T
U5      nU(       d  SOUS   nUR?                  SU05        [A        UT5      u  nnU(       a  SES jn[B        RE                  SU[G        [         U5      U" T 5      U[H        5        [         RJ                  (       a  [M        U S35      eT(       a  [M        U S35      e[O        S5      (       a  [Q        U S35      e[S        SSU 3SU S3/ S9  [B        RU                  ST RV                  T RX                  T RZ                  TS-   S R]                  [^        R`                  " ST-   S!9Rc                  5       5      5        [d        Rf                  " [h        5      m1[
        Rj                  Rm                  S"U U1U4S# j5        [n        Rp                  " 5       nS nS nS n S n![
        Rr                  Rt                  Rv                  Ry                  5         S n" U" T TU	U5      n"[{        5         [}        T 5        U"[
        Rr                  R                   R~                  (       a>  [/        S$S%S&9   [B        R                  S'5        [        R                  " S(5        S S S 5        T8(       a  0 T8R                  lD        0 T8lE        S(S)K:JFn#  [        U#5      n$Uc  T4b  [        T4R                  5      n%[        T4R                  R                  5      n&T4R                  5       n'[        T4R                  R                  5      n([        T4R                  5      n)T4R                   V*s1 s H  n*U*R                  iM     n+n*T4R                   V*s1 s H  n*U*R                  iM     n,n*[
        Rr                  Rt                  Rv                  RC                  5         OES n%S n&S n'S n(S n)[1        0 5      n+[1        0 5      n,[1        5       m5[n        Rp                  " 5       U-
  S*-  m30 S+U$_S,T RV                  _S-T RX                  _S.T RZ                  _S/UR                  _S0UR                  _S1U%_S2U&_S3U'_S4U(_S5U)_S6U_S7U_S8U _S9U!_S:U+_S;U,_T5T3U"S L[         R                  [         R                  [         R                  S
[        T35      S<.En-UR?                  U-5        sS S S 5        sS S S 5        sS S S 5        sS S S 5        sS S S 5        sS S S 5        sS S S 5        $ ! , (       d  f       GNy= fs  sn*f s  sn*f ! [         a  n.[        U.5      R                  n[        U.5      n[        U.T UTS=9  [
        Rj                  Rm                  S>S? S@ SA9  [        R                  " U.T5      u  n n![        U.[        [        [        [        [        [        U[        U[        [        45      (       a  e [        [        U.5      R                   SB[        U.5       35      R                  U.R                  5      S eS n.A.ff = f! [
        Rr                  R                   R~                  (       aP  [/        S$S%S&9   [B        R                  S'5        [        R                  " S(5        S S S 5        O! , (       d  f       O= fT8(       a  0 T8R                  lD        0 T8lE        S(S)K:JFn#  [        U#5      n$UGc  T4Gb  [        T4R                  5      n%[        T4R                  R                  5      n&T4R                  5       n'[        T4R                  R                  5      n([        T4R                  5      n)T4R                   V*s1 s H  n*U*R                  iM     Os  sn*f n+n*T4R                   V*s1 s H  n*U*R                  iM     Os  sn*f n,n*[
        Rr                  Rt                  Rv                  RC                  5         OES n%S n&S n'S n(S n)[1        0 5      n+[1        0 5      n,[1        5       m5[n        Rp                  " 5       U-
  S*-  m30 S+U$_S,T RV                  _S-T RX                  _S.T RZ                  _S/UR                  _S0UR                  _S1U%_S2U&_S3U'_S4U(_S5U)_S6U_S7U_S8U _S9U!_S:U+_S;U,_T5T3U"S L[         R                  [         R                  [         R                  S
[        T35      S<.En-UR?                  U-5        f = f! , (       d  f       O= f S S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)FNr   )bisectBisectValidationExceptiontranslation_validation_enabledValidationExceptiong        c                  > TR                  5         [        5       n[        U TTTTTTUTTT	T
TTUTTS9m TR                  R	                  5         [        TR                  R                  5         TR                  5          TR                  5         S S S 5        S S S 5        TR                  R#                  5         TR                  mTc   eTR$                  (       d   eTR$                  U S S & UR'                  TR(                  5        [+        U 5        [-        U 5        [/        [1        U 5      5      U S S & g ! , (       d  f       N= f! , (       d  f       N= f! [        R                   a    TR                  5         e [        R                  [        R                  [        R                  4 a    e [         a*    T" 5       (       a  T" TR                  R                   5        e f = f! TR                  R#                  5         f = f)N)r  speculation_logexn_vt_stackdistributed_staters  )restartrR   rS   outputmark_bytecode_tracing_startr   tracing_contextset_current_txrunr*   UnspecializeRestartAnalysisr   SpeculationRestartAnalysisTensorifyScalarRestartAnalysis	SkipFrame	Exception	shape_envcall_cleanup_hooksoutput_instructionsupdatecode_optionsr2   r/   r.   r-   )instructionsr  r  r  builtinsr  r+  rp  r  r(  rr  r  r   localsrq  r  rs  r  tf_mode_stacktracerr  s      r   	transform_compile.<locals>.transform  s    	!%'&#+%/#
(	/MM5576679N9N9P

 :Q7  MM,,.!!!)))) 44QF//0(6(601A,1OPQ3 :Q9P77.. 	!!#**..MM
 	
  	-//v}}../	
 MM,,.sT   9E /E D7EE 7
E	E
EE G' E BG$$G' 'Hcompile_inner)
phase_namec           
       > [         R                  " 5        nUR                  [        R                  R
                  R                  [        R                  [        [        R                  " 5       5      5      5        UR                  [        R                  " 5       5        T" XX#5      sS S S 5        $ ! , (       d  f       O= f[        5       $ r   )r   r   r   r   _dynamocallback_handlerinstall_callbacksr   DYNAMOr  r   r  r]   recordrW   )r+  rq  r  r  stack_compile_inners        r   r  _compile.<locals>.compile_inner  s     !!#u..@@#**C0Q0Q0S,T
  = D D FG!$5D $##  	
s   BB11
B?c           
     
  > [         R                   " 5       =pE            S S jnU" SU R                  U R                  U R                  U 5        S n[        R
                  " 5        H?  nU[        R                  " 5       l         [        SU 3SS9   [        X5      nS S S 5          O   Tb  TR<                  c   S5       eUc   eU" SU R                  U R                  U R                  U5        [>        RA                  5        H  n
U
" X5      nUc  M  UnM     U [B        U'   [D        R-                  U5        XE-
  mTc   eS!S jnUc   eU" U 5      nU" U5      nSnUSU RF                  S U  S3-  nUSURF                  S U  3-  nU RF                  S U URF                  S U :X  d   U5       eSnUSU RH                   S3-  nUSURH                   3-  nU RH                  URH                  :X  d   U5       eSnUSU RJ                   S3-  nUSURJ                   3-  nU RJ                  URJ                  :X  d   U5       eTRL                  (       a  TRO                  5       (       a
  [;        5       $ TRP                  c   eTRR                  [T        RV                  U'   [        SSS9   [Y        U TTU(       a  URZ                  OS U(       a  UR\                  OS T(       a  SOS S9nS S S 5        Tb+  WR^                  c   eTRa                  UR^                  U5        Tb  [1        T5      OSnSU-   n[c        UWRd                  TU5      nTRO                  5       (       d(  URf                  b  URg                  TRP                  5        [i        U5      $ ! , (       d  f       GN= f! [        R                   a  n	[        U	[        R                  5      (       d  [        R                   " 5         ["        R%                  S['        [(        U	R*                  5      5        TR-                  U	R.                  =(       d    [1        [3        U	5      5      5        [         R                   " 5       nUS:  a  [5        SS	S
/ S9   S n	A	GM   S n	A	GM  S n	A	f[        R6                   a  n	[        U	[        R                  5      (       d  [        R                   " 5         ["        R9                  SU	U R                  U R                  U R                  5        U(       a  ["        R9                  S5        [;        5       s S n	A	s  $ S n	A	ff = f! , (       d  f       GN\= f)"Nc           	         [         R                  [        R                  5      (       a!  [         R	                  [        XX#U5      5        g g r   )bytecode_logisEnabledForloggingDEBUGr  r`   )prefixr?  filenameline_nor+  s        r   log_bytecode6_compile.<locals>._compile_inner.<locals>.log_bytecode)  s8     ((77""#F(TJ 8r   zORIGINAL BYTECODEcompile_attempt_T)log_pt2_compile_eventzRestarting analysis due to %sd   z!Excessive RestartAnalysis() callsr  zDynamo 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  z.Skipping frame %s %s                     %s %sz%No graph captured with one_graph=Truez;compiler collective wasn't run before compilation completedzMODIFIED BYTECODEc                    SS K nU R                  U R                  -   [        U R                  UR
                  -  5      -   [        U R                  UR                  -  5      -   $ )Nr   )inspectco_argcountco_kwonlyargcountr   co_flags
CO_VARARGSCO_VARKEYWORDS)r+  r  s     r   
count_args4_compile.<locals>._compile_inner.<locals>.count_args  s]       (()t}}w'9'99:; t}}w'='==>?r   zarg mismatch: zold code object has args z, 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 build_guardssave)guards_serialization_modeUnknownzTorch-Compiled Region: )r  r  r?  r  r  r  r  r  r+  r   r   r   r+  r   r   r  )5rH  r  r   r!  	itertoolscountr   r  attemptr_   r3   r*   RestartAnalysisr  r  r   r   r  r  rf   r&   __traceback__r   restart_reasonr  r  rG   r  r  rW   
all_statesr  r  ri   r  co_varnamesco_freevarsco_cellvarsr(  is_empty_graphr   cleanupsr\   instancerI   guard_fail_fnguard_filter_fnguards_stateadd_guarded_coderK   guard_managerguard_export_fnrZ   )r+  rq  r  r  last_attempt_start_time
start_timer  out_coder  r*  r  hook_outputr  total_argcount_oldtotal_argcount_newmsgcheck_fncompile_id_strannotation_strguarded_coder  r  r  dynamo_time_before_restartr  rs  restart_reasonss                       r   r   _compile.<locals>._compile_inner  sC    04yy{:		"	.1	<?	GO		 	LL	
  (G+2N (',!&wi0  5TEH  )V !(,=,H,H,T 	
I	
T ###LL	
 $**,Dt.K&& -
 #'h"%<%I"!!!	 ###'-'1*4+;+;<O=O+P*QQSTT*8+?+?@SAS+T*UVV001##$7%789	 	9 $.t/?/?.@CC.x/C/C.DEE8#7#77<<7#.t/?/?.@CC.x/C/C.DEE8#7#77<<7 ==V2244%''}}(((,2OO).E+',##$).%%D4;&H F ((444$$X%:%:HE,6,BZ	2^C"""	
 $$&&5+@+@+L !!&--0 .._ 
 && !!S%G%GHH"((*35qG
  ##A$4$4$DDGE*.))+'S=$ C "%6 !  ! == ,!!S%G%GHH"((*		LL$$'' IIEF)++,n FEsP   N#N!N#(>T;
N 	N##T87B?RT8BT3+T83T8;
U
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 reasonsrecompile_reasonc                V    SU R                    SU R                   SU R                   S3$ )N'z' (r  ))r  r   r!  )r+  s    r   format_func_info"_compile.<locals>.format_func_info  s0    4<<.D,<,<+=Qt?R?R>SSTUUr   ztorch._dynamo hit config.%s (%s)
   function: %s
   last reason: %s
To log all recompilation reasons, use TORCH_LOGS="recompiles".
To diagnose recompilation issues, see %s.zK reached, because fail_on_recompile_limit_hit = True this is a HARD failurea1   reached with one_graph=True. Excessive recompilations can degrade performance due to the compilation overhead of each recompilation. To monitor recompilations, enable TORCH_LOGS=recompiles. If recompilations are expected, consider increasing torch._dynamo.config.cache_size_limit to an appropriate value.z;pytorch/compiler:skip_code_recursive_on_recompile_limit_hitz reachedzDynamo cache limit exceededzLimit type: zLDynamo attempted to recompile the code object too many times, exceeding the zo cache size limit.Giving up on compiling as the compile time tradeoff is likely not worth the performance gain.r  zBtorchdynamo start compiling %s %s:%s, stack (elided %s frames):
%s   r  r}  dynamo_startc                 2  > S[        [        R                  " U4S j[        R                  " [
        R                  " ST-   S9R                  5       5      5      5      T R                  T R                  [        R                  " T R                  5      S./-   0$ )Nr  c                   > U S   T:g  $ )Nr  r   )fconvert_frame_interns    r   r   ,_compile.<locals>.<lambda>.<locals>.<lambda>@  s    !J-3G"Gr      r}  )liner?  r  )r  r  	takewhiler   from_tracebackr%   extractsummaryr!  r  intern_stringr   )r+  r;  r~  s   r   r   _compile.<locals>.<lambda>=  s    ''G"11-551t8DLLN !% 3 3 $$.$<$<T=M=M$Nr   gc
gc_time_us)r/  z run_gc_after_compile: running gcr'   )
curr_frameg    eA	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config_suppress_errors config_inline_inbuilt_nn_modulesspecialize_float
is_forward%dynamo_compile_time_before_restart_usr'  artifactc                     SSS.$ )Ndynamo_errorstringr?  encodingr   r   r   r   r   rD  p  s    * (%r   c                 ,    [         R                  " 5       $ r   	traceback
format_excr   r   r   r   rD  t  s    9#7#7#9r   metadata_fn
payload_fnz: )r  zlist[Instruction]r  dict[str, object]r   r   )
r+  r   rq  r   r  rL   r  z2Callable[[list[Instruction], dict[str, Any]], Any]r   rW   )r+  r   r   r  )jtorch.fx.experimental.validatorr  r  r  r  r   	overrides _get_current_function_mode_stackr   r   r2  rb   code_contextr   nullcontextr   r(   use_lazy_graph_moduler   r   r[   r!   guardr_   r   rU   r   rQ   rT   r7   rJ   update_outerr6   r  rM  r  rm   fail_on_recompile_limit_hitr>   r   rB   rG   r  r  r   r!  joinr%   rA  formatr   rC  r  r\  r]  rH  time_nsr  utilsReinplaceCountersr   rN   rM   run_gc_after_compiler  rE  collectr  local_scoper  rG  r  lenr   r  count_callsgraphnodesplaceholdersrR  r   rS  r  r  suppress_errorsinline_inbuilt_nn_modulesrX  rl   r  r  r,  r*   get_exc_messager  rH   rE   r=   AssertionErrorr   r   rF   rC   rA   r@   with_tracebackr  ):r+  r   r  r  r  rp  rq  r(  rr  r  r  r  r"  r  r  r~  rs  r  r  r  r  metrics_contextrl  
compile_pgr0  reasonsexceeded
limit_typer4  start_time_nsrN  rO  rP  rQ  r(  rG  rH  rI  rJ  rK  rL  rM  oprR  rS  metricsr*  r  r  r;  r  r)  r  r*  r  r  r  r  s:   ````````` `  ````                              @@@@@@@@@@@r   r  r    s   (  ),$(F.2F 	88:  6Q'6Q7H6Q	6Q 6Q 6Q 6Qp #o>


 
 F	

 

 ?
& l/l/l/ l/ F	l/
 
l/ l/ l/\ *+O&-&9T"z?U?U?W  	v;;<z23d$	
 	BCIIK$-%H	

 	$'E(*')):) 0Z\ J $ +/J''E=k5QG>E67ST:  	$$&8:J%KL6z:N*V KK<
 
+ & # 11-!l"mn  -!l #` `  !M  -
|8-DEE !9*:,7!%%/L 12!2  			QLL1HGG%--1t8<CCEF	
4  *77A''	
( #'	%)26 04--335B	2(y%KL '-` }}##88!$NHH?@JJqM O ,.)"$)JI"v'9!&--0(+F,<,<,C,C(D%!'!3!3!5#&v||'9'9#: $'(;(;$<!?E?W?W$X?WR__?W!$X.4.I.I(.IBOO.I % ( ##5599;"(,%!%#' $(!$'G!'*2w$"%%.2lln}.LPS-S*Y4<< t// !$"5"5	
 jTT )**F*F { ()> !. #$4 $%6 Y { +,D )*@  $%6!" '(<#$ $30J$0$<*0*@*@4:4T4T$*$;$;"9B.:3G@ ((1s 		
 	
 	 	LK	
 	
 	43 	=<F ON" %Y(E  (	< Q,,Ia&KauV<NN++ : ,  @C?R?R:@<$&< %)",/'0-$     /Aw++,Bs1vh7 .1t<M(	<^ }}##88!$NHH?@JJqM ONN ,.)"$)JI"v'9!&--0(+F,<,<,C,C(D%!'!3!3!5#&v||'9'9#: $'(;(;$<!?E?W?W$X?WR__?W$X!$X.4.I.I(.IBOO.I($ ( ##5599;"(,%!%#' $(!$'G!'*2w$"%%.2lln}.LPS-S*Y4<< t// !$"5"5	
 jTT )**F*F { ()> !. #$4 $%6 Y { +,D )*@  $%6!" '(<#$ $30J$0$<*0*@*@4:4T4T$*$;$;"9B.:3G@ ((1s 		
 	
 	
 	 	LKK	
 	
 	
 	433 	=<<sP  =k#k	j/8j	;i;i!
H7i!Z#3i,Y4CiZi,ZD2i4	i!=	i;	j		j/	k	!	k#4
Z>i
^C.^^^4i,_90	i9
`Cici4d
D9ii
ii!	i;!
i/+i;2	j	;
j	j		j/
j#j/&	k	/
j=9k	 	k#	
k	k##
k1c                  l    \ rS rSr S       SS jjr\S	S j5       r S
           SS jjrSrg)ConvertFramei  Nc                <    Xl         [        USUS9U l        X l        g )NF)rq  rs  )r   rw  _inner_convert_hooks)r   rp  r  rs  s       r   r   ConvertFrame.__init__  s%     +6'25'
 r   c                   ^  U 4S j$ )Nc                0   > [        U TR                  5      $ r   )convert_framer  rx  s    r   r   2ConvertFrame._clone_with_backend.<locals>.<lambda>  s    }WdkkBr   r   r   s   `r   r{   ConvertFrame._clone_with_backend  s	    BBr   c                F  ^ [         R                  UR                  5        [        S   S==   S-  ss'    U R	                  XX4US-   S9n[        S   S==   S-  ss'   U$ ! [
         Ga5  n[        U[        5      (       a  e [        U[        5      nU(       a  [        R                  [        R                  5      (       a  [        US5      (       a  [        US5      (       a  [        [        UR                   5      5         UR"                  n	SR%                  [&        R(                  " U	5      5      n
S	U
 3m[*        R,                  R/                  S
S U4S jS9  [        R1                  TSS9  S S S 5        O! , (       d  f       O= f[2        R4                  (       d  U(       d  e [7        USS 5      nUR                  n[9        X|X5      nU(       a  [:        R=                  USS9  O[:        R?                  USS9  [        U[@        5      (       a4  [C        [E        [F        RH                  [F        RH                  5      S9s S nA$ [        U[J        5      (       a4  [C        [E        [F        RL                  [F        RL                  5      S9s S nA$  S nA[C        5       $ S nAff = f)Nframestotalr'   r}  okr  
real_stackr  z&Graph break: skip: from user code at:
r[  c                     SSS.$ )Ndynamo_graph_break_reasonr^  r_  r   r   r   r   r   'ConvertFrame.__call__.<locals>.<lambda>"  s    (C,41r   c                 8   > T  S[         R                  " 5        3$ )N
rb  )user_stack_traces   r   r   r  &  s    2B1C2iFZFZF\E]/^r   re  T)exc_infor)  )frame_exec_strategy)'r  r   r  r^   r  r  r  rF   rH   graph_break_logr  r  r  r  r   r   r  r  rr  rc  format_listr   r\  r]  r  r(   r  r  r?   r  r  rM  rD   rW   rY   rX   SKIPrB   RUN_ONLY)r   r"  r  r  r  r~  r   r*  	soft_fail
user_stackuser_stack_formattedr)  r+  	error_msgr  s                 @r   r  ConvertFrame.__call__  s;    	%7#q(#Q	((ETAX ) F Xt$)$M K	 !9::"1k2I _99'--HH 1l++<0H0H()EF%&\\
/1ww%11*=0, .UUiTj+k(77&) (_ 8  (--,%) .  GFF& ))) &a):DAO<<D(/IIT2I5!788)(9#((+*:*:) 
 A566)(9#,,k.B.B)  7 "##[K	sE   )A   J +BJ A/E8/	J8
F	B<J>J AJJ J )r  r  r   r   )rp  rq   r  rL   rs  r  r   r   )r   z*Callable[[WrapBackendDebug], ConvertFrame])r   r  r  r   r   r   r  r    s    
 -1	

 
 *	

 

 C C ]$]$ *]$ 	]$
 @]$ ]$ 
]$ ]$r   r  c                    [        XUS9$ )zHTry to convert a frame into an FX graph, if error leave frame unmodified)rs  )r  )rp  r  rs  s      r   r  r  M  s     G<<r   c                b   SSK Jn  [        R                  nS[        l        [	        U S5       n[
        R                  " U5      nS S S 5        [        [        R                  " WR                  R                  5       [        5       R                  5       5      5      Ul
         [        UR                  UR                  UR                  UR                  UR                   USSS [#        5       [%        SS5      S S 0 ['        SSS9S	9  U[        l        g ! , (       d  f       N= f! U[        l        f = f)
Nr'   )eagerFrbr   *   i  )r  r  )
rp  rq  r(  rr  r  r  r  r"  r  r  )backends.debuggingr  r(   replay_record_enabledopenrO   loadr  r  chainr   itemsr  r+  r  r  r  rL   r4   r   )r  r  original_replay_valin_filer  s        r   replayr  U  s    ) 66#(F 	h	 %%g. 
)//&..*>*>*@')//BSTUFN;KKNNMMOONN#'0A6 "sC	
$ (;$/ 
	. (;$s   D!A#D! 
D!D.c                    [         R                  S:  a  g[        R                  " U 5       H$  nUR                  S:X  d  M  UR
                  S-  s  $    [        S5      e)N)      r   RESUMEr6  z$RESUME instruction not found in code)r  version_infodisget_instructionsopnameoffsetRuntimeError)r+  insts     r   first_real_inst_idxr  t  sQ    
'!$$T*;;(";;!## + =
>>r   c                  <    \ rS rSrSS.           SS jjrSrg)ConvertFrameProtocoli}  r   r}  c                   g r   r   )r   r"  r  r  r  r~  s         r   r  ConvertFrameProtocol.__call__~  s     !r   r   Nr  )r   r   r   r   r  r   r   r   r   r  r  }  sL     !! *! 	!
 @! ! 
! !r   r  c                  8    \ rS rSrSS jr        SS jrSrg)CatchErrorsWrapperi  c                T    [         R                  " U5      " U 5        Xl        X l        g r   )r   r   r   r  )r   callbackr  s      r   r   CatchErrorsWrapper.__init__  s    !$'*2'
r   c           
     t   Uc   e[         R                  UR                  5        [        R                  " UR                  5      n[
        R                  S:  a#  UR                  [        UR                  5      :  nO"UR                  [        UR                  5      :  nU(       dF  U(       d?  [        R                  (       d*  [        SS9(       a  [        U R                  SS5      (       d  [        R                  [         R"                  5      (       a  U(       a  SnO;[        R                  " UR                  5      (       a  SnO[        SS9(       a  SnOSn[        R%                  S	UR                  R&                  UUR                  R(                  5        [+        5       $ UR                  R(                  S
:X  a$  UR                  R&                  S:X  a
  [+        5       $ [,        R.                  R0                  R3                  5       S:X  a  [4        R6                  " 5       nU(       a  [8           SSKJn  U" UR>                  U R                  R                  S9n	[A        U R                  S5      (       d   S5       eU R                  RC                  U	RD                  5      n
U
" XU RF                  U5      sS S S 5        $ [8           [I        5          U R                  XU RF                  USS9sS S S 5        sS S S 5        $ ! , (       d  f       NN= f! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)N)r     F)include_infra_modesrm  ztraced frame alreadyzin skipfileszSnon-infra torch dispatch mode present, this is not supported today in torch.compilezdynamo tracing is disabledz#skipping: %s (reason: %s, file: %s)r  __new__ddp_optimizerr   )DDPOptimizer)bucket_bytes_capbackend_compile_fnr{  zJDDPOptimizer only supports callback fns that know how to clone themselves.r'   r}  )%r  r   r  r,   r   r  r  f_lastir  r(   rJ  r$   r  r   r  r  r  r  r  r  r   rW   r   r  ru  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skip_reason
ddp_moduler  r  hijacked_callbacks              r   r  CatchErrorsWrapper.__call__  sa    &&&%!''5w&$)MM4G4U$U!$)MM5H5V$V! "~~)eD ? ?ERR ..("8K &&u||44"0K.5I"wK">K		9LL((LL,,	 &''<<##z1ell6J6Ji6W%''==446/I0GGIJ!O$0)3)D)D+/+J+J+e+e%M #779N   e  77KK)44 &
 -DJJ# "\* 1322DJJ! 3  43\\+ "\* 43\\\s1   .BK>L)L+	L)>
L
L	L))
L7)r   r  N)r  r  r  rL   r   r   )r"  rv   r  r  r  r  r   rW   )r   r   r   r   r   r  r   r   r   r   r  r    s8    
JJ *J @	J
 
Jr   r  c                    [        X5      $ r   )r  )r  r  s     r   catch_errors_wrapperr    s     h..r   r   )r   r  r   zdict[str, Any]r   zOptional[dict[str, str]]r   r   )r   Callable[_P, _T]r   r  )r"  rv   r   r   )NF)
r*  r  r+  r   r"  Optional[DynamoFrameType]r(  r   r   r   )r1  r  r   r  r  )rp  rq   rq  r   r(  r   rr  r  rs  r  r   rj  )r  rt   r   r  )NN)$r+  r   r   rh  r  rh  r  rh  r  ztuple[CellType]rp  rq   rq  r   r(  r   rr  r  r  rL   r  r  r  r4   r"  r  r  z4Optional[dict[str, Union[int, FrameStateSizeEntry]]]r  r   r~  r  rs  r  r   rW   )rp  rq   r  rL   rs  r  r   r  )r  r  r   r   r
  )r  r  r  rL   r   r  )__doc__
__future__r   collectionsr   rE  r  r   rE  r  r  r  r7  r   rR  r  	threadingrH  rc  typingr   pathlibr   typesr   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   torch._guardsr   r   r   r   r   torch._utils_internalr   r   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$   torch.utils._tracebackr%   r&   r  r(   r)   r*   r+   r,   bytecode_analysisr-   r.   bytecode_transformationr/   r0   r1   r2   r3   r  r4   r5   r6   r7   
eval_framer8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r   rI   rJ   rK   r  rL   pgorM   rN   replay_recordrO   resume_executionrP   symbolic_convertrQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   ru  r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   variables.torch_functionro   __annotations__numpyrp   ModuleNotFoundErrorTYPE_CHECKINGbackends.registryrq   rs  rr   repro.after_dynamors   rt   ru   rv   variables.builderrw   	getLoggerr   r  r\  getArtifactLoggerr  r  RLockr  rz   r{   r}   r   r  r  r   r   r   r   #suppress_torch_distributed_warningsr$  r,  r  Counterr-  r2  r0  rj  rw  r  torch.utils.hooksr  output_graphr  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 G       
  < * ;  " X X     , J  
 
-'4@@6 !~~//*E..228^L  T]t_	 	 ( iy37 0 7 *+MQ	%2J ,JZ 11K 2Kb (,	**
* %* 	*
 
*  F 
CLl lb 15(,


 
 /	

 &
 
 $ - 
) ,7=( 8. (,HLk2" (,%k2
k2k2 k2  	k2
 k2 k2 k2 k2 /k2 k2 &k2 *k2 %k2 Fk2  !k2" #k2$ &%k2& 'k2^n$ n$d PT==$)=4L==;>?	!6?? 	!P Pf/"/+0//})  	Bs   O O)(O)