
    /j-H                        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j'        e(          Z)dej*        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j1                  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j6        j7        e8ej9                 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j6        j7        e8ej9                 gef         de=f
d*Z@dS ),    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                 R     | j         |i |}|                                 |j        S N)bindapply_defaults	arguments)r   r   r   bound_argumentss       ^/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/_dynamo/aot_compile.pybind_localsr"   #   s5     %ind5f5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dS )CompileArtifactsr   r   guard_managerguards_state
backend_idcompiled_fnoriginal_coderuntime_envr   source_infodevice_typebackend_name)default_factorysystem_infor   Nc                 l    t          j                    }|                    | j        | j                   d S r   )r   currentcheck_compatibilityr0   r-   )selfcurrent_systems     r!   r3   z$CompileArtifacts.check_compatibility9   s2    #+--**4+;T=MNNNNNr#   r   N)__name__
__module____qualname__inspect	Signature__annotations__r
   bytesstrr   typesCodeTyper   dataclassesfieldr   r2   r0   r3    r#   r!   r%   r%   +   s             12222OOO%%%%>!!!    /k/
@RSSSKSSSO O O O O 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                                          |           || _        d |                                D             | _        i | _        d S )Nc                 4    i | ]\  }}t          |          |S rC   )id).0keyvalues      r!   
<dictcomp>z.AOTCompilePickler.__init__.<locals>.<dictcomp>B   s1     '
 '
 '
)sEBuIIs'
 '
 '
r#   )super__init__rF   itemsid_maperrors)r4   rF   rG   	__class__s      r!   rP   zAOTCompilePickler.__init__?   s\    *'
 '
-:-@-@-B-B'
 '
 '
 r#   objc                     t          |          | j        v r| j        t          |                   S t          |t          j        j                  r&|| j        t          |          <   t          |          S d S r   )rJ   rR   
isinstancetorchnnModulerS   )r4   rU   s     r!   persistent_idzAOTCompilePickler.persistent_idG   s`    c77dk!!;r#ww''UX_-- 	#&DK3 c77N4r#   valc                 J    dt           ffd}|j        J |j        d         S )Nr   c                       S r   rC   )r\   s   r!   _z+AOTCompilePickler._unpickle_cell.<locals>._R   s    Jr#   r   )object__closure__)clsr\   r_   s    ` r!   _unpickle_cellz AOTCompilePickler._unpickle_cellP   sE    	6 	 	 	 	 	 	 }(((}Qr#   funcbasec                 ,    t          j        ||          S r   )r?   
MethodType)rb   rd   re   s      r!   _unpickle_bound_methodz(AOTCompilePickler._unpickle_bound_methodX   s     d+++r#   namec                 *    t          j        |          S r   )	importlibimport_module)rb   ri   s     r!   _unpickle_modulez"AOTCompilePickler._unpickle_module]   s    &t,,,r#   serialized_coder   c                 .    ddl m}  |j        |          S )Nr   r   )torch._dynamo.packager   to_code_object)rb   rn   r   s      r!   _unpickle_codez AOTCompilePickler._unpickle_codea   s'    888888,~,_===r#   codemodulequalnameargdefs.closurec                 d    t          j        |          j        }t          j        |||||          S r   )rk   rl   __dict__r?   FunctionType)rb   rt   ru   rv   rw   rx   	f_globalss          r!   _unpickle_nested_functionz+AOTCompilePickler._unpickle_nested_functiong   s0     +F33<	!$	8WgN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        |          r\	 |j        }|j        }t#          ||j                  }t          j        |          r|j        }||urt          |           j        ||ffS nQt          j        |          r=d|j        v r4t          |           j        |j        |j        |j        |j        |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    9999 r#   r   rp   z<locals>)rW   typera   rc   cell_contentsr:   iscoderq   r   rs   from_code_objectismodulerm   r7   ismethod__func____self__getattrrh   
isfunctionr9   r}   __code__r8   __defaults__NotImplemented)r4   rU   r   rd   method_self
inner_funcs         r!   reducer_overridez"AOTCompilePickler.reducer_overridet   s   c4!4!4!4a 8 8 DQ GHHII 	::,s/@.BBB^C   	<<<<<<::,/N~/Ns/S/S.UUUc"" 	::.??c"" 	 <D,K dm<<J
++ 1'0
:%%Dzz84:MMM &$$ 	S---Dzz;LN$$O>   r#   )r7   r8   r9   dictr>   r`   ioBytesIOrP   intr[   classmethodrc   r   r?   rg   rh   
ModuleTyperm   r@   rs   tupleCellTyper{   r}   r	   r   __classcell__rT   s   @r!   rE   rE   >   s       d3;&7 bj T       C#I,<        F       [  ,( ,& ,UEU , , , [, -C -E,< - - - [- >-= >%. > > > [>
 	On	O 	O 		O
 vs{#d*	O u~s*+d2	O 
		O 	O 	O [	O"C "C " " " " " " " "r#   rE   c                   V     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                 X    t                                          |           || _        d S r   )rO   rP   rF   )r4   rF   r   rT   s      r!   rP   zAOTCompileUnpickler.__init__   s)    *r#   rL   c                 b    || 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   rL   s     r!   persistent_loadz#AOTCompileUnpickler.persistent_load   sU    d(((( ( ( %( (   !#&&r#   )r7   r8   r9   r   r>   r`   r   r   rP   r   r   r   s   @r!   r   r      s        +d3;&7 +rz +f + + + + + +'3 '6 ' ' ' ' ' ' ' 'r#   r   c                       e Zd ZU eed<   dS )AOTCompileSaveResultserialized_dataN)r7   r8   r9   r=   r<   rC   r#   r!   r   r      s         r#   r   c            
       v   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dS )AOTCompiledFunction
_artifactsT_guard_check_enabledN_extra_globalsr   r   r   c                 V   i }| j         j        }|j        rf|j        j        r/t          |j                  t          |j        j                  k    sJ d t          |j        j        |j                  D             }|                    t          | j         j	        g|R i |           |S )Nc                 $    i | ]\  }}||j         S rC   )r   )rK   ri   cells      r!   rN   z8AOTCompiledFunction.prepare_f_locals.<locals>.<dictcomp>   s1       D$ d(  r#   )
r   r+   rx   bytecodeco_freevarslenzipupdater"   r   )r4   r   r   f_localsenvs        r!   prepare_f_localsz$AOTCompiledFunction.prepare_f_locals   s    &(o); 	<+ CK0@0@C(E E 1 1 1  "%cl&>"L"L  H 	DO$=OOOOOOPPPr#   c                 v     | j         |i |}| j        j        J | j        j                            |          S r   )r   r   r&   check)r4   r   r   r   s       r!   guard_checkzAOTCompiledFunction.guard_check   sC    (4($9&99,888,228<<<r#   c                 d   ddl m}m} | j                                         | j        j                            | j        j        | j        j        | j	                  | _
        | j        j        B || j        j                  } ||| j        j        | j
        j                  | j        _        d S d S )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BBBBBBB++---/->>O&O'- ? 
 
 ?(0,,T_-IJJL,>,>-#- -DO))) 10r#   c                     | j         j        J | j        rX | j        |i |sK | j        |i |}t          | 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$ 	O-=T-=t-Nv-N-N 	O,t,d=f==H6DDXNNOOFMVMMNNNtw''''r#   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                   |cd d d            S # 1 swxY w Y   d S )Nwb)openr   	serializewriter   )r4   r   rF   fresults        r!   save_compiled_functionz*AOTCompiledFunction.save_compiled_function   s     $ 	$ZZ))$>>FGGF*+++	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ?AA!$A!r   c                    ddl m} |j        j                                        }d |d<   t          j        |d          |j        |d         j                            |d<   |d         }t          |          j
        t          |                              |          f|d<    |j        |d                   |d<   t          j                    }t          |pi |          }|                    |           |j        r7t#          dt%          |j                                                   d	          t)          |                                
          S )Nr   rp   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   )rq   r   r   rz   copyrA   replacer   r   r   deserialize_compile_artifactsserialize_compile_artifactsr   r   rE   dumprS   r   listvaluesr   getvalue)rb   r   rF   r   stater)   rG   picklers           r!   r   zAOTCompiledFunction.serialize   sh    	988888&++--!%o*2- 4^4U=5I5RSS 
  
  
m M*;99+FF 
m "A!@AW!X!Xojll#M$7R==U> 	[d7>CXCXCZCZ>[>[ [ [ [   $CLLNNCCCCr#   datar|   external_closure_datac                 T   ddl m} t          j        |          }|                    d           t          |pi |          }|                                }|                                 t          j	        |d          |j
        |d         j                            |d<   |d         \  }}	t          j        j                            d          5   ||	          |d<   d d d            n# 1 swxY w Y    |j
        |d                   |d<   t!          d
i |}
 | |
|	          S )Nr   rp   r+   r   r)   T)enable_autograd_for_aotr*   )r   rC   )rq   r   r   r   seekr   loadcloserA   r   rr   r   rX   	_inductorconfigpatchr%   )rb   r   r|   r   r   r   	unpicklerr   deserializercompiled_fn_state	artifactss              r!   deserializezAOTCompiledFunction.deserialize	  s    	988888Jt	q			'(=(CQGG	  				*2- 2^253G3PQQ 
  
  
m +0*>''_#))$)GG 	C 	C#/<0A#B#BE- 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C!>!>u_?U!V!Vo$--u--	s9Y7777s   C--C14C1c                     d| _         d S )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33f  4VCT    = = = = = = =
   &(c (S (S ( ( ( (+ + + + AE (,S#X(=	    OSD D&D7;CH~7LD	D D D [D6  /37;	8 88 V$t+8  $CH~4	8
 
8 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} |\  }	}
t                      }|ddl
m}  ||          } |            5   |d          5  t          j        j                            d	          5  |5  t!          j        | |	|
          }|j        }|j        J |j        s2dd
lm} dt.          |         dt.          t0                   ffd}||_        t!          j        |           \  }}|j        }|J |j        |j        _        t=          |j        j                  }|j         j!        |j        j!        u sJ  ||j                   }|j"        |_"        t          j#        $                    |          5  t          j        j                            dddddd          5   ||j        |j%                  }tM          |t          j'                  s>tQ          |d          r=tM          |j)        t          j*        j+        j,        j-                  rt]          |          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   tM          |t^                    sAtQ          |d          r|j)        }n|}ta          dtc          |           dd| dz             |2                    |j3        |dd          }|j4        J  |tk                                }|j6        D ]}|7                    |           tq          t!          j9        |          |j:        |j4        |j        ||j3        |;                                ||ty          |dd          
  
        }t{          ||j>                  }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |S )Nr   )CheckFunctionManager)r   )dynamo_timedget_metrics_context)TracingContext)set_enable_dynamicfullgraph_captureT)strict_autograd_cache)GuardFilterEntryguard_entriesr   c                      fd| D             S )Nc                 <    g | ]}|j         p|j        j        v  S rC   )	is_global
guard_type%UNSUPPORTED_SERIALIZATION_GUARD_TYPES)rK   gr   s     r!   
<listcomp>zFaot_compile_fullgraph.<locals>.new_guard_filter_fn.<locals>.<listcomp>K  sI     	 	 	  K Z |3Y Z	 	 	r#   rC   )r   r   s    r!   new_guard_filter_fnz2aot_compile_fullgraph.<locals>.new_guard_filter_fnH  s0    	 	 	 	 +	 	 	 	r#   )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   rq   r   torch._dynamo.utilsr   r   torch._guardsr   r   torch._dynamo.eval_framer   rX   
_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   rW   _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_fullgraphr6  '  s    :99999000000EEEEEEEE,,,,,,!LD&--K??????((11 	d
 d
())d
 d
 	%%D%AAd
 d
 		d
 d
 '8fMM-B#0<<<$ 	8<<<<<<'(89$      %8E!+E22A&4(((1>1I".()C)IJJ#-#0:; ; ; ; ).)@AA,9,K)M!!/22	R 	R#))-115.28<,0  	R 	R "'*M,H K
 '5#EFF R//R')?)F)R R E[QQ/	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R2 +';<< 	w.. &%1%H${*;*;HHHY+YYYZ  
 (44Ku4d 5 
 
 $000 j777/; 	. 	.K  ----$#2266"0!.$/#+,<<>>## /9EE
 
 
	 . 
 
 
Ed
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
L s   O&N=>N&DN	+I-A>H7+I7H;;I>H;?IN	IN	ID-N	N&NN&NN&N=&N**N=-N*.N=1O=O	OO	OOOc                   f    e Zd ZU dZee         ed<   eeef         ed<   e	e
e                  ed<   dS )
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!   r8  r8    sY           *cN)#.//////r#   r8  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d
S )AOTCompiledModelr   compiled_resultsr   r   r   c                     | j         D ]+} |j        | j        g|R i |r || j        g|R i |c S , | j         d         | j        g|R i |S )Nr   )r=  r   r   )r4   r   r   r   s       r!   r   zAOTCompiledModel.__call__  s    + 	; 	;F!v!$*>t>>>v>> ;vdj:4:::6:::::; (t$Q'
DTDDDVDDDr#   c                     g }| j         D ]4}|                    t                              |          j                   5t          j        |          S r   )r=  appendr   r   r   pickledumps)r4   r   r   s      r!   r   zAOTCompiledModel.serialize  sR    + 	O 	OFKK+55f==MNNNN|D!!!r#   r   c                    ddl m} ddlm}m} t          j        |          }g }|D ]} | |t          j        i                               5   |            5  |	                    t                              |                     d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    | ||          S )Nr   )r   )compile_contextCompileContext)r  r   r  rD  rE  rA  loadsr   get_compile_idr@  r   r   )	rb   r   r   r   rD  rE  resultsr=  r   s	            r!   r   zAOTCompiledModel.deserialize  s   ;;;;;;AAAAAAAA%|D11 	Q 	QF}/KB/O/O P PQQQ Q##%%Q Q !''(;(G(G(O(OPPP	Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q
 s5*+++s6   B+.BB+BB+BB++B/	2B/	N)r7   r8   r9   rX   rY   rZ   r<   r   r   r	   r   r=   r   r   r   rC   r#   r!   r<  r<    s          8?.////Ec ES ES E E E E"5 " " " " , ,u ,AS , , , [, , ,r#   r<  inputsc                      dt           dt          f fd}g }|D ];}t                              d|           |                     ||                     <t          |          dk    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 ]}|                    |           t          ||          cd d d            S # 1 swxY w Y   d S )N)r   r   )r   r   forwardr   r9  enter_contextr6  )rK  r   orig_forwardstackctxr   r   r   s        r!   compile_single_graphz0aot_compile_module.<locals>.compile_single_graph  s    %*K,>?}[[ 	E"+ ) )##C(((((	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   2A$$A(+A(zCompiling input %s..r   )r8  r   loginfor@  r   r<  )r   rI  r   r   rR  r=  rK  s   ` ``   r!   aot_compile_modulerU    s    * 9L          C C'555 4 4[ A ABBBB  1$$$$E#3444r#   r   )ArA   rk   r:   r   loggingrA  r?   collections.abcr   r   
contextlibr   r   r   r   typingr	   r
   r   rX   torch.fxtorch._dynamo.convert_framer   torch._dynamo.graph_utilsr   rq   r    r   aot_compile_typesr   r   r   r   guardsr   r   r   r   	getLoggerr7   rS  r;   r   r>   r"   r%   PicklerrE   	Unpicklerr   r   r   r   fxGraphModuler   Tensorr   r6  r8  r<  rY   rZ   rU  rC   r#   r!   <module>rf     sR            				    . . . . . . . . E E E E E E E E E E ! ! ! ! ! ! / / / / / / / / / /   7 7 7 7 7 7 8 8 8 8 8 8 , , , , , ,                     4++++++33333333 g!!% %),%8;%	#s(^% % % % O O O O O O O O$X X X X X X X Xv' ' ' ' '&* ' ' '          u* u* u* u* u* u* u* u*z  z zz%S/4S>9:z z ux+T%,-?@BVVW	z
 D[z z z z zz 0 0 0 0 0 0 0 0   ,  ,  ,  ,  ,  ,  ,  ,F58?55 5 ux+T%,-?@BVVW	5
 5 5 5 5 5 5r#   