
    %Vjit)                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZmZ d dlZd dlZd dlmZ ddlmZ ddlmZ  ej        e          Z G d d	e j                  Zd
ej        de
de
deee
f         fdZe G d d                      Ze G d d                      Z G d de          Z de
de!e!e
df         eee
f         f         dedeej"        j#        e$ej%                 gef         def
dZ&dS )    N)	dataclass)AnyCallableOptional)PrecompileContext   )convert_frame)Hooksc                       e Zd Zeej        dedefd                        Zeej        dedefd                        Z	dS )SerializableCallablefnreturnc                     d S N clsr   s     S/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_dynamo/aot_compile.pyserialize_compile_artifactsz0SerializableCallable.serialize_compile_artifacts   	     	    datac                     d S r   r   )r   r   s     r   deserialize_compile_artifactsz2SerializableCallable.deserialize_compile_artifacts   r   r   N)
__name__
__module____qualname__classmethodabcabstractmethodr   bytesr   r   r   r   r   r   r      s        S U     [  3     [  r   r   	signatureargskwargsr   c                 R     | j         |i |}|                                 |j        S r   )bindapply_defaults	arguments)r"   r#   r$   bound_argumentss       r   bind_localsr*   "   s5     %ind5f55O""$$$$$r   c                       e Zd ZU ej        ed<   ej        ed<   ee	j
        j        j                 ed<   eed<   eeef         ed<   eed<   eed<   ej        ed<   eeed	f                  ed
<   dS )CompileArtifactsr"   bytecodeguard_managerguards_stateimport_sources
backend_idcompiled_fnoriginal_code.closureN)r   r   r   inspect	Signature__annotations__typesCodeTyper   torch_dynamoguardsGuardManagerWrapperr!   dictstrr   tupler   r   r   r   r,   r,   *   s             nEM0DEEEEcN"""OOO%%%%>!!!eCHo&&&&&&r   r,   c                       e Zd ZU eed<   dededefdZddZdededefdZ	d	e
ddfd
Zedd defd            Zededd fd            ZdS )AOTCompiledFunction
_artifactsr#   r$   r   c                     t          | j        j        g|R i |}| j        j        J | j        j                            |          S r   )r*   rC   r"   r.   check)selfr#   r$   f_localss       r   guard_checkzAOTCompiledFunction.guard_check;   sN    t8J4JJJ6JJ,888,228<<<r   Nc                    d | j         j                                        D             }i || j         j        | j         j        i}t          j        | j         j        || j         j                  | _	        | j         j
        kt          j        | j         j                  }t          j        j                            | j         j        |j        |j        |          j
        | j         _
        d S d S )Nc                 >    i | ]\  }}|t          j        |          S r   )	importlibimport_module).0aliasmodule_names      r   
<dictcomp>z5AOTCompiledFunction.__post_init__.<locals>.<dictcomp>A   s9     
 
 
"{ 9*;77
 
 
r   r4   )shape_code_partsruntime_global_scope)rC   r0   itemsr1   r2   r8   FunctionTyper-   r4   r   r.   pickleloadsr/   r:   r;   r<   CheckFunctionManagerr3   output_graphrR   )rF   r0   	f_globalsr/   s       r   __post_init__z!AOTCompiledFunction.__post_init__@   s    
 
&*o&D&J&J&L&L
 
 


O&(C
 
	 $O$i9P
 
 
 ?(0!<(DEEL,1M,@,U,U-)!-!>%.	 -V - -
  O))) 10r   c                    | j         j        J  | j        |i |sXt          | j         j        g|R i |}t          | j         j                            |                    }t          d|            | j        |i |S )Nz#GuardManager check failed, reason: )	rC   r.   rH   r*   r"   r?   check_verboseRuntimeErrorr   )rF   r#   r$   rG   reasons        r   __call__zAOTCompiledFunction.__call__V   s    ,888t000 	O"4?#<NtNNNvNNH6DDXNNOOFMVMMNNNtw''''r   pathc                     t          |d          5 }|                    t          |                               |                      d d d            d S # 1 swxY w Y   d S )Nwb)openwritetype	serialize)rF   ra   fs      r   save_compiled_functionz*AOTCompiledFunction.save_compiled_function^   s    $ 	0GGDJJ((..///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   6AAAr   c                 v   ddl m} |j        j                                        }d |d<   |                    |d                   |d<   |d         }t          |          j        t          |                              |          f|d<   |                    |d                   |d<   t          j
        |          S )Nr   SerializedCoder.   r-   r2   r3   )torch._dynamo.packagerl   rC   __dict__copyfrom_code_objectrf   r   r   rV   dumps)r   r   rl   stater2   s        r   rg   zAOTCompiledFunction.serializeb   s    888888&++--!%o*;;E*<MNNjM*;99+FF 
m "0!@!@AW!X!Xo|E"""r   r   c                    ddl m} t          j        |          }|                    |d                   |d<   |d         \  }} ||          |d<   |                    |d                   |d<   t          di |} | |          S )Nr   rk   r-   r2   r3   r   )rm   rl   rV   rW   to_code_objectr,   )r   r   rl   rr   deserializercompiled_fn_state	artifactss          r   deserializezAOTCompiledFunction.deserializeq   s    888888T""*99%
:KLLj*/*>''+|,=>>m!/!>!>u_?U!V!Vo$--u--	s9~~r   )r   N)r   r   r   r,   r7   r   boolrH   r[   r`   r?   ri   r   r!   rg   rx   r   r   r   rB   rB   7   s            = = = = = = =
   ,(c (S (S ( ( ( (03 04 0 0 0 0 #0 #U # # # [# 
u 
)> 
 
 
 [
 
 
r   rB   c                        e Zd ZdZdeddfdZdedef fdZededd fd	            Z	ed
d de
fd            Zede
defd            ZdededefdZ xZS )&BundledAOTAutogradSerializableCallableaL  
    Represents a serializable callable generated by compile_fx.
    This class wraps around the compiled function generated by AOTAutograd.

    TODO: Instead of using PrecompileContext to grab it from AOTAutograd,
    this object should be what's *returned* by aot_module_simplified.
    We'll do that refactor in a later PR.
    artifactr   Nc                 P    |                                 | _        |j        | _        dS )z
        Takes in a BundledAOTAutogradCacheArtifact, which is the serialized form
        of a compiled function generated by AOTAutograd.
        N)after_deserializationr2   contentr   )rF   r|   s     r   __init__z/BundledAOTAutogradSerializableCallable.__init__   s&     $99;;$			r   attrc                     t          | |          rt          t                      |          S t          | j        |          S r   )hasattrgetattrsuperr2   )rF   r   	__class__s     r   __getattr__z2BundledAOTAutogradSerializableCallable.__getattr__   s<    4 	3577D)))4+T222r   r1   c                 h    t          j        |          }|t          d|z              | |          S )z
        Takes in a backend_id, and returns a BundledAOTAutogradSerializableCallable
        that wraps around the compiled function generated by AOTAutograd.
        Nz"No artifact found for backend_id: )r   serialize_artifact_by_keyr^   )r   r1   r|   s      r   from_backend_idz6BundledAOTAutogradSerializableCallable.from_backend_id   s<     %>zJJCjPQQQs8}}r   r   c                     |j         S r   )r   r   s     r   r   zBBundledAOTAutogradSerializableCallable.serialize_compile_artifacts   s     wr   r   c                 <    ddl m}  |d|          } | |          S )Nr   )BundledAOTAutogradCacheArtifact )-torch._functorch._aot_autograd.autograd_cacher   )r   r   r   r|   s       r   r   zDBundledAOTAutogradSerializableCallable.deserialize_compile_artifacts   sB    	
 	
 	
 	
 	
 	
 322t<<s8}}r   r#   r$   c                      | j         |i |S r   )r2   )rF   r#   r$   s      r   r`   z/BundledAOTAutogradSerializableCallable.__call__   s    t0000r   )r   r   r   __doc__r   r   r   r   r?   r   r!   r   r   r`   __classcell__)r   s   @r   r{   r{      s.        % % % % % %3 3 3 3 3 3 3 3 

	1
 
 
 [
 9	   [
  3    [1c 1S 1S 1 1 1 1 1 1 1 1r   r{   modelexample_inputs.hooksbackendc                    ddl m ddlm}m} ddlm}m}m} |\  }	}
t          | d          r| j
        }| j        f|	z   }	n)t          j        |           r| }nt          d|            t          j        |          }t!          |g|	R i |
}|j        j        s|j        rmt)          |j                  t)          |j        j                  k    sJ |                    d t-          |j        j        |j                  D                         | |t/          j        i                               5   |            5   |d          5  t/          j        t/          j        |j        |j        |t8          j        |j        pd	
                    }|j        }|j        s2ddl m!} dtD          |         dtD          tF                   ffd}||_        |$                    |j        |dd          }|j%        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   |j&        }|j'        |j(        _)        |j*        j+        }|J |j,        }tZ          j.        /                     ||j0                            5  tZ          j1        j2        3                    dd          5   ||j(        |j4                  }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   tk          |tZ          j6                  rtn          8                    |j'                  }tk          |tr                    sAt          |d          r|j:        }n|}t          dtw          |           dd| dz             ty          ||j=        |j>        |j%        ||j'        ||j        |j        	  	        }t          |          }|S )Nr   )rX   )dynamo_timedget_metrics_context)compile_contextCompileContextTracingContext__self__zUnsupported model code type c                 $    i | ]\  }}||j         S r   )cell_contents)rM   namecells      r   rP   z)aot_compile_fullgraph.<locals>.<dictcomp>   s1       D$ d(  r   fullgraph_capturer   rQ   )GuardFilterEntryguard_entriesr   c                      fd| D             S )Nc                 <    g | ]}|j         p|j        j        v  S r   )	is_global
guard_type%UNSUPPORTED_SERIALIZATION_GUARD_TYPES)rM   grX   s     r   
<listcomp>zFaot_compile_fullgraph.<locals>.new_guard_filter_fn.<locals>.<listcomp>   sI     	 	 	  K Z |3Y Z	 	 	r   r   )r   rX   s    r   new_guard_filter_fnz2aot_compile_fullgraph.<locals>.new_guard_filter_fn   s0    	 	 	 	 +	 	 	 	r   T)r   savestrict_errorbundled_autograd_cachecompiler_fnzCompiled function type z (produced zfrom backend z*) does not implement SerializableCallable.)	r"   r-   r.   r/   r0   r1   r2   r3   r4   )rC   )@torch._dynamo.guardsrX   torch._dynamo.utilsr   r   torch._guardsr   r   r   r   __func__r   r5   
isfunctionr^   r"   r*   __code__co_freevars__closure__lenupdatezipr	   get_compile_idr   	FrameInfo__globals__builtinsrn   dynamo_outputguard_filter_fntorch._dynamo.typesr   listry   build_guardsr/   backend_inputr1   graph_module_backend_idtracer_outputrY   r0   r:   _guardstracing	fake_mode
_functorchconfigpatchr   
isinstance_TorchCompileInductorWrapperr{   r   r   r   rf   r,   r-   r.   rB   )r   r   r   r   r   r   r   r   r   r#   r$   r   r"   rG   capture_outputr   r   r   check_fnr   rY   r0   r2   r   rw   aot_compiled_fnrX   s                             @r   aot_compile_fullgraphr      s    :99999EEEEEEEEMMMMMMMMMM!LD&uj!! C^ 4'		E	"	" CA%AABBB!"%%I96t666v66H	{ 
". 
2>""c"+*A&B&BBBBB "%bk&=r~"N"N  	
 	
 	
 	}'CB'G'GHHII'1 '1'1 '1 	())'1 '1
 '8#!,"  
 
 '4$ 	8<<<<<<#$45d      %8E! --Ku4d . 
 
 $0000O'1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1 '1R #0M-:-EM* .;L###!0Nnn]-DEEFFX X%%&>EEX X gm8-:VWW	X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X '5=>> 
<LL$
 
 k#788 
7M** 	"!-KK!KDd;&7&7DDDUkUUUV
 
 	

 !',*% +k
 
 
I *Y???Os   5H5 HB.H;HHHHHH5H"	"H5%H"	&H55H9<H9&K<K%K<%K)	)K<,K)	-K<<L L )'r   r   rK   r5   loggingrV   r8   dataclassesr   typingr   r   r   r:   torch.fx torch._dynamo.precompile_contextr   r   r	   r   r
   	getLoggerr   logABCr   r6   r>   r?   r*   r,   rB   r{   r@   fxGraphModuler   Tensorr   r   r   r   <module>r      sh   



          ! ! ! ! ! ! * * * * * * * * * *   > > > > > >             g!!	 	 	 	 	37 	 	 	% %),%8;%	#s(^% % % % 	' 	' 	' 	' 	' 	' 	' 	' D D D D D D D DN81 81 81 81 81-A 81 81 81voo%S/4S>9:o o ux+T%,-?@BVVW	o
 o o o o o or   