
    N jE              	           S SK r S SKJr  S SKJrJr  S SKrS SKJr  S SK	J
r
  S SKJrJr  SSKJr  SS	KJr  SS
KJrJr  SSKJrJr  SSKJr  SSKJr  SSKJrJr  SSKJ r   SSK!J"r"  \(       a  S SK#J$r$  SSK%J&r&  S SK'J(r(  \RR                  r)S\S\S\*4S jr+S\,\   S\S\*4S jr-S\R\                  SSSS4S jr/S\R\                  S\*4S jr0S\*S\Rb                  4S  jr2S\*S\Rf                  4S! jr4\(" S"S#S$9S%\*S&\*SS4S' j5       r5\5Rl                  S%\*S&\*SS4S( j5       r7\" \Rp                  Rr                  Rt                  Rv                  5        \(" S)S#S$9S%\*S&\*SS4S* j5       r<\<Rl                  S%\*S&\*SS4S+ j5       r7\" \Rp                  Rr                  Rz                  Rv                  5        \(" S,S#S$9S-\*S.\*SS4S/ j5       r>\>Rl                  S-\*S.\*SS4S0 j5       r7\" \Rp                  Rr                  R|                  Rv                  5        \(" S1S#S$9S-\*S.\*SS4S2 j5       r?\?Rl                  S-\*S.\*SS4S3 j5       r7\" \Rp                  Rr                  R~                  Rv                  5        \(" S4S#S$9S5\*S6\*SS4S7 j5       r@\@Rl                  S-\*S.\*SS4S8 j5       r7\" \Rp                  Rr                  R                  Rv                  5        \(" S9S#S$9S:\*S;\*S<\RR                  SS4S= j5       rA\" \Rp                  Rr                  R                  Rv                  5        \(" S>S#S$9S?\RR                  S.\*SS4S@ j5       rB\BRl                  S;\*S:\*S<\RR                  SS4SA j5       r7 " SB SC5      rC " SD SE\ 5      rD " SF SG\D5      rE " SH SI\5      rFg)J    N)Callable)AnyOptional)ConstDictVariable)TupleVariable)has_side_effectProxy   )graph_break_hints)create_call_function)TYPE_CHECKINGunimplemented)get_external_object_by_indexregister_graph_created_objectCurrentStreamSource   )VariableTracker)CONSTANT_VARIABLE_NONEConstantVariable)FxTracebackAnnotateVariable)LazyVariableTracker)InstructionTranslator)	PyCodegen)	custom_opargskwargsreturnc            	          [         R                  " U 0 UD6n[        U[        R	                  [        / 5      [        0 5      5      5      $ N)torchEventr   EventVariable make_construct_in_graph_event_fnr   r   )r   r   events      p/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/torch/_dynamo/variables/streams.py	new_eventr'   #   sC    KK((E(66"04	
     c            	          [         R                  " U 0 UD6n[        U[        R	                  [        / 5      [        0 5      5      5      $ r    )r!   Streamr   StreamVariable!make_construct_in_graph_stream_fnr   r   )r   r   streams      r&   
new_streamr.   -   sC    \\4*6*F(88"04	
 r(   devicecgr   c                    ^ TR                  U4S j5        T" [        U 5      5        TR                  [        SS5      5        g )Nc                  l   > T R                  [        R                  R                  R                  S5      $ Nstash_graph_created_objectload_import_fromr!   _dynamograph_bytecode_inputs__name__)r0   s   r&   <lambda>)_codegen_current_stream.<locals>.<lambda>9   s&    ##MM//88(
r(   r   F)add_push_nullr   extend_outputr   )r/   r0   s    `r&   _codegen_current_streamr>   7   s<    	
 6"#)!U34r(   c                 b   ^  [         R                  R                  T 5      n[        UU 4S j5      $ )Nc                    > [        TU5      $ r    )r>   )_r0   r/   s     r&   r:   $get_current_stream.<locals>.<lambda>E   s    5fbAr(   )r!   acceleratorcurrent_streamr   )r/   r-   s   ` r&   get_current_streamrE   B   s,    --f5F(A r(   indexc                 n    [        U 5      n[        U[        R                  5      (       d
   SU  35       eU$ )Nz3Fork/join stream expected a stream object at index )r   
isinstancer!   r*   )rF   r-   s     r&   _get_stream_by_indexrI   I   s;    )%0Ffell++ 
=eWE+ Mr(   c                 n    [        U 5      n[        U[        R                  5      (       d
   SU  35       eU$ )Nz4Record/wait event expected an event object at index )r   rH   r!   r"   )rF   r%   s     r&   _get_event_by_indexrK   Q   s;    (/EeU[[)) 
>ugF) Lr(   zstreams::fork )mutates_args
from_indexto_indexc                 T    [         R                  R                  [        U5      5        g r    r!   rC   
set_streamrI   rN   rO   s     r&   fork_streamrT   Y   s    
 
  !5h!?@r(   c                     g r    rL   rS   s     r&   rA   rA   a       
 	r(   zstreams::joinc                 T    [         R                  R                  [        U5      5        g r    rQ   rS   s     r&   join_streamrX   l   s    	  !5h!?@r(   c                     g r    rL   rS   s     r&   rA   rA   q   rV   r(   zstreams::record_eventevent_indexstream_indexc                 R    [        U 5      n[        U5      nUR                  U5        g r    )rK   rI   record_eventrZ   r[   r%   r-   s       r&   r]   r]   |   s$    ,E!,/F
r(   c                     g r    rL   rZ   r[   s     r&   rA   rA      rV   r(   zstreams::wait_eventc                 R    [        U 5      n[        U5      nUR                  U5        g r    )rK   rI   
wait_eventr^   s       r&   rb   rb      s$    ,E!,/F
er(   c                     g r    rL   r`   s     r&   rA   rA      rV   r(   zstreams::wait_streamwaiting_stream_indexwaited_on_stream_indexc                 R    [        U 5      n[        U5      nUR                  U5        g r    )rI   wait_stream)rd   re   waiting	waited_ons       r&   rg   rg      s&    "#78G$%;<I	"r(   c                     g r    rL   r`   s     r&   rA   rA      rV   r(   zstreams::sync_deallocwait_event_indexsrc_stream_index
to_deallocc                 j    [         R                  R                  R                  R	                  X5        g)au  An op which waits on an event and moves the last usage of to_dealloc
after the wait, so that after the sync occurs, the deallocation or
subsequent reuse of the tensor's memory will be guaranteed to happen
after a side stream is finished using it.
See https://docs.pytorch.org/docs/stable/generated/torch.Tensor.record_stream.html#torch.Tensor.record_stream
for more detailsN)r!   opsstreamsrb   default)rk   rl   rm   s      r&   sync_deallocrr      s#     
II  (()9Lr(   zstreams::record_streamtensorc                 8    U R                  [        U5      5        g r    )record_streamrI   )rs   r[   s     r&   ru   ru      s    
-l;<r(   c                     g r    rL   )rl   rk   rm   s      r&   rA   rA      s     	r(   c                   t    \ rS rSrSrSS jrSS jrSS jrSS	\\	R                     SS4S
 jjrS\4S jrSrg)SymbolicStreamState   z)Track the currently entered stream if anyr   Nc                 P   SSK Jn  / n[        R                  R	                  5       (       a`  [
        R                  " [        R                  R                  5       U" [        R                  R                  5       R                  5      S9nU/n[        R                  " U5      U l        g )Nr
   r   )source)r{   r   r!   rC   is_availabler   createrD   r/   collectionsdequecur_stream_stack)selfr   	cur_stack
stream_vars       r&   __init__SymbolicStreamState.__init__   s~    0*,	))++,33!!002*5+<+<+K+K+M+T+TUJ $ICNCTCTD
r(   r+   c                 :    U R                   R                  U5        g r    )r   append)r   r-   s     r&   enter_stream SymbolicStreamState.enter_stream   s    $$V,r(   c                 8    U R                   R                  5         g r    )r   popr   s    r&   exit_streamSymbolicStreamState.exit_stream   s    !!#r(   r/   c                     Ub0  [        U R                  5       H  nUR                  U:X  d  M  Us  $    U R                  S   $ )N)reversedr   r/   )r   r/   r-   s      r&   
cur_streamSymbolicStreamState.cur_stream   sA    "4#8#89==F*!M : $$R((r(   c                 2    [        U R                  5      S:  $ )Nr   )lenr   r   s    r&   in_stream_context%SymbolicStreamState.in_stream_context   s    4(()A--r(   )r   )r   N)r-   r+   r   Nr    )r9   
__module____qualname____firstlineno____doc__r   r   r   r   r!   r/   r   boolr   __static_attributes__rL   r(   r&   rx   rx      s=    3
-$)%,,!7 )CS ).4 .r(   rx   c            	          ^  \ rS rSrSr\SSSSS\\\4   SS 4S	 j5       r	S
\
S   S\SS4U 4S jjrSSS\S\4U 4S jjrSSS\S\4U 4S jjrS\4S jrSS jrSrU =r$ )StreamContextVariable   z(This represents torch.cuda.StreamContexttxr   stream_to_enterr+   r   r   c                     [        U40 UD6$ r    )r   )r   r   r   s      r&   r}   StreamContextVariable.create   s     %

 	
r(   r-   Nc                 l   > Xl         [        TU ]  " SSU R                  5       R                  0S S.UD6  g )Nr-   )target_valuesinitial_valuesrL   )r-   superr   
get_streamuser_object_index)r   r-   r   	__class__s      r&   r   StreamContextVariable.__init__  s<     	
#T__%6%H%HI	
 	
r(   r   c                 t   > UR                   R                  U R                  5       5        [        TU ]  U5      $ r    )symbolic_stream_stater   r   r   enterr   r   r   r   s      r&   r   StreamContextVariable.enter
  s/    
 	  --doo.?@w}R  r(   c                 Z   > UR                   R                  5         [        TU ]  " U/UQ76 $ r    )r   r   r   exitr   s      r&   r   StreamContextVariable.exit  s+    
 	  ,,.w|B&&&r(   c                     g)NTrL   r   s    r&   supports_graph_breaks+StreamContextVariable.supports_graph_breaks  s    r(   c                 J    U R                   (       d   S5       eU R                   $ )Nz,Stream context should have a separate streamr-   r   s    r&   r    StreamContextVariable.get_stream  s    {{JJJ{{{r(   r   r   r+   )r9   r   r   r   r   staticmethoddictstrr   r}   r   r   r   r   r   r   r   r   r   __classcell__r   s   @r&   r   r      s    2
#
)
 sCx.
 
!	
 

x(89 
S 
T 
!)!2A!	!')'2A'	't  r(   r   c                     ^  \ rS rSrSr SS\S\R                  S\\	   S\
SS4
U 4S	 jjjrS\4S
 jrSSS\S\\   S\\\4   S\4
U 4S jjrS\4S jrS\4S jrS\4S jrSS jrSS jr\S\S\S\\	S/S4   4S j5       rSrU =r$ )r+   i"  z1Represents the device-agnostic torch.Stream classNproxyvaluer   r   r   c                    > Ub9  SUR                   R                  ;   a  UR                   R                  S   U:X  d   eXl        X l        UR                  U l        X0l        [        TU ]  " S0 UD6  g )Nexample_valuer    )nodemetar   r   r/   r   r   r   r   r   r   r   r   r   s        r&   r   StreamVariable.__init__%  s`     EJJOO!C::???3u<<<

ll!2((r(   c                 "    [         R                  $ r    )r!   r*   r   s    r&   python_typeStreamVariable.python_type9  s    ||r(   r   r   namer   c                   > [        U R                  U5      (       d
   SU 35       eSSKJnJn  SSKJn  US;   a/  UR                  R                  " SU/U" U /U-   U5      Q76   [        $ US:X  a3  U" [        UUR                  R                  " SU/U" U /U-   U5      Q76 S	9$ US
:X  a3  U" [        UUR                  R                  " SU/U" U /U-   U5      Q76 S	9$ X%;   Ga  [        U5      S:X  a  U(       d  SSKJnJn	  U R                   (       a+  U	" U R                   R#                  UR$                  5      5        US   n
['        U
[(        5      (       d  [        R*                  " [,        5      $ U
R                   (       a:  U R                   c   eU	" U R                   R#                  UR$                  5      5        [        R*                  " XR   " U R                  U
R                  5      5      $ [.        TU ]a  XX45      $ )Nzno stream method found named r
   )cmp_name_to_op_mappingproxy_args_kwargsr   wrap_fx_proxy_cls)rg   synchronizerb   call_methodquery
target_clsr   r   r]   )GuardBuilderinstall_guardr   )hasattrr   utilsr   r   builderr   outputcreate_proxyr   r   r#   r   guardsr   r   r{   
make_guardEQUALS_MATCHrH   r+   r}   NotImplementedr   r   )r   r   r   r   r   r   r   r   r   r   otherr   s              r&   r   StreamVariable.call_method<  s    tzz4((P,I$*PP(E.??II""t&7v&N *)W_$+ii,,!4*;TFTM6*R  ^#$(ii,,!4*;TFTM6*R  +D	Qv<{{dkk44\5N5NOP GEe^44'..~>>||{{...dkk44\5N5NOP#**&,TZZE  w"2T::r(   c                     U R                   $ r    r   r   s    r&   as_proxyStreamVariable.as_proxyr      zzr(   c                     g)Nztorch._CrL   r   s    r&   module_nameStreamVariable.module_nameu  s    r(   c                     g)Nr*   rL   r   s    r&   fn_nameStreamVariable.fn_namex  s    r(   r   c                   ^ U R                   (       a   eU R                  b[  TR                  U4S j5        TR                  TR	                  U R                  5      5        TR                  [        SS5      5        g SU R                   3nTR                  R                  R                  X R                  5      nTR                  TR                  USS95        g )Nc                  l   > T R                  [        R                  R                  R                  S5      $ )Nr   r5   codegens   r&   r:   ,StreamVariable.reconstruct.<locals>.<lambda>  s&    00MM77@@2r(   r   F_stream_Tadd)r{   r   r<   append_outputcreate_load_constr=   r   r/   r   r   install_global_by_idr   create_load_globalr   r   prefixr   s    `  r&   reconstructStreamVariable.reconstruct{  s     ;;!!-!! !!'";";D<R<R"ST!!"6q%"@A  }-F::$$99&**MD!!'"<"<Tt"<"LMr(   c                     U $ r    rL   r   s    r&   r   StreamVariable.get_stream  s    r(   c                 0   ^ ^ S[         SSSS 4U U4S jjnU$ )NrF   r   r   r   c                    >^ TR                  U4S j5        TR                  U4S j5        T" T5        T" T5        TR                  [        SS5      5        TR                  [        SS5      5        g )Nc                  l   > T R                  [        R                  R                  R                  S5      $ r3   r5   r   s   r&   r:   NStreamVariable.make_construct_in_graph_stream_fn.<locals>.fn.<locals>.<lambda>  &    00MM77@@0r(   c                  l   > T R                  [        R                  R                  R                  S5      $ )Nbuild_streamr6   r!   r7   r   r9   r   s   r&   r:   r    s%    00MM''00.r(   r
   Fr   r<   r=   r   rF   r   r   r   s    `r&   fn<StreamVariable.make_construct_in_graph_stream_fn.<locals>.fn  g    !! !!
 DMFO!!"6q%"@A!!"6q%"@Ar(   intr   r   r  s   `` r&   r,   0StreamVariable.make_construct_in_graph_stream_fn  .    	Bc 	BK 	BD 	B 	B" 	r(   )r/   r   r   r   r    r   r   r   Nr   )r9   r   r   r   r   r	   r!   r*   r   r  r   r   typer   r   listr   r   r   r   r   r   r   r   r   r   r   r   r,   r   r   r   s   @r&   r+   r+   "  s   ; ,0	)) ||) $C=	)
 ) 
) )(T 4;#4; 4; ?#	4;
 S/)*4; 
4;l% S  N& %6	3$d*	+ r(   r+   c            
         ^  \ rS rSrS\S\R                  S\\   S\	SS4
U 4S jjr
S	S
S\S\\   S\\\4   S\4
S jrS\4S jr\S	S
S\\   S\\\4   SS4S j5       r\S\S\S\\S/S4   4S j5       rSS jrSrU =r$ )r#   i  r   r   r   r   r   Nc                    > Ub9  SUR                   R                  ;   a  UR                   R                  S   U:X  d   e[        TU ]  " S0 UD6  Xl        X l        X0l        g )Nr   rL   )r   r   r   r   r   r   r   r   s        r&   r   EventVariable.__init__  sU     EJJOO!C::???3u<<<"6"

!2r(   r   r   r   r   c                    SSK Jn  SSKJn  US:X  ap  UR                  R                  S[        R                  R                  R                  U R                  [        R                  XU5      R                  40 5        [        $ US:X  ap  UR                  R                  S[        R                  R                  R                  U R                  [        R                  XU5      R                  40 5        [        $ US:X  a/  UR                  R
                  " S	U/U" U /U-   U5      Q76   [        $ US
:X  a3  U" [        UUR                  R
                  " S	U/U" U /U-   U5      Q76 S9$ [!        U R"                  5      R$                   S[!        U R"                  5      R&                   SU 3n[)        S[+        U5      SU S3/ [,        R.                  QS9  g )Nr
   )r   r   r   waitcall_functionrecordr   r   r   r   .zUnsupported event methodz#Dynamo doesn't support tracing the zC method. We currently support wait, record, synchronize, and query.)gb_typecontextexplanationhints)r   r   r   r   r   r   r!   ro   rp   rb   r   r#   _get_stream_argr   r]   r   r  r   r   r   r   r   r   SUPPORTABLE)r   r   r   r   r   r   r   method_names           r&   r   EventVariable.call_method  s    	..6>II""		!!,,**!11"FCUU  *)XII""		!!..**!11"FCUU  *)]"II""t&7v&N *)W_$+ii,,!4*;TFTM6*R  

#../qdjj1A1N1N0OqQUPVW  2D	A+ OM N&22r(   c                     U R                   $ r    r   r   s    r&   r   EventVariable.as_proxy  r   r(   r+   c                     S nU(       a  US   nOU(       a  UR                  S5      nU(       d  U R                  R                  5       nU$ )Nr   r-   )getr   r   )r   r   r   
stream_args       r&   r#  EventVariable._get_stream_arg  sC     
aJH-J11<<>Jr(   r   c                 0   ^ ^ S[         SSSS 4U U4S jjnU$ )NrF   r   r   r   c                    >^ TR                  U4S j5        TR                  U4S j5        T" T5        T" T5        TR                  [        SS5      5        TR                  [        SS5      5        g )Nc                  l   > T R                  [        R                  R                  R                  S5      $ r3   r5   r   s   r&   r:   LEventVariable.make_construct_in_graph_event_fn.<locals>.fn.<locals>.<lambda>  r  r(   c                  l   > T R                  [        R                  R                  R                  S5      $ )Nbuild_eventr	  r   s   r&   r:   r0    s%    00MM''00-r(   r
   Fr   r
  r  s    `r&   r  :EventVariable.make_construct_in_graph_event_fn.<locals>.fn  r  r(   r  r  s   `` r&   r$   .EventVariable.make_construct_in_graph_event_fn  r  r(   c                     U R                   (       a   eSnUR                  R                  R                  X R                  5      nUR                  UR                  USS95        g )N_eventTr   )r{   r   r   r   r   r   r   r   s       r&   r   EventVariable.reconstruct  sQ     ;;zz  55fjjIg8848HIr(   )r   r   r   r  )r9   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   s   @r&   r#   r#     s   33 {{3 $C=	3
 3 
39#9 9 ?#	9
 S/)*9 
9v%  #?# S/)* 
	   %6	3$d*	+ ,J Jr(   r#   )Gr~   collections.abcr   typingr   r   r!   torch._dynamo.variables.dictsr   torch._dynamo.variables.listsr   torch.fxr   r	    r   bytecode_transformationr   excr   r   r8   r   r   r{   r   baser   constantr   r   ctx_managerr   lazyr   torch._dynamo.symbolic_convertr   r   r   torch._library.custom_opsr   Tensorr  r'   tupler.   r/   r>   rE   r*   rI   r"   rK   rT   register_fakerA   ro   rp   forkrq   rX   joinr]   rb   rg   rr   ru   rx   r   r+   r#   rL   r(   r&   <module>rK     s    $    ; 7 +   : . ) ! > 4 % D# / 
S C C eCj C C 5ELL 5k 5d 5u||    s u{{  ?,AAA 
A -A 			 
	 	 		!!&&.. / ?,AC A3 A4 A -A 			 
	 	 		!!&&.. / "4c    5 			 
	 	 		!!..66 7  r2C s t  3 			 
	 	 		!!,,44 5 !3#c #3 #4 # 4# 			 
	 	 		!!--55 6 "4	M	M-0	M>Cll	M		M 5	M 		!!..66 7 #"5=%,, =c =d = 6= 			 	 
		 	!. !.H+7 +\D* DN|JO |Jr(   