
    %Vji                    p   d dl m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
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mZmZmZmZmZmZ d dlZd dlmZ d d	l m!Z! d d
l"m#Z#m$Z$ d dl%m&Z&  ej'        e(          Z)er*d dl*m+Z+m,Z, d dl-m.Z. d dl/Z/d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 	  ej8        d          Z9 ej8        d          Z: ed           G d d                      Z; G d de          Z< G d dej=                  Z>	  G d d          Z? ej        d           G d d                      Z@ G d  d!e          ZAe!ej         G d" d#                                  ZB ed$          ZC	  ej        d           G d% d&                      ZD	  ej        d           G d' d(eD                      ZE	  ej        d           G d) d*eD                      ZF	  G d+ d,eeC                   ZG G d- d.          ZH G d/ d0          ZI G d1 d2eGeI                   ZJ G d3 d4          ZK G d5 d6eGeK                   ZL G d7 d8          ZM	  G d9 d:eGeH                   ZN G d; d<          ZO G d= d>eO          ZP G d? d@          ZQ ejR                    ZS	  G dA dB          ZT G dC dD          ZUedVdI            ZVedWdL            ZW ej        d           G dM dN                      ZX ej        d           G dO dPeX                      ZYdXdYdTZZdZdUZ[dS )[    )annotationsN)abstractmethod)defaultdict)contextmanager)	dataclass)AnyCallableGeneric
NamedTupleOptionalTYPE_CHECKINGTypeVarUnion)_pytree)dataclass_slots)CapturedTracebackformat_frame)WeakTensorKeyDictionary)	GeneratorIterator)CodeType)DDPOptimizerContext)	PyCodegen)ViewAndMutationMetaFakeTensorModez-^(?P<frame_id>\d+)/(?P<frame_compile_id>\d+)$zQ^!(?P<compiled_autograd_id>\d+)(?:/(?P<frame_id>\d+)/(?P<frame_compile_id>\d+))?$T)frozenc                  R    e Zd ZU ded<   ded<   dZded<   ddZedd            ZdS )	CompileIdOptional[int]frame_idframe_compile_idNcompiled_autograd_idreturnstrc                    | j         =| j        d u | j        d u k    sJ d}| j        d| j         d| j         }d| j          | S | j        | j        J | j         d| j         S )N /!)r#   r!   r"   )self	frame_strs     G/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_guards.py__str__zCompileId.__str__[   s    $0MT)t/D/LMMMMI}(GGG0EGG	=t0=)====,1F1R1RRm==d&;===    
compile_idOptional[str]Optional[CompileId]c                N   |dS 	 t           t          fD ]e}|                    |          x}rL|                                }|                                D ]\  }}|t          |          ||<    | di |c S ft          # t          $ r}t          d| d          |d}~ww xY w)z
        Factory method that creates a CompileId from its string representation.
        Keep this in sync with the __str__ method.
        NzInvalid compile_id '' )COMPILE_ID_PATTERNCA_COMPILE_ID_PATTERNmatch	groupdictitemsint
ValueError	Exception)clsr/   patternr7   groupskves           r,   from_stringzCompileId.from_stringh   s     4	J.0EF ! !#MM*5555 )"__..F & / /1=(+AF1I3====((() !  	J 	J 	JAJAAABBI	Js   A2B 9B 
B$BB$r$   r%   )r/   r0   r$   r1   )__name__
__module____qualname____annotations__r#   r-   classmethodrC   r4   r.   r,   r   r   L   s~         
 $### +/....
> > > > J J J [J J Jr.   r   c                  ,    e Zd ZU ded<   ded<   d	dZdS )
TraceIdr   r/   r:   attemptr$   r%   c                b    | j         dk    rt          | j                  S | j         d| j          S )Nr   _)rL   r%   r/   r*   s    r,   r-   zTraceId.__str__   s7    <1t'''o66666r.   NrD   rE   rF   rG   rH   r-   r4   r.   r,   rK   rK      sA          LLL7 7 7 7 7 7r.   rK   c                  v    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZddZddZddZddZddZdS )GuardSourcer                           	   
                  r$   boolc                6    | t           j        t           j        fv S N)rR   GLOBAL_FSDP_MODULELOCAL_FSDP_MODULErO   s    r,   is_fsdp_modulezGuardSource.is_fsdp_module   s    68UVVVr.   c                    dd l mc m} |j        r.| t          j        t          j        fv p|                                 S | t          j        t          j        fv S Nr   )torch._dynamo.config_dynamoconfig_unsafe_skip_fsdp_module_guardsrR   GLOBAL_SPECIALIZED_NN_MODULELOCAL_SPECIALIZED_NN_MODULErg   )r*   rl   s     r,   is_specialized_nn_modulez$GuardSource.is_specialized_nn_module   s|    ---------1 	<; )
 &&(( 43
 
 	
r.   c                b    | t           j        t           j        t           j        t           j        fv S rd   )rR   GLOBAL_UNSPECIALIZED_NN_MODULELOCAL_UNSPECIALIZED_NN_MODULE&GLOBAL_UNSPECIALIZED_BUILTIN_NN_MODULE%LOCAL_UNSPECIALIZED_BUILTIN_NN_MODULErO   s    r,   is_unspecialized_nn_modulez&GuardSource.is_unspecialized_nn_module   s,    65>=	
 
 	
r.   c                6    | t           j        t           j        fv S rd   )rR   rt   ru   rO   s    r,   "is_unspecialized_builtin_nn_modulez.GuardSource.is_unspecialized_builtin_nn_module   s     >=
 
 	
r.   c                x    | t           j        t           j        t           j        t           j        t           j        fv S rd   )rR   LOCALro   rf   rs   ru   rO   s    r,   is_localzGuardSource.is_local   s2    3)5=
 
 	
r.   Nr$   rb   )rE   rF   rG   rz   GLOBALro   rn   CONSTANTRANDOM_VALUE	SHAPE_ENVrf   re   BACKWARD_STATE	EPHEMERALSYNTHETIC_LOCALrs   rr   ru   rt   rg   rp   rv   rx   r{   r4   r.   r,   rR   rR      s        EF"##$ HLINIO$&!%'",.)-/*W W W W
 
 
 
"
 
 
 

 
 
 

 
 
 
 
 
r.   rR   c                      e Zd ZdS )GuardBuilderBaseNrE   rF   rG   r4   r.   r,   r   r      s        Dr.   r   c                  ,    e Zd ZU ded<   ded<   d	dZdS )
SLocz,Optional[Union[traceback.FrameSummary, str]]framework_locr0   maybe_user_locr$   r%   c                    t          | j        t                    r| j        nt          | j                  }| j        | j         d| dS d| dS )Nz ()()
isinstancer   r%   r   r   )r*   flocs     r,   r-   zSLoc.__str__   sg     $,c222Dd011 	
 *)44T4444t;;;r.   NrD   rP   r4   r.   r,   r   r      sB         ????!!!!	 	 	 	 	 	r.   r   c                  .    e Zd ZU ded<   ded<   ded<   dS )
ShapeGuardzsympy.logic.boolalg.Booleanexprr   slocrb   size_obliviousNrE   rF   rG   rH   r4   r.   r,   r   r      s3         %%%%JJJr.   r   c                  <   e Zd ZU ded<   ded<   dZded<   dZded<   dZd	ed
<   dZded<   dZded<   dZ	ded<   dZ
ded<   dZded<   d4dZd5dZd6dZd7dZed8d             Zed9d"            Zed:d$            Zd8d%Zd8d&Zd;d*Zd<d+Zd<d,Zd<d-Zd8d.Zd=d3ZdS )>GuardSourceoriginating_sourcez)Callable[[GuardBuilderBase, Guard], None]	create_fnNzOptional[list[str]]guard_types	code_listzOptional[object]obj_weakref$Optional[weakref.ReferenceType[Any]]guarded_class_weakrefzOptional[CapturedTraceback]stackz Optional[traceback.StackSummary]
user_stackr    _hashFrb   _unserializabler$   r:   c                    | j         3t          | j        | j        t	          | j                  f          | _         | j         S rd   )r   hashnamesourceidr   rO   s    r,   __hash__zGuard.__hash__  s6    :ty$+r$.7I7IJKKDJzr.   tuple[bool, int, int, str, int]c                (   t          | j        t          j                  o&| j        j        t
          j        j        j        j	        u }|| j
        r| j
        j        ndt          | j                  | j        |                                 j        j        fS )N)r   r   	functoolspartialfunctorchrk   guardsGuardBuilderDUPLICATE_INPUTr   valuelenr   inner_create_fn__code__co_firstlineno)r*   is_duplicate_inputs     r,   sort_keyzGuard.sort_key  s    
 t~y'899 Y#u}';'H'XX 	
 !%4DK"	NNI  ""+:
 	
r.   otherc                V    |                                  |                                 k     S rd   )r   r*   r   s     r,   __lt__zGuard.__lt__+  s    }}!1!111r.   (Callable[[GuardBuilderBase, Guard], Any]c                f    t          | j        t          j                  r| j        j        S | j        S rd   )r   r   r   r   r   rO   s    r,   r   zGuard.inner_create_fn.  s,    dni&788 	">&&>!r.   r%   c                4    | j                                         S rd   )r   r   rO   s    r,   r   z
Guard.name4  s    &++---r.   rR   c                4    | j                                         S rd   )r   guard_sourcerO   s    r,   r   zGuard.source8  s    &33555r.   objectc           
     @   t          | t          j                  rv |             }|Jdt          t	          |                      d|j        j         dt          t	          |                     dS dt          t	          |                      dS t          |           S )a  
        This is a workaround of a Python weakref bug.

        `obj_weakref` is instance returned by `weakref.ref`,
        `str(obj_weakref)` is buggy if the original obj overrides __getattr__, e.g:

            class MyConfig(dict):
                def __getattr__(self, x):
                    return self[x]

            obj = MyConfig(offset=5)
            obj_weakref = weakref.ref(obj)
            str(obj_weakref)  # raise error: KeyError: '__name__'
        Nz<weakref at z; to 'z' at >z; dead>)r   weakrefReferenceTypehexr   	__class__rE   r%   )r   objs     r,   weakref_to_strzGuard.weakref_to_str<  s      k7#899 	$+--Cnc"[//&:&:nn#-BXnn_bceficjcj_k_knnnnCc"[//&:&:CCCC{###r.   c                    d| j         r| j         j                                        nd dt          | j                   d|                                 j         d| j         d| j         d|                     | j	                   d| j
         d}|S )	Nz	
        r'    z&
        {
            'guard_types': z,
            'code': z,
            'obj_weakref': z
            'guarded_class': z
        }
        )r   r   lowerreprr   rE   r   r   r   r   r   )r*   ss     r,   __repr__zGuard.__repr__U  s    %)[	8				!	!	!b ;?	?? MQMaMaMcMcMl  !,  ^	 
 !//0@AA  #8   r.   c                l   dt          | j                   d}| j        r| j        j                                        nd}|d| dz  }|d|                                 j         dz  }|d| j         dz  }|d| j         dz  }|d|                     | j	                   dz  }|d	| j
         dz  }|S )
NzName: 
r'   z    Source: z    Create Function: z    Guard Types: z    Code List: z    Object Weakref: z    Guarded Class Weakref: )r   r   r   r   r   rE   r   r   r   r   r   )r*   outputr   s      r,   r-   zGuard.__str__a  s    -$ty//----1[@!'')))b+++++M$*>*>*@*@*IMMMM:d&6::::6DN6666R)<)<T=M)N)NRRRRN0JNNNNr.   builderr   r   c           	        	 |                      ||           S # t          $ r t                              dt	          |                                                      | j        r_t                              dd                    | j        	                                dd                                                                w xY w)NzError while creating guard:
%szCreated at:
%sr'   )
r   r<   log	exceptionr%   rstripr   errorjoinformat)r*   r   s     r,   createzGuard.createl  s    	>>'4000 	 	 	MM;SYY=M=M=O=OPPPz Y		+RWWTZ5F5F5H5H5M-N-N-U-U-W-WXXX		s
    B,Cc                4    | j                                         S rd   )r   rp   rO   s    r,   rp   zGuard.is_specialized_nn_moduleu  s    {33555r.   c                4    | j                                         S rd   )r   rg   rO   s    r,   rg   zGuard.is_fsdp_modulex  s    {))+++r.   c                4    | j                                         S rd   )r   r{   rO   s    r,   r{   zGuard.is_local{  s    {##%%%r.   c                v    t          | j        t          j                  r| j        j        }n| j        }|j        S rd   )r   r   r   r   r   rE   )r*   r   s     r,   create_fn_namezGuard.create_fn_name~  s5    dni&788 	'+III!!r.   
guard_typeguarded_class	list[str]Nonec                h   | j         sg | _         | j                             |           | j        |d fv s
J d            || _        | j        s|| _        n| j                            |           | j        |d fv s2t          | j                  r|                                 
J d            || _        d S )Nz+Guarded class id must be identical, or NonezBGuarded object must be identical, None or ephemeral (dead weakref))r   appendr   r   extendr   callable)r*   r   r   r   r   s        r,   set_export_infozGuard.set_export_info  s      	"!D
+++).
 
 
 
 9
 
 
 &3"~ 	-&DNNN!!),,, d 333()) 4  ""**O +*+ 'r.   r$   r:   )r$   r   )r   r   r$   rb   )r$   r   rD   r$   rR   )r   r   r$   r%   )r   r   r$   r   r|   )
r   r%   r   r   r   r   r   r   r$   r   )rE   rF   rG   rH   r   r   r   r   r   r   r   r   r   r   r   r   propertyr   r   staticmethodr   r   r-   r   rp   rg   r{   r   r   r4   r.   r,   r   r      s        ( 8888 (,K++++%)I))))$(K((((BFFFFF)-E----37J7777E!O!!!!   

 
 
 
 2 2 2 2" " " " . . . X. 6 6 6 X6 $ $ $ \$0
 
 
 
	 	 	 	   6 6 6 6, , , ,& & & &" " " " '  '  '  '  '  'r.   r   Tc                      e Zd ZdS )GuardEnvExprNr   r4   r.   r,   r   r     s        Dr.   r   c                  ,    e Zd ZU ded<   ded<   ddZdS )	DuplicateInputsr   input_source_ainput_source_br$   r   c                *    | j         | j        k    sJ d S rd   )r   r   rO   s    r,   __post_init__zDuplicateInputs.__post_init__  s    "d&9999999r.   Nr$   r   )rE   rF   rG   rH   r   r4   r.   r,   r   r     sB         : : : : : :r.   r   c                  $    e Zd ZU ded<   ded<   dS )StorageOverlapzlist[Source]overlapping_sourcesnon_overlapping_sourcesNr   r4   r.   r,   r   r     s*         %%%%))))))r.   r   c                  >    e Zd Zedd            Zed	d            ZdS )
Checkpointabler$   r   c                    d S rd   r4   rO   s    r,   copy_graphstatezCheckpointable.copy_graphstate  s    $'Cr.   stater   c                    d S rd   r4   r*   r  s     r,   restore_graphstatez!Checkpointable.restore_graphstate  s    47Cr.   N)r$   r   )r  r   r$   r   )rE   rF   rG   r   r  r  r4   r.   r,   r  r    s<        ''' ^'777 ^777r.   r  c                  J    e Zd ZU dZ e            Zded<   ddZdd	ZddZ	dS )GuardsCheckpointStatezW
    The GuardCheckpointState - it is the T of Checkpointable[T] for GuardsContext
    
set[Guard]dynamo_guardsr$   r   c                    || _         d S rd   )r  )r*   r  s     r,   __init__zGuardsCheckpointState.__init__  s    *r.   r   Optional[set[Guard]]c                n    | j                             |j                   }t          |          dk    rdS |S )z
        Produces a delta against another GuardsCheckpointState.

        Returns None if no delta is found, otherwise, return a set() of mismatched
        Guard type objects.
        r   N)r  
differencer   r*   r   rs      r,   diffzGuardsCheckpointState.diff  s6     ))%*=>>q66Q;;4r.   r   rb   c                ^    t          |t                    sdS |                     |          d u S NF)r   r	  r  r   s     r,   __eq__zGuardsCheckpointState.__eq__  s1    %!677 	5yy4''r.   N)r  r
  r$   r   )r   r	  r$   r  r   r   r$   rb   )
rE   rF   rG   __doc__setr  rH   r  r  r  r4   r.   r,   r	  r	    su           !$M%%%%+ + + +
 
 
 
( ( ( ( ( (r.   r	  c                  6    e Zd ZU i Zded<   ddZddZddZdS )ModuleContextCheckpointStatedict[str, torch.nn.Module]
nn_modulesr$   r   c                    || _         d S rd   r  )r*   r  s     r,   r  z%ModuleContextCheckpointState.__init__  s    $r.   r   Optional[set[str]]c                    t          | j                                                                      t          |j                                                            }t	          |          dk    rdS |S )z
        Produces a delta against another ModuleContextCheckpointState.

        Returns None if no delta is found, otherwise, return a set() of mismatched
        module key names.
        r   N)r  r  keysr  r   r  s      r,   r  z!ModuleContextCheckpointState.diff  s]     $$&&''223u7G7L7L7N7N3O3OPPq66Q;;4r.   r   rb   c                ^    t          |t                    sdS |                     |          d u S r  )r   r  r  r   s     r,   r  z#ModuleContextCheckpointState.__eq__  1    %!=>> 	5yy4''r.   N)r  r  r$   r   )r   r  r$   r   r  )rE   rF   rG   r  rH   r  r  r  r4   r.   r,   r  r    sc         -/J////% % % %
 
 
 
( ( ( ( ( (r.   r  c                  &    e Zd Zd	dZd
dZddZdS )ModuleContextr$   r   c                    i | _         d S rd   r  rO   s    r,   r  zModuleContext.__init__$  s    *,r.   r  c                D    t          t          | j                            S rd   )r  dictr  rO   s    r,   r  zModuleContext.copy_graphstate'  s    +D,A,ABBBr.   r  c                L    t          |t                    sJ |j        | _        d S rd   )r   r  r  r  s     r,   r  z ModuleContext.restore_graphstate*  s'    %!=>>>>>*r.   Nr   )r$   r  )r  r  r$   r   rE   rF   rG   r  r  r  r4   r.   r,   r&  r&  #  sT        - - - -C C C C+ + + + + +r.   r&  c                  6    e Zd ZU i Zded<   ddZdd	ZddZdS )GlobalContextCheckpointStatedict[str, tuple[Callable, Any]]global_stateglobal_statesr$   r   c                    || _         d S rd   r/  )r*   r0  s     r,   r  z%GlobalContextCheckpointState.__init__2  s    )r.   r   r   c                    t          | j                                                                      t          |j                                                            }t	          |          dk    rdS |S )z
        Produces a delta against another GlobalContextCheckpointState.

        Returns None if no delta is found, otherwise, return a set() of mismatched
        global key names.
        r   N)r  r/  r"  r  r   r  s      r,   r  z!GlobalContextCheckpointState.diff5  s^     !&&(())44S9K9P9P9R9R5S5STTq66Q;;4r.   r   rb   c                ^    t          |t                    sdS |                     |          d u S r  )r   r-  r  r   s     r,   r  z#GlobalContextCheckpointState.__eq__A  r$  r.   N)r0  r.  r$   r   )r   r-  r$   r   r  )rE   rF   rG   r/  rH   r  r  r  r4   r.   r,   r-  r-  /  sc         46L6666* * * *
 
 
 
( ( ( ( ( (r.   r-  c                  2    e Zd ZdZh dZddZddZdd	Zd
S )GlobalContextzz
    This keeps track of the global torch state during tracing of a function.
    For example, torch.is_grad_enabled.
    >   grad_enabledautocast_enabledautocast_cpu_dtypeautocast_gpu_dtypeautocast_cpu_enabledautocast_cache_enabledr$   r   c                    i | _         d S rd   r2  rO   s    r,   r  zGlobalContext.__init__V  s    =?r.   r-  c                *    t          | j                  S rd   )r-  r/  rO   s    r,   r  zGlobalContext.copy_graphstateY  s    +D,=>>>r.   r  c                f   t          |t                    sJ |j        | _        t          | j                  t          | j                  k    r/t          | j                                                  | j        k    s
J d            | j                                        D ]\  }} ||           d S )NzGlobal state mismatch)r   r-  r/  r   _supported_global_statesr  r"  values)r*   r  r   argss       r,   r  z GlobalContext.restore_graphstate\  s    %!=>>>>>!.!""c$*G&H&HHHD%**,,--1NNNN" ONO +2244 	 	JD$DJJJJ	 	r.   Nr   )r$   r-  )r  r-  r$   r   )rE   rF   rG   r  r@  r  r  r  r4   r.   r,   r6  r6  G  sp         
     @ @ @ @? ? ? ?     r.   r6  c                  X    e Zd ZdddZddZd d
Zd!dZd"dZdddd#dZd$dZ	d%dZ
dS )&	GuardsSetNinnerr  r$   r   c                4    |t                      }|| _        d S rd   )r  rE  )r*   rE  s     r,   r  zGuardsSet.__init__j  s    =EEE


r.   Iterator[Guard]c                *    t          | j                  S rd   )iterrE  rO   s    r,   __iter__zGuardsSet.__iter__o      DJr.   r:   c                *    t          | j                  S rd   )r   rE  rO   s    r,   __len__zGuardsSet.__len__r  s    4:r.   r   c                :    t          | j        |j        z
            S rd   )rD  rE  r   s     r,   __sub__zGuardsSet.__sub__w  s    ek1222r.   rb   c                *    t          | j                  S rd   )rb   rE  rO   s    r,   __bool__zGuardsSet.__bool__z  rK  r.   Tr   )collect_debug_stackskipguardr   rR  rS  c                   || j         v rd S |r$|j        t          j        d|z             |_        |j        t
                                          |_        | j                             |           d S NrS   )rS  )rE  r   r   extractr   TracingContextextract_stackadd)r*   rT  rR  rS  s       r,   rZ  zGuardsSet.add}  sw     DJF 	G{"/7QXFFF#-;;==E
ur.   othersr
  c                H    |D ]}|D ]}|                      |d           d S rV  )rZ  )r*   r[  ogs       r,   updatezGuardsSet.update  sH     	$ 	$A $ $####$	$ 	$r.   r   r   c                H    ddl m fd| j        D             | _        dS )z.Delete all guards that contains a given sourcerS   )is_from_sourcec                6    h | ]} |j                   |S r4   )r   ).0r^  ra  r   s     r,   	<setcomp>z6GuardsSet.remove_guards_with_source.<locals>.<setcomp>  s=     
 
 
8Lf)U)U

 
 
r.   N)_dynamo.sourcera  rE  )r*   r   ra  s    `@r,   remove_guards_with_sourcez#GuardsSet.remove_guards_with_source  sK    222222
 
 
 
 
z
 
 



r.   rd   )rE  r  r$   r   )r$   rG  r   )r   rD  r$   rD  r|   )rT  r   rR  rb   rS  r:   r$   r   )r[  r
  r$   r   )r   r   r$   r   )rE   rF   rG   r  rJ  rM  rO  rQ  rZ  r_  rf  r4   r.   r,   rD  rD  i  s            
          
3 3 3 3        <@Q
 
 
 
 
 
$ $ $ $

 
 
 
 
 
r.   rD  c                  &    e Zd Zd	dZd
dZddZdS )GuardsContextr$   r   c                :    t                      | _        g | _        d S rd   )rD  r  aotautograd_guardsrO   s    r,   r  zGuardsContext.__init__  s    (168r.   r	  c                N    t          t          | j        j                            S rd   )r	  r  r  rE  rO   s    r,   r  zGuardsContext.copy_graphstate  s    $S);)A%B%BCCCr.   r  c                f    t          |t                    sJ t          |j                  | _        d S rd   )r   r	  rD  r  r  s     r,   r  z GuardsContext.restore_graphstate  s2    %!677777&u':;;r.   Nr   )r$   r	  )r  r	  r$   r   r+  r4   r.   r,   rh  rh    sT        9 9 9 9D D D D< < < < < <r.   rh  c                      e Zd Zedd            Zedd	            Zedd            Zedd            Zedd            Zedd            Z	edd            Z
edd            ZdS )HopSubgraphCachefn_idr:   
identifierr%   r$   r   c                    d S rd   r4   r*   ro  rp  s      r,   add_dynamo_installed_submodulez/HopSubgraphCache.add_dynamo_installed_submodule  s    SVSVr.   r   c                    d S rd   r4   r*   ro  s     r,   get_dynamo_installed_submodulesz0HopSubgraphCache.get_dynamo_installed_submodules  s    HKr.   keyr	   c                    d S rd   r4   r*   rp  rw  s      r,   add_autograd_key_entryz'HopSubgraphCache.add_autograd_key_entry  s    NQcr.   Optional[Callable]c                    d S rd   r4   r*   rp  s     r,   get_autograd_key_entryz'HopSubgraphCache.get_autograd_key_entry  s    MPSr.   c                    d S rd   r4   ry  s      r,   add_proxy_dispatch_entryz)HopSubgraphCache.add_proxy_dispatch_entry  s    PSPSr.   c                    d S rd   r4   r}  s     r,   get_proxy_dispatch_entryz)HopSubgraphCache.get_proxy_dispatch_entry  s    ORsr.   tangent_metadatatuple[object]gmodtorch.fx.GraphModulec                    d S rd   r4   )r*   rp  r  r  s       r,   add_lazy_bwd_entryz#HopSubgraphCache.add_lazy_bwd_entry  s	     cr.   4tuple[Optional[torch.fx.GraphModule], Optional[int]]c                    d S rd   r4   r*   rp  r  s      r,   get_lazy_bwd_entryz#HopSubgraphCache.get_lazy_bwd_entry  s     @Csr.   Nro  r:   rp  r%   r$   r   ro  r:   r$   r   rp  r%   rw  r	   r$   r   rp  r%   r$   r{  rp  r%   r  r  r  r  r$   r:   rp  r%   r  r  r$   r  )rE   rF   rG   r   rs  rv  rz  r~  r  r  r  r  r4   r.   r,   rn  rn    s        VVV ^VKKK ^KQQQ ^QPPP ^PSSS ^SRRR ^R   ^ C C C ^C C Cr.   rn  c                  V    e Zd ZddZddZdd
ZddZddZddZddZ	ddZ
d dZdS )!InvokeSubgraphCacher$   r   c                    i | _         i | _        t          t                    | _        t          t
                    | _        d S rd   )autograd_cacheproxy_dispatch_cacher   listdynamo_installed_submodulesr)  lazy_bwd_cacherO   s    r,   r  zInvokeSubgraphCache.__init__  s=    359;!ALTARAR(  	r.   ro  r:   rp  r%   c                F    | j         |                             |           d S rd   )r  r   rr  s      r,   rs  z2InvokeSubgraphCache.add_dynamo_installed_submodule  s$    (/66zBBBBBr.   r   c                8    | j                             |g           S rd   )r  getru  s     r,   rv  z3InvokeSubgraphCache.get_dynamo_installed_submodules  s    /33E2>>>r.   rw  r	   c                    || j         |<   d S rd   )r  ry  s      r,   rz  z*InvokeSubgraphCache.add_autograd_key_entry  s    *-J'''r.   r{  c                8    | j                             |d           S rd   )r  r  r}  s     r,   r~  z*InvokeSubgraphCache.get_autograd_key_entry  s    "&&z4888r.   c                    || j         |<   d S rd   )r  ry  s      r,   r  z,InvokeSubgraphCache.add_proxy_dispatch_entry  s    03!*---r.   c                8    | j                             |d           S rd   )r  r  r}  s     r,   r  z,InvokeSubgraphCache.get_proxy_dispatch_entry  s    (,,Z>>>r.   r  r  r  r  c                ^    t          | j        |                   }||f| j        |         |<   |S rd   )r   r  )r*   rp  r  r  	num_gmodss        r,   r  z&InvokeSubgraphCache.add_lazy_bwd_entry  s7     +J788	=A9<MJ'(89r.   r  c                Z    || j         vrdS | j         |                             |d          S )N)NN)r  r  r  s      r,   r  z&InvokeSubgraphCache.get_lazy_bwd_entry  s6     T000<":.223C\RRRr.   Nr   r  r  r  r  r  r  )rE   rF   rG   r  rs  rv  rz  r~  r  r  r  r  r4   r.   r,   r  r    s           C C C C? ? ? ?. . . .9 9 9 94 4 4 4? ? ? ?	 	 	 	S S S S S Sr.   r  c                      e Zd Zd	dZd
dZdS )HopDispatchSetCacher$   r   c                <    ddl m} |t                      i| _        d S )Nr   )invoke_subgraph)'torch._higher_order_ops.invoke_subgraphr  r  hop_cache_map)r*   r  s     r,   r  zHopDispatchSetCache.__init__  s.    KKKKKK-/B/D/DEr.   optorch._ops.HigherOrderOperatorOptional[HopSubgraphCache]c                2    || j         vrd S | j         |         S rd   )r  )r*   r  s     r,   	get_cachezHopDispatchSetCache.get_cache  s%     T'''4!"%%r.   Nr   )r  r  r$   r  )rE   rF   rG   r  r  r4   r.   r,   r  r    s@        F F F F& & & & & &r.   r  c                  v    e Zd Zedd            Zedd            ZddZedd	            Zedd            ZdS )CompileContextr$   c                 6    t           j        J t           j        S rd   )_TLScompile_contextr4   r.   r,   r  zCompileContext.get"  s    #///##r.   Optional[CompileContext]c                 .    t          t          dd           S Nr  getattrr  r4   r.   r,   try_getzCompileContext.try_get'      t.555r.   r/   r1   r   c                b    |t          |t                    sJ || _        d| _        g | _        d S ri   )r   r   r/   rL   shape_env_guards)r*   r/   s     r,   r  zCompileContext.__init__+  s9    !Z
I%F%F!!F/9+-r.   c                 J    t                                           } | d S | j        S rd   )r  r  r/   rO   s    r,   current_compile_idz!CompileContext.current_compile_id2  s%    %%''<4r.   Optional[TraceId]c                     t                                           } | d S | j        d S t          | j        | j                  S rd   )r  r  r/   rK   rL   rO   s    r,   current_trace_idzCompileContext.current_trace_id9  s>    %%''<4?"4t555r.   N)r$   r  )r$   r  )r/   r1   r$   r   )r$   r1   )r$   r  )	rE   rF   rG   r   r  r  r  r  r  r4   r.   r,   r  r  !  s        $ $ $ \$ 6 6 6 \6. . . .    \ 6 6 6 \6 6 6r.   r  c                  `   e Zd ZdZed"d            Zed#d            Zd$d	Zd%d
Zee	d&d                        Z
ed'd            Zd(dZeej	        d)d                        Zeej	        d*d                        Zeej	        d+d                        Zed,d            Zed-d             Zd!S ).rX  z
    Provides the currently installed TracingContext, or None.

    Note that it is a staticmethod, and invocations outside of `with tracing()` (see below), are valid but
    will return None.
    r$   Optional[TracingContext]c                 .    t          t          dd           S )Ntracing_contextr  r4   r.   r,   r  zTracingContext.try_getK  r  r.   c                 Z    t                                           x} r| S t          d          )Nz<TracingContext.get() must be called within an ongoing trace.)rX  r  RuntimeError)ctxs    r,   r  zTracingContext.getO  s5     ((***3 	JJ
 
 	
r.   	fake_modeOptional[FakeTensorMode]r   c                   t                      | _        t                      | _        t	                      | _        t                      | _        t                      | _        || _	        g | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d| _        t)                      | _        d| _        t/                      | _        g | _        d S r  )rh  guards_contextr&  module_contextr6  global_contextr)  previously_inlined_functionspreviously_cleaned_instructionsr  frame_summary_stackloc_in_framefw_metadataddp_optimizer_ctxaot_graph_nameparams_flatparams_flat_unwrap_subclassesparams_unwrapped_to_flat_indexoutput_strides#force_unspec_int_unbacked_size_liker   tensor_to_contextfakify_first_callr  hop_dispatch_set_cachetraced_code)r*   r  s     r,   r  zTracingContext.__init__W  s    +oo+oo+oo<@FF)?Cvv,3<AC  =A:>@D3704BF*CG+ JN 490!8!:!:
 "'&9&;&;#+-r.   c                    i | j         _        | j                                         | j                                         d S rd   )r  r/  r  clearr  rO   s    r,   r  zTracingContext.clear  s?     ,.()//111,2244444r.   kwargsr   Generator[None, None, None]c               +    K   i }t                                           }|                                 D ]}t          ||          ||<   |                                 D ]\  }}t          |||           	 d V  |                                D ]\  }}t          |||           d S # |                                D ]\  }}t          |||           w xY wrd   )rX  r  r"  r  r9   setattr)r  priorr  rw  vals        r,   patchzTracingContext.patch  s         "";;== 	+ 	+C c**E#JJ 	# 	#HCCc""""	'EEE!KKMM ' 'SS#&&&&' 'EKKMM ' 'SS#&&&&'s   4B% %-Ctraceback.StackSummaryc                     t                                           } | t          j                    S | j        }| j        ||                                 gz   }t          j                            |          S rd   )rX  r  	tracebackStackSummaryr  r  _populate_loc_in_frame_summary	from_list)r*   r   s     r,   rY  zTracingContext.extract_stack  sh    %%''<)+++((T@@BBCCE%//666r.   traceback.FrameSummaryc                Z    | j         J | j         \  }}}t          j        |||d          S )NF)lookup_line)r  r  FrameSummary)r*   filenamelineno
frame_names       r,   r  z-TracingContext._populate_loc_in_frame_summary  s;     ,,,'+'8$&*%h
PUVVVVr.   c               #    K   t                                           } t          j        j                            | dg           5  t          j        j                            | dd           5  	 d V  n*# t          $ r}t          |d          sd |_         d }~ww xY w	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  
real_stack)	rX  r  unittestmockr  r   r<   hasattrr  )tcrB   s     r,   clear_framezTracingContext.clear_frame  s_      !!M&&r+@"EE	 	M&&r>4@@	 	   $ q,// (#'AL) 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sZ   'B?)B'+A0/B'0
B:BBB'B?'B+	+B?.B+	/B??CCframe_summary Optional[traceback.FrameSummary]c              #    K   t                                           }| |j                            |            |j        }d |_        	 d V  n<# t
          $ r/}t          |d          s|                                |_         d }~ww xY w	 | |j        	                                 ||_        d S # | |j        	                                 ||_        w xY w)Nr  )
rX  r  r  r   r  r<   r  rY  r  pop)r  r  oldrB   s       r,   current_framezTracingContext.current_frame  s       !!$"))-888o		"EEEE 	 	 	1l++ 2!//11	  (&**,,,!BOOO (&**,,,!BO!!!!s*   A B- 
B*B  BB- -$C@Generator[Optional[list[Optional[tuple[int, ...]]]], None, None]c               #     K   t                                           } | d V  d S | j        }g | _        	 | j        V  || _        d S # || _        w xY wrd   )rX  r  r  )r  old_output_stridess     r,   report_output_stridesz$TracingContext.report_output_strides  st      
 ##%%:JJJF.	3#### 2B 2B2222s   	A 	Ar  r%   r  r:   r  c                H    | ||ft                                           _        d S rd   )rX  r  r  )r  r  r  s      r,   set_current_loczTracingContext.set_current_loc  s%     .6vz,J)))r.   Optional[list[CodeType]]c                 J    t                                           } | d S | j        S rd   )rX  r  r  )r  s    r,   get_traced_codezTracingContext.get_traced_code   s%    ##%%:4~r.   N)r$   r  )r$   rX  )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$   r	  )rE   rF   rG   r  r   r  r  r  r  r   r  rY  r  
contextlibr  r  r  r  r  r4   r.   r,   rX  rX  C  s         6 6 6 \6 
 
 
 \
1. 1. 1. 1.f5 5 5 5 ' ' ' ^ \' 7 7 7 \7W W W W     \< " " "  \"* 3 3 3  \3 K K K \K
    \  r.   rX  contextr  r$   /Generator[Optional[CompileContext], None, None]c              #     K   t          t          dd           }| t          _        	 | V  |t          _        d S # |t          _        w xY wr  )r  r  r  )r  old_contexts     r,   r  r    sR       $ 1488K"D+*{****s	   8 Ar  /Generator[Optional[TracingContext], None, None]c              #    K   t          t          dd          }| t          _        	 | V  n># t          $ r1}t	          |d          s| |                                 |_         d}~ww xY w	 | 1| j        *| j        j        | j        j        	                                 |t          _        dS # | 1| j        *| j        j        | j        j        	                                 |t          _        w xY w)z
    This function installs the passed in tracing context as a dynamic scoped
    global variable.

    Calls to TracingContext.get() while not under a `with tracing()` context
    will return None.
    r  Nr  )
r  r  r  r<   r  rY  r  r  	shape_envcleanup)r  r  rB   s      r,   tracingr    s      $ 1488K"D+   q,'' 	3G,?"0022AL 	 !-!+7'//111* !-!+7'//111*****s&   + B+ 
A&,A!!A&&B+ +AC,c                  N    e Zd ZddZddZddZdd
ZddZddZddZ	ddZ
dS )r   r$   rb   c                    dS r  r4   rO   s    r,   is_dict_keyzSource.is_dict_key5      ur.   c                    dS r  r4   rO   s    r,   is_ephemeralzSource.is_ephemeral8  r  r.   codegenr   r   c                    t           rd   NotImplementedError)r*   r  s     r,   reconstructzSource.reconstruct;      !!r.   rR   c                    t           rd   r  rO   s    r,   r   zSource.guard_source>  r!  r.   r%   c                    t           rd   r  rO   s    r,   r   zSource.nameA  r!  r.   fnCallable[..., Any]r   c                p    |                                  t          j        u rt          t	          | |          S rd   )r   rR   r~   r  r   )r*   r$  s     r,   
make_guardzSource.make_guardD  s0    +"666%%T2r.   c                N    |                                                                  S rd   )r   rp   rO   s    r,   rp   zSource.is_specialized_nn_moduleI  s       "";;===r.   c                F    |                                  t          j        k    S )z+True if you can guard on attributes of this)r   rR   r   rO   s    r,   subguards_allowedzSource.subguards_allowedL  s      ""k&AAAr.   Nr|   )r  r   r$   r   r   rD   )r$  r%  r$   r   )rE   rF   rG   r  r  r   r   r   r'  rp   r*  r4   r.   r,   r   r   3  s              " " " "" " " "" " " "   
> > > >B B B B B Br.   r   c                  2    e Zd ZU ded<   d	dZd	dZd
dZdS )ChainedSourcer   baser$   rb   c                4    | j                                         S rd   )r-  r  rO   s    r,   r  zChainedSource.is_dict_keyV  s    y$$&&&r.   c                4    | j                                         S rd   )r-  r  rO   s    r,   r  zChainedSource.is_ephemeralZ  s    y%%'''r.   c                l    | }t          |t                    r|j        }t          |t                    |S rd   )r   r,  r-  )r*   currents     r,   get_basezChainedSource.get_base]  s9    -00 	#lG -00 	#r.   Nr|   )r$   r   )rE   rF   rG   rH   r  r  r2  r4   r.   r,   r,  r,  R  s[         LLL' ' ' '( ( ( (     r.   r,  inputsr   r  c                   ddl m}m} g }t                                          x}r!|j        }||                    |ddf           ddlm} t          t           |                                D ]-\  }}t          ||          r|                    |d|f           .t          j        |           }	t          |	          D ]2\  }}
t          |
|          r|                    |
j        d|f           3|r[|d         \  }}}|dd         D ]B\  }}}||u s8J d	| d
| d| d| d
| d| d| d| d|j         d| d| d|j                     C|S dS )a  
    Attempts to "detect" what the current fake mode is.  If there is one ambiently
    available from TracingContext, we preferentially use that.  Otherwise, we
    heuristically detect the fake mode via the following sources, in order of
    priority:

        - Currently active fake mode on stack
        - Fake mode associated with passed in tensors (inputs does not
          have to be flattened)
    r   )
FakeTensorr   Nztracing context _get_current_dispatch_mode_stackzactive fake modezfake tensor inputrS   zfake mode (z) from r   z doesn't match mode (z

fake mode from z allocated at:
z
fake mode from )torch._subclasses.fake_tensorr5  r   rX  r  r  r   torch.utils._python_dispatchr7  	enumeratereversedr   pytreetree_leavesr   )r3  r5  r   
fake_modesr  r  r7  imflat_inputs
flat_inputdesc1i1desc2i2s                  r,   detect_fake_moderG  d  sG    IHHHHHHHJ ((***w A%	 y*;Q?@@@MMMMMM(#C#C#E#EFFGG : :1a(( 	:q"4a8999$V,,K";// N N:j*-- 	Nz35H!LMMM 
)!}	5"&qrrN 	 	LAub>>>Hi H H H H H HQR H H[` H Hce H H"'H H*,H H>GoH H"'H H*,H H>?gH H ">>>
 tr.   c                     ddl m}  ddlm} t	          t           |                                D ]\  }}t          ||           r|c S dS )z~
    Inspects the dispatch mode stack for an active fake mode and returns it.
    Returns None if no fake mode is active.
    r   r   r6  N)r8  r   r9  r7  r:  r;  r   )r   r7  rN   r@  s       r,   active_fake_moderI    s|    
 =<<<<<MMMMMM(#C#C#E#EFFGG  1a(( 	HHH	 4r.   )r  r  r$   r  )r  r  r$   r  rd   )r3  r   r$   r  )r$   r  )\
__future__r   r  dataclassesenumr   loggingre	threadingr  unittest.mockr  r   abcr   collectionsr   r   r   typingr   r	   r
   r   r   r   r   r   r   torch.utilsr   r<  torch.utils._backport_slotsr   torch.utils._tracebackr   r   torch.utils.weakr   	getLoggerrE   r   collections.abcr   r   typesr   sympy"torch._dynamo.backends.distributedr   torch._dynamo.codegenr   &torch._functorch._aot_autograd.schemasr   r8  r   compiler5   r6   r   rK   EnumrR   r   r   r   r   r   r   r   r   r  r	  r  r&  r-  r6  rD  rh  rn  r  r  localr  r  rX  r  r  r   r,  rG  rI  r4   r.   r,   <module>rb     s?   " " " " " "               				                    # # # # # # % % % % % % ! ! ! ! ! !	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  ) ) ) ) ) ) 7 7 7 7 7 7 B B B B B B B B 4 4 4 4 4 4 g!!  	=33333333LLLFFFFFF//////JJJJJJ<<<<<<  RZ PQQ "
X  $ $/J /J /J /J /J /J /J /Jd7 7 7 7 7j 7 7 7;
 ;
 ;
 ;
 ;
$) ;
 ;
 ;
|	 	 	 	 	 	 	 	 d###       $#         o' o' o' o' o' o' o'  o'd GCLL d###	 	 	 	 	 	 	 $#	 d###: : : : :l : : $#: d###* * * * *\ * * $#*

8 8 8 8 8WQZ 8 8 8( ( ( ( ( ( ( (8( ( ( ( ( ( ( (0	+ 	+ 	+ 	+ 	+N#?@ 	+ 	+ 	+( ( ( ( ( ( ( (0    N#?@   D+
 +
 +
 +
 +
 +
 +
 +
\< < < < <N#89 < < <C C C C C C C CB,S ,S ,S ,S ,S* ,S ,S ,S^& & & & & & & & y&6 6 6 6 6 6 6 6DB B B B B B B BJ + + + + + + + +< d###B B B B B B B $#B< d###    F   $#") ) ) ) )X     r.   