
    i-H                     r   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jN                  e(      Z)dejT                  dedede+e,ef   fdZ-e G d d             Z. G d dej^                        Z0 G d dejb                        Z2e G d d             Z3e G d d             Z4	 d+dede5e5ed f   e+e,ef   f   d!e!d"eejl                  jn                  e8ejr                     gef   d#e:dz  de4fd$Z;e G d% d&             Z<e G d' d(             Z=dej|                  j~                  d)e8e<   d!e!d"eejl                  jn                  e8ejr                     gef   de=f
d*Z@y),    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       j/var/www/vps2.regionflexible.com/Desarrollo/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_compatibility9   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__?   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_idG   sU    c7dkk!;;r#w''UXX__-#&DKK3 c7Nr#   valc                 V    dt         ffd}|j                  J |j                  d   S )Nr   c                       S r   rC   )rY   s   r!   _z+AOTCompilePickler._unpickle_cell.<locals>._R   s    Jr#   r   )object__closure__)clsrY   r\   s    ` r!   _unpickle_cellz AOTCompilePickler._unpickle_cellP   s0    	6 	 }}(((}}Qr#   funcbasec                 .    t        j                  ||      S r   )r?   
MethodType)r_   ra   rb   s      r!   _unpickle_bound_methodz(AOTCompilePickler._unpickle_bound_methodX   s     d++r#   namec                 ,    t        j                  |      S r   )	importlibimport_module)r_   rf   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_   rk   r   s      r!   _unpickle_codez AOTCompilePickler._unpickle_codea   s    8,~,,_==r#   codemodulequalnameargdefs.closurec                 r    t        j                  |      j                  }t        j                  |||||      S r   )rh   ri   __dict__r?   FunctionType)r_   rq   rr   rs   rt   ru   	f_globalss          r!   _unpickle_nested_functionz+AOTCompilePickler._unpickle_nested_functiong   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>u   s    1 r#   rC   r~   s   `r!   r   z4AOTCompilePickler.reducer_override.<locals>.<lambda>u   s    9 r#   r   rm   z<locals>)rT   typer^   r`   cell_contentsr:   iscodern   r   rp   from_code_objectismodulerj   r7   ismethod__func____self__getattrre   
isfunctionr9   rz   __code__r8   __defaults__NotImplemented)r4   rR   r   ra   method_self
inner_funcs         r!   reducer_overridez"AOTCompilePickler.reducer_overridet   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   classmethodr`   r   r?   rd   re   
ModuleTyperj   r@   rp   tupleCellTyperx   rz   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   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                        k(  sJ t        |j                  j                  |j                        D ci c]  \  }}||j                   }}}|j                  t        | j                   j                  g|i |       |S c c}}w r   )r   r+   ru   bytecodeco_freevarslenzipr   updater"   r   )r4   r   r   f_localsenvrf   cells          r!   prepare_f_localsz$AOTCompiledFunction.prepare_f_locals   s    &(oo));;<<++CKK0@C((E 1  
 #&cll&>&>"LD$ d(((H  	DOO$=$=OOOPs   C-c                      | j                   |i |}| j                  j                  J | j                  j                  j                  |      S r   )r   r   r&   check)r4   r   r   r   s       r!   guard_checkzAOTCompiledFunction.guard_check   sJ    (4(($9&9,,888,,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                  J | j                  r` | j                  |i |sN | j                  |i |}t        | j                   j                  j                  |            }t        d|        | j                  |i |S )Nz#GuardManager check failed, reason: )	r   r&   r   r   r   r>   check_verboser   r   )r4   r   r   r   reasons        r!   __call__zAOTCompiledFunction.__call__   s    ,,888$$-=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#   pathrF   c                     t        |d      5 }t        |       j                  | |      }|j                  |j                         |cd d d        S # 1 sw Y   y xY w)Nwb)openr   	serializewriter   )r4   r   rF   fresults        r!   save_compiled_functionz*AOTCompiledFunction.save_compiled_function   sP     $ 	$Z))$>FGGF**+	 	 	s   8AA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   rm   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   )rn   r   r   rw   copyrA   replacer   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#   datary   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   rm   r+   r   r)   T)enable_autograd_for_aotr*   )r   rC   )rn   r   r   r   seekr   loadcloserA   r   ro   r   rU   	_inductorconfigpatchr%   )r_   r   ry   r   r   r   	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_check#  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                 4   ddl m ddlm} ddlm}m} ddlm} |\  }	}
t               }|ddl
m}  ||      } |       5   |d      5  t        j                  j                  j                  d	      5  |5  t!        j"                  | |	|
      }|j$                  }|j&                  J |j(                  s)dd
lm} dt.        |   dt.        t0           ffd}||_        t!        j2                  |       \  }}|j4                  }|J |j6                  |j8                  _        t=        |j8                  j>                        }|j@                  jB                  |j&                  jB                  u sJ  ||j@                        }|jD                  |_"        t        jF                  jI                  |      5  t        j                  j                  j                  dddddd      5   ||j8                  |jJ                        }tM        |t        jN                        sNtQ        |d      rMtM        |jR                  t        jT                  jV                  jX                  jZ                        rt]        |      }d d d        d d d        tM        t^              s:tQ        |d      r|jR                  }n|}ta        dtc        |       dd| dz         |je                  |jf                  |dd      }|jh                  J  |tk                     }|jl                  D ]  }|jo                  |        tq        t!        jr                  |      |jt                  |jh                  |j6                  ||jf                  |jw                         ||ty        |dd      
      }t{        ||j|                        }d d d        d d d        d d d        d d d        S # 1 sw Y   ^xY w# 1 sw Y   cxY w# 1 sw Y   =xY w# 1 sw Y   AxY w# 1 sw Y   ExY w# 1 sw Y   S xY w)Nr   )CheckFunctionManager)r   )dynamo_timedget_metrics_context)TracingContext)set_enable_dynamicfullgraph_captureT)strict_autograd_cache)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_fnH  sL     +	  KK Z ||3YY Z	 	 	s   .7)r   bypass_autograd_cache_keybundled_autograd_cache force_non_lazy_backward_loweringforce_autograd_cachecompiler_fnz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   )?torch._dynamo.guardsr   rn   r   torch._dynamo.utilsr   r   torch._guardsr   r   torch._dynamo.eval_framer   rU   
_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   rT   _TorchCompileInductorWrapperhasattrr  _dynamobackendscommonAotAutogradr   r   r   r   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   dynamic_ctxr   capture_outputr  r   r  r   r\   r  r-   tracing_contextr)   r  check_fnr,   r'  r   aot_compiled_fnr   s                                @r!   aot_compile_fullgraphr0  '  s    :0E,!LD&-K?(1 	d
()d
 	%%D%Ad
 		d
 '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	R##))-115.28<,0	R "**M,H,HK
 '5#E#EF/'')?)?)F)F)R)R E[Q/	R 	R2 +';<w.%11%)${*;)<KH!+.XYZ 
 (44KKu4d 5 
 $$000 7/;; 	.K  -	. %#2226"00!..$//#++,<<>## /9E
	 . 
Ed
 d
 d
 d
L {	R 	R 	R 	RSd
 d
 d
 d
 d
 d
 d
L s   	P+P6O59D9O)	20O"BO3O;D2O)	-O55P=POOO&!O)	)O2.O55O>:PP
	PP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!   r2  r2    s2     *cN)#.//r#   r2  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   )r7  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   )r7  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  r>  r?  r;  loadsr   get_compile_idr:  r   r   )	r_   r   r   r   r>  r?  resultsr7  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!   r6  r6    sz     88??.//Ec ES ES E"5 " , ,u ,AS , ,r#   r6  inputsc                      dt         dt        f fd}g }|D ]/  }t        j                  d|       |j	                   ||             1 t        |      dkD  sJ 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   r3  enter_contextr0  )rE  r   orig_forwardstack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   )r2  r   loginfor:  r   r6  )r   rC  r   r   rL  r7  rE  s   ` ``   r!   aot_compile_modulerO    sw    * 9L   C'5 4[ ABC  1$$$E#344r#   r   )ArA   rh   r:   r   loggingr;  r?   collections.abcr   r   
contextlibr   r   r   r   typingr	   r
   r   rU   torch.fxtorch._dynamo.convert_framer   torch._dynamo.graph_utilsr   rn   r    r   aot_compile_typesr   r   r   r   guardsr   r   r   r   	getLoggerr7   rM  r;   r   r>   r"   r%   PicklerrE   	Unpicklerr   r   r   r   fxGraphModuler   Tensorr   r0  r2  r6  rV   rW   rO  rC   r#   r!   <module>r`     s2      	    . E E ! / /   7 8 ,   +3 g!%  %),%8;%	#s(^% O O O$X Xv'&** '     u* u* u*z  zz%S/4S>9:z z uxx++T%,,-?@BVVW	z
 D[z zz 0 0 0   ,  ,  ,F588??55 5 uxx++T%,,-?@BVVW	5
 5r#   