
    it)                        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 d dlZd dlZd dlmZ ddlmZ ddlmZ  ej*                  e      Z G d d	e j0                        Zd
ej4                  de
de
deee
f   fdZe G d d             Ze G d d             Z G d de      Z de
de!e!e
df   eee
f   f   dedeejD                  jF                  e$ejJ                     gef   def
dZ&y)    N)	dataclass)AnyCallableOptional)PrecompileContext   )convert_frame)Hooksc                   |    e Zd Zeej
                  dedefd              Zeej
                  dedefd              Z	y)SerializableCallablefnreturnc                      y N clsr   s     S/var/www/html/engine/venv/lib/python3.12/site-packages/torch/_dynamo/aot_compile.pyserialize_compile_artifactsz0SerializableCallable.serialize_compile_artifacts        	    datac                      y r   r   )r   r   s     r   deserialize_compile_artifactsz2SerializableCallable.deserialize_compile_artifacts   r   r   N)
__name__
__module____qualname__classmethodabcabstractmethodr   bytesr   r   r   r   r   r   r      s`    S U     3   r   r   	signatureargskwargsr   c                 ^     | j                   |i |}|j                          |j                  S r   )bindapply_defaults	arguments)r"   r#   r$   bound_argumentss       r   bind_localsr*   "   s1     %innd5f5O""$$$$r   c                       e Zd ZU ej                  ed<   ej                  ed<   ee	j                  j                  j                     ed<   eed<   eeef   ed<   eed<   eed<   ej                  ed<   eeed	f      ed
<   y)CompileArtifactsr"   bytecodeguard_managerguards_stateimport_sources
backend_idcompiled_fnoriginal_code.closureN)r   r   r   inspect	Signature__annotations__typesCodeTyper   torch_dynamoguardsGuardManagerWrapperr!   dictstrr   tupler   r   r   r   r,   r,   *   so       nnEMM00DDEEcN"O%%>>!eCHo&&r   r,   c                       e Zd ZU eed<   dededefdZddZdededefdZ	d	e
ddfd
Zedd defd       Zededd fd       Zy)AOTCompiledFunction
_artifactsr#   r$   r   c                     t        | j                  j                  g|i |}| j                  j                  J | j                  j                  j	                  |      S r   )r*   rC   r"   r.   check)selfr#   r$   f_localss       r   guard_checkzAOTCompiledFunction.guard_check;   sQ    t88J4J6J,,888,,228<<r   Nc                    | j                   j                  j                         D ci c]  \  }}|t        j                  |       }}}i || j                   j
                  | j                   j                  i}t        j                  | j                   j                  || j                   j                        | _        | j                   j                  t        j                  | j                   j                        }t         j"                  j$                  j'                  | j                   j(                  |j*                  |j,                  |      j                  | j                   _        y y c c}}w )Nr4   )shape_code_partsruntime_global_scope)rC   r0   items	importlibimport_moduler1   r2   r8   FunctionTyper-   r4   r   r.   pickleloadsr/   r:   r;   r<   CheckFunctionManagerr3   output_graphrK   )rF   aliasmodule_namer0   	f_globalsr/   s         r   __post_init__z!AOTCompiledFunction.__post_init__@   s+    '+oo&D&D&J&J&L
"{ 9**;77
 


OO&&(C(C
	 $$OO$$i9P9P
 ??((0!<<(D(DEL,1MM,@,@,U,U--))!-!>!>%.	 -V -
 m OO) 1
s    E/c                 8   | j                   j                  J  | j                  |i |s_t        | j                   j                  g|i |}t        | j                   j                  j                  |            }t        d|        | j                  |i |S )Nz#GuardManager check failed, reason: )	rC   r.   rH   r*   r"   r?   check_verboseRuntimeErrorr   )rF   r#   r$   rG   reasons        r   __call__zAOTCompiledFunction.__call__V   s    ,,888t00"4??#<#<NtNvNH66DDXNOF!DVHMNNtww'''r   pathc                     t        |d      5 }|j                  t        |       j                  |              d d d        y # 1 sw Y   y xY w)Nwb)openwritetype	serialize)rF   r^   fs      r   save_compiled_functionz*AOTCompiledFunction.save_compiled_function^   s>    $ 	0GGDJ((./	0 	0 	0s   *A  A	r   c                 T   ddl m} |j                  j                  j	                         }d |d<   |j                  |d         |d<   |d   }t        |      j                  t        |      j                  |      f|d<   |j                  |d         |d<   t        j                  |      S )Nr   SerializedCoder.   r-   r2   r3   )torch._dynamo.packageri   rC   __dict__copyfrom_code_objectrc   r   r   rQ   dumps)r   r   ri   stater2   s        r   rd   zAOTCompiledFunction.serializeb   s    8&&++-!%o*;;E*<MNjM*;;99+F 
m "0!@!@AW!Xo||E""r   r   c                     ddl m} t        j                  |      }|j	                  |d         |d<   |d   \  }} ||      |d<   |j	                  |d         |d<   t        di |} | |      S )Nr   rh   r-   r2   r3   r   )rj   ri   rQ   rR   to_code_objectr,   )r   r   ri   ro   deserializercompiled_fn_state	artifactss          r   deserializezAOTCompiledFunction.deserializeq   s~    8T"*99%
:KLj*/*>''+,=>m!/!>!>u_?U!Vo$-u-	9~r   )r   N)r   r   r   r,   r7   r   boolrH   rX   r]   r?   rf   r   r!   rd   ru   r   r   r   rB   rB   7   s      = = = =
,(c (S (S (03 04 0 #0 #U # # 
u 
)> 
 
r   rB   c                        e Zd ZdZdeddfdZdedef fdZededd fd	       Z	ed
d de
fd       Zede
defd       ZdededefdZ xZS )&BundledAOTAutogradSerializableCallableaL  
    Represents a serializable callable generated by compile_fx.
    This class wraps around the compiled function generated by AOTAutograd.

    TODO: Instead of using PrecompileContext to grab it from AOTAutograd,
    this object should be what's *returned* by aot_module_simplified.
    We'll do that refactor in a later PR.
    artifactr   Nc                 P    |j                         | _        |j                  | _        y)z
        Takes in a BundledAOTAutogradCacheArtifact, which is the serialized form
        of a compiled function generated by AOTAutograd.
        N)after_deserializationr2   contentr   )rF   ry   s     r   __init__z/BundledAOTAutogradSerializableCallable.__init__   s"     $99;$$	r   attrc                 p    t        | |      rt        t               |      S t        | j                  |      S r   )hasattrgetattrsuperr2   )rF   r~   	__class__s     r   __getattr__z2BundledAOTAutogradSerializableCallable.__getattr__   s/    457D))4++T22r   r1   c                 \    t        j                  |      }|t        d|z          | |      S )z
        Takes in a backend_id, and returns a BundledAOTAutogradSerializableCallable
        that wraps around the compiled function generated by AOTAutograd.
        z"No artifact found for backend_id: )r   serialize_artifact_by_keyr[   )r   r1   ry   s      r   from_backend_idz6BundledAOTAutogradSerializableCallable.from_backend_id   s5     %>>zJCjPQQ8}r   r   c                     |j                   S r   )r   r   s     r   r   zBBundledAOTAutogradSerializableCallable.serialize_compile_artifacts   s     wwr   r   c                 0    ddl m}  |d|      } | |      S )Nr   )BundledAOTAutogradCacheArtifact )-torch._functorch._aot_autograd.autograd_cacher   )r   r   r   ry   s       r   r   zDBundledAOTAutogradSerializableCallable.deserialize_compile_artifacts   s    	
 32t<8}r   r#   r$   c                 &     | j                   |i |S r   )r2   )rF   r#   r$   s      r   r]   z/BundledAOTAutogradSerializableCallable.__call__   s    t000r   )r   r   r   __doc__r   r}   r   r   r?   r   r!   r   r   r]   __classcell__)r   s   @r   rx   rx      s    % % %3 3 3 

	1
 
 9	 
  3  1c 1S 1S 1r   rx   modelexample_inputs.hooksbackendc                    ddl m ddlm}m} ddlm}m}m} |\  }	}
t        | d      r| j                  }| j                  f|	z   }	n&t        j                  |       r| }nt        d|        t        j                  |      }t!        |g|	i |
}|j"                  j$                  s|j&                  rt)        |j&                        t)        |j"                  j$                        k(  sJ |j+                  t-        |j"                  j$                  |j&                        D ci c]  \  }}||j.                   c}}        | |t1        j2                  i                   5   |       5   |d      5  t1        j4                  t1        j6                  |j"                  |j8                  |t:        j<                  |j&                  xs d	            }|j>                  }|j@                  s)dd
l!m"} dtF        |   dtF        tH           ffd}||_         |jK                  |j"                  |dd      }|jL                  J 	 d d d        d d d        d d d        jN                  }|jP                  |jR                  _*        jV                  jX                  }|J |jZ                  }t\        j^                  ja                   ||jb                              5  t\        jd                  jf                  ji                  dd      5   ||jR                  |jj                        }d d d        d d d        tm        |t\        jn                        rtp        js                  |jP                        }tm        tt              s:t        |d      r|jv                  }n|}t        dty        |       dd| dz         t{        ||j|                  j~                  |jL                  ||jP                  ||j"                  |j&                  	      }t        |      }|S c c}}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y    xY w# 1 sw Y   %xY w)Nr   )rS   )dynamo_timedget_metrics_context)compile_contextCompileContextTracingContext__self__zUnsupported model code type fullgraph_capturer   rJ   )GuardFilterEntryguard_entriesr   c                 x    | D cg c])  }|j                   xs |j                  j                  v  + c}S c c}w r   )	is_global
guard_type%UNSUPPORTED_SERIALIZATION_GUARD_TYPES)r   grS   s     r   new_guard_filter_fnz2aot_compile_fullgraph.<locals>.new_guard_filter_fn   sL     +	  KK Z ||3YY Z	 	 	s   .7T)r   savestrict_errorbundled_autograd_cachecompiler_fnzCompiled function type z (produced zfrom backend z*) does not implement SerializableCallable.)	r"   r-   r.   r/   r0   r1   r2   r3   r4   )rC   )Atorch._dynamo.guardsrS   torch._dynamo.utilsr   r   torch._guardsr   r   r   r   __func__r   r5   
isfunctionr[   r"   r*   __code__co_freevars__closure__lenupdatezipcell_contentsr	   get_compile_idr   	FrameInfo__globals__builtinsrk   dynamo_outputguard_filter_fntorch._dynamo.typesr   listrv   build_guardsr/   backend_inputr1   graph_module_backend_idtracer_outputrT   r0   r:   _guardstracing	fake_mode
_functorchconfigpatchr   
isinstance_TorchCompileInductorWrapperrx   r   r   r   rc   r,   r-   r.   rB   )r   r   r   r   r   r   r   r   r   r#   r$   r   r"   rG   namecellcapture_outputr   r   r   check_fnr   rT   r0   r2   r   rt   aot_compiled_fnrS   s                               @r   aot_compile_fullgraphr      s    :EMM!LD&uj!^^ 4'			E	"9%ABB!!"%I96t6v6H	{{"..2>>"c"++*A*A&BBBB #&bkk&=&=r~~"ND$ d(((	
 	}'C'CB'GHI'1'1 	()'1
 '88##!!,"
 '44$$<#$45d %8E! --KKu4d . 
 $$000O'1 '1 '1R #00M-:-E-EM* ..;;L###!00Nn]-D-DEFX%%&>EX m88-:V:VW	X X '5==><LL$$
 k#787M*!--K!K%d;&7%8Dk]*TUV
 	

 !'',,**% ++kk
I *Y?Oo'1 '1 '1 '1 '1 '1\X X X Xsg   #P
#P/+	P"4CPP"	P/+Q	 P<Q	PP""P,	'P//P9<Q	Q		Q)'r   r   rN   r5   loggingrQ   r8   dataclassesr   typingr   r   r   r:   torch.fx torch._dynamo.precompile_contextr   r   r	   r   r
   	getLoggerr   logABCr   r6   r>   r?   r*   r,   rB   rx   r@   fxGraphModuler   Tensorr   r   r   r   <module>r      sC   
       ! * *   >   g!	377 	%  %),%8;%	#s(^% 	' 	' 	' D D DN81-A 81voo%S/4S>9:o o uxx++T%,,-?@BVVW	o
 or   