
    קg                    n   U 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m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! 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
l+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1 d dl&m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z< d dl=m>Z? d dl@mAZA d dlBmCZCmDZD d dlEmFZFmGZG ddlHmIZImJZJmKZK ddlLmMZMmNZN ddlOmPZPmQZQmRZRmSZSmTZT ddlUmVZVmWZWmXZXmYZY ddlZm[Z[m\Z\m]Z] ddlJm^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZg ddlhmiZimjZjmkZk ddllmmZm ddlnmoZo ddlpmqZqmrZrmsZsmtZt ddlKmuZu dd lvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZ d!ed"<   	 d dlZn# e$ r dZY nw xY wej        rdd#lmZ dd$lmZ dd%lmZmZ dd&lmZ  ej        e          Ze%j                            ed'          Ze%j                            ed(          Z ej                    Z e d)          Z e#d*          Z G d+ d,          Z G d- d.          Z e            Z e            Zdad/ed0<    ej        e?          	 ddd9            Zdd<Ze]j        dd@            Z	 	 dddIZd a ej                    ZdJedK<   ddMZddNZ G dO dP          Z	 	 	 dddWZd dXlmZ d dYlmZ ej        rddZlmZ  e            Zd[ed\<   dd`Z	 	 dd daddrZ G ds dt          ZdduZddwZddxZ G dy dzej                  Z G d{ d|          Zdd~ZdS )    )annotationsN)Path)CodeType	FrameTypeFunctionType
ModuleType)AnyCallableDictListOptionalSetTypeVarUnion)	ParamSpec)ReferenceType)GlobalStateGuard)get_compile_pg)CompileTimeInstructionCounter)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)DistributedDataParallel)_disable_current_modesis_in_torch_dispatch_mode)CapturedTracebackformat_traceback_short   )configexc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_cache_size_limitis_recompilation)always_optimize_code_objects	skip_codeTorchPatcher)
augment_exc_messageBackendCompilerFailedCacheLimitExceededformat_error_msgInternalTorchDynamoErrorSkipCodeRecursiveExceptionTorchRuntimeErrorUncapturedHigherOrderOpErrorunimplementedUnsupported)CheckFunctionManager&get_and_maybe_log_recompilation_reasonGuardedCode)Hooks)ExecutionRecord)DistributedStateInstructionTranslator
LocalStateSpeculationLog)is_numpy)CleanupManagerCompilationMetricscountersdynamo_timedformat_bytecodeframe_phase_timinggen_record_file_nameget_chromium_event_loggerincrement_frameis_namedtupleistype
LazyStringorig_code_maprecord_compilation_metricsreset_graph_break_dup_checkersetup_compile_debugtroubleshooting_urlwrite_record_to_filezOptional[ModuleType]np)
CompilerFn)WrapBackendDebug)BytecodeHook
CacheEntry)FrameStateSizeEntrybytecodegraph_breaks_T_Pc                      e Zd ZdS )TODO_UNKNOWNN)__name__
__module____qualname__     W/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_dynamo/convert_frame.pyrk   rk      s        Drp   rk   c                  .    e Zd ZddZddZdd	Zdd
ZdS )TrackerreturnNonec                :    g | _         t                      | _        d S N)seensetseen_idsselfs    rq   __init__zTracker.__init__   s    35	"%%%rp   
strong_objr   c                     t          |           j        vrOt          j        | fd          } j                            |            j                                       d S d S )Nc                8    j                                       S rw   )rz   remove)_idxr|   s    rq   <lambda>zTracker.add.<locals>.<lambda>   s    DM4H4H4M4M rp   )idrz   weakrefrefrx   appendadd)r|   r~   objr   s   `  @rq   r   zTracker.add   st    nndm##+j*M*M*M*M*MNNCIS!!!Mc""""" $#rp   itemboolc                .    t          |          | j        v S rw   )r   rz   )r|   r   s     rq   __contains__zTracker.__contains__   s    $xx4=((rp   c                j    | j                                          | j                                         d S rw   )rx   clearrz   r{   s    rq   r   zTracker.clear   s.    	rp   N)rt   ru   )r~   r   rt   ru   )r   r   rt   r   )rl   rm   rn   r}   r   r   r   ro   rp   rq   rs   rs      sd        ( ( ( (# # # #) ) ) )     rp   rs   zOptional[GlobalStateGuard]initial_global_statesrcstrglobalsDict[str, Any]	co_fieldsOptional[Dict[str, str]]rt   r   c                P    t          | ||          }t          |j                   |S rw   )original_forward_from_srcr8   __code__)r   r   r   results       rq   fx_forward_from_src_skip_resultr      s*     'sGY??FfoMrp   fnCallable[_P, _T]c                V     t          j                   d fd            } |_        |S )	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
    args_P.argskwargs	_P.kwargsrt   rh   c                 f   t                      }t          j                    }t          j                                        5  t          j                    }t          j                    }t          j                    }t          j	                    }t          j        
                                }d }	t          j                                        rt          j        
                                }	t          j                                        }
t          j        j        j        }t"          t          j        j        _        t%                      }t'          j                    }|                    t          j        j                                                   	  | i ||                                 |                                 t          j                            |           t          j        j                            |           t          j        ||           t          j        |           t          j                            |           |	t          j                            |	           t          j                             |
           |t          j        j        _        |!                                s J d|"                                 d            cd d d            S # |                                 |                                 t          j                            |           t          j        j                            |           t          j        ||           t          j        |           t          j                            |           |	t          j                            |	           t          j                             |
           |t          j        j        _        |!                                s J d|"                                 d            w xY w# 1 swxY w Y   d S )N)	warn_onlyzGlobal z7state changed while dynamo tracing, please report a bug)#r   torchis_grad_enabled_C_PreserveDispatchKeyGuardis_inference_mode_enabled$are_deterministic_algorithms_enabled-is_deterministic_algorithms_warn_only_enabledrandomgetstateget_rng_statecudais_available_get_cublas_allow_tf32fxgraph_moduler"   r   r]   
contextlib	ExitStackenter_context_symbolic_trace_maybe_revert_all_patchesclose_set_grad_enabledautograd	grad_mode_enter_inference_modeuse_deterministic_algorithmssetstateset_rng_state_set_cublas_allow_tf32checkreason)r   r   guardsprior_grad_modeprior_inference_modeprior_deterministicprior_warn_onlypy_rng_statetorch_rng_statecuda_rng_state
allow_tf32prior_fwd_from_srccleanup
exit_stackr   s                 rq   _fnz"preserve_global_state.<locals>._fn   s   !##/11
 X//11 $	f $	f#(#B#D#D "'"L"N"N#QSSO!?,,L#l88::O!Nz&&(( <!&!9!9!;!;88::J!&!6!H6UEH!3)++G#-//J$$(BBDD  fr4*6**  """**?;;;(>>?STTT2'?    ---**?;;;!-J,,^<<<//
;;;:L%7LLNNf feV]]__eeef f fE$	f $	f $	f $	f $	f $	f $	f $	f*   """**?;;;(>>?STTT2'?    ---**?;;;!-J,,^<<<//
;;;:L%7LLNNf feV]]__eeef f f f f f fE$	f $	f $	f $	f $	f $	f $	f $	f $	f $	fs-   EP&K#D>P&#E P##P&&P*-P*r   r   r   r   rt   rh   )	functoolswraps_torchdynamo_orig_callable)r   r   s   ` rq   preserve_global_stater      sN     _R+f +f +f +f +f +fZ &(C"Jrp   framer   r   c                "   | j         t          v rdS | j         j        D ]}|| j        v rv| j        |         }t	          |t
                    r&|j                            d          s	|t          u r dS t          r't          j        r|t          u st          |          r dS i d
fd| j                                        D ]} |          r dS t                              d| j         j        | j         j        | j         j                   d	S )z+Check if the frame has torch.* related bitsTztorch.r   objectrt   r   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
        rHt          rAt           t          j                  st           t          j                  rd|<   |         S t           t          t          f          r&t!          fd D                       |<   |         S t           t"                    rGt                                                     }t!          fd|D                       |<   |         S t           t&          t(          t*          t          d          t,          f          rd|<   |         S t/                     r<t1           d          r,t!           fd j        D                       |<   |         S dS )z)Recursively check if the obj has a tensorFTc              3  .   K   | ]} |          V  d S rw   ro   .0v
has_tensors     rq   	<genexpr>z:has_tensor_in_frame.<locals>.has_tensor.<locals>.<genexpr>  s+      ">">Q::a==">">">">">">rp   c              3  .   K   | ]} |          V  d S rw   ro   r   s     rq   r   z:has_tensor_in_frame.<locals>.has_tensor.<locals>.<genexpr>"  s+      "A"AQ::a=="A"A"A"A"A"Arp   N_fieldsc              3  J   K   | ]} t          |                    V  d S rw   )getattr)r   r   r   r   s     rq   r   z:has_tensor_in_frame.<locals>.has_tensor.<locals>.<genexpr>(  s5      "T"T1::gc1oo#>#>"T"T"T"T"T"Trp   )r   
isinstancer   TensornnModulerX   type
issubclassr)   trace_numpyr`   ndarraygenericlisttupleanydictvaluesr   intfloatr   rW   hasattrr   )r   obj_idr   r   rz   s   `  rq   r   z'has_tensor_in_frame.<locals>.has_tensor  s   CXF## cEL%(/:;; !	3!	",S%(/"B"B!	  $HVF##		 RZ((	 -7sBJ,G,G	
  $HVF##C$'' 	"">">">">#">">">>>HVF##C 	 #**,,''F""A"A"A"A&"A"A"AAAHVF##C#sE4::t<== 	$HVF##3 	GC$;$; 	""T"T"T"T"T"T"T"TTTHVF## 5rp   z0skipping because no torch.* %s             %s %sF)r   r   rt   r   )f_coder7   co_names	f_globalsr   r   rl   
startswithr   r`   r)   r   rM   f_localsr   logdebugco_nameco_filenameco_firstlineno)r   r   r   valuer   rz   s       @@rq   has_tensor_in_framer     sP    |333t <( 	 	eo%%/'*C#z** ''1158E\\tt f( cRii8C==itt "H( ( ( ( ( ( (V &&((  :e 	44	 II	 #   5rp   Fe	Exceptioncoder   Optional[FrameType]exportru   c                    d }t          | d          r,t          | |          }t          || j                   || _        t          | |           d S )Nexec_recordr  )r   rT   r_   r	  record_filenamer:   )r  r  r   r  r  s        rq   exception_handlerr  A  s]     Oq-   ,.q$77_am<<<+&))))))rp   z/typing.Counter[Union[int, FrameStateSizeEntry]]FRAME_COMPILE_COUNTERfuncc                <    t           j        rt          |           S | S rw   )r)   cprofilecprofile_wrapper)r  s    rq   maybe_cprofiler  V  s     &%%%Krp   c                H     t          j                   d fd            }|S )	Nr   r   r   r   rt   rh   c                    t          j                    }|s
J d            t          dj         dt	          |                              dd           d          }t          j                    }|                                 t          j	                    } |j
        g| R i |}t          j	                    |z
  }|                                 t                              dj        ||           t          j        |          }	 |                    |           n+# t"          $ r t                              d|           Y nw xY wt                              d|           |                    d	          }		 t)          j        d
dddddt	          |          gt(          j                  }
t)          j        dddt	          |	          g|
j                   t                              d|	           n# t2          $ r t                              d           |                    t          j        j                                      d           |                    t          j        j                                      d           Y nw xY wt?          t	          |                    xr#t@          j!        "                    dfd           |S )NzTrace id is Nonez/tmp/r   /z.profilez7### 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)nameurlro   )manifold_links   rq   r   z;cprofile_wrapper.<locals>.profile_wrapper.<locals>.<lambda>  s    !8OO rp   )#r   current_trace_idr   rl   r   replacecProfileProfileenabletimeruncalldisabler   warningr  Stats
dump_statsPermissionError	exceptionwith_suffix
subprocessPopenPIPE
check_callr  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_processr!  r  s              @rq   profile_wrapperz)cprofile_wrapper.<locals>.profile_wrapper]  s   !244++++++MDMMMCMM$9$9#s$C$CMMM
 
 !!9;;d4T444V44)++0EM		
 	
 	
 \$	>OOL)))) 	> 	> 	>MM.=====	>'666++F33	E * 087-%% "! ! ! !s8}}5'.    KK:HEEEE  	E 	E 	EKKN   MM&.-..::2>>>MM&.344@@DDDDD	E @
 
 
= 	 N++OOOO   s&   
D   %EE<A;G8 8BJJr   )r   r   )r  rE  s   ` rq   r  r  \  s?    _T: : : : : :x rp   c                  D    e Zd Z	 	 	 dddZed d            Zddd!dZdS )"ConvertFrameAssertTFNcompiler_fnra   	one_graphr   r  export_constraintsOptional[typing.Never]rt   ru   c                Z    t                       || _        || _        || _        || _        d S rw   )r\   r   
_one_graph_export_export_constraints)r|   rH  rI  r  rJ  s        rq   r}   zConvertFrameAssert.__init__  s4     	&'''*5'##5   rp   *Callable[[CompilerFn], ConvertFrameAssert]c                      fdS )Nc                F    t          | j        j        j                  S rw   )convert_frame_assertrM  rN  rO  backendr|   s    rq   r   z8ConvertFrameAssert._clone_with_backend.<locals>.<lambda>  s"    3T_dlD4L 
  
 rp   ro   r{   s   `rq   _clone_with_backendz&ConvertFrameAssert._clone_with_backend  s    
 
 
 
 	
rp   r   skipr   r   cache_entryOptional[CacheEntry]hooksrG   frame_state*Dict[str, Union[int, FrameStateSizeEntry]]rX  r   Optional[GuardedCode]c                  t                       |j        }t          ||          }t                              |           |t
          v rd S t          j                            d          r*t          j                            d          |j	        k    rd S |j	        dk    r|j
                            d          rd S |j	        dk    rd S |j	        dk    rH|j
                            t          j                            t          j        j                            rd S |j	        dk    r|j
        dk    rd S |j	        dk    r!|j
        dk    rt%          |j                  sd S t)          |          rt+          d	           t-          |          sd S t/                      ad
|vrt2          |d
<   t2          dz  a|d
         }t5          |t6                    sJ t8          |         }	t8          |xx         dz  cc<   t;          ||	          }
t=          dd|j	        |t?          |
          |j
        |j         |j!        |j"        d           tG          |j        |j$        |j%        |j        | j&        | j'        | j(        | j)        ||||||
|dz             S )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>	generator_idr(   dynamoz_convert_frame_assert._compile)r   frame_id
compile_idr   r   
cache_sizeaccumulated_cache_size)r\  rg  rX  )*rV   r   r4   input_codesr   output_codesosenvirongetr   r   endswithr   pathdirnamer   optim__file__r   
f_builtinsr0   rB   r  r   r   FRAME_COUNTERr   r   r  r   r   r   r   +num_cache_entries_with_same_id_matched_objsnum_cache_entries_compiler   r   r   rM  rN  rO  )r|   r   rY  r[  r\  rX  r  rh  rf  frame_compile_idrg  s              rq   __call__zConvertFrameAssert.__call__  s    	|'{;;
<4JNN788	
;<<LL4<;&&4+;+D+D,
 ,
& 4<=(( 4<:%%$*:*E*EGOOEK011+
 +
%
 4
 <:%%$*:j*H*H4 LJ&& J..)** /
 4 	'+&&&"5)) 	4  011 ##!.KQMu%(C(((((0:h'''1,'''x)9::
,<$!*oo#/"&"5(T*4*F 	
 	
 	
 LON+OL$#!
 
 
 	
rp   TFN)
rH  ra   rI  r   r  r   rJ  rK  rt   ru   )rt   rP  r   r   rY  rZ  r[  rG   r\  r]  rX  r   rt   r^  rl   rm   rn   r}   propertyrV  rz  ro   rp   rq   rG  rG    s         596 6 6 6 6 
 
 
 X
 l
 l
 l
 l
 l
 l
 l
 l
rp   rG  TrH  ra   rI  rJ  rK  c                &    t          | |||          S )z&Fully convert a frame into an FX graph)rG  )rH  rI  r  rJ  s       rq   rS  rS  !  s     k9f>PQQQrp   )OrderedDict)RemovableHandle)OutputGraphzDict[int, BytecodeHook]_bytecode_hookshookrc   r  c                L    t          t                    }| t          |j        <   |S )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   )r  handles     rq   register_bytecode_hookr  7  s"    
 _--F!%OFIMrp   rW  Dict[str, object]localsbuiltinsr[  rG   rY  rZ  rh  r3   r\  4Optional[Dict[str, Union[int, FrameStateSizeEntry]]]rg  r   rX  r   r^  c          !        0123456789:; ddl m1m}m;m} d4d 6d :t
          d01 3569:;fd
            }d10fd}t          d          t          d13468fd                        0t          t          j
                  5  t          t                              5  t                      8t                      5t                      9t                      x}rt!          |t#                                3nd 3t$          j        j                                         d 7t-          |
          r|rt/          |	|          7t1          |
          \  }}|rd2d}d37fd}t2                              d|t7          t          |           |            |            t8                     t          j        r!t=          d          rt?          | d          tA          | d           t2          !                    d j"         j#         j$        dz   d %                    tM          j'        dz   !          (                                                     tS          j*        tV                    2tY                      }|-                                 t$          j.        /                    d" 2fd#           ta          j0                    }d }d }d }d }t$          j        j1        j2        d$         d%         }d }	  | ||          }|:ri :j3        _4        d&d'l1m5}  tm          |           }!|G6D|!tn          v r:tq          6j9                  }"tq          6j:        j9                  }#6;                                }$tq          6j<        j=                  }%tq          6j>                  }&tn          |!         ?                    d(d           }'tn          |!         ?                    d)d           }(tn          |!         ?                    d*d           })tn          |!         ?                    d+d           }*d, 6j@        D             }+d- 6jA        D             },t$          j        j1        j2        d$         d%         |z
  }-nVd }"d }#d }$d }%d }&d }'d }(d })d }*t          i           }+t          i           },t                      8ta          j0                    |z
  4d }-t          tm                    |! j"         j#         j$        |
jC        |
jD        |"|#|$|%|&||'|(|)|*|||||+|,84|d u|-          }.t          |.           t$          j        j        F                                 cd d d            cd d d            S # t          $ r}/t          |/          jI        }tm          |/          }t          |/ |.           t          jL        |/          \  }}t          |/t          t          t          t          t          t          |t          |f	          r t          t          |/          jI         d/tm          |/                     V                    |/jW                  d d }/~/ww xY w# :ri :j3        _4        d&d'l1m5}  tm          |           }!|G6D|!tn          v r:tq          6j9                  }"tq          6j:        j9                  }#6;                                }$tq          6j<        j=                  }%tq          6j>                  }&tn          |!         ?                    d(d           }'tn          |!         ?                    d)d           }(tn          |!         ?                    d*d           })tn          |!         ?                    d+d           }*d, 6j@        D             }+d- 6jA        D             },t$          j        j1        j2        d$         d%         |z
  }-nVd }"d }#d }$d }%d }&d }'d }(d })d }*t          i           }+t          i           },t                      8ta          j0                    |z
  4d }-t          tm                    |! j"         j#         j$        |
jC        |
jD        |"|#|$|%|&||'|(|)|*|||||+|,84|d u|-          }.t          |.           t$          j        j        F                                 w xY w# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )4Nr   )bisectBisectValidationExceptiontranslation_validation_enabledValidationExceptiong        instructionsList[Instruction]code_optionsr  rt   ru   c                                                     t          | 
|	          	 t          j        j                  5                                  5                                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   nl# t          j        $ r 	                                  t          j
        t          j        f$ r  t          $ r!              r j        j                    w xY wj                                         n# j                                         w xY wj        J j        sJ j        | d d <   |                    j                   t$          j        rAt)          |            t+          |            t-          t/          |                     | d d <   d S d S )N)r\  speculation_logdistributed_state)restartrJ   r   outputtracing_contextset_current_txrunr*   UnspecializeRestartAnalysisr   SpeculationRestartAnalysis	SkipFramer  	shape_envcall_cleanup_hooksoutput_instructionsupdater  r)   dead_code_eliminationr1   r.   r-   r,   )r  r  r  r  r  rH  r  r  rJ  r\  r   r  mutated_closure_cell_contentsrI  r  r  tracerr  s     rq   	transformz_compile.<locals>.transform`  s    	!!!&)#+/
 
 
"	/677  9N9N9P9P  

                             . 	 	 	!!###.> 	 	 	 	 	 	--// 0v}.///	
 M,,....FM,,....!!!)))) 4QQQF/000' 	U,\:::,\:::45El5S5STTLOOO	U 	Usf   B& B"B7BB	B
B	BB& BB& !B"B& %D, &A)DD, ,Er  r   rI  r   r[  rG   r  2Callable[[List[Instruction], Dict[str, Any]], Any]r^  c                    t          dd          5  t          j                    5   | |||          cd d d            cd d d            S # 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )Nz_compile.compile_innerentire_frame_compile
phase_name)rQ   r   record)r  rI  r[  r  _compile_inners       rq   compile_innerz_compile.<locals>.compile_inner  sP    2?UVVV 	I 	I.577 I I%~dIuiHHI I I I I I I	I 	I 	I 	I 	I 	I 	I 	II I I I I I I I I	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is3   A'AA'A	A'A	A''A+.A+r  r  c           	     :   t          j                     x}}dd} |d| j        | j        | j        |            d }t	          j                    D ]<}|t          j                    _        	 t          | |          } n# t          j        $ r}	t                              dt          t          |	j                                                 |	j        pt'          t)          |	                               t          j                     }|dk    rt+          d           Y d }	~	d }	~	wt          j        $ rU}	t                              d|	| j        | j        | j                   |rt                              d           Y d }	~	 d S d }	~	ww xY wj        
J d            |J  |d| j        | j        | j        |           t2                                          D ]}
 |
| |          }||}| t6          |<   t8                              |           ||z
  J d d}|J  ||           } ||          }d}|d| j        d |          dz  }|d|j        d |          z  }| j        d |         |j        d |         k    s
J |            d}|d| j         dz  }|d|j         z  }| j        |j        k    s
J |            d}|d| j         dz  }|d|j         z  }| j        |j        k    s
J |            j         r!                                rd S j"        J j#        tH          j%        |<   tM          |r|j'        nd           }tQ          ||j)                  }!                                s!|j*        |*                    j"                   |S )!Nprefixr   r  filenameline_nor   r  r   rt   ru   c           	         t                               t          j                  r-t                               t          | ||||                     d S d S rw   )bytecode_logisEnabledForloggingDEBUGr   rR   )r  r  r  r  r  s        rq   log_bytecodez6_compile.<locals>._compile_inner.<locals>.log_bytecode  s[     ((77 ""#FD(GTJJ     rp   zORIGINAL BYTECODEzRestarting analysis due to %sd   z100+ RestartAnalysis() callsz.Skipping frame %s %s                     %s %sz%No graph captured with one_graph=Truez;compiler collective wasn't run before compilation completedzMODIFIED BYTECODEc                    dd l }| j        | j        z   t          | j        |j        z            z   t          | j        |j        z            z   S )Nr   )inspectco_argcountco_kwonlyargcountr   co_flags
CO_VARARGSCO_VARKEYWORDS)r  r  s     rq   
count_argsz4_compile.<locals>._compile_inner.<locals>.count_args  sY    NNN  ()t}w'99::; t}w'==>>?rp   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 )r  r   r  r   r  r   r  r   r  r   rt   ru   r  r   rt   r   )+r'  r   r   r   	itertoolscountr   rn  attemptr2   r*   RestartAnalysisr   inforY   r'   __traceback__r   restart_reasonr   r   rB   r  r   
all_statesr  r   rZ   rk  co_varnamesco_freevarsco_cellvarsr  is_empty_graphr   cleanupsrN   instancerD   guard_fail_fnrF   check_fnguard_export_fn)r  rI  r[  r  last_attempt_start_time
start_timer  out_coder  r  r  hook_outputr  total_argcount_oldtotal_argcount_newmsgr  guarded_coderg  r  dynamo_time_before_restartr  restart_reasonss                     rq   r  z _compile.<locals>._compile_inner  s    04y{{:*	 	 	 	 	L	
 	
 	
  (( 	 	G+2N  (0yAA& 
B 
B 
B35qGG  
  ##A$4$DDGGEEE*.)++'S==!"@AAA=   		L$'    GIIEFFFtttttt %):)E)Q)QH *R)Q)Q ###L	
 	
 	
 $**,, 	' 	'D$tX..K&&"&h"""%<z%I"!!!	 	 	 	 ###'Z--'Z11T4+;<O=O<O+PTTTTV8+?@SAS@S+TVVV0001#$7%7$789 9 99 9 9 $Ct/?CCCCEx/CEEE8#7777777#Ct/?CCCCEx/CEEE8#7777777 = 	V2244 	4}(((,2O)'#(2Ed
 

 #8X->
KK$$&& 	15+@+L !!&-000s&   *A==F	BD""F	4A	FF	r   c                8    d| j          d| j         d| j         dS )N'z' (:))r   r   r   )r  s    rq   format_func_infoz"_compile.<locals>.format_func_infoD  s+    U4<UUD,<UUt?RUUUUrp   c                      sdS  d         S )Nz$Unable to find recompilation reasonsro   )recompile_reasonss   rq   format_guard_failuresz'_compile.<locals>.format_guard_failuresG  s    ( BAA(,,rp   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.z7pytorch/compiler:skip_code_recursive_on_cache_limit_hitz reachedzBtorchdynamo start compiling %s %s:%s, stack (elided %s frames):
%s    rW  dynamo_startc                    dt          t          j        fdt          j        t          j        dz                                                                            j         j	        t          j
         j                  dgz   iS )Nstackc                    | d         k    S )Nr  ro   )fconvert_frame_interns    rq   r   z,_compile.<locals>.<lambda>.<locals>.<lambda>  s    !J-3G"G rp      rW  )liner  r  )r   r  	takewhiler   from_tracebackr&   extractsummaryr   r   intern_stringr   )r  r  rX  s   rq   r   z_compile.<locals>.<lambda>  s    'GGGG"1-51t8DDDLLNN    !% 3 $$.$<T=M$N$N  rp   inductor)possibly_missed_reinplacing_opportunitiesr(   )
curr_framer  backend_compileinductor_compilecode_genc                    h | ]	}|j         
S ro   rn   r   ops     rq   	<setcomp>z_compile.<locals>.<setcomp>  s    $X$X$XR_$X$X$Xrp   c                    h | ]	}|j         
S ro   r  r  s     rq   r   z_compile.<locals>.<setcomp>  s'     ( ( ((*BO( ( (rp   r
  z: )r  r  r  r  rt   ru   )
r  r   rI  r   r[  rG   r  r  rt   r^  )r  r   rt   r   )rt   r   )Xtorch.fx.experimental.validatorr  r  r  r  r   r   r  r   r)   use_lazy_graph_moduler   r   ry   rL   r   rI   rK   r   _dynamocallback_handlerrun_start_callbacksr6   rE   r5   r   r*  r   r^   &skip_code_recursive_on_cache_limit_hitr   r<   rB   r   r   r   r   joinr&   r  formatr   r  rs  rU   resetr:  r;  r'  utilsrP   r  local_scoper  r   rS   lenr   r  count_callsgraphnodesplaceholdersrn  non_compliant_opscompliant_custom_opsrO   rv  rw  r[   run_end_callbacksr  r   rn   r  r*   get_exc_messager   rC   r@   r;   AssertionErrorr    r!   rA   r>   with_tracebackr  )<r  r   r  r  rH  rI  r  rJ  r[  rY  rh  r   r\  rg  rX  r  r  r  r  
compile_pgexceeded
limit_typer  r  chromium_event_logr  	fail_typefail_reasonfail_user_frame_filenamefail_user_frame_lineno/start_possibly_missed_reinplacing_opportunitiesr  r  	frame_keyguard_countshape_env_guard_countgraph_op_countgraph_node_countgraph_input_countentire_frame_compile_timebackend_compile_timeinductor_compile_timecode_gen_timer  r  r  metricsr  r  r  r  r  r  r  r  r  r  r  r  r  s<   ````````    ```                                 @@@@@@@@@@@@rq   rx  rx  A  s   $            ),$(F.2F/U /U /U /U /U /U /U /U /U /U /U /U /U /U /U /U /U /U /U /U /UbI I I I I I #o>>>M M M M M M M M M ^ ?>M^ 
  <	=	= b? b?z""@ @ b? b? %(EE25%%%(**'))): 	% 0Z\\ J J $&::<<< !J'' 	E 	 FU! !  8
JOO* 	7V V V V- - - - - -
 KK<
 
++  &&%%''#   < 7IB B 7 )J)@)@)@AAA 555666		QL1HGG%-1t8<<<CCEEFF	
 	
 	
4  *7AA688  """''     	
 	
 	
( Y[[
#'	%)26 04:?-:M:V;

5;77 t	?(=y%KKL>  /,.)))))))JI#&!333!&-00(+F,<,C(D(D%!'!3!3!5!5#&v|'9#:#: $'(;$<$<!,>y,I,M,M*D- -) (:)'D'H'H%t( ($ );9(E(I(I&) )% !39 = A A*d S S$X$Xv?W$X$X$X!( (.4.I( ( ($ M'0<C FF :9 #(,%!%#' $(!,0)'+$(,% $$'GG!'*2ww$"%%%-1Y[[:-E*<@9(J #F,% !)$%(&!$*D(97 G: 'w///M*<<>>>Eb? b? b? b? b? b? b? b? b? b? b? b? b? b? b?b  	< 	< 	<Q,Ia&&K auV<<<<?B?R:@ @<$&< %)",/'0-
  <  /Aww+77s1vv77  .11t<5	<<  /,.)))))))JI#&!333!&-00(+F,<,C(D(D%!'!3!3!5!5#&v|'9#:#: $'(;$<$<!,>y,I,M,M*D- -) (:)'D'H'H%t( ($ );9(E(I(I&) )% !39 = A A*d S S$X$Xv?W$X$X$X!( (.4.I( ( ($ M'0<C FF :9 #(,%!%#' $(!,0)'+$(,% $$'GG!'*2ww$"%%%-1Y[[:-E*<@9(J #F,% !)$%(&!$*D(97 G: 'w///M*<<>>>>Eb? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b? b?sj   c5Ib)U5Ib)c5
Y?CYYYIb&&b))b-	-c0b-	1cccc                  :    e Zd ZddZedd	            Z	 dddZdS )ConvertFramerH  ra   r[  rG   rt   ru   c                N    || _         t          |d          | _        || _        d S )NF)rI  )r   rS  _inner_convert_hooks)r|   rH  r[  s      rq   r}   zConvertFrame.__init__  s*    *5'2;%PPPrp   *Callable[[WrapBackendDebug], ConvertFrame]c                      fdS )Nc                .    t          | j                  S rw   )convert_framer0  rT  s    rq   r   z2ConvertFrame._clone_with_backend.<locals>.<lambda>  s    }WdkBB rp   ro   r{   s   `rq   rV  z ConvertFrame._clone_with_backend  s    BBBBBrp   r   r   r   rY  rZ  r\  r]  rX  r   OOptional[Union[GuardedCode, torch._C._dynamo.eval_frame.SkipCodeRecursiveFlag]]c                $   t           d         dxx         dz  cc<   	 |                     |||||dz             }t           d         dxx         dz  cc<   |S # t          $ r}t          |t                    r t          |t
                    }t          |t
                    rt                              t          j	                  rt          |d          rt          t          |j                            5  |j        }	d                    t!          j        |	                    }
t                              d|
d	
           d d d            n# 1 swxY w Y   t&          j        s|s t+          |dd           }|j        }t/          ||||          }|rt0                              |d	
           nt0                              |d	
           t          |t6                    r t8          j        j        j        j         cY d }~S Y d }~nd }~ww xY wd S )Nframestotalr(   rW  okrg  r  z(Graph break: skip: from user code at:
%sT)exc_infor  )!rP   r/  r  r   rA   rC   graph_break_logr  r  r  r   r   r   rg  
real_stackr  	tracebackformat_listr   r)   suppress_errorsr   r   r=   r   r  r*  r?   r   r   r  
eval_frameskip_code_recursive_flag)r|   r   rY  r[  r\  rX  r   r  	soft_fail
user_stackuser_stack_formattedr  r  	error_msgs                 rq   rz  zConvertFrame.__call__  s    	7###q(###C	L(({E;TAX )  F Xt$$$)$$$M =	L =	L =	L !9:: "1k22I ![)) o.J.J/ /  1l++ 
()E)EFF 	 	%&\
/1ww%1*==0 0, (--G0%) .   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ) )  &a):DAAO<D(D/5III 6T2222I555 !788 Lx'2KKKKKKKL L L L Ly=	L~ tsD   9A H"BH7AEHE	HE	B&H=HHN)rH  ra   r[  rG   rt   ru   )rt   r1  )r   )r   r   rY  rZ  r[  rG   r\  r]  rX  r   rt   r5  r}  ro   rp   rq   r-  r-    sq           
 C C C XC P P P P P P Prp   r-  c                "    t          | |          S )zHTry to convert a frame into an FX graph, if error leave frame unmodified)r-  )rH  r[  s     rq   r4  r4  o  s    U+++rp   r  c                `   ddl m} t          j        }dt          _        t	          | d          5 }t          j        |          }d d d            n# 1 swxY w Y   t          t          j	        |j
                                        t                                                                          |_
        	 t          |j        |j
        |j        |j        |ddd t!                      t#          dd          d d i t%          dd                     |t          _        d S # |t          _        w xY w)	Nr(   )eagerFrbr   *   i  )
rH  rI  r  rJ  r[  rh  rY  r   r\  rg  )backends.debuggingrH  r)   replay_record_enabledopenrH   loadr   r  chainr   itemsrx  r  r  r  rG   r3   r   )r  rH  original_replay_valin_filer  s        rq   replayrS  u  sY   )))))) 6#(F 	h		 / %g../ / / / / / / / / / / / / / /)/&.*>*>*@*@'))//BSBSTTUUFN;KNMO#''0A66 S))	
 	
 	
 	
" (;$$$':$::::s   AAA8AD D-c                    t           j        dk     rdS t          j        |           D ]}|j        dk    r|j        dz  c S t          d          )N)      r   RESUMEr  z$RESUME instruction not found in code)sysversion_infodisget_instructionsopnameoffsetRuntimeError)r  insts     rq   first_real_inst_idxr`    sc    
'!!q$T** $ $;("";!#### #
=
>
>>rp   c                      e Zd ZddddZdS )ConvertFrameProtocolr   rW  r   r   rY  rZ  r[  rG   r\  r]  rX  r   rt   r^  c                   d S rw   ro   )r|   r   rY  r[  r\  rX  s         rq   rz  zConvertFrameProtocol.__call__  s	     	rp   Nr|  )rl   rm   rn   rz  ro   rp   rq   rb  rb    s7         	 	 	 	 	 	 	 	rp   rb  c                      e Zd ZddZddZdS )CatchErrorsWrappercallbackrb  r[  rG   rt   ru   c                \     t          j        |          |            || _        || _        d S rw   )r   r   r   r[  )r|   rf  r[  s      rq   r}   zCatchErrorsWrapper.__init__  s/    !	!!$'''*2'


rp   r   r   rY  rZ  r\  r]  r^  c           	     L   |J t          j        |j                  }t          j        dk    r|j        t          |j                  k    }n|j        t          |j                  k    }|s4|s2t          j        s&t          d          rt          | j        dd          st                              t          j                  rt!          |j        t          |j                             |rd}n1t          j        |j                  rd}nt          d          rd}nd}t                              d	|j        j        ||j        j                   d S |j        j        d
k    r|j        j        dk    rd S t          j                    dk    rt+          j                    }|rt.          5  ddlm}  ||j        | j        j                  }	t7          | j        d          s
J d            | j                            |	j                  }
 |
||| j        |          cd d d            S # 1 swxY w Y   t.          5  t?                      5  |                     ||| j        |d          cd d d            cd d d            S # 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N)rU     F)include_infra_modesrN  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)rb  __new__ddp_optimizerr   )DDPOptimizer)bucket_bytes_capbackend_compile_fnrV  zJDDPOptimizer only supports callback fns that know how to clone themselves.r(   rW  ) r+   r   r   rX  rY  f_lastir`  r)   r)  r%   r   r   r   r  r  r  printr   r   r   _get_optimize_ddp_moder#   _get_active_ddp_modulecompile_lock"torch._dynamo.backends.distributedrm  rn  r   rV  
compile_fnr[  r$   )r|   r   rY  r\  is_skipfilehas_started_executionskip_reason
ddp_modulerm  rl  hijacked_callbacks              rq   rz  zCatchErrorsWrapper.__call__  s    &&&!'55w&&$)M4G4U4U$U!!$)M5H5V5V$V! "	 	 ~		 *eDDD	   ?ERR	 .. em%8%F%FGGG( ?"8KK &u|44 ?"0KK.5III ?"wKK">K		9L(L,	   4<#z11el6Ji6W6W4(**o==0GIIJ !  OOOOOO$0L)3)D+/+J+e% % %M #79N  d dcd d d 7KK)4  &
 -,{DJ                &  	 	133 	 	22{DJ! 3  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sI   (A3H((H,/H,:J	J(JJ	JJ		JJ JN)rf  rb  r[  rG   rt   ru   )r   r   rY  rZ  r\  r]  rt   r^  )rl   rm   rn   r}   rz  ro   rp   rq   re  re    sB           
H H H H H Hrp   re  rf  c                "    t          | |          S rw   )re  )rf  r[  s     rq   catch_errors_wrapperr}    s     h...rp   rw   )r   r   r   r   r   r   rt   r   )r   r   rt   r   )r   r   rt   r   )NF)
r  r  r  r   r   r  r  r   rt   ru   )r  r   rt   r   r{  )
rH  ra   rI  r   r  r   rJ  rK  rt   rG  )r  rc   rt   r  )NN) r  r   r   r  r  r  r  r  rH  ra   rI  r   r  r   rJ  rK  r[  rG   rY  rZ  rh  r3   r   r  r\  r  rg  r   rX  r   rt   r^  )rH  ra   r[  rG   rt   r-  )r  r   rt   ru   r  )rf  rb  r[  rG   rt   re  )
__future__r   collectionsr   r$  rZ  r   r  r  rl  r  r   r0  rX  	threadingr'  r=  typingr   pathlibr   typesr   r   r   r   r	   r
   r   r   r   r   r   r   typing_extensionsr   r   r   torch._loggingtorch._C._dynamo.guardsr   torch._dynamo.distributedr   torch._dynamo.utilsr   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.nn.parallel.distributedr#   torch.utils._python_dispatchr$   r%   torch.utils._tracebackr&   r'   r  r)   r*   r+   bytecode_analysisr,   r-   bytecode_transformationr.   r/   r0   r1   r2   rh  r3   r4   r5   r6   r@  r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   r   rD   rE   rF   r[  rG   replay_recordrH   symbolic_convertrI   rJ   rK   rL   rM   r  rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   __annotations__numpyr`   ModuleNotFoundErrorTYPE_CHECKINGbackends.registryra   repro.after_dynamorb   rc   rd   variables.builderre   	getLoggerrl   r   r:  getArtifactLoggerr  r;  RLockrt  rh   ri   rk   rs   rj  rk  r   r   r   r   #suppress_torch_distributed_warningsr  r  ru  Counterr  r  r  rG  rS  r  torch.utils.hooksr  output_graphr  r  r  rx  r-  r4  rS  r`  Protocolrb  re  r}  ro   rp   rq   <module>r     s	   " " " " " " "          



          				       



                  ? ? ? ? ? ? ? ? ? ? ? ? K K K K K K K K K K K K K K K K K K K K ' ' ' ' ' ' ! ! ! ! ! !      4 4 4 4 4 4 4 4 4 4 4 4 = = = = = = M M M M M M M M M M M M % % % % % %            ? > > > > >        Q P P P P P A A A A A A        M L L L L L L L & & & & & & & & & & G G G G G G G G                         N M M M M M M M M M                                
       * * * * * *            " ! ! ! ! !                                       ,       	BBB 
 7------444444////////666666 g!!~//*EE.228^LL y  WT]]Yt__	 	 	 	 	 	 	 	       ( giiwyy37  7 7 7 7 *++MQ    ,+8 8 8 8v 1K K K 21Kb "&	* * * * *  K     
   > > > >BA
 A
 A
 A
 A
 A
 A
 A
L 15	R R R R R $ # # # # # - - - - - - 
 *)))))) ,7;== 8 8 8 8   , "&HLN?  !N? N? N? N? N? N?bZ Z Z Z Z Z Z Zz, , , ,; ; ; ;<? ? ? ?
 
 
 
 
6? 
 
 
N N N N N N N Nb/ / / / / /s   F	 	FF