
    ^jRO                        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
mZ d dlmZmZmZ d dl mZ d dlmZmZmZ d dl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 d	dlm Z m!Z! d	dl"m#Z# erd	dl$m%Z% d	dl&m'Z'm(Z(  ejR                  e*      Z+dejX                  dedede-e.ef   fdZ/e G d d             Z0 G d dejb                        Z2 G d dejf                        Z4e G d d             Z5de.de6fdZ7e G d d              Z8	 d.d!ed"e9e9ed#f   e-e.ef   f   d$e#d%e
ejt                  jv                  e<ejz                     ge!f   d&e>dz  de8fd'Z?e G d( d)             Z@e G d* d+             ZAd!ej                  j                  d,e<e@   d$e#d%e
ejt                  jv                  e<ejz                     ge!f   deAf
d-ZDy)/    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                 ^     | j                   |i |}|j                          |j                  S N)bindapply_defaults	arguments)r   r   r   bound_argumentss       d/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/aot_compile.pybind_localsr"   %   s1     %innd5f5O""$$$$    c                       e Zd ZU ej                  ed<   ed   ed<   eed<   eed<   e	ed<   e
j                  ed<   eed<   d	ed
<   eed<   eed<    ej                  ej                         Zeed<   ddZy)CompileArtifactsr   r   guard_managerguards_state
backend_idcompiled_fnoriginal_coderuntime_envr   source_infodevice_typebackend_name)default_factorysystem_infoNc                 x    t        j                         }|j                  | j                  | j                         y r   )r   currentcheck_compatibilityr0   r-   )selfcurrent_systems     r!   r3   z$CompileArtifacts.check_compatibility;   s,    #++-**4+;+;T=M=MNr#   r   N)__name__
__module____qualname__inspect	Signature__annotations__r
   bytesstrr   typesCodeTyper   dataclassesfieldr   r2   r0   r3    r#   r!   r%   r%   -   sp       122O%%>>!  /k//
@R@RSKSOr#   r%   c                       e Zd Zdeeef   dej                  ddf fdZdede	ez  dz  fdZ
ededefd	       Zed
ededej                  fd       Zededej"                  fd       Zedddej&                  fd       Zedej&                  dededeedf   dz  deej,                  df   dz  dej.                  fd       ZdedefdZ xZS )AOTCompilePicklerexternal_databufr   Nc                     t         |   |       || _        |j                         D ci c]  \  }}t	        |      | c}}| _        i | _        y c c}}w r   )super__init__rF   itemsidid_maperrors)r4   rF   rG   keyvalue	__class__s        r!   rJ   zAOTCompilePickler.__init__A   sR    *-:-@-@-B'
)sEBuIsN'
 '
s   Aobjc                     t        |      | j                  v r| j                  t        |         S t        |t        j                  j
                        r#|| j                  t        |      <   t        |      S y r   )rL   rM   
isinstancetorchnnModulerN   )r4   rR   s     r!   persistent_idzAOTCompilePickler.persistent_idI   sU    c7dkk!;;r#w''UXX__-#&DKK3 c7Nr#   valc                 h    dt         ffd}|j                  t        d      |j                  d   S )Nr   c                       S r   rC   )rY   s   r!   _z+AOTCompilePickler._unpickle_cell.<locals>._T   s    Jr#   zclosure must not be Noner   )object__closure__AssertionError)clsrY   r\   s    ` r!   _unpickle_cellz AOTCompilePickler._unpickle_cellR   s6    	6 	 ==  !;<<}}Qr#   funcbasec                 .    t        j                  ||      S r   )r?   
MethodType)r`   rb   rc   s      r!   _unpickle_bound_methodz(AOTCompilePickler._unpickle_bound_method[   s     d++r#   namec                 ,    t        j                  |      S r   )	importlibimport_module)r`   rg   s     r!   _unpickle_modulez"AOTCompilePickler._unpickle_module`   s    &&t,,r#   serialized_coder   c                 2    ddl m}  |j                  |      S )Nr   r   )torch._dynamo.packager   to_code_object)r`   rl   r   s      r!   _unpickle_codez AOTCompilePickler._unpickle_coded   s    8,~,,_==r#   codemodulequalnameargdefs.closurec                 r    t        j                  |      j                  }t        j                  |||||      S r   )ri   rj   __dict__r?   FunctionType)r`   rr   rs   rt   ru   rv   	f_globalss          r!   _unpickle_nested_functionz+AOTCompilePickler._unpickle_nested_functionj   s3     ++F3<<	!!$	8WgNNr#   c                    t        |t         d d      j                  d               r"t        |       j                  |j                  ffS t        j                  |      r.ddlm} t        |       j                   |j                  |      ffS t        j                  |      r"t        |       j                  |j                  ffS t        j                  |      rs	 |j                  }|j                   }t#        ||j                        }t        j                  |      r|j                  }||urt        |       j$                  ||ffS t2        S t        j&                  |      r\d|j(                  v rNt        |       j*                  |j,                  |j.                  |j(                  |j0                  |j                  ffS t2        S )Nc                       fdS )Nc                       S r   rC   xs   r!   <lambda>zFAOTCompilePickler.reducer_override.<locals>.<lambda>.<locals>.<lambda>x   s    1 r#   rC   r   s   `r!   r   z4AOTCompilePickler.reducer_override.<locals>.<lambda>x   s    9 r#   r   rn   z<locals>)rT   typer^   ra   cell_contentsr:   iscodero   r   rq   from_code_objectismodulerk   r7   ismethod__func____self__getattrrf   
isfunctionr9   r{   __code__r8   __defaults__NotImplemented)r4   rR   r   rb   method_self
inner_funcs         r!   reducer_overridez"AOTCompilePickler.reducer_overridew   s   c4!4a 8 D DQ GHI:,,s/@/@.BBB^^C <:,,/N~/N/Ns/S.UUUc":..??c" <<D,,K dmm<J
+'00
:%Dz884:MMM  $S---Dz;;LLNN$$$$OO>   r#   )r7   r8   r9   dictr>   r]   ioBytesIOrJ   intrX   classmethodra   r   r?   re   rf   
ModuleTyperk   r@   rq   tupleCellTypery   r{   r	   r   __classcell__rQ   s   @r!   rE   rE   @   sz   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#   rE   c                   Z     e Zd Zdeeef   dej                  def fdZdedefdZ	 xZ
S )AOTCompileUnpicklerrF   filer   c                 2    t         |   |       || _        y r   )rI   rJ   rF   )r4   rF   r   rQ   s      r!   rJ   zAOTCompileUnpickler.__init__   s    *r#   rO   c                 r    || j                   vrt        d| d| j                          | j                   |   S )Nz-Missing required external reference to data: zS. Please load AOT compiled function with `external_data=<external data dictionary>`)rF   RuntimeError)r4   rO   s     r!   persistent_loadz#AOTCompileUnpickler.persistent_load   sP    d(((?u E= %%&(  !!#&&r#   )r7   r8   r9   r   r>   r]   r   r   rJ   r   r   r   s   @r!   r   r      s=    +d3;&7 +rzz +f +'3 '6 'r#   r   c                       e Zd ZU eed<   y)AOTCompileSaveResultserialized_dataN)r7   r8   r9   r=   r<   rC   r#   r!   r   r      s    r#   r   	file_pathdatac                 p   t         j                  j                  |       xs d}t        j                  |dd      5 }|j
                  }|j                  |       |j                          t        j                  |j                                d d d        t        j                  |        y # 1 sw Y    xY w)N.Fwb)dirdeletemode)ospathdirnametempfileNamedTemporaryFilerg   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B,,B5c            
       D   e Zd ZU eed<   dZeed<   dZee	e
f   dz  ed<   de
de
dee	e
f   fd	Zdededefd
ZddZdededefdZddZ	 dde	dee	ef   dz  defdZe	 ddd dee	ef   dz  defd       Ze	 	 ddedee	e
f   dz  dee	ef   dz  dd fd       ZddZy)AOTCompiledFunction
_artifactsT_guard_check_enabledN_extra_globalsr   r   r   c                    i }| j                   j                  }|j                  r|j                  j                  r5t        |j                        t        |j                  j                        k7  rt        d      t        |j                  j                  |j                        D ci c]  \  }}||j                   }}}|j                  t        | j                   j                  g|i |       |S c c}}w )Nz,closure length must match co_freevars length)r   r+   rv   bytecodeco_freevarslenr_   zipr   updater"   r   )r4   r   r   f_localsenvrg   cells          r!   prepare_f_localsz$AOTCompiledFunction.prepare_f_locals   s    &(oo));;<<++s3;;/?3((D 0 %%STT #&cll&>&>"LD$ d(((H  	DOO$=$=OOOPs   (C6c                      | j                   |i |}| j                  j                  t        d      | j                  j                  j	                  |      S )Nguard_manager must not be None)r   r   r&   r_   check)r4   r   r   r   s       r!   guard_checkzAOTCompiledFunction.guard_check   sP    (4(($9&9??((0 !ABB,,228<<r#   c                    ddl m}m} | j                  j	                          | j                  j
                  j                  | j                  j                  | j                  j                  | j                        | _
        | j                  j                  ^ || j                  j                        } ||| j                  j                  | j                  j                        | j                  _        y y )Nr   )load_guard_managerload_guards_state)extra_globals)packager   r   r   r3   r+   forward_callabler(   r)   r   fnr&   r'   r*   __globals__)r4   r   r   r'   s       r!   __post_init__z!AOTCompiledFunction.__post_init__   s    B++-//-->>OO&&OO''-- ? 
 ??((0,T__-I-IJL,>--##-DOO) 1r#   c                 @   | j                   j                  t        d      | j                  r` | j                  |i |sN | j
                  |i |}t        | j                   j                  j                  |            }t        d|        | j                  |i |S )Nr   z#GuardManager check failed, reason: )
r   r&   r_   r   r   r   r>   check_verboser   r   )r4   r   r   r   reasons        r!   __call__zAOTCompiledFunction.__call__   s    ??((0 !ABB$$-=T-=-=t-Nv-N,t,,d=f=H66DDXNOF!DVHMNNtww'''r#   c                 .    | j                   j                  S r   )r   r,   r4   s    r!   r,   zAOTCompiledFunction.source_info   s    ***r#   r   rF   c                 h    t        |       j                  | |      }t        ||j                         |S r   )r   	serializer   r   )r4   r   rF   results       r!   save_compiled_functionz*AOTCompiledFunction.save_compiled_function   s/     d%%dM:D&"8"89r#   r   c                    ddl m} |j                  j                  j	                         }d |d<   t        j                  |d    |j                  |d   j                              |d<   |d   }t        |      j                  t        |      j                  |      f|d<    |j                  |d         |d<   t        j                         }t        |xs i |      }|j                  |       |j                   r0t#        dt%        |j                   j'                                d	      t)        |j+                         
      S )Nr   rn   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   )ro   r   r   rx   copyrA   r   r   r   r   deserialize_compile_artifactsserialize_compile_artifactsr   r   rE   dumprN   r   listvaluesr   getvalue)r`   r   rF   r   stater)   rG   picklers           r!   r   zAOTCompiledFunction.serialize   s/    	9&&++-!%o*22- 4^44U=5I5R5RS 
m M*;;99+F 
m "A!@!@AW!Xojjl#M$7R=U>>=d7>>CXCXCZ>[=\ ][ [  $CLLNCCr#   r   rz   external_closure_datac                 ,   ddl m} t        j                  |      }|j	                  d       t        |xs i |      }|j                         }|j                          t        j                  |d    |j                  |d   j                              |d<   |d   \  }}	t        j                  j                  j                  d      5   ||	      |d<   d d d         |j                  |d         |d<   t!        d
i |}
 | |
|	      S # 1 sw Y   6xY w)Nr   rn   r+   r   r)   T)enable_autograd_for_aotr*   )r   rC   )ro   r   r   r   seekr   loadcloserA   r   rp   r   rU   	_inductorconfigpatchr%   )r`   r   rz   r   r   f	unpicklerr   deserializercompiled_fn_state	artifactss              r!   deserializezAOTCompiledFunction.deserialize  s    	9JJt	q	'(=(CQG	 		*22- 2^2253G3P3PQ 
m +0*>''__##))$)G 	C#/0A#BE- 	C!>!>!>u_?U!Vo$-u-	9Y77	C 	Cs   	D

Dc                     d| _         y )NF)r   r   s    r!   disable_guard_checkz'AOTCompiledFunction.disable_guard_check6  s
    $)!r#   r6   )r   r   r   )NN)r7   r8   r9   r%   r<   r   boolr   r   r>   r]   r   r	   r   r   r   r,   r   r   r   r   r=   r   r   rC   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                 	   ddl m ddlm} ddlm}m} ddlm} ddl	m
}	 |\  }
}t               }|ddlm}  ||      } |       5   |d      5  t        j                  j                   j#                  d	
      5  |5  |5  t%        j&                  | |
|      }|j(                  }|j*                  t-        d      |j.                  s)ddlm} dt4        |   dt4        t6           ffd}||_        t%        j8                  |       \  }}|j:                  }|t-        d      |j<                  |j>                  _         tC        |j>                  jD                        }|jF                  jH                  |j*                  jH                  urt-        d       |	|jF                        }|jJ                  |_%        t        jL                  jO                  |      5  t        j                  j                   j#                  d	d	d	d	d	d      5   ||j>                  |jP                        }tS        |t        jT                        sftW        |d      rBtS        |jX                  t        jZ                  j\                  j^                  j`                        stW        |d      r|jb                  te        |      }d d d        d d d        tS        tf              s:tW        |d      r|jX                  }n|}ti        dtk        |       dd| dz         tm               }|jn                  r|jq                  |js                                |5  |ju                  |jv                  |d	d	      }d d d        jx                  t-        d       |t{                     }|j|                  D ]  }|j                  |        t        t%        j                  |      |j                  |jx                  |j<                  ||jv                  |j                         ||t        |dd      
      }t        ||j                        }d d d        d d d        d d d        d d d        d d d        S # 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   RxY w# 1 sw Y   VxY w# 1 sw Y   ZxY w# 1 sw Y   ^xY w# 1 sw Y   S xY w) Nr   )CheckFunctionManager)r   )dynamo_timedget_metrics_context)#torch_function_mode_stack_state_mgr)TracingContext)set_enable_dynamicfullgraph_captureT)strict_autograd_cachezoutput_graph must not be None)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  gr  s     r!   new_guard_filter_fnz2aot_compile_fullgraph.<locals>.new_guard_filter_fn`  sL     +	  KK Z ||3YY Z	 	 	s   .7zbackend_input must not be Nonez>fake_mode.shape_env must be the same as output_graph.shape_env)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_errorzguards_state must not be None)inlined_sourcescompiler_nameunknown)
r   r&   r'   r(   r)   r*   r+   r,   r-   r.   )r   r   )Gtorch._dynamo.guardsr  ro   r   torch._dynamo.utilsr  r  &torch._dynamo.variables.torch_functionr  torch._guardsr	  r   torch._dynamo.eval_framer
  rU   
_functorchr   r   r   r  graph_capture_outputoutput_graphr_   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   rT   _TorchCompileInductorWrapperhasattrr  _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_outputr%  r  r  r   r\   r*  r-   tracing_contextr)   r  build_guards_ctxcheck_fnr,   r>  r   aot_compiled_fnr  s                                   @r!   aot_compile_fullgraphrH  :  s    :0E -!LD&-K?(1 	{
(){
 	%%D%A{
 		{

 	,{
 '88fM-BB,,4 !@AA$$<'(89$ %8E!++E2A&44  !ABB1>1I1I"".()C)C)I)IJ##--'44>>? !P  ))@)@A,9,K,K)MM!!/2	R##))-115.28<,0	R "**M,H,HK 7E$F$FGG]3"++U]]-C-C-J-J-V-V
 K5#--9 E[Q?	R 	RB +';<w.%11%)${*;)<KH!+.XYZ  %;.44**3FFH  	+885t$ 9 H	
   ( !@AA 7/;; 	.K  -	. %#2226"00!..$//#++,<<>## /9E
	 . 
s{
 {
 {
 {
 {
z ]	R 	R 	R 	Rd	 	C{
 {
 {
 {
 {
 {
 {
 {
 {
z s   	R3+R'<R?R	ER0Q)B)Q/Q)7B	R  Q6 CR2R	:RR'
R3Q&!Q))Q3.R6R ;RRR	RRR$ R''R0	,R33R=c                   L    e Zd ZU dZee   ed<   eeef   ed<   e	e
e      ed<   y)
ModelInputa%  
    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   contextsN)r7   r8   r9   __doc__r   r	   r<   r   r>   r   r   rC   r#   r!   rJ  rJ    s2     *cN)#.//r#   rJ  c                       e Zd ZU ej                  j
                  ed<   ee   ed<   de	de	de	fdZ
defdZedej                  j
                  dedd fd	       Zy
)AOTCompiledModelr   compiled_resultsr   r   r   c                     | j                   D ]:  } |j                  | j                  g|i |s$ || j                  g|i |c S   | j                   d   | j                  g|i |S )Nr   )rO  r   r   )r4   r   r   r   s       r!   r   zAOTCompiledModel.__call__  sv    ++ 	;F!v!!$**>t>v>djj:4:6::	; (t$$Q'

DTDVDDr#   c                     g }| j                   D ]0  }|j                  t        j                  |      j                         2 t        j                  |      S r   )rO  appendr   r   r   pickledumps)r4   r   r   s      r!   r   zAOTCompiledModel.serialize  sK    ++ 	OFKK+55f=MMN	O||D!!r#   r   c                 X   ddl m} ddlm}m} t        j                  |      }g }|D ]`  } | |t        j                  i                   5   |       5  |j                  t        j                  |             d d d        d d d        b  | ||      S # 1 sw Y   xY w# 1 sw Y   xY w)Nr   )r  )compile_contextCompileContext)r   r  r"  rV  rW  rS  loadsr   get_compile_idrR  r   r   )	r`   r   r   r  rV  rW  resultsrO  r   s	            r!   r   zAOTCompiledModel.deserialize  s    ;A%||D1 	QF}/K/KB/O PQQ#%Q !''(;(G(G(OP	Q Q Q	Q 5*++Q Q Q Qs$   B %B9B BB  B)	N)r7   r8   r9   rU   rV   rW   r<   r   r   r	   r   r=   r   r   r   rC   r#   r!   rN  rN    sz     88??.//Ec ES ES E"5 " , ,u ,AS , ,r#   rN  inputsc                      dt         dt        f fd}g }|D ]/  }t        j                  d|       |j	                   ||             1 t        |      dk(  rt        d      t         |      S )zi
    Compiles a single nn.Module with any number of inputs, and returns a compiled forward function.
    model_inputr   c                     | j                   | j                  f}j                  }t               5 }| j                  D ]  }|j                  |        t        ||      cd d d        S # 1 sw Y   y xY w)N)r  r  )r   r   forwardr   rK  r:  rH  )r]  r   orig_forwardr9  ctxr  r  r   s        r!   compile_single_graphz0aot_compile_module.<locals>.compile_single_graph  su    %**K,>,>?}}[ 	E"++ )##C()(		 	 	s   1A++A4zCompiling input %s..r   z%Expected at least one compiled result)rJ  r   loginforR  r   r_   rN  )r   r[  r  r  rb  rO  r]  s   ` ``   r!   aot_compile_modulere    s}    * 9L   C'5 4[ ABC !DEEE#344r#   r   )ErA   ri   r:   r   loggingr   rS  r   r?   collections.abcr   r   
contextlibr   r   r   r   typingr	   r
   r   rU   torch.fxtorch._dynamo.convert_framer   torch._dynamo.graph_utilsr   ro   r    r   aot_compile_typesr   r   r  r   guardsr   r   r   r   	getLoggerr7   rc  r;   r   r>   r"   r%   PicklerrE   	Unpicklerr   r   r=   r   r   r   fxGraphModuler   Tensorr   rH  rJ  rN  rV   rW   re  rC   r#   r!   <module>rv     sK      	  	    . E E ! / /   7 8 ,   +3 g!%  %),%8;%	#s(^% O O O$Y Yx'&** '    %3 %e % w* w* w*~  TT%S/4S>9:T T uxx++T%,,-?@BVVW	T
 D[T Tn 0 0 0   ,  ,  ,F 588?? 5 5  5 uxx++T%,,-?@BVVW	 5
  5r#   