
    3jL                        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
Jr  S SKJrJrJr  S SK Jr  S SKJrJr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 J!r!  S	SK"J#r#  \(       a  S	SK$J%r%  S	SK&J'r'J(r(  \RR                  " \*5      r+S\RX                  S\S\S\-\.\4   4S jr/\ " S S5      5       r0 " S S\Rb                  5      r2 " S S\Rf                  5      r4\ " S S5      5       r5S\.S\64S jr7\ " S S 5      5       r8 S.S!\S"\9\9\S#4   \-\.\4   4   S$\#S%\
\Rt                  Rv                  \<\Rz                     /\!4   S&\>S-  S\84S' jjr?\ " S( S)5      5       r@\ " S* S+5      5       rAS!\R                  R                  S,\<\@   S$\#S%\
\Rt                  Rv                  \<\Rz                     /\!4   S\A4
S- jrDg)/    N)CallableSequence)AbstractContextManager	ExitStacknullcontext)	dataclass)AnyOptionalTYPE_CHECKING)GraphRuntimeEnv)_graph_device_type)
SystemInfo   )convert_frame)&BundledAOTAutogradSerializableCallableSerializableCallable)Hooks)GuardManagerWrapper)SerializedCode
SourceInfo	signatureargskwargsreturnc                 ^    U R                   " U0 UD6nUR                  5         UR                  $ N)bindapply_defaults	arguments)r   r   r   bound_argumentss       S/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_dynamo/aot_compile.pybind_localsr"   %   s/      nnd5f5O""$$$$    c                       \ rS rSr% \R
                  \S'   \S   \S'   \\S'   \	\S'   \
\S'   \R                  \S'   \\S	'   S
\S'   \	\S'   \	\S'   \R                  " \R"                  S9r\\S'   SS jrSrg)CompileArtifacts-   r   r   guard_managerguards_state
backend_idcompiled_fnoriginal_coderuntime_envr   source_infodevice_typebackend_name)default_factorysystem_infoNc                 z    [         R                  " 5       nUR                  U R                  U R                  5        g r   )r   currentcheck_compatibilityr1   r.   )selfcurrent_systems     r!   r4   $CompileArtifacts.check_compatibility;   s,    #++-**4+;+;T=M=MNr#    r   N)__name__
__module____qualname____firstlineno__inspect	Signature__annotations__r
   bytesstrr   typesCodeTyper   dataclassesfieldr   r3   r1   r4   __static_attributes__r8   r#   r!   r%   r%   -   sn       122O%%>>!  )//
@R@RSKSOr#   r%   c                     ^  \ rS rSrS\\\4   S\R                  SS4U 4S jjr	S\S\
\-  S-  4S jr\S	\S\4S
 j5       r\S\S\S\R                   4S j5       r\S\S\R$                  4S j5       r\SSS\R(                  4S j5       r\S\R(                  S\S\S\\S4   S-  S\\R.                  S4   S-  S\R0                  4S j5       rS\S\4S jrSrU =r$ )AOTCompilePickler@   external_databufr   Nc                    > [         TU ]  U5        Xl        UR                  5        VVs0 s H  u  p4[	        U5      U_M     snnU l        0 U l        g s  snnf r   )super__init__rK   itemsidid_maperrors)r5   rK   rL   keyvalue	__class__s        r!   rO   AOTCompilePickler.__init__A   sS    *-:-@-@-B'
-BzsBuIsN-B'
 '
s   Aobjc                     [        U5      U R                  ;   a  U R                  [        U5         $ [        U[        R                  R
                  5      (       a"  XR                  [        U5      '   [        U5      $ g r   )rQ   rR   
isinstancetorchnnModulerS   )r5   rX   s     r!   persistent_idAOTCompilePickler.persistent_idI   sV    c7dkk!;;r#w''UXX__--#&KK3 c7Nr#   valc                 \   ^ S[         4U4S jjnUR                  c   eUR                  S   $ )Nr   c                     > T $ r   r8   )r`   s   r!   _+AOTCompilePickler._unpickle_cell.<locals>._T   s    Jr#   r   )object__closure__)clsr`   rc   s    ` r!   _unpickle_cell AOTCompilePickler._unpickle_cellR   s0    	6 	 }}(((}}Qr#   funcbasec                 .    [         R                  " X5      $ r   )rC   
MethodType)rg   rj   rk   s      r!   _unpickle_bound_method(AOTCompilePickler._unpickle_bound_methodZ   s     ++r#   namec                 .    [         R                  " U5      $ r   )	importlibimport_module)rg   rp   s     r!   _unpickle_module"AOTCompilePickler._unpickle_module_   s    &&t,,r#   serialized_coder   c                 2    SSK Jn  UR                  " U5      $ )Nr   r   )torch._dynamo.packager   to_code_object)rg   rv   r   s      r!   _unpickle_code AOTCompilePickler._unpickle_codec   s    8,,_==r#   codemodulequalnameargdefs.closurec                 r    [         R                  " U5      R                  n[        R                  " XX4U5      $ r   )rr   rs   __dict__rC   FunctionType)rg   r}   r~   r   r   r   	f_globalss          r!   _unpickle_nested_function+AOTCompilePickler._unpickle_nested_functioni   s/     ++F3<<	!!$8gNNr#   c                    [        U[        S " S5      R                  S   5      5      (       a"  [        U 5      R                  UR                  44$ [
        R                  " U5      (       a.  SSKJn  [        U 5      R                  UR                  " U5      44$ [
        R                  " U5      (       a"  [        U 5      R                  UR                  44$ [
        R                  " U5      (       ax   UR                  nUR                   n[#        XCR                  5      n[
        R                  " U5      (       a  UR                  nX5La  [        U 5      R$                  X444$  [2        $ [
        R&                  " U5      (       a^  SUR(                  ;   aN  [        U 5      R*                  UR,                  UR.                  UR(                  UR0                  UR                  44$ [2        $ )Nc                    ^  U 4S j$ )Nc                     > T $ r   r8   xs   r!   <lambda>FAOTCompilePickler.reducer_override.<locals>.<lambda>.<locals>.<lambda>w   s    1r#   r8   r   s   `r!   r   4AOTCompilePickler.reducer_override.<locals>.<lambda>w   s    9r#   r   rx   z<locals>)rZ   typerf   rh   cell_contentsr>   iscodery   r   r{   from_code_objectismodulert   r:   ismethod__func____self__getattrrn   
isfunctionr<   r   __code__r;   __defaults__NotImplemented)r5   rX   r   rj   method_self
inner_funcs         r!   reducer_override"AOTCompilePickler.reducer_overridev   s   c4!4a 8 D DQ GHII:,,s/@/@.BBB^^C  <:,,~/N/Ns/S.UUUc"":..??c"" <<D,,K mm<J
++'00
%Dz884:MMM &  $$S---Dz;;LLNN$$$$OO>   r#   )rS   rK   rR   )r:   r;   r<   r=   dictrB   re   ioBytesIOrO   intr^   classmethodrh   r   rC   rm   rn   
ModuleTypert   rD   r{   tupleCellTyper   r   r	   r   rG   __classcell__rV   s   @r!   rI   rI   @   s   d3;&7 bjj T  C#I,<     F     ,( ,& ,UEUEU , , -C -E,<,< - - >-= >%.. > >
 	Onn	O 	O 		O
 vs{#d*	O u~~s*+d2	O 
			O 	O"C "C " "r#   rI   c                   h   ^  \ rS rSrS\\\4   S\R                  S\4U 4S jjr	S\S\4S jr
SrU =r$ )	AOTCompileUnpickler   rK   filer   c                 0   > [         TU ]  U5        Xl        g r   )rN   rO   rK   )r5   rK   r   rV   s      r!   rO   AOTCompileUnpickler.__init__   s    *r#   rT   c                 t    XR                   ;  a  [        SU SU R                    35      eU R                   U   $ )Nz-Missing required external reference to data: zS. Please load AOT compiled function with `external_data=<external data dictionary>`)rK   RuntimeError)r5   rT   s     r!   persistent_load#AOTCompileUnpickler.persistent_load   sN    (((?u E= %%&(  !!#&&r#   )rK   )r:   r;   r<   r=   r   rB   re   r   r   rO   r   rG   r   r   s   @r!   r   r      sB    +d3;&7 +rzz +f +'3 '6 ' 'r#   r   c                        \ rS rSr% \\S'   Srg)AOTCompileSaveResult   serialized_datar8   N)r:   r;   r<   r=   rA   r@   rG   r8   r#   r!   r   r      s    r#   r   	file_pathdatac                    [         R                  R                  U 5      =(       d    Sn[        R                  " USSS9 nUR
                  nUR                  U5        UR                  5         [         R                  " UR                  5       5        S S S 5        [         R                  " WU 5        g ! , (       d  f       N&= f)N.Fwb)dirdeletemode)ospathdirnametempfileNamedTemporaryFilerp   writeflushfsyncfilenoreplace)r   r   dir_name	temp_file	temp_paths        r!   atomic_write_binaryr      s    wwy)0SH		$	$U
	NN	
!!#$
 JJy)$
 
s   AB11
B?c            
       d   \ rS rSr% \\S'   Sr\\S'   Sr\	\
\4   S-  \S'   S\S\S	\	\
\4   4S
 jrS\S\S	\4S jrSS jrS\S\S	\4S jrSS jr SS\
S\	\
\4   S-  S	\4S jjr\ SSS S\	\
\4   S-  S	\4S jj5       r\  SS\S\	\
\4   S-  S\	\
\4   S-  S	S 4S jj5       rSS jrSrg)AOTCompiledFunction   
_artifactsT_guard_check_enabledN_extra_globalsr   r   r   c                    0 nU R                   R                  nUR                  (       a  UR                  R                  (       a6  [        UR                  5      [        UR                  R                  5      :X  d   e[        UR                  R                  UR                  5       VVs0 s H  u  pVXVR                  _M     nnnUR                  [        U R                   R                  /UQ70 UD65        U$ s  snnf r   )r   r,   r   bytecodeco_freevarslenzipr   updater"   r   )r5   r   r   f_localsenvrp   cells          r!   prepare_f_locals$AOTCompiledFunction.prepare_f_locals   s    &(oo));;<<++CKK0@C((E 1  
 #&cll&>&>"L"LJD ((("L   	DOO$=$=OOOPs   *C9c                     U R                   " U0 UD6nU R                  R                  c   eU R                  R                  R                  U5      $ r   )r   r   r'   check)r5   r   r   r   s       r!   guard_checkAOTCompiledFunction.guard_check   sH    (($9&9,,888,,228<<r#   c                    SSK JnJn  U R                  R	                  5         U R                  R
                  R                  U R                  R                  U R                  R                  U R                  S9U l
        U R                  R                  c^  U" U R                  R                  5      nU" UU R                  R                  U R                  R                  5      U R                  l        g g )Nr   )load_guard_managerload_guards_state)extra_globals)packager   r   r   r4   r,   forward_callabler)   r*   r   fnr'   r(   r+   __globals__)r5   r   r   r(   s       r!   __post_init__!AOTCompiledFunction.__post_init__   s    B++-//-->>OO&&OO''-- ? 
 ??((0,T__-I-IJL,>--##-DOO) 1r#   c                 D   U R                   R                  c   eU R                  (       ae  U R                  " U0 UD6(       dN  U R                  " U0 UD6n[        U R                   R                  R                  U5      5      n[        SU 35      eU R                  " U0 UD6$ )Nz#GuardManager check failed, reason: )	r   r'   r   r   r   rB   check_verboser   r   )r5   r   r   r   reasons        r!   __call__AOTCompiledFunction.__call__   s    ,,888$$T-=-=t-Nv-N,,d=f=H66DDXNOF!DVHMNNww'''r#   c                 .    U R                   R                  $ r   )r   r-   r5   s    r!   r-   AOTCompiledFunction.source_info   s    ***r#   r   rK   c                 d    [        U 5      R                  X5      n[        XR                  5        U$ r   )r   	serializer   r   )r5   r   rK   results       r!   save_compiled_function*AOTCompiledFunction.save_compiled_function   s+     d%%d:D"8"89r#   r   c                    SSK Jn  UR                  R                  R	                  5       nS US'   [
        R                  " US   UR                  " US   R                  5      S9US'   US   n[        U5      R                  [        U5      R                  U5      4US'   UR                  " US   5      US'   [        R                  " 5       n[        U=(       d    0 U5      nUR                  U5        UR                   (       a0  [#        S[%        UR                   R'                  5       5       S	35      e[)        UR+                  5       S
9$ )Nr   rx   r'   r,   r   r*   r+   z+Failed to serialize the following objects: zI
Please mark these as external data by using `external_data={'key': ...}`)r   )ry   r   r   r   copyrE   r   r   r   r   deserialize_compile_artifactsserialize_compile_artifactsr   r   rI   dumprS   r   listvaluesr   getvalue)rg   r   rK   r   stater*   rL   picklers           r!   r   AOTCompiledFunction.serialize   s*    	9&&++-!%o*22- #44U=5I5R5RS 
m M*;;99+F 
m "0!@!@AW!Xojjl#M$7R=U>>=d7>>CXCXCZ>[=\ ][ [  $CLLNCCr#   r   r   external_closure_datac                 .   SSK Jn  [        R                  " U5      nUR	                  S5        [        U=(       d    0 U5      nUR                  5       nUR                  5         [        R                  " US   UR                  " US   R                  5      S9US'   US   u  p[        R                  R                  R                  SS9   U" U	5      US'   S S S 5        UR                  " US   5      US'   [!        S
0 UD6n
U " XS	9$ ! , (       d  f       N7= f)Nr   rx   r,   r   r*   T)enable_autograd_for_aotr+   )r   r8   )ry   r   r   r   seekr   loadcloserE   r   rz   r   r[   	_inductorconfigpatchr%   )rg   r   r   r  r   f	unpicklerr  deserializercompiled_fn_state	artifactss              r!   deserializeAOTCompiledFunction.deserialize  s     	9JJt	q	'(=(CQG	 		*22- #2253G3P3PQ 
m +0*>'__##))$)G#/0A#BE-  H!/!>!>u_?U!Vo$-u-	977 HGs   	D
Dc                     SU l         g )NF)r   r   s    r!   disable_guard_check'AOTCompiledFunction.disable_guard_check2  s
    $)!r#   )r   r   r9   )r   r   r   )NN)r:   r;   r<   r=   r%   r@   r   boolr   r   rB   re   r   r	   r   r   r   r-   r   r   r   r   rA   r  r  rG   r8   r#   r!   r   r      s`     !%$%/3NDf%,3f  4VCT = = = =
&(c (S (S (+ AE(,S#X(=	 OSD&D7;CH~7LD	D D6  /37;	88 V$t+8  $CH~4	8
 
8 82*r#   r   modelexample_inputs.hooksbackenddynamicc                 	  ^ SSK Jm  SSKJn  SSKJnJn  SSKJn  SSK	J
n	  Uu  p[        5       nUb  SSKJn  U" U5      nU" 5          U" S5         [        R                  R                   R#                  S	S
9   U   U   [$        R&                  " X
U5      nUR(                  nUR*                  c   eUR,                  (       d+  SSKJn  S[2        U   S[2        [4           4U4S jjnUUl        [$        R6                  " U 5      u  nnUR8                  nUc   eUR:                  UR<                  l        [A        UR<                  RB                  5      nURD                  RF                  UR*                  RF                  L d   eU	" URD                  5      nURH                  Ul$        [        RJ                  RM                  U5         [        R                  R                   R#                  S	S	S	S	S	S.5         U" UR<                  URN                  5      n[Q        U[        RR                  5      (       dv  [U        US5      (       aG  [Q        URV                  [        RX                  RZ                  R\                  R^                  5      (       d  [U        US5      (       a  UR`                  b  [c        U5      nS S S 5        S S S 5        [Q        W[d        5      (       d?  [U        US5      (       a  URV                  nOUn[g        S[i        U5       S3SU S3-   5      e[k        5       nURl                  (       a  URo                  URq                  5       5        U   URs                  URt                  US	S	S9nS S S 5        WRv                  c   eU" [y        5       S9nURz                   H  nUR}                  U5        M     [        [$        R                  " U5      UR                  URv                  UR:                  UURt                  UR                  5       UU[        USS5      S9
n[        UUR                  S9nS S S 5        S S S 5        S S S 5        S S S 5        S S S 5        W$ ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       Nf= f! , (       d  f       No= f! , (       d  f       Nx= f! , (       d  f       N= f! , (       d  f       W$ = f)Nr   )CheckFunctionManager)r   )dynamo_timedget_metrics_context)#torch_function_mode_stack_state_mgr)TracingContext)set_enable_dynamicfullgraph_captureT)strict_autograd_cache)GuardFilterEntryguard_entriesr   c                    > U  Vs/ s H4  nUR                   =(       d    UR                  TR                  ;   (       + PM6     sn$ s  snf r   )	is_global
guard_type%UNSUPPORTED_SERIALIZATION_GUARD_TYPES)r*  gr!  s     r!   new_guard_filter_fn2aot_compile_fullgraph.<locals>.new_guard_filter_fn[  sS     +	 + KK Z ||3YY Z +	 	 	s   ;A)r(  bypass_autograd_cache_keybundled_autograd_cache force_non_lazy_backward_loweringforce_autograd_cachecompiler_fnr   zCompiled function type z (produced zfrom backend z*) does not implement SerializableCallable.)r  savestrict_error)inlined_sourcescompiler_nameunknown)
r   r'   r(   r)   r*   r+   r,   r-   r.   r/   )r   r   )Ftorch._dynamo.guardsr!  ry   r   torch._dynamo.utilsr"  r#  &torch._dynamo.variables.torch_functionr$  torch._guardsr%  r   torch._dynamo.eval_framer&  r[   
_functorchr  r  r   r'  graph_capture_outputoutput_graphguard_filter_fntorch._dynamo.typesr)  r   r  get_traced_fnbackend_inputr)   graph_module_backend_idr   graph	fake_mode	shape_envtensor_to_context_guardstracingr  rZ   _TorchCompileInductorWrapperhasattrr6  _dynamobackendscommonAotAutogradr   r   r   r   r   r   stackenter_contexttemp_restore_stackbuild_guardsr   r(   settraced_codeadd_coder%   _get_signaturer'   get_runtime_envr   r   r   ) r  r  r  r  r  r   r"  r#  r$  r%  r   r   dynamic_ctxr&  capture_outputrB  r)  r0  r   rc   rG  r.   tracing_contextr*   r6  build_guards_ctxcheck_fnr-   r[  r  aot_compiled_fnr!  s                                   @r!   aot_compile_fullgraphre  6  s6    :0E -!LD-K?(1 	()%%D%A+&88fM-BB#00<<<$$<'(89$ %8E!++E2A&44(((1>1I1I"".()C)C)I)IJ##--#00::;	
; ))@)@A,9,K,K)MM!!/2##))-115.28<,0 "**M,H,HK 7E$F$FGGG]33"++U]]-C-C-J-J-V-V 
 K55#--9 E[Q; 3@ +';<<w..%11%)${*;)<KH!+.XYZ  %;.44**3FFH +885t$ 9 H 
 $$000 7/;;K  - < %#2226"00!..$//#++,<<>## /9E
	 . 
] 	, 	 	B 	* 	l W  32b o 	,+ 	 	BA 	*) 	l s   	S(S9R4<R#	?ER0Q.3B>Q1Q.9BRR .CR2R#	:R4S
S
Q+&Q..
Q=8R 
R
R
R R#	#
R1-R44
S>S
S	S
S%c                   T    \ rS rSr% Sr\\   \S'   \\	\4   \S'   \
\\      \S'   Srg)
ModelInputi  a  
WIP type: represents a single model input
Which consists of a tuple of arguments and a set of contexts in which to run the model.

For each ModelInput, we'll compile one full graph of the model, and then use the guards generated
to dispatch between the compiled graphs.


r   r   contextsr8   N)r:   r;   r<   r=   __doc__r   r	   r@   r   rB   r  r   rG   r8   r#   r!   rg  rg    s2     *cN)#.//r#   rg  c                       \ rS rSr% \R
                  R                  \S'   \\	   \S'   S\
S\
S\
4S jrS\4S jr\S\R
                  R                  S	\SS 4S
 j5       rSrg)AOTCompiledModeli  r  compiled_resultsr   r   r   c                     U R                    H@  nUR                  " U R                  /UQ70 UD6(       d  M*  U" U R                  /UQ70 UD6s  $    U R                   S   " U R                  /UQ70 UD6$ )Nr   )rl  r   r  )r5   r   r   r   s       r!   r   AOTCompiledModel.__call__  sp    ++F!!$**>t>v>>djj:4:6:: , $$Q'

DTDVDDr#   c                     / nU R                    H1  nUR                  [        R                  U5      R                  5        M3     [
        R                  " U5      $ r   )rl  appendr   r   r   pickledumps)r5   r   r   s      r!   r   AOTCompiledModel.serialize  sD    ++FKK+55f=MMN ,||D!!r#   r   c                 t   SSK Jn  SSKJnJn  [
        R                  " U5      n/ nU Hb  nU" U" [        R                  " 0 5      5      5         U" 5          UR                  [        R                  U5      5        S S S 5        S S S 5        Md     U " X5      $ ! , (       d  f       N"= f! , (       d  f       M  = f)Nr   )r#  )compile_contextCompileContext)r=  r#  r?  ru  rv  rq  loadsr   get_compile_idrp  r   r  )	rg   r  r   r#  ru  rv  resultsrl  r   s	            r!   r  AOTCompiledModel.deserialize  s    ;A%||D1F}/K/KB/O PQ#% ''(;(G(G(OP & RQ  5++ &% RQs$   B(%B;B(
B%!B((
B7	r8   N)r:   r;   r<   r=   r[   r\   r]   r@   r  r   r	   r   rA   r   r   r  rG   r8   r#   r!   rk  rk    sz     88??.//Ec ES ES E"5 " , ,u ,AS , ,r#   rk  inputsc                    ^ ^^ S[         S[        4UUU 4S jjn/ nU H0  n[        R                  SU5        UR	                  U" U5      5        M2     [        U5      S:  d   e[        T U5      $ )za
Compiles a single nn.Module with any number of inputs, and returns a compiled forward function.
model_inputr   c                    > U R                   U R                  4nTR                  n[        5        nU R                   H  nUR                  U5        M     [        UUTTS9sS S S 5        $ ! , (       d  f       g = f)N)r  r  )r   r   forwardr   rh  rW  re  )r}  r  orig_forwardrV  ctxr  r  r  s        r!   compile_single_graph0aot_compile_module.<locals>.compile_single_graph  se    %**K,>,>?}}[E"++##C( ,(	 [[s   0A**
A8zCompiling input %s..r   )rg  r   loginforp  r   rk  )r  r{  r  r  r  rl  r}  s   ` ``   r!   aot_compile_moduler    su    * 9L   '5 4[ AB   1$$$E#344r#   r   )ErE   rr   r>   r   loggingr   rq  r   rC   collections.abcr   r   
contextlibr   r   r   r   typingr	   r
   r   r[   torch.fxtorch._dynamo.convert_framer   torch._dynamo.graph_utilsr   ry   r    r   aot_compile_typesr   r   r  r   guardsr   r   r   r   	getLoggerr:   r  r?   r   rB   r"   r%   PicklerrI   	Unpicklerr   r   rA   r   r   r   fxGraphModuler  Tensorr  re  rg  rk  r\   r]   r  r8   r#   r!   <module>r     sI      	  	    . E E ! / /   7 8 ,   +3 !%  %),%8;%	#s(^% O O O$X Xv'&** '    %3 %e % t* t* t*x  NN%S/4S>9:N N uxx++T%,,-?@BVVW	N
 D[N Nb 0 0 0   ,  ,  ,F588??55 5 uxx++T%,,-?@BVVW	5
 5r#   