
    %Vji                     :   d Z ddlZddlZddlZddlmZmZ ddlZddl	m
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 dd
lmZmZ ddlmZmZ ddlmZ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*m+Z+ erddl,m-Z- ddl.m/Z/  G d de           Z0 G d de+          Z1 G d de1          Z2 G d de0          Z3 G d de0          Z4 G d de0          Z5 G d d e0          Z6 G d! d"e0          Z7 G d# d$e0          Z8 G d% d&e0          Z9 G d' d(e0          Z: G d) d*e0          Z; G d+ d,e0          Z< G d- d.e0          Z= G d/ d0e0          Z> G d1 d2e0          Z? G d3 d4e0          Z@ G d5 d6e0          ZA G d7 d8e0          ZB G d9 d:e0          ZC G d; d<e0          ZD G d= d>e0          ZE G d? d@e0          ZF G dA dBe0          ZG G dC dDe           ZH G dE dFe           ZI G dG dHe0          ZJ G dI dJe0          ZK G dK dLe           ZLdS )Ma)  
This file contains a collection of context manager classes used by Dynamo for tracking
and managing various PyTorch runtime states during graph compilation. These context
managers handle different aspects of PyTorch's execution environment, including:

- Autograd states (grad mode, inference mode)
- CUDA streams and events
- Profiling contexts
- Deterministic algorithms
- Forward/backward AD modes
- SDPA (Scaled Dot Product Attention) kernels
- FSDP (Fully Sharded Data Parallel) states
- AMP (Automatic Mixed Precision) autocast states

The context managers ensure proper state transitions during graph compilation by
tracking enter/exit points and managing cleanup operations. They help maintain
consistency between eager execution and compiled graph behavior by capturing and
restoring state changes.
    N)TYPE_CHECKINGUnion)Guard   )graph_break_hints	variables)create_call_functioncreate_instructioncreate_setup_with)get_interface_for_device)unimplemented_v2)GuardBuilderinstall_guard)
AttrSourceGlobalStateSource)_get_error_on_graph_break_set_error_on_graph_break   )VariableTracker)NestedUserFunctionVariableSkipFunctionVariableUserFunctionVariableUserMethodVariable!WrappedNestedUserFunctionVariableWrappedSkipFunctionVariableWrappedUserFunctionVariableWrappedUserMethodVariable)UserDefinedObjectVariable)	PyCodegenInstructionTranslatorc                        e Zd Zddddhej        Zdd fdZd ZdddZddZd dZ	d dZ
d Zd Z	 	 	 	 	 	 	 	 d!dZd Zd Zd Zd Z xZS )"ContextWrappingVariablecm_objtarget_valuesinitial_valuesstateNreturnc                 V     t                      j        di | || _        || _        d S N )super__init__r%   r&   selfr%   r&   kwargs	__class__s       ]/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_dynamo/variables/ctx_manager.pyr-   z ContextWrappingVariable.__init__F   s6    ""6"""*,    c                     |                      || j                   |                     |           t          j                            d           S N)
_call_funcr%   set_cleanup_hookr   ConstantVariablecreater/   txs     r2   enterzContextWrappingVariable.enterK   sD    D.///b!!!)00666r3   r;   r!   c                 f     | fd}| _         j                             j                   d S )Nc                  >                           j                   d S r5   )r6   r&   r:   s   r2   fnz4ContextWrappingVariable.set_cleanup_hook.<locals>.fnS   s     D$788888r3   
cleanup_fnoutputadd_cleanup_hookcleanupr/   r;   r?   s   `` r2   r7   z(ContextWrappingVariable.set_cleanup_hookP   sN    :9 9 9 9 9 9 
	""4<00000r3   c                 h    |                                   t          j                            d           S r5   )cleanup_assertr   r8   r9   r/   r;   argss      r2   exitzContextWrappingVariable.exitY   s+    )00666r3   codegenr   c                      |t          |j                            |                                           |                                                      d S r5   )r   r;   import_sourcemodule_namefn_namer/   rK   s     r2   reconstruct_typez(ContextWrappingVariable.reconstruct_type]   sQ    wz//0@0@0B0BCCT\\^^TT	
 	
 	
 	
 	
r3   c                                            fd            j        }|sd}                    fd|D                                            t          t	          |          d                     d S )Nc                  .                                    S r5   )rQ   )rK   r/   s   r2   <lambda>z5ContextWrappingVariable.reconstruct.<locals>.<lambda>c   s    d&;&;G&D&D r3   r+   c                 :    g | ]}                     |          S r+   create_load_const.0valrK   s     r2   
<listcomp>z7ContextWrappingVariable.reconstruct.<locals>.<listcomp>g   s'    WWW#w88==WWWr3   F)add_push_nullr%   extend_outputr	   len)r/   rK   r%   s   `` r2   reconstructz#ContextWrappingVariable.reconstructb   s    DDDDDEEE* 	MWWWWWWWXXX23}3E3EuMMNNNNNr3   c                      t          d          )Nzmodule_name called on baseNotImplementedErrorr/   s    r2   rN   z#ContextWrappingVariable.module_namej   s    !">???r3   c                      t          d          )Nzfn_name called on basera   rc   s    r2   rO   zContextWrappingVariable.fn_namem   s    !":;;;r3   rI   list[VariableTracker]r0   dict[str, VariableTracker]r   c                    t          |          dk    sJ t          |d         t          t          t          t
          f          sJ t          |d         t                    rt          |d         |           S t          |d         t                    rt          |d         |           S t          |d         t                    rt          |d         |           S t          |d         t
                    rt          |d         |           S d S Nr   r   )
r^   
isinstancer   r   r   r   r   r   r   r   r/   r;   rI   r0   s       r2   call_functionz%ContextWrappingVariable.call_functionp   s    4yyA~~~~G*$"$	
 
 	
 	
 
 d1g9:: 	D4T!WdCCCd1g344 	>.tAw===d1g122 	<,T!Wd;;;d1g344 	>.tAw===	> 	>r3   c                     dS NTr+   rc   s    r2   supports_graph_breaksz-ContextWrappingVariable.supports_graph_breaks       tr3   c                     dS rm   r+   rc   s    r2   exit_on_graph_breakz+ContextWrappingVariable.exit_on_graph_break   ro   r3   c                 N    | j         |                                   d | _         d S d S r5   )rA   rc   s    r2   rD   zContextWrappingVariable.cleanup   s-    ?&OO"DOOO '&r3   c                 P    | j         s
J d            |                                  d S )Nzmultiple exits?)rA   rD   rc   s    r2   rG   z&ContextWrappingVariable.cleanup_assert   s)    11 111r3   r5   r(   Nr;   r!   rK   r   r;   r!   rI   re   r0   rf   r(   r   )__name__
__module____qualname__r   _nonvar_fieldsr-   r<   r7   rJ   rQ   r_   rN   rO   rk   rn   rq   rD   rG   __classcell__r1   s   @r2   r#   r#   =   sa       	
 
	'N- - - - - - -
7 7 7
1 1 1 1 17 7 7 7
 
 
 

O O O O@ @ @< < <>#> &> -	>
 
> > > >:    # # #
      r3   r#   c                   F     e Zd Zd fdZd Zd Zd Zdd	Zd
 Zd Z	 xZ
S )GenericContextWrappingVariabler(   Nc                 `    |J  t                      j        d||j        d| || _        d S )N)value
value_typer+   )r,   r-   r1   r$   )r/   r$   r0   r1   s      r2   r-   z'GenericContextWrappingVariable.__init__   sT    !!! 	
'	
 	
 	
 	
 	

 r3   c                     | j         j        S r5   )r$   ry   rc   s    r2   rN   z*GenericContextWrappingVariable.module_name   s    {%%r3   c                 4    t          | j                  j        S r5   )typer$   rx   rc   s    r2   rO   z&GenericContextWrappingVariable.fn_name   s    DK  ))r3   c                     | j         d nt          | j         d          }t          j        | j        j        j        | |                              |g i           S )N	__enter__source)r   r   r   r   r$   r   __func__rk   )r/   r;   r   s      r2   r<   z$GenericContextWrappingVariable.enter   s\    ,*T[+2V2V+K!*
 
 
 -B
#
#		$r3   r;   r!   c                     | j         d nt          | j         d          }t          j        | j        j        j        | |                              ||i           }|j        	                                 |S )N__exit__r   )
r   r   r   r   r$   r   r   rk   active_generic_context_managerspop)r/   r;   rI   r   xs        r2   rJ   z#GenericContextWrappingVariable.exit   sx    ,*T[*2U2U(K )
 
 
 -D"
%
%	 	

 	*..000r3   c                     dS NFr+   rc   s    r2   rn   z4GenericContextWrappingVariable.supports_graph_breaks   s    ur3   c                     dS rm   r+   rc   s    r2   rq   z2GenericContextWrappingVariable.exit_on_graph_break   ro   r3   rt   ru   )rx   ry   rz   r-   rN   rO   r<   rJ   rn   rq   r|   r}   s   @r2   r   r      s             & & &* * *$ $ $           r3   r   c                   *    e Zd Zd ZddZddZd ZdS )	$RepararametrizeModuleContextVariablec                 "    || _         || _        d S r5   )cm_vtmod)r/   ctx_manager_vtr   s      r2   r-   z-RepararametrizeModuleContextVariable.__init__   s    #
r3   r;   r!   c                    | j                             |d                                          | _        | j                             |d                                          | _        |j        j                            | j                   |j        j                            | j                   | j        	                    |          S )N_parameters_buffers)
r   var_getattrrealizeold_parameters_varold_buffer_varrB   side_effectsignore_mutations_onr   r<   r:   s     r2   r<   z*RepararametrizeModuleContextVariable.enter   s     #'("6"6r="I"I"Q"Q"S"S"h222zBBJJLL
	2243JKKK
	2243FGGGz###r3   c                      | j         j        |g|R  }|j        j                            | j                   |j        j                            | j                   |S r5   )r   rJ   rB   r   stop_ignoring_mutations_onr   r   )r/   r;   rI   r   s       r2   rJ   z)RepararametrizeModuleContextVariable.exit   sZ    DJOB&&&&
	99$:MNNN
	99$:QRRRr3   c                 ,    t          | j        |          S r5   )getattrr   )r/   names     r2   __getattr__z0RepararametrizeModuleContextVariable.__getattr__   s    tz4(((r3   Nru   )rx   ry   rz   r-   r<   rJ   r   r+   r3   r2   r   r      sZ          
$ $ $ $   ) ) ) ) )r3   r   c                   8    e Zd ZdZedd            Zd ZddZdS )	)GradInplaceRequiresGradCtxManagerVariablez#represents torch grad requires gradr;   r!   c                      t          d|d d|S Nr%   r&   r+   )r   r;   r%   r0   s      r2   r9   z0GradInplaceRequiresGradCtxManagerVariable.create   s.    8 
'
 
 
 
 	
r3   c                      j         \  }t          j        j                                         _        t          j        j                            |                                | fd           |j        	                    dt          j        j        j        |fi            _
        t          j                            d           S )Nc                  V    t           j        j                             j                  S r5   )torch_C
_functorch!set_inplace_requires_grad_allowed
prev_staterc   s   r2   rT   zAGradInplaceRequiresGradCtxManagerVariable.enter.<locals>.<lambda>   s!    EH'II  r3   rk   )r%   r   r   r   !get_inplace_requires_grad_allowedr   r   r7   rB   create_nodeproxyr   r8   r9   )r/   r;   enableds   `  r2   r<   z/GradInplaceRequiresGradCtxManagerVariable.enter   s    &	(-OOQQ==gFFF   	
 	
 	
 Y**HAJ	
 

 )00666r3   c                     |                                   |j                            dt          j        j        j        | j        fi            t          j	        
                    d           S Nrk   )rD   rB   r   r   r   r   r   r   r   r8   r9   rH   s      r2   rJ   z.GradInplaceRequiresGradCtxManagerVariable.exit  s[    
	HA_		
 	
 	
 )00666r3   Nru   rx   ry   rz   __doc__staticmethodr9   r<   rJ   r+   r3   r2   r   r      s[        --
 
 
 \
7 7 7$7 7 7 7 7 7r3   r   c                   8    e Zd ZdZedd            Zd ZddZdS )	0TemporarilyPopInterpreterStackCtxManagerVariablezJrepresents torch._functorch.pyfunction.temporarily_pop_interpreter_stack()r;   r!   c                      t          d|d d|S r   )r   r   s      r2   r9   z7TemporarilyPopInterpreterStackCtxManagerVariable.create  s.    ? 
'
 
 
 
 	
r3   c                 0    t           j        j                                         _                             | fd           |j                            dt           j        j        j        di            _        t          j
                            d           S )Nc                  V    t           j        j                             j                  S r5   )r   r   r   push_dynamic_layer_stacksavedrc   s   r2   rT   zHTemporarilyPopInterpreterStackCtxManagerVariable.enter.<locals>.<lambda>  s    EH'@@LL r3   rk   r+   )r   r   r   pop_dynamic_layer_stackr   r7   rB   r   r   r   r8   r9   r:   s   ` r2   r<   z6TemporarilyPopInterpreterStackCtxManagerVariable.enter  s    X(@@BB
LLLL	
 	
 	
 Y**H7	
 

 )00666r3   c                     |                                   |j                            dt          j        j        j        | j        fi            t          j	        
                    d           S r   )rD   rB   r   r   r   r   r   r   r   r8   r9   rH   s      r2   rJ   z5TemporarilyPopInterpreterStackCtxManagerVariable.exit%  sZ    
	H8ZM		
 	
 	
 )00666r3   Nru   r   r+   r3   r2   r   r     s[        TT
 
 
 \
7 7 77 7 7 7 7 7r3   r   c                   j    e Zd ZdZ e e            ej                  Ze	dd            Z
d ZddZdS )	%JvpIncrementNestingCtxManagerVariablez5represents torch.func.jvp increment/decrement nestingr;   r!   c                 $    t          dd d d|}|S r   )r   r;   r0   vars      r2   r9   z,JvpIncrementNestingCtxManagerVariable.create:  s2    3 

 
 
 

 
r3   c                 H   t          | j                   t          j        j                                        }|                     |d            |j                            dt          j	        j        j
        di           | _        t          j                            |          S )Nc                  H    t           j        j                                        S r5   )r   r   eager_transformsexit_jvp_nestingr+   r3   r2   rT   z=JvpIncrementNestingCtxManagerVariable.enter.<locals>.<lambda>G  s    (9JJLL r3   rk   r+   )r   _guards_singletonr   r   r   enter_jvp_nestingr7   rB   r   r   _jvp_increment_nestingr   r   r8   r9   )r/   r;   	jvp_levels      r2   r<   z+JvpIncrementNestingCtxManagerVariable.enterC  s    d,---$5GGII	LL	
 	
 	
 Y**H6	
 

 )00;;;r3   c                     |                                   |j                            dt          j        j        j        di            t          j        	                    d           S Nrk   r+   )
rD   rB   r   r   r   r   _jvp_decrement_nestingr   r8   r9   rH   s      r2   rJ   z*JvpIncrementNestingCtxManagerVariable.exitQ  sS    
	UX0GR	
 	
 	
 )00666r3   Nru   rx   ry   rz   r   r   r   r   FUNCTORCH_STACK_MATCHr   r   r9   r<   rJ   r+   r3   r2   r   r   0  s|        ?? //11<3UVV   \< < <7 7 7 7 7 7r3   r   c                   8    e Zd ZdZedd            Zd ZddZdS )	SetFwdGradEnabledContextManagerzWrepresents torch.autograd.forward_ad._set_fwd_grad_enabled() to enable/disable fwd gradr;   r!   c                      t          d|d d|S r   )r   r   s      r2   r9   z&SetFwdGradEnabledContextManager.create\  s.    . 
'
 
 
 
 	
r3   c                 n     j         \  }t          j                                         _        t          j                            |                                | fd           |j                            dt          j        j        |fi            _	        t          j                            d           S )Nc                  L    t           j                             j                  S r5   )r   r   _set_fwd_grad_enabledr   rc   s   r2   rT   z7SetFwdGradEnabledContextManager.enter.<locals>.<lambda>j  s    EH224?CC r3   rk   )r%   r   r   _is_fwd_grad_enabledr   r   r7   rB   r   r   r   r8   r9   )r/   r;   modes   `  r2   r<   z%SetFwdGradEnabledContextManager.enterd  s    #(7799&&t,,,CCCC	
 	
 	
 Y**H*G	
 

 )00666r3   c                     |                                   |j                            dt          j        j        | j        fi            t          j        	                    d           S r   )
rD   rB   r   r   r   r   r   r   r8   r9   rH   s      r2   rJ   z$SetFwdGradEnabledContextManager.exitt  sX    
	H*_		
 	
 	
 )00666r3   Nru   r   r+   r3   r2   r   r   Y  s[        aa
 
 
 \
7 7 7 7 7 7 7 7 7r3   r   c                   j    e Zd ZdZ e e            ej                  Ze	dd            Z
d ZddZdS )	DualLevelContextManagerz;Represents torch.autograd.forward_ad.dual_level ctx managerr;   r!   c                      t          dd d d|S r   )r   )r;   r0   s     r2   r9   zDualLevelContextManager.create  s.    & 

 
 
 
 	
r3   c                 X    t           j                   t          j        j                                         _                             | fd           |j        	                    dt          j
        j        di            _        t          j                             j                  S )Nc                  X    t           j        j                             j                  S )N)level)r   autograd
forward_adexit_dual_level	new_levelrc   s   r2   rT   z/DualLevelContextManager.enter.<locals>.<lambda>  s    1AAAWW r3   rk   r+   )r   r   r   r   r   enter_dual_levelr   r7   rB   r   r   _enter_dual_levelr   r   r8   r9   r:   s   ` r2   r<   zDualLevelContextManager.enter  s    d,---2CCEEWWWW	
 	
 	
 Y**H&	
 

 )00@@@r3   c                     |                                   |j                            dt          j        j        | j        fi            t          j        	                    d           S r   )
rD   rB   r   r   r   _exit_dual_levelr   r   r8   r9   rH   s      r2   rJ   zDualLevelContextManager.exit  sX    
	H%^		
 	
 	
 )00666r3   Nru   )rx   ry   rz   r   r   r   r   
DUAL_LEVELr   r   r9   r<   rJ   r+   r3   r2   r   r     s}        EE//11<3JKK
 
 
 \
A A A7 7 7 7 7 7r3   r   c                   j    e Zd ZdZ e e            ej                  Ze	dd            Z
d ZddZdS )	&GradIncrementNestingCtxManagerVariablez6represents torch.func.grad increment/decrement nestingr;   r!   c                 $    t          dd d d|}|S r   )r   r   s      r2   r9   z-GradIncrementNestingCtxManagerVariable.create  s2    4 

 
 
 

 
r3   c                 H   t          | j                   t          j        j                                        }|                     |d            |j                            dt          j        j        j        di           | _	        t          j                            |          S )Nc                  H    t           j        j                                        S r5   )r   r   r   _grad_decrement_nestingr+   r3   r2   rT   z>GradIncrementNestingCtxManagerVariable.enter.<locals>.<lambda>      %(*=*U*U*W*W r3   rk   r+   )r   r   r   r   r   _grad_increment_nestingr7   rB   r   r   r   r8   r9   )r/   r;   
grad_levels      r2   r<   z,GradIncrementNestingCtxManagerVariable.enter  s    d,---X(@@BB
b"W"WXXXY**H7	
 

 )00<<<r3   c                     |                                   |j                            dt          j        j        j        di            t          j        	                    d           S r   )
rD   rB   r   r   r   r   r   r   r8   r9   rH   s      r2   rJ   z+GradIncrementNestingCtxManagerVariable.exit  sS    
	UX0H"b	
 	
 	
 )00666r3   Nru   r   r+   r3   r2   r   r     s|        @@ //11<3UVV   \
= 
= 
=7 7 7 7 7 7r3   r   c                   H     e Zd ZdZed
d            Zd fdZd Zd	 Z xZ	S )CatchWarningsCtxManagerVariablez'Delay a call to warnings.catch_warningsr;   r!   c                 &    t          |d d           S )N)catch_warnings_argsr%   r&   )r   )r;   r   s     r2   r9   z&CatchWarningsCtxManagerVariable.create  s"    . 3
 
 
 	
r3   r(   Nc                     t          |t                    s
J |             t                      j        di | || _        d S r*   )ri   dictr,   r-   r   )r/   r   r0   r1   s      r2   r-   z(CatchWarningsCtxManagerVariable.__init__  sN    -t44II6III4""6"""#6   r3   c                     d | j                                         D             }t          j        di ||                     |fd           t
          j                                                                      S )Nc                 >    i | ]\  }}||                                 S r+   )as_python_constant)rY   kvs      r2   
<dictcomp>z9CatchWarningsCtxManagerVariable.enter.<locals>.<dictcomp>  s7     
 
 
*.!QAq##%%
 
 
r3   c                  2                          d d d           S r5   )r   )ctx_vals   r2   rT   z7CatchWarningsCtxManagerVariable.enter.<locals>.<lambda>  s    '*:*:4t*L*L r3   r+   )	r   itemswarningscatch_warningsr7   r   r8   r9   r   )r/   r;   r0   r  s      @r2   r<   z%CatchWarningsCtxManagerVariable.enter  s    
 
262J2P2P2R2R
 
 
 )33F33b"L"L"L"LMMM)001B1B1D1DEEEr3   c                 J                        fd                               | j                                                   t	          | j                                                  }                                        t          |          |d                     d S )Nc                  0                          dd          S )Nr
  r  )load_import_from)cgs   r2   rT   z=CatchWarningsCtxManagerVariable.reconstruct.<locals>.<lambda>  s    !4!4ZAQ!R!R r3   F)	r\   foreachr   valuestuplekeysr]   create_call_function_kwr^   )r/   r  r  s    ` r2   r_   z+CatchWarningsCtxManagerVariable.reconstruct  s    
RRRRSSS


4+2244555T-224455
33CIItUKKLLLLLr3   ru   rt   )
rx   ry   rz   r   r   r9   r-   r<   r_   r|   r}   s   @r2   r   r     s        11
 
 
 \
7 7 7 7 7 7
F F FM M M M M M Mr3   r   c                   j    e Zd ZdZ e e            ej                  Ze	dd            Z
d ZddZdS )	&VmapIncrementNestingCtxManagerVariablez1represents torch VMap increment/decrement nestingr;   r!   c                 $    t          d|d d|}|S r   )r  )r;   r%   r0   r   s       r2   r9   z-VmapIncrementNestingCtxManagerVariable.create  s2    4 
'
 
 
 

 
r3   c                 R   t          | j                   | j        \  }}t          |t          j                  r!|j        }|                                j        }n(|	                                }|	                                }|	                                }t          j        j                            ||          }|                     |d            |j                            dt          j        j        j        ||fi           | _        t          j                            |          S )Nc                  H    t           j        j                                        S r5   )r   r   r   _vmap_decrement_nestingr+   r3   r2   rT   z>VmapIncrementNestingCtxManagerVariable.enter.<locals>.<lambda>  r   r3   rk   )r   r   r%   ri   r   SymNodeVariablesym_numas_proxynoder  r   r   r   _vmap_increment_nestingr7   rB   r   predispatchr   r8   r9   )r/   r;   
batch_size
randomnessbatch_size_valuebatch_size_node
vmap_levels          r2   r<   z,VmapIncrementNestingCtxManagerVariable.enter  s   d,---!%!3
Jj)";<< 	>)1(11338OO)<<>>(;;==O2244
X(@@j
 

 	b"W"WXXXY**(@j)	
 

 )00<<<r3   c                     |                                   |j                            dt          j        j        j        di            t          j        	                    d           S r   )
rD   rB   r   r   r   r   r  r   r8   r9   rH   s      r2   rJ   z+VmapIncrementNestingCtxManagerVariable.exit  sW    
	(@		
 	
 	
 )00666r3   Nru   r   r+   r3   r2   r  r    s|        ;; //11<3UVV   \= = =,7 7 7 7 7 7r3   r  c                        e Zd ZdZ e e            ej                  Ze	ddd            Z
	 d	 d fd	Zd
 ZddZ	 	 	 	 	 	 d fdZddZd Zd Z xZS )GradModeVariablez6represents torch.{no_grad,enable_grad,set_grad_mode}()Fr;   r!   c                     t          d|gt          j                    gd|}|r|                    | |j                   |S r   )r(  r   is_grad_enabledr6   r%   )r;   target_valueinitializedr0   r   s        r2   r9   zGradModeVariable.create$  s_     
'.!1334
 
 
 

  	2NN2s0111
r3   NTr(   c                 h     t                      j        d||d| t          | j                   d S r   r,   r-   r   r   )r/   r%   r&   r,  r0   r1   s        r2   r-   zGradModeVariable.__init__/  sP     	 	
'	
 	
JP	
 	
 	
 	d,-----r3   c                 v    |                      || j                   t          j                            d           S r5   r6   r%   r   r8   r9   r:   s     r2   r<   zGradModeVariable.enter7  0    D.///)00666r3   c                 v    |                      || j                   t          j                            d           S r5   r6   r&   r   r8   r9   rH   s      r2   rJ   zGradModeVariable.exit;  0    D/000)00666r3   rI   re   r0   rf   c                     |                      || j                   t                                          |||          S r5   r6   r&   r,   rk   r/   r;   rI   r0   r1   s       r2   rk   zGradModeVariable.call_function?  8     	D/000ww$$Rv666r3   c                 
   t          |          dk    sJ |d         }t          j                    |k    rN|j                            dt          j        j        |fi            t          j                            |           d S d S Nr   r   rk   )r^   r   r*  rB   r   r   _set_grad_enabledr/   r;   r  r   s       r2   r6   zGradModeVariable._call_funcH  s    6{{aq	 ""e++I!!!;eXr   H&&u-----	 ,+r3   c                     dS Nr   r+   rc   s    r2   rN   zGradModeVariable.module_nameR      wr3   c                     dS )Nset_grad_enabledr+   rc   s    r2   rO   zGradModeVariable.fn_nameU  s    !!r3   Fru   rm   rt   r;   r!   rI   re   r0   rf   )rx   ry   rz   r   r   r   r   	GRAD_MODEr   r   r9   r-   r<   rJ   rk   r6   rN   rO   r|   r}   s   @r2   r(  r(    s"       @@//11<3IJJ    \ ?C.	. . . . . .7 7 77 7 7 77#7 &7 -	7 7 7 7 7 7. . . .  " " " " " " "r3   r(  c                   X     e Zd Zedd            Z	 d	 d fdZddZd Zd	 Zd
 Z	 xZ
S )InferenceModeVariabler;   r!   c                 H    t          |gfdt          j                    i|}|S )Nr&   )rF  r   is_inference_mode_enabledr;   r+  r0   r   s       r2   r9   zInferenceModeVariable.createZ  s;    #N
 
+0+J+L+L
PV
 
 
r3   Nr(   c                 x    |t          j                    } t                      j        d||d| || _        d S r   )r   rH  r,   r-   r%   r.   s       r2   r-   zInferenceModeVariable.__init__a  s[     !"<>>N 	
'	
 	
JP	
 	
 	
 +r3   c                     |                                   |j                            dt          j        j        j        | j        fi            d S r   )rG   rB   r   r   r   	grad_mode_exit_inference_moder   rH   s      r2   rJ   zInferenceModeVariable.exito  sP    
	N$9ZM		
 	
 	
 	
 	
r3   c                    dt           j        j        j        rB| j        d         r5dt          j                    t           j                            d           nt          j        j	        j
        | j         fd}|                     ||           |j                            dt           j        j	        j
        g | j        R i           | _        d S )NFr   Tc                      r!t           j                                       d S t           j        j                                        d S r5   )r   r   r;  r   rL  rM  )ctx disabled_inference_mode_forciblypriors   r2   cleanup_hookz1InferenceModeVariable.enter.<locals>.cleanup_hook  sG    / C**511111(==cBBBBBr3   rk   )r   _dynamoconfig"fake_tensor_disable_inference_moder%   r*  r   r;  r   rL  _enter_inference_moder7   rB   r   r   )r/   r;   rS  rP  rQ  rR  s      @@@r2   r<   zInferenceModeVariable.enterx  s    +0(M C	V"1%	V 04,)++EH&&u----.*@$BTUC	C 	C 	C 	C 	C 	C 	C 	b,///Y**N$:"d ""	
 



r3   c                     dS r>  r+   rc   s    r2   rN   z!InferenceModeVariable.module_name  r?  r3   c                     dS )Ninference_moder+   rc   s    r2   rO   zInferenceModeVariable.fn_name  s    r3   ru   r5   rt   rx   ry   rz   r   r9   r-   rJ   r<   rN   rO   r|   r}   s   @r2   rF  rF  Y  s           \ +
 
+ + + + + +
 
 
 

 
 
:               r3   rF  c                   \     e Zd ZdZedd            Z	 d	 d fdZddZd	 Zd
 Z	d Z
 xZS )CUDADeviceVariablezrepresents torch.cuda.devicer;   r!   c                 d    t          dt          j                            |d          gd d|}|S )NT)optionalr   r+   )r]  r   cuda_get_device_index)r;   devicer0   r   s       r2   r9   zCUDADeviceVariable.create  sJ      
 :777NNO
 
 
 

 
r3   Nr(   c                 N     t                      j        d||d| || _        d S r   r,   r-   r%   r.   s       r2   r-   zCUDADeviceVariable.__init__  sG     	 	
'	
 	
JP	
 	
 	
 +r3   c                     |                                   |j                            dt          j        j        | j        fi            t          j        	                    d          S )Nrk   F)
rG   rB   r   r   r`  _maybe_exchange_devicer   r   r8   r9   rH   s      r2   rJ   zCUDADeviceVariable.exit  s\    
	J-ZM		
 	
 	
 )00777r3   c                     t          j        j        | j         |                     |fd           |j                            dt           j        j        g | j        R i           | _        d S )Nc                  B    t           j                                       S r5   )r   r`  rf  )prev_idxs   r2   rT   z*CUDADeviceVariable.enter.<locals>.<lambda>  s    %**K*KH*U*U r3   rk   )r   r`  _exchange_devicer%   r7   rB   r   r   )r/   r;   ri  s     @r2   r<   zCUDADeviceVariable.enter  sn    :.0BCb"U"U"U"UVVVY**J'"d ""	
 



r3   c                     dS )Nz
torch.cudar+   rc   s    r2   rN   zCUDADeviceVariable.module_name      |r3   c                     dS )Nrb  r+   rc   s    r2   rO   zCUDADeviceVariable.fn_name  s    xr3   ru   r5   rt   )rx   ry   rz   r   r   r9   r-   rJ   r<   rN   rO   r|   r}   s   @r2   r]  r]    s        &&   \ 	+
 
	+ 	+ 	+ 	+ 	+ 	+8 8 8 8
 
 
        r3   r]  c                        e Zd ZdZ e e            ej                  Ze	dd            Z
	 d	 d fdZddd	Zdd
Zd Zd Z xZS )TorchFunctionDisableVariablez>represents whether torch function overrides are enabled or notr;   r!   c                 $    t          dg g d|}|S r   )ro  r   s      r2   r9   z#TorchFunctionDisableVariable.create  s2    * 

 
 
 

 
r3   NTr(   c                 8   t          |          dk    sJ t          |          dk    sJ ddlm}  |j                    }|| _        |j        j        | _        |j        j        | _	         t                      j        d||d| t          | j                   d S )Nr   r   r    r   r+   )r^   symbolic_convertr!   
current_txonly_subclasssymbolic_torch_function_statetorch_function_subclass_enabled'initial_torch_function_subclass_enabledtorch_function_mode_enabled#initial_torch_function_mode_enabledr,   r-   r   r   )r/   r%   r&   rt  r0   r!   r;   r1   s          r2   r-   z%TorchFunctionDisableVariable.__init__  s     =!!Q&&&&>""a''''<<<<<<-"-//*,L 	4 ,H 	0 	 	
'	
 	
JP	
 	
 	
 	d,-----r3   c                 f     | fd}| _         j                             j                   d S )Nc                  ^     j         j        _         j        s j         j        _        d S d S r5   )rw  ru  rv  rt  rx  r:   s   r2   r?   z9TorchFunctionDisableVariable.set_cleanup_hook.<locals>.fn  sB    @ 0P ) D 4PPP r3   r@   rE   s   `` r2   r7   z-TorchFunctionDisableVariable.set_cleanup_hook  sN    :      
	""4<00000r3   c                 r    t          |          dk    sJ d|j        _        | j        sd|j        _        d S d S )Nr   F)r^   ru  rv  rt  rx  r/   r;   r  s      r2   r6   z'TorchFunctionDisableVariable._call_func   sM    6{{aKP(H! 	QKPB,HHH	Q 	Qr3   c                     dS )Nztorch._Cr+   rc   s    r2   rN   z(TorchFunctionDisableVariable.module_name      zr3   c                     | j         rdS dS )NDisableTorchFunctionSubclassDisableTorchFunction)rt  rc   s    r2   rO   z$TorchFunctionDisableVariable.fn_name	  s     	211%%r3   ru   rm   rt   r5   )rx   ry   rz   r   r   r   r   TORCH_FUNCTION_STATEr   r   r9   r-   r7   r6   rN   rO   r|   r}   s   @r2   ro  ro    s        HH//11<3TUU   \ AE.	. . . . . .*1 1 1 1 1Q Q Q Q  & & & & & & &r3   ro  c                        e Zd ZdZ e e            ej                  Ze	dd            Z
dd fdZd Zdd	Zd
 Zd Z xZS )DeterministicAlgorithmsVariablezVrepresents torch.{are_deterministic_algorithms_enabled,use_deterministic_algorithms}()r;   r!   c                     t          d|gt          j                    gd|}|                    | |g           |                    |            |S r   )r  r   $are_deterministic_algorithms_enabledr6   r7   rI  s       r2   r9   z&DeterministicAlgorithmsVariable.create  sj    - 
'.!FHHI
 
 
 

 	rL>***R   
r3   Nr(   c                 h     t                      j        d||d| t          | j                   d S r   r.  r.   s       r2   r-   z(DeterministicAlgorithmsVariable.__init__!  sN     	
'	
 	
JP	
 	
 	
 	d,-----r3   c                 @    t           j                            d           S r5   r   r8   r9   r:   s     r2   r<   z%DeterministicAlgorithmsVariable.enter'      )00666r3   c                     t          |          dk    sJ |d         }|j                            dt          j        j        |fi            t          j                            |           d S r:  )r^   rB   r   r   r   _set_deterministic_algorithmsr<  s       r2   r6   z*DeterministicAlgorithmsVariable._call_func*  sj    6{{aq	
	UXCeXr	
 	
 	
 	..u55555r3   c                     dS r>  r+   rc   s    r2   rN   z+DeterministicAlgorithmsVariable.module_name2  r?  r3   c                     dS )Nuse_deterministic_algorithmsr+   rc   s    r2   rO   z'DeterministicAlgorithmsVariable.fn_name5  s    --r3   ru   r5   rt   )rx   ry   rz   r   r   r   r   DETERMINISTIC_ALGORITHMSr   r   r9   r-   r<   r6   rN   rO   r|   r}   s   @r2   r  r    s        ``\B     \. . . . . . .7 7 76 6 6 6  . . . . . . .r3   r  c                   X     e Zd ZdZedd            Zdd fdZd Zdd	Zd
 Z	d Z
 xZS )!DisabledSavedTensorsHooksVariablez;represents torch.autograd.graph.disable_saved_tensors_hook.r;   r!   c                     t          d|gt          j        j                                        gd|}|                    | |g           |                    |            |S r   )r  r   r   	_autograd/_saved_tensors_hooks_get_disabled_error_messager6   r7   rI  s       r2   r9   z(DisabledSavedTensorsHooksVariable.create<  st    / 
'."RRTT
 

 
 
 	rL>***R   
r3   Nr(   c                 @     t                      j        d||d| d S r   r,   r-   r.   s       r2   r-   z*DisabledSavedTensorsHooksVariable.__init__I  s?     	
'	
 	
JP	
 	
 	
 	
 	
r3   c                 @    t           j                            d           S r5   r  r:   s     r2   r<   z'DisabledSavedTensorsHooksVariable.enterN  r  r3   c                    t          |          dk    sJ |d         }|X|j                            dt          j        j        j        |fi            t          j        j                            |           d S |j                            dt          j        j        j        di            t          j        j                                         d S )Nr   r   rk   r+   )r^   rB   r   r   r   r  _saved_tensors_hooks_disable_saved_tensors_hooks_enabler<  s       r2   r6   z,DisabledSavedTensorsHooksVariable._call_funcQ  s    6{{aq	 I!!"?	   H;;EBBBBB I!!!3!OQSUW   H::<<<<<r3   c                     dS )Nztorch.autograd.graphr+   rc   s    r2   rN   z-DisabledSavedTensorsHooksVariable.module_namef      %%r3   c                     dS )Ndisable_saved_tensors_hooksr+   rc   s    r2   rO   z)DisabledSavedTensorsHooksVariable.fn_namei  s    ,,r3   ru   r5   rt   )rx   ry   rz   r   r   r9   r-   r<   r6   rN   rO   r|   r}   s   @r2   r  r  9  s        EE
 
 
 \

 
 
 
 
 
 

7 7 7= = = =*& & &- - - - - - -r3   r  c                   R     e Zd Zed             Zdd fdZddZd Zd	 Zd
 Z	 xZ
S )AutocastModeVariablec                    | t           j        j        j        t           j        j        j        t           j        j        j        fv sJ  t          j        |           j        |i |}|	                                 g }|
                                 dD ]}|dk    rK| t           j        j        j        t           j        j        j        fv r| t           j        j        j        u rdnd}n|j        |         }t          |t                    r(|                    |                                           |                    |           t!          |fdd i|}|S )N)device_typedtyper   cache_enabledr  r`  cpur&   )r   ampautocast_modeautocastr`  r  inspect	signaturebindapply_defaultsclear	argumentsri   r   appendr  r  )funcrI   r0   
bound_argsr%   keyargr   s           r2   r9   zAutocastModeVariable.createn  sZ   I#,JN#IM"
 
 
 
 
 2W&t,,14B6BB
!!###G 	* 	*Cm##
'	&1 ) ) !%
(? ? ?ffU *3/#// *$$S%;%;%=%=>>>>$$S))))"=PPPPP
r3   Nr(   c                 N     t                      j        d||d| || _        d S r   rd  r.   s       r2   r-   zAutocastModeVariable.__init__  sE     	
'	
 	
JP	
 	
 	
 +r3   r;   r!   c                     |                                   |j                            dt          j        j        | j        fi            t          j        	                    d           S r   )
rG   rB   r   r   r  _exit_autocastr   r   r8   r9   rH   s      r2   rJ   zAutocastModeVariable.exit  sY    
	UY5
}b	
 	
 	
 )00666r3   c                     t          j        j        | j         |                     |fd           |j                            dt           j        j        g | j        R i           | _        d S )Nc                  B    t           j                                       S r5   )r   r  r  )rP  s   r2   rT   z,AutocastModeVariable.enter.<locals>.<lambda>  s    %)*B*B3*G*G r3   rk   )r   r  _enter_autocastr%   r7   rB   r   r   )r/   r;   rP  s     @r2   r<   zAutocastModeVariable.enter  sm    i');<b"G"G"G"GHHHY**UY68N$:L8N8NPR
 



r3   c                     dS )Nztorch.amp.autocast_moder+   rc   s    r2   rN   z AutocastModeVariable.module_name  s    ((r3   c                     dS )Nr  r+   rc   s    r2   rO   zAutocastModeVariable.fn_name  r  r3   r5   rt   ru   r[  r}   s   @r2   r  r  m  s          \>+ + + + + + +7 7 7 7
 
 
) ) )      r3   r  c                   @     e Zd ZdZdd fdZd ZddZd	 Zd
 Z xZ	S )NullContextVariablez>
    This class represents Python contextlib.nullcontext.
    Nr(   c                 >     t                      j        dd|i| d S Nr%   r+   r  )r/   r%   r0   r1   s      r2   r-   zNullContextVariable.__init__  s+    ??}??????r3   c                 `    t           j                            d           }| j        r| j        n|S r5   )r   r8   r9   r%   )r/   r;   nones      r2   r<   zNullContextVariable.enter  s.    )0066%)%7At!!TAr3   r;   r!   c                 @    t           j                            d           S r5   r  rH   s      r2   rJ   zNullContextVariable.exit  r  r3   c                     dS N
contextlibr+   rc   s    r2   rN   zNullContextVariable.module_name  rl  r3   c                     dS Nnullcontextr+   rc   s    r2   rO   zNullContextVariable.fn_name      }r3   r5   rt   ru   )
rx   ry   rz   r   r-   r<   rJ   rN   rO   r|   r}   s   @r2   r  r    s         @ @ @ @ @ @ @B B B7 7 7 7        r3   r  c                   D     e Zd ZdZd fdZd ZddZd	 Zd
 Zd Z	 xZ
S )ProfilerContextVariablea~  
    This class represents a set of torch profiler context objects, where Dynamo
    ignores all the side-effects in the __init__, __enter__ and __exit__ methods
    by treating the object mostly as a `contextlib.nullcontext`, except for edge
    cases like the `__enter__` method which returns the object itself rather
    than `None`, per implementation of the torch objects.
    r(   Nc                 >     t                      j        ddd i| d S r  r  )r/   r0   r1   s     r2   r-   z ProfilerContextVariable.__init__  s+    66t6v66666r3   c                     | S r5   r+   r:   s     r2   r<   zProfilerContextVariable.enter  s    r3   r;   r!   c                 @    t           j                            d           S r5   r  rH   s      r2   rJ   zProfilerContextVariable.exit  r  r3   c                     dS r  r+   rc   s    r2   rN   z#ProfilerContextVariable.module_name  rl  r3   c                     dS r  r+   rc   s    r2   rO   zProfilerContextVariable.fn_name  r  r3   c                 ^    t          dt          |           dg t          j                   d S )Nz2torch.profiler object escaped from compiled regionzXDynamo doesn't support compiling a region that returns a torch.profiler context manager.gb_typecontextexplanationhintsr   strr   SUPPORTABLE)r/   r  s     r2   r_   z#ProfilerContextVariable.reconstruct  sB    HIIr".		
 	
 	
 	
 	
 	
r3   rt   ru   )rx   ry   rz   r   r-   r<   rJ   rN   rO   r_   r|   r}   s   @r2   r  r    s         7 7 7 7 7 7  7 7 7 7    
 
 
 
 
 
 
r3   r  c                   H     e Zd Zed	d            Zd
d fdZd Zd	dZ xZS )StreamContextVariabler;   r!   c           
          ddl m} t          |j                  j        } |t
          | | j                            d|di                     }t          d|g|g|j        d|S )Nr   wrap_fx_proxy_clsrk   r5   )r%   r&   rb  r+   )	builderr  r   rb  current_streamStreamVariablerB   create_proxyr  )r;   r+  r0   r  current_stream_methodr  s         r2   r9   zStreamContextVariable.create  s    ...... 8!
 !

 	 +*I""%	 	
 	
 % 
'.*+&
 
 	
 
 	
r3   Nr(   c                      t                      j        d||d| || _        t          | j                  j        | _        t          | j                  j        | _        d S r   )r,   r-   rb  r   
set_stream_set_stream_by_idset_stream_id)r/   r%   rb  r&   r0   r1   s        r2   r-   zStreamContextVariable.__init__  sm     	
'	
 	
JP	
 	
 	
 24;??J5dkBBTr3   c                      j         d                                         A|j                            d j         j         d                                         fi            nF j         d         j        }|j                            d j        |j        |j        |j	        fi                                  j         d         j                    
                    | fd           d S )Nr   rk   c                  N                           j        d         j                  S )Nr   )r  r&   r   rc   s   r2   rT   z-StreamContextVariable.enter.<locals>.<lambda>  s    $//$:Ma:P:V*W*W r3   )r%   r  rB   r  r  r   r  	stream_iddevice_indexr  r7   )r/   r;   streams   `  r2   r<   zStreamContextVariable.enter  s    a ))++7I""#A&//113	    '*0FI"""!6#68JK	   	*1-3444b"W"W"W"WXXXXXr3   c                     |j                             d| j        | j        d                                         fi            |                                  d S )Nrk   r   )rB   r  r  r&   r  rG   rH   s      r2   rJ   zStreamContextVariable.exit  s[    
	O #,,..0		
 	
 	
 	r3   ru   r5   rt   )	rx   ry   rz   r   r9   r-   r<   rJ   r|   r}   s   @r2   r  r    s        
 
 
 \
.U U U U U U UY Y Y*       r3   r  c                   f     e Zd ZdZed             Zed             Zd fdZd Zdd
Z	ddZ
 xZS )PreserveVersionContextVariablez?
    Wraps torch.autograd._unsafe_preserve_version_counter
    c                     t          |t          j                  r7t          j         fd|fD                       }t          j        |g          }n%t          j         fd|j        D                       }t          ||          S )Nc                 <    g | ]}|                     d           S _versionr   rY   r   r;   s     r2   r[   zNPreserveVersionContextVariable._create_lambda_from_tensors.<locals>.<listcomp>+  s'    BBB1r:..BBBr3   c                 <    g | ]}|                     d           S r  r  r  s     r2   r[   zNPreserveVersionContextVariable._create_lambda_from_tensors.<locals>.<listcomp>0  s'    FFF1r:..FFFr3   )ri   r   TensorVariableTupleVariabler	  r  )r;   tensorsversionss   `  r2   _create_lambda_from_tensorsz:PreserveVersionContextVariable._create_lambda_from_tensors'  s    gy788 	 .BBBB	BBB H  -wi88GG .FFFFFFF H .gx@@@r3   c                 2     t          j         fd          S )Nc                 :    t                               |           S r5   )r  r  )r  r;   s    r2   rT   z<PreserveVersionContextVariable.constructor.<locals>.<lambda>7  s    :VVG  r3   )r   LambdaVariable)r;   s   `r2   constructorz*PreserveVersionContextVariable.constructor4  s,    '   
 
 	
r3   r(   Nc                    |                     dd             t                      j        di | || _        || _        t          | j        t          j                  rt          j        | j        g          | _        t          | j        t          j	        t          j
        f          r!t          j        | j        g          | _        d S d S r  )
setdefaultr,   r-   r  prev_versionsri   r   r  r  r8   r  )r/   r  r  r0   r1   s       r2   r-   z'PreserveVersionContextVariable.__init__<  s    /4000""6"""*dlI$<== 	C$2DL>BBDL!;Y=V W
 
 	O "+!8$:L9M!N!ND	O 	Or3   c                     d S r5   r+   r:   s     r2   r<   z$PreserveVersionContextVariable.enterI  s    r3   r;   r!   c                 x    ddl m} t          j        |                              || j        | j        gi           S )Nr   )_unsafe_set_version_counter)tensor_version_opr  r   TorchInGraphFunctionVariablerk   r  r  )r/   r;   rI   r  s       r2   rJ   z#PreserveVersionContextVariable.exitL  sH    CCCCCC5'
 

-T\4+=>
C
C	Dr3   rK   r   c                 ^    t          dt          |           dg t          j                   d S )NzLtorch.autograd._unsafe_preserve_version_counter escaped from compiled regionzyDynamo doesn't support compiling a region that returns a torch.autograd._unsafe_preserve_version_counter context manager.r  r  rP   s     r2   r_   z*PreserveVersionContextVariable.reconstructS  sE    bIIU".
	
 
	
 
	
 
	
 
	
 
	
r3   rt   ru   rv   )rx   ry   rz   r   r   r  r  r-   r<   rJ   r_   r|   r}   s   @r2   r  r  "  s          
A 
A \
A 
 
 \
O O O O O O  D D D D
 
 
 
 
 
 
 
r3   r  c                        e Zd Z e e            ej                  Zedd            Z		 d	 d fdZ
d ZddZ	 	 	 	 	 	 d fdZddZd Zd Z xZS )&FSDPParamGroupUseTrainingStateVariabler;   r!   c                 >    t          d||g|j        j        gd|}|S )N)param_group_varr%   r&   r+   )r  r   _training_state)r;   r  r+  r0   r   s        r2   r9   z-FSDPParamGroupUseTrainingStateVariable.created  s@    4 
+'.+1AB
 
 	
 
 
r3   Nr(   c                 v     t                      j        d||d| || _        t          | j                   d S r   )r,   r-   r  r   r   )r/   r  r%   r&   r0   r1   s        r2   r-   z/FSDPParamGroupUseTrainingStateVariable.__init__n  sX     	 	
'	
 	
JP	
 	
 	
  /d,-----r3   c                 v    |                      || j                   t          j                            d           S r5   r0  r:   s     r2   r<   z,FSDPParamGroupUseTrainingStateVariable.enterw  r1  r3   c                 v    |                      || j                   t          j                            d           S r5   r3  rH   s      r2   rJ   z+FSDPParamGroupUseTrainingStateVariable.exit{  r4  r3   rI   re   r0   rf   c                     |                      || j                   t                                          |||          S r5   r6  r7  s       r2   rk   z4FSDPParamGroupUseTrainingStateVariable.call_function  r8  r3   c                 ,   t          |          dk    sJ |d         }| j        j        j        |k    ra| j                            |dt
          j                            d          t          j        |          fi            || j        j        _        d S d S )Nr   r   __setattr__r  )	r^   r  r   r  call_methodr   r8   r9   EnumVariabler<  s       r2   r6   z1FSDPParamGroupUseTrainingStateVariable._call_func  s    6{{aq	%5>> ,,.556GHH*511    :?D &666 ?>r3   c                     dS )NzDtorch.distributed.fsdp._fully_shard._fsdp_param_group.FSDPParamGroupr+   rc   s    r2   rN   z2FSDPParamGroupUseTrainingStateVariable.module_name  s    UUr3   c                     dS )Nuse_training_stater+   rc   s    r2   rO   z.FSDPParamGroupUseTrainingStateVariable.fn_name      ##r3   ru   r5   rt   rC  )rx   ry   rz   r   r   r   FSDP_TRAINING_STATEr   r   r9   r-   r<   rJ   rk   r6   rN   rO   r|   r}   s   @r2   r  r  a  s       //11<3STT   \ >B.	. . . . . .7 7 77 7 7 77#7 &7 -	7 7 7 7 7 7? ? ? ?V V V$ $ $ $ $ $ $r3   r  c                        e Zd ZdZeddd            Z	 	 ddeej        j	        j
                 ded	df fd
Zed             Zd ZddZd Zd Z xZS )SDPAKernelVariablez)represents torch.nn.attention.sdpa_kernelFr;   r!   c                 t    t          |t          j        j        j                  r|g}t          d|d |d|}|S )N)r%   r&   set_priorityr+   )ri   r   nn	attention
SDPBackendr  )r;   backendsr   r0   r   s        r2   r9   zSDPAKernelVariable.create  sV    h 2 =>> 	" zH  
"%
 
 	
 
 
r3   Nr%   r   r(   c                 N     t                      j        d||d| || _        d S r   )r,   r-   r   )r/   r%   r&   r   r0   r1   s        r2   r-   zSDPAKernelVariable.__init__  sG     	 	
'	
 	
JP	
 	
 	
 )r3   c                 $      fd|D             }|S )Nc                 ~    g | ]9}j                             d t          j        j        j        |j        fi           :S )rk   )rB   r   r   r!  r"  _backend_from_stringr   )rY   backendr;   s     r2   r[   z9SDPAKernelVariable._backends_to_nodes.<locals>.<listcomp>  sU     
 
 
  I!!"7	 
 
 
r3   r+   )r;   r$  nodess   `  r2   _backends_to_nodesz%SDPAKernelVariable._backends_to_nodes  s4    
 
 
 
 $
 
 
 r3   c                     t           j        j                             j                   _                             | fd           t           j        j                             j         j                    	                    | j                  }|j
                            dt           j        j        j        |t           j                  fi            t          j                            d           S )N)with_priorityc                  d    t           j        j                             j         j                  S )Nr   )r   r!  r"  _sdpa_kernelprev_backendsr   rc   s   r2   rT   z*SDPAKernelVariable.enter.<locals>.<lambda>  s,    EH&33"1B 4   r3   r/  rk   )r   r!  r"  _cur_sdpa_kernel_backendsr   r1  r7   r0  r%   r+  rB   r   boolr   r8   r9   )r/   r;   r  s   `  r2   r<   zSDPAKernelVariable.enter  s    "X/II+ J 
 
 	   	
 	
 	
 	''T-> 	( 	
 	
 	
 %%b$*<==
	H+$t())*		
 	
 	
 )00666r3   c                 (   |                                   |                     || j                  }|j                            dt
          j        j        j        |t          | j
                  fi            t          j                            d           S r   )rG   r+  r1  rB   r   r   r!  r"  r0  r3  r   r   r8   r9   )r/   r;   rI   r  s       r2   rJ   zSDPAKernelVariable.exit  s    %%b$*<==
	H+$t())*		
 	
 	
 )00666r3   c                     dS )Nztorch.nn.attentionr+   rc   s    r2   rN   zSDPAKernelVariable.module_name  r  r3   c                     dS )N_sdpa_kernel_variadicr+   rc   s    r2   rO   zSDPAKernelVariable.fn_name  s    &&r3   rB  ru   r   )rx   ry   rz   r   r   r9   listr   r!  r"  r#  r3  r-   r+  r<   rJ   rN   rO   r|   r}   s   @r2   r  r    s        33	 	 	 	 \	 "	
) 
)EH.9:
) 	
) 

) 
) 
) 
) 
) 
)   \7 7 7,	7 	7 	7 	7$ $ $
' ' ' ' ' ' 'r3   r  c                   L     e Zd Zd fdZd Z	 	 	 	 	 	 d fd
Zd ZddZ xZS )r  r(   Nc                     |&d|j         j        v r|j         j        d         |k    sJ |j        j        |j        k    s
J d             t	                      j        di | || _        || _        || _        d S )Nexample_valuez.stream value is not equal to the passed devicer+   )r  metarb  r   r,   r-   r   r   )r/   r   r   rb  r0   r1   s        r2   r-   zStreamVariable.__init__  s    EJO!C!C:??3u<<<<| FK///< 0// 	""6"""

r3   c                     t           j        S r5   )r   Streamrc   s    r2   python_typezStreamVariable.python_type  s
    |r3   rI   re   r0   rf   r   c                 4   t          | j        |          sJ d|             ddlm}m} ddlm} |dv r6 |j        j        d|g || g|z   |          R   t          j
        d           S |dk    r8 |t          j
        | |j        j        d|g || g|z   |          R  	          S |d
k    r3 |t          | |j        j        d|g || g|z   |          R  	          S ||v rt          |          dk    r||sz|d         }t          |t                    s$t          j
                            t                     S t          j
                             ||         | j        |j                            S t#                                          ||||          S )Nzno stream method found named r   )cmp_name_to_op_mappingproxy_args_kwargsr   r  )wait_streamsynchronize
wait_eventr  query
target_clsr;   r   record_eventr   )hasattrr   utilsrA  rB  r  r  rB   r  r   r8   EventVariabler^   ri   r  r9   NotImplementedr,   r  )
r/   r;   r   rI   r0   rA  rB  r  otherr1   s
            r2   r  zStreamVariable.call_method   s)    tz4((PP*P$*P*PPP(EEEEEEEE......???"BI"t&7&7v&N&N    -d333W__$$$5,bi,!4*;*;TFTM6*R*R      ^##$$(,bi,!4*;*;TFTM6*R*R      +++D		Qv GEe^44 I 188HHH-44,&t,TZEE   ww""2tT6:::r3   c                     | j         S r5   r   rc   s    r2   r  zStreamVariable.as_proxy-  
    zr3   rK   r   c                     | j         rJ d| j         }|j        j                            || j                  }|                    |                    |d                     d S )N_stream_Tadd)r   rb  r;   rB   install_global_by_idr   append_outputcreate_load_globalr/   rK   prefixr   s       r2   r_   zStreamVariable.reconstruct0  sk     ; *DK))z 55fdjIIg8848HHIIIIIr3   rt   rI   re   r0   rf   r(   r   rv   )	rx   ry   rz   r-   r?  r  r  r_   r|   r}   s   @r2   r  r    s        	 	 	 	 	 	  +; &	+;
 -+; 
+; +; +; +; +; +;Z  J J J J J J J Jr3   r  c                   B     e Zd Zd fdZ	 	 	 	 	 	 dd	Zd
 ZddZ xZS )rL  r(   Nc                     |&d|j         j        v r|j         j        d         |k    sJ  t                      j        di | || _        || _        d S )Nr;  r+   )r  r<  r,   r-   r   r   )r/   r   r   r0   r1   s       r2   r-   zEventVariable.__init__@  s`    EJO!C!C:??3u<<<<""6"""



r3   rI   re   r0   rf   r   c                    ddl m} ddlm} |dv r6 |j        j        d|g || g|z   |          R   t          j        d           S |dk    r8 |t          j        | |j        j        d|g || g|z   |          R            S t          | j	                  j
         d	t          | j	                  j         d	| }t          d
t          |          d| dg t          j                   d S )Nr   )rB  r   r  )waitrecordrD  r  rF  rG  .zUnsupported event methodz#Dynamo doesn't support tracing the zC method. We currently support wait, record, synchronize, and query.r  )rK  rB  r  r  rB   r  r   r8   r   r   ry   rz   r   r  r   r  )r/   r;   r   rI   r0   rB  r  method_names           r2   r  zEventVariable.call_methodG  s~    	.-----......444"BI"t&7&7v&N&N    -d333W__$$$5,bi,!4*;*;TFTM6*R*R      
##.WWdj1A1A1NWWQUWW  2D		N+ N N N&2     r3   c                     | j         S r5   rP  rc   s    r2   r  zEventVariable.as_proxyl  rQ  r3   rK   r   c                     | j         rJ d}|j        j                            || j                  }|                    |                    |d                     d S )N_eventTrT  )r   r;   rB   rV  r   rW  rX  rY  s       r2   r_   zEventVariable.reconstructo  s_     ;z 55fdjIIg8848HHIIIIIr3   rt   r[  rv   )rx   ry   rz   r-   r  r  r_   r|   r}   s   @r2   rL  rL  ?  s             # &	#
 -# 
# # # #J  J J J J J J J Jr3   rL  c                   8     e Zd ZdZd
 fdZddZd Zd	 Z xZS )DynamoConfigPatchVariablez,represents torch._dynamo.patch_dynamo_configr(   Nc                 R   t          |                                          } t                      j        d|fd d| i | _        |D ]1\  }}t
          j        j                            |          | j        |<   2t          | j                                                  f| _        d S r   )	r  r	  r,   r-   r&   r   rT  rU  r   )r/   r%   r0   r  _r1   s        r2   r-   z"DynamoConfigPatchVariable.__init__~  s    m113344W'7WWPVWWW # 	M 	MFC',}';'G'G'L'LD$$$T%8%>%>%@%@AACr3   r;   r!   c                     t          |          dk    sJ |d         }|D ]*\  }}t          j        j                            ||           +d S rh   )r^   r   rT  rU  r  )r/   r;   r  r   r  rZ   s         r2   r6   z$DynamoConfigPatchVariable._call_func  s]    6{{aq	 	7 	7HCM ,,S#6666	7 	7r3   c                     dS Nztorch._dynamor+   rc   s    r2   rN   z%DynamoConfigPatchVariable.module_name      r3   c                     dS )Npatch_dynamo_configr+   rc   s    r2   rO   z!DynamoConfigPatchVariable.fn_name  s    $$r3   rt   ru   	rx   ry   rz   r   r-   r6   rN   rO   r|   r}   s   @r2   rg  rg  y  s{        66D D D D D D7 7 7 7  % % % % % % %r3   rg  c                   8     e Zd ZdZd
 fdZddZd Zd	 Z xZS )ErrorOnGraphBreakVariablez-represents torch._dynamo.error_on_graph_breakr(   Nc                 \     t                      j        d|ft                      fd| d S r   )r,   r-   r   )r/   error_on_graph_breakr0   r1   s      r2   r-   z"ErrorOnGraphBreakVariable.__init__  sN     	
/15779	
 	
 	
 	
 	
 	
 	
r3   r;   r!   c                 Z    t          |          dk    sJ t          |d                    d S rh   )r^   r   r}  s      r2   r6   z$ErrorOnGraphBreakVariable._call_func  s1    6{{a!&),,,,,r3   c                     dS rl  r+   rc   s    r2   rN   z%ErrorOnGraphBreakVariable.module_name  rm  r3   c                     dS )Nrt  r+   rc   s    r2   rO   z!ErrorOnGraphBreakVariable.fn_name  r  r3   rt   ru   rp  r}   s   @r2   rr  rr    su        77
 
 
 
 
 
- - - -  & & & & & & &r3   rr  c                   l     e Zd Zdhej        Zdeeef         ddf fdZ	 	 	 	 	 	 	 	 ddZ	ddZ
 xZS )WithExitFunctionVariabletargetrP  r(   Nc                      t                      j        di | t          |t          t          f          sJ || _        || _        d S r*   )r,   r-   ri   r#   r   rP  rz  )r/   rP  rz  r0   r1   s       r2   r-   z!WithExitFunctionVariable.__init__  s^     	""6""")+IJ
 
 	
 	
 
 r3   r;   r!   rI   re   r0   rf   r   c                 0    |rJ  | j         j        |g|R  S r5   )rP  rJ   rj   s       r2   rk   z&WithExitFunctionVariable.call_function  s+     ztx}R'$''''r3   rK   r   c                    | j                                        j        j        j        rt
          j        dk    rV                    t          d                     t
          j        dk     r$                    t          dd                     	                    fd| j         j
        D                        	                    t          t          | j         j
                  d                                         t          | j                                                 t          d	                     d S d S )
N)      	PUSH_NULL)r~     SWAPr   )r  c                 :    g | ]}                     |          S r+   rV   rX   s     r2   r[   z8WithExitFunctionVariable.reconstruct.<locals>.<listcomp>  s'    RRRC**3//RRRr3   FPOP_TOP)rP  rQ   r;   rB   partial_convertsysversion_inforW  r
   r]   r%   r	   r^   r   rz  rP   s    `r2   r_   z$WithExitFunctionVariable.reconstruct  s?    	!!'***:, 	A7**%%&8&E&EFFF#g--))*<V*K*K*KLLL!!RRRR48;QRRR   !!$S)?%@%@%HH   !!"3DK"@"@AAA!!"4Y"?"?@@@@@	A 	Ar3   rw   rv   )rx   ry   rz   r   r{   r   r#   r   r-   rk   r_   r|   r}   s   @r2   ry  ry    s        		'N
*,JJK
 
     (#( &( -	(
 
( ( ( (A A A A A A A Ar3   ry  )Mr   r  r  r
  typingr   r   torch._Cr   torch._guardsr    r   r   bytecode_transformationr	   r
   r   device_interfacer   excr   guardsr   r   r   r   r   rK  r   r   baser   	functionsr   r   r   r   r   r   r   r   user_definedr   torch._dynamo.codegenr   torch._dynamo.symbolic_convertr!   r#   r   r   r   r   r   r   r   r   r   r  r(  rF  r]  ro  r  r  r  r  r  r  r  r  r  r  rL  rg  rr  ry  r+   r3   r2   <module>r     s   (  



  ' ' ' ' ' ' ' '        + + + + + + + +         
 8 7 7 7 7 7 " " " " " " 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 H H H H H H H H ! ! ! ! ! !	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 4 3 3 3 3 3  E//////DDDDDD] ] ] ] ]o ] ] ]@( ( ( ( (%> ( ( (V) ) ) ) )+I ) ) )8%7 %7 %7 %7 %70G %7 %7 %7P!7 !7 !7 !7 !77N !7 !7 !7H&7 &7 &7 &7 &7,C &7 &7 &7R#7 #7 #7 #7 #7&= #7 #7 #7L#7 #7 #7 #7 #75 #7 #7 #7L$7 $7 $7 $7 $7-D $7 $7 $7NM M M M M&= M M M>17 17 17 17 17-D 17 17 17h7" 7" 7" 7" 7". 7" 7" 7"t@  @  @  @  @ 3 @  @  @ F/ / / / /0 / / /d>& >& >& >& >&#: >& >& >&B'. '. '. '. '.&= '. '. '.T1- 1- 1- 1- 1-(? 1- 1- 1-h9 9 9 9 92 9 9 9x    1   , 
  
  
  
  
5  
  
  
F= = = = =3 = = =@<
 <
 <
 <
 <
%< <
 <
 <
~:$ :$ :$ :$ :$-D :$ :$ :$zP' P' P' P' P'0 P' P' P'fKJ KJ KJ KJ KJ_ KJ KJ KJ\7J 7J 7J 7J 7JO 7J 7J 7Jt% % % % % 7 % % %>& & & & & 7 & & &*-A -A -A -A -A -A -A -A -A -Ar3   