
    ȅiG                        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&  \RN                  " \(5      r)S\RT                  S\S\S\+\,\4   4S jr-\ " S S5      5       r. " S S\R^                  5      r0 " S S\Rb                  5      r2\ " S S5      5       r3\ " S S5      5       r4 S+S\S\5\5\S 4   \+\,\4   4   S!\!S"\\Rl                  Rn                  \8\Rr                     /\4   S#\:S-  S\44S$ jjr;\ " S% S&5      5       r<\ " S' S(5      5       r=S\R|                  R~                  S)\8\<   S!\!S"\\Rl                  Rn                  \8\Rr                     /\4   S\=4
S* jr@g),    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/james-whalen/.local/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_compatibility9   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__?   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_idG   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>._R   s    Jr#   r   )object__closure__)clsr`   rc   s    ` r!   _unpickle_cell AOTCompilePickler._unpickle_cellP   s0    	6 	 }}(((}}Qr#   funcbasec                 .    [         R                  " X5      $ r   )rC   
MethodType)rg   rj   rk   s      r!   _unpickle_bound_method(AOTCompilePickler._unpickle_bound_methodX   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_code`   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_functionf   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>t   s    1r#   r8   r   s   `r!   r   4AOTCompilePickler.reducer_override.<locals>.<lambda>t   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_overrides   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   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#   pathrK   c                     [        US5       n[        U 5      R                  X5      nUR                  UR                  5        UsS S S 5        $ ! , (       d  f       g = f)Nwb)openr   	serializewriter   )r5   r   rK   fresults        r!   save_compiled_function*AOTCompiledFunction.save_compiled_function   sE     $$Z))$>FGGF**+ s   7A
A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   replacer   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#   datar   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   r   	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_check"  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  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   [         R"                  " X	U
5      nUR$                  nUR&                  c   eUR(                  (       d+  SS
KJn  S[.        U   S[.        [0           4U4S jjnUUl        [         R2                  " U 5      u  nnUR4                  nUc   eUR6                  UR8                  l        [=        UR8                  R>                  5      nUR@                  RB                  UR&                  RB                  L d   eU" UR@                  5      nURD                  Ul"        [        RF                  RI                  U5         [        R                  R                  R                  SSSSS.5         U" UR8                  URJ                  5      n[M        U[        RN                  5      (       dX  [Q        US5      (       aR  [M        URR                  [        RT                  RV                  RX                  RZ                  5      (       a  []        U5      nS S S 5        S S S 5        [M        W[^        5      (       d?  [Q        US5      (       a  URR                  nOUn[a        S[c        U5       S3SU S3-   5      eURe                  URf                  USSS9nURh                  c   eU" [k        5       S9nURl                   H  nURo                  U5        M     [q        [         Rr                  " U5      URt                  URh                  UR6                  UURf                  URw                  5       UU[y        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        W$ ! , (       d  f       GNe= f! , (       d  f       GNo= f! , (       d  f       NL= f! , (       d  f       NU= f! , (       d  f       N^= f! , (       d  f       W$ = f)Nr   )CheckFunctionManager)r   )dynamo_timedget_metrics_context)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_fnG  sS     +	 + KK Z ||3YY Z +	 	 	s   ;A)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  ry   r   torch._dynamo.utilsr  r  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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_outputr0  r  r  r   rc   r5  r.   tracing_contextr*   r%  check_fnr-   rF  r  aot_compiled_fnr  s                                @r!   aot_compile_fullgraphrO  &  s    :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##))15.28<,0	 "**M,H,HK
 '5#E#EFF//'')?)?)F)F)R)R  E[Q) 3. +';<<w..%11%)${*;)<KH!+.XYZ 
 (44KKu4d 5 
 $$000 7/;;K  - < %#2226"00!..$//#++,<<>## /9E
	 . 
{ 	 	B 	* 	H u  32M 	 	BA 	*) 	H s   	P>(P-3P6EP	:/O9)B O'	O9D4P	PP-P>'
O61O99
PP	
PP
P*&P--
P;	7P>>
Q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!   rQ  rQ    s2     *cN)#.//r#   rQ  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   )rV  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   )rV  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-  r_  r`  r[  loadsr   get_compile_idrZ  r   r  )	rg   r  r   r  r_  r`  resultsrV  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!   rU  rU    sz     88??.//Ec ES ES E"5 " , ,u ,AS , ,r#   rU  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   rR  enter_contextrO  )rg  r  orig_forwardstack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   )rQ  r   loginforZ  r   rU  )r  re  r  r  rn  rV  rg  s   ` ``   r!   aot_compile_modulerr    su    * 9L   '5 4[ AB   1$$$E#344r#   r   )ArE   rr   r>   r   loggingr[  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:   rp  r?   r   rB   r"   r%   PicklerrI   	Unpicklerr   r   r   r   fxGraphModuler   Tensorr
  rO  rQ  rU  r\   r]   rr  r8   r#   r!   <module>r     s0      	    . E E ! / /   7 8 ,   +3 !%  %),%8;%	#s(^% O O O$W Wt'&** '     u* u* u*z  yy%S/4S>9:y y uxx++T%,,-?@BVVW	y
 D[y yx 0 0 0   ,  ,  ,F588??55 5 uxx++T%,,-?@BVVW	5
 5r#   