Ë
    ÃÓ^j}e  ã            	       ó¸
  — U d dl Z d dlmZ d dlmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZmZmZmZmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ erd dl%m&Z& ddl'm(Z( d dl)m*Z* ejV                  Z+dedede,fd„Z-de.e   dede,fd„Z/dej`                  ddddfd„Z1dej`                  de,fd„Z2de,dejf                  fd „Z4de,dejj                  fd!„Z6 e*d"d#¬$«      d%e,d&e,ddfd'„«       Z7e7jp                  d%e,d&e,ddfd(„«       Z9 eejt                  jv                  jx                  jz                  «        e*d)d#¬$«      d%e,d&e,ddfd*„«       Z>e>jp                  d%e,d&e,ddfd+„«       Z9 eejt                  jv                  j~                  jz                  «        e*d,d#¬$«      d-e,d.e,ddfd/„«       Z@e@jp                  d-e,d.e,ddfd0„«       Z9 eejt                  jv                  j€                  jz                  «        e*d1d#¬$«      d-e,d.e,ddfd2„«       ZAeAjp                  d-e,d.e,ddfd3„«       Z9 eejt                  jv                  j‚                  jz                  «        e*d4d#¬$«      d-e,ddfd5„«       ZBeBjp                  d-e,ddfd6„«       Z9 eejt                  jv                  j„                  jz                  «        e*d7d#¬$«      d8eCd9e,ddfd:„«       ZDeDjp                  d8eCd9e,ddfd;„«       Z9 eejt                  jv                  jˆ                  jz                  «        e*d<d#¬$«      d.e,ddfd=„«       ZEeEjp                  d.e,ddfd>„«       Z9 eejt                  jv                  jŠ                  jz                  «        e*d?d#¬$«      d@e,dAe,ddfdB„«       ZFeFjp                  d-e,d.e,ddfdC„«       Z9 eejt                  jv                  jŒ                  jz                  «        e*dDd#¬$«      dEe,dFe,dGejV                  ddfdH„«       ZGeGjp                  dEe,dFe,dGejV                  ddfdI„«       Z9 eejt                  jv                  jŽ                  jz                  «        e*dJd#¬$«      dKejV                  d.e,ddfdL„«       ZHeHjp                  dKejV                  d.e,ddfdM„«       Z9 eejt                  jv                  j�                  jz                  «        G dN„ dO«      ZI G dP„ dQe"«      ZJ G dR„ dSeJ«      ZK G dT„ dUeK«      ZL G dV„ dWeK«      ZMejœ                  jž                  eLej                   jž                  eMiZQeReSeTeK   f   eUdX<   dYeSdeTeK   dz  fdZ„ZV G d[„ d\e«      ZWy)]é    N)ÚCallable)ÚAnyÚOptional)ÚConstDictVariable)ÚTupleVariable)Úhas_side_effectÚProxyé   )Úgraph_break_hints)Úcreate_call_function)ÚTYPE_CHECKINGÚunimplemented)ÚCURRENT_STREAM_INDEXÚget_external_object_by_indexÚregister_graph_created_objectÚregister_user_objectÚreset_user_object_tracking©ÚCurrentStreamSourceé   )ÚVariableTracker©ÚConstantVariable)ÚFxTracebackAnnotateVariable)ÚLazyVariableTracker)ÚInstructionTranslatorBase)Ú	PyCodegen)Ú	custom_opÚargsÚkwargsÚreturnc            	      ó�   — t        j                  | i |¤Ž}t        |t        j	                  t        g «      t        i «      «      «      S ©N)ÚtorchÚEventr   ÚEventVariableÚ make_construct_in_graph_event_fnr   r   )r   r    Úevents      új/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/variables/streams.pyÚ	new_eventr*   &   sC   € Ü�K‰K˜Ð( Ñ(€EÜ(ØÜ×6Ñ6Ü˜"ÓÔ0°Ó4ó	
óð ó    c            	      ó�   — t        j                  | i |¤Ž}t        |t        j	                  t        g «      t        i «      «      «      S r#   )r$   ÚStreamr   ÚStreamVariableÚ!make_construct_in_graph_stream_fnr   r   )r   r    Ústreams      r)   Ú
new_streamr1   0   sC   € Ü�\‰\˜4Ð* 6Ñ*€FÜ(ØÜ×8Ñ8Ü˜"ÓÔ0°Ó4ó	
óð r+   ÚdeviceÚcgr   c                 ó†   ‡— ‰j                  ˆfd„«        ‰t        | «      «       ‰j                  t        dd«      «       y )Nc                  ól   •— ‰ j                  t        j                  j                  j                  d«      S ©NÚstash_graph_created_object©Úload_import_fromr$   Ú_dynamoÚgraph_bytecode_inputsÚ__name__)r3   s   €r)   ú<lambda>z)_codegen_current_stream.<locals>.<lambda><   s(   ø€ �×#Ñ#Ü�M‰M×/Ñ/×8Ñ8Ø(ó
€ r+   r   F)Úadd_push_nullr   Úextend_outputr   )r2   r3   s    `r)   Ú_codegen_current_streamr@   :   s<   ø€ Ø×Ñó	
ôñ Ô˜6Ó"Ô#Ø×ÑÔ)¨!¨UÓ3Õ4r+   c                 ó`   ‡ — t         j                  j                  ‰ «      }t        |ˆ fd„«      S )Nc                 ó   •— t        ‰|«      S r#   )r@   )Ú_r3   r2   s     €r)   r=   z$get_current_stream.<locals>.<lambda>H   s   ø€ Ô5°f¸bÓA€ r+   )r$   ÚacceleratorÚcurrent_streamr   )r2   r0   s   ` r)   Úget_current_streamrF   E   s,   ø€ Ü×Ñ×-Ñ-¨fÓ5€FÜ(ØÓAóð r+   Úindexc                 ól   — t        | «      }t        |t        j                  «      st	        d| › �«      ‚|S )Nz3Fork/join stream expected a stream object at index )r   Ú
isinstancer$   r-   ÚAssertionError)rG   r0   s     r)   Ú_get_stream_by_indexrK   L   s8   € Ü)¨%Ó0€FÜ�fœeŸl™lÔ+ÜØAÀ%ÀÐIó
ð 	
ð €Mr+   c                 ól   — t        | «      }t        |t        j                  «      st	        d| › �«      ‚|S )Nz4Record/wait event expected an event object at index )r   rI   r$   r%   rJ   )rG   r(   s     r)   Ú_get_event_by_indexrM   U   s8   € Ü(¨Ó/€EÜ�eœUŸ[™[Ô)ÜØBÀ5À'ÐJó
ð 	
ð €Lr+   zstreams::fork© )Úmutates_argsÚ
from_indexÚto_indexc                 óT   — t         j                  j                  t        |«      «       y r#   ©r$   rD   Ú
set_streamrK   ©rP   rQ   s     r)   Úfork_streamrV   ^   s   € ô
 
×Ñ× Ñ Ô!5°hÓ!?Õ@r+   c                  ó   — y r#   rN   rU   s     r)   rC   rC   f   ó   € ð
 	r+   zstreams::joinc                 óT   — t         j                  j                  t        |«      «       y r#   rS   rU   s     r)   Újoin_streamrZ   q   s   € ä	×Ñ× Ñ Ô!5°hÓ!?Õ@r+   c                  ó   — y r#   rN   rU   s     r)   rC   rC   v   rX   r+   zstreams::record_eventÚevent_indexÚstream_indexc                 óR   — t        | «      }t        |«      }|j                  |«       y r#   )rM   rK   Úrecord©r\   r]   r(   r0   s       r)   Úrecord_eventra   �   s"   € ä Ó,€EÜ! ,Ó/€FØ	‡L�L�Õr+   c                  ó   — y r#   rN   ©r\   r]   s     r)   rC   rC   ˆ   rX   r+   zstreams::wait_eventc                 óR   — t        | «      }t        |«      }|j                  |«       y r#   )rM   rK   Úwaitr`   s       r)   Ú
wait_eventrf   “   s"   € ä Ó,€EÜ! ,Ó/€FØ	‡J�JˆvÕr+   c                  ó   — y r#   rN   rc   s     r)   rC   rC   š   rX   r+   zstreams::synchronize_eventc                 ó:   — t        | «      }|j                  «        y r#   )rM   Úsynchronize)r\   r(   s     r)   Úsynchronize_eventrj   ¥   s   € ä Ó,€EØ	×ÑÕr+   c                  ó   — y r#   rN   )r\   s    r)   rC   rC   «   ó   € àr+   zstreams::synchronize_deviceÚdevice_typeÚdevice_indexc                 ój   — t         j                  j                  t        j                  | |«      «       y r#   )r$   rD   ri   r2   ©rm   rn   s     r)   Úsynchronize_devicerq   ³   s!   € ä	×Ñ×!Ñ!¤%§,¡,¨{¸LÓ"IÕJr+   c                  ó   — y r#   rN   rp   s     r)   rC   rC   ¸   rl   r+   zstreams::synchronize_streamc                 ó:   — t        | «      }|j                  «        y r#   )rK   ri   )r]   r0   s     r)   Úsynchronize_streamrt   À   s   € ä! ,Ó/€FØ
×ÑÕr+   c                  ó   — y r#   rN   )r]   s    r)   rC   rC   Æ   rl   r+   zstreams::wait_streamÚwaiting_stream_indexÚwaited_on_stream_indexc                 óR   — t        | «      }t        |«      }|j                  |«       y r#   )rK   Úwait_stream)rv   rw   ÚwaitingÚ	waited_ons       r)   ry   ry   Î   s&   € ä"Ð#7Ó8€GÜ$Ð%;Ó<€IØ×Ñ˜	Õ"r+   c                  ó   — y r#   rN   rc   s     r)   rC   rC   Õ   rX   r+   zstreams::sync_deallocÚwait_event_indexÚsrc_stream_indexÚ
to_deallocc                 ól   — t         j                  j                  j                  j	                  | |«       y)a‰  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Ústreamsrf   Údefault©r}   r~   r   s      r)   Úsync_deallocr…   à   s&   € ô 
‡I�I×Ñ× Ñ ×(Ñ(Ð)9Ð;KÕLr+   c                  ó   — y r#   rN   r„   s      r)   rC   rC   í   s   € ð 	r+   zstreams::record_streamÚtensorc                 ó8   — | j                  t        |«      «       y r#   )Úrecord_streamrK   ©r‡   r]   s     r)   r‰   r‰   ù   s   € à
×ÑÔ-¨lÓ;Õ<r+   c                  ó   — y r#   rN   rŠ   s     r)   rC   rC   þ   rX   r+   c                   ól   — e Zd ZdZdd„Zdd„Zdd„Zddej                  dz  ddfd	„Z	de
fd
„Zdefd„Zy)ÚSymbolicStreamStatez)Track the currently entered stream if anyr!   Nc                 óŽ  — ddl m} g }t        j                  j	                  «       r…t        «        t        j                  j                  «       } ||j                  «      }t        ||«      }|t        k7  rt        dt        › d|› �«      ‚t        j                  ||¬«      }||_        |g}t        j                  |«      | _        y )Nr
   r   z+Current stream must be registered at index z, got )Úsource)r�   r   r$   rD   Úis_availabler   rE   r2   r   r   rJ   r   ÚcreateÚuser_object_indexÚcollectionsÚdequeÚcur_stream_stack)Úselfr   Ú	cur_stackr0   r�   rG   Ú
stream_vars          r)   Ú__init__zSymbolicStreamState.__init__  s½   € Ý0à*,ˆ	Ü×Ñ×)Ñ)Ô+ä&Ô(Ü×&Ñ&×5Ñ5Ó7ˆFÙ(¨¯©Ó7ˆFô
 )¨°Ó8ˆEØÔ,Ò,Ü$ØAÔBVÐAWð XØ ˜'ð#óð ô -×3Ñ3°FÀ6ÔJˆJð ,1ˆJÔ(Ø#˜ˆIäCN×CTÑCTØóD
ˆÕr+   r.   c                 ó:   — | j                   j                  |«       y r#   )r•   Úappend©r–   r0   s     r)   Úenter_streamz SymbolicStreamState.enter_stream)  s   € Ø×Ñ×$Ñ$ VÕ,r+   c                 ó8   — | j                   j                  «        y r#   )r•   Úpop©r–   s    r)   Úexit_streamzSymbolicStreamState.exit_stream,  s   € Ø×Ñ×!Ñ!Õ#r+   r2   c                 ó~   — |�-t        | j                  «      D ]  }|j                  |k(  sŒ|c S  | j                  d   S )Néÿÿÿÿ)Úreversedr•   r2   )r–   r2   r0   s      r)   Ú
cur_streamzSymbolicStreamState.cur_stream/  sF   € ØÐÜ" 4×#8Ñ#8Ó9ò "�Ø—=‘= FÓ*Ø!’Mð"ð ×$Ñ$ RÑ(Ð(r+   c                 ó2   — t        | j                  «      dkD  S )Nr   )Úlenr•   r    s    r)   Úin_stream_contextz%SymbolicStreamState.in_stream_context7  s   € Ü�4×(Ñ(Ó)¨AÑ-Ð-r+   c                 ó¼   — | j                   d   }t        |t        «      r)|j                  «       st	        |j                  «       «      S t	        |j                  «      S )zOGet a Python object id for the current stream without realizing lazy variables.r£   )r•   rI   r   Úis_realizedÚidÚ
peek_valueÚvaluerœ   s     r)   Úcur_stream_idz!SymbolicStreamState.cur_stream_id:  sK   € à×&Ñ& rÑ*ˆÜ�fÔ1Ô2¸6×;MÑ;MÔ;OÜ�f×'Ñ'Ó)Ó*Ð*Ü�&—,‘,ÓÐr+   )r!   N)r0   r.   r!   Nr#   )r<   Ú
__module__Ú__qualname__Ú__doc__r™   r�   r¡   r$   r2   r¥   Úboolr¨   Úintr®   rN   r+   r)   r�   r�   	  sI   „ Ù3ó
ó:-ó$ñ) §¡°Ñ!4ð )Ð@Pó )ð. 4ó .ð ˜sô  r+   r�   c            	       ó²   ‡ — e Zd ZdZedddddeeef   dd fd„«       Zd	e	d   dedd
fˆ fd„Z
dddedefˆ fd„Zdddedefˆ fd„Zdefd„Zdefd„Zdd„Zˆ xZS )ÚStreamContextVariablez(This represents torch.cuda.StreamContextÚtxr   Ústream_to_enterr.   r    r!   c                 ó   — t        |fi |¤ŽS r#   )rµ   )r¶   r·   r    s      r)   r‘   zStreamContextVariable.createE  s   € ô %Øñ
àñ
ð 	
r+   r0   Nc                 ól   •— || _         t        ‰| �  dd| j                  «       j                  id dœ|¤Ž y )Nr0   )Útarget_valuesÚinitial_valuesrN   )r0   Úsuperr™   Ú
get_streamr’   )r–   r0   r    Ú	__class__s      €r)   r™   zStreamContextVariable.__init__P  s>   ø€ ØˆŒÜ‰Ñð 	
Ø# T§_¡_Ó%6×%HÑ%HÐIØñ	
ð ó	
r+   r   c                 ót   •— |j                   j                  | j                  «       «       t        ‰| �  |«      S r#   )Úsymbolic_stream_stater�   r½   r¼   Úenter©r–   r¶   r   r¾   s      €r)   rÁ   zStreamContextVariable.enterX  s/   ø€ ð
 	× Ñ ×-Ñ-¨d¯o©oÓ.?Ô@Ü‰w‰}˜RÓ Ð r+   c                 óX   •— |j                   j                  «        t        ‰| �  |g|¢­Ž S r#   )rÀ   r¡   r¼   ÚexitrÂ   s      €r)   rÄ   zStreamContextVariable.exit`  s+   ø€ ð
 	× Ñ ×,Ñ,Ô.Ü‰w‰|˜BÐ& Ò&Ð&r+   c                 ó6   — t         j                  j                  S r#   )r$   ÚcudaÚStreamContextr    s    r)   Úpython_typez!StreamContextVariable.python_typeh  s   € Ü�z‰z×'Ñ'Ð'r+   c                  ó   — y)NTrN   r    s    r)   Úsupports_graph_breaksz+StreamContextVariable.supports_graph_breaksk  s   € Ør+   c                 óH   — | j                   st        d«      ‚| j                   S )Nz,Stream context should have a separate stream)r0   rJ   r    s    r)   r½   z StreamContextVariable.get_streamn  s   € Ø�{Š{Ü Ð!OÓPÐPØ�{‰{Ðr+   ©r!   r.   )r<   r¯   r°   r±   ÚstaticmethodÚdictÚstrr   r‘   r   r™   r   rÁ   rÄ   ÚtyperÈ   r²   rÊ   r½   Ú__classcell__©r¾   s   @r)   rµ   rµ   B  s»   ø„ Ù2àð
Ø'ð
à)ð
ð �s˜C�x‘.ð
ð 
!ò	
ó ð
ð
˜xÐ(8Ñ9ð 
ÀSð 
ÈTõ 
ð!Ø-ð!Ø6Eð!à	õ!ð'Ø-ð'Ø6Eð'à	õ'ð(˜Tó (ð tó ÷r+   rµ   c                   óT  ‡ — e Zd ZU dZej
                  Zeed<   dZ	e
dz  ed<   	 ddedej
                  dedz  ded	df
ˆ fd
„Zd	efd„Zddde
d	dfˆ fd„Zd	efd„Zddde
dee   dee
ef   d	ef
ˆ fd„Zd„ Zd	efd„Zd	e
fd„Zd	e
fd„Zdd„Zdd„Zededed	e edgdf   fd„«       Z!ˆ xZ"S )r.   z1Represents the device-agnostic torch.Stream classÚ_cpython_typeNÚ_device_handle_attrÚproxyr­   r’   r    r!   c                 ó,  •— |�\d|j                   j                  v rD|j                   j                  d   |k7  r(t        d|j                   j                  d   › d|› �«      ‚|| _        || _        |j
                  | _        || _        t        ‰| �   di |¤Ž y )NÚexample_valueúproxy example_value ú != r#   )	ÚnodeÚmetarJ   rÖ   r­   r2   r’   r¼   r™   ©r–   rÖ   r­   r’   r    r¾   s        €r)   r™   zStreamVariable.__init__|  s�   ø€ ð Ð °E·J±J·O±OÑ!CØ�z‰z�‰˜Ñ/°5Ò8Ü$Ø*¨5¯:©:¯?©?¸?Ñ+KÐ*LÈDÐQVÐPWÐXóð ð ˆŒ
ØˆŒ
Ø—l‘lˆŒà!2ˆÔÜ‰ÑÑ( Ó(r+   c                 ó   — | j                   S r#   )rÔ   r    s    r)   rÈ   zStreamVariable.python_type’  s   € Ø×!Ñ!Ð!r+   r¶   r   Únamer   c                 óÔ  •— | j                   �Ì|| j                   k(  r½ddlm}m} | j                  r+ || j                  j                  |j                  «      «       t        | j                  |«      r)t        j                  t        | j                  |«      «      S t        | j                  d«      r)t        j                  | j                  j                  «      S t        ‰| �9  ||«      S )Nr
   ©ÚGuardBuilderÚinstall_guardÚnative_handle)rÕ   Úguardsrâ   rã   r�   Ú
make_guardÚEQUALS_MATCHÚhasattrr­   r   r‘   Úgetattrrä   r¼   Úvar_getattr)r–   r¶   rß   râ   rã   r¾   s        €r)   rê   zStreamVariable.var_getattr•  sª   ø€ ð ×#Ñ#Ð/°D¸D×<TÑ<TÒ4Tß<à�{Š{Ù˜dŸk™k×4Ñ4°\×5NÑ5NÓOÔPä�t—z‘z 4Ô(Ü'×.Ñ.¬w°t·z±zÀ4Ó/HÓIÐIä�t—z‘z ?Ô3Ü'×.Ñ.¨t¯z©z×/GÑ/GÓHÐHä‰wÑ" 2 tÓ,Ð,r+   c                 ó   — | j                   S r#   ©r­   r    s    r)   Úget_real_python_backed_valuez+StreamVariable.get_real_python_backed_value¦  ó   € Ø�z‰zÐr+   r   c                 ó˜  •— t        | j                  |«      st        d|› �«      ‚ddlm} ddlm} |dk(  r—|d   }t        |t        «      st        dt        |«      › �«      ‚|j                  j                  d	t        j                  j                  j                  |j                   | j                   fi «       t#        j$                  d «      S |d
k(  r—|d   }t        |t&        «      st        dt        |«      › �«      ‚|j                  j                  d	t        j                  j                  j(                  | j                   |j                   fi «       t#        j$                  d «      S |dk(  r`|j                  j                  d	t        j                  j                  j*                  | j                   fi «       t#        j$                  d «      S |dk(  r6 |t"        | |j                  j                  d|g || g|z   |«      ¢­Ž ¬«      S |dk(  �r*ddlm}	 |j                  j/                  t1        | j                  «      «       |r1t        |d   t        «      r|d   }
|
j                  }|
j                   }nL| j                  j3                  «       }t5        |t        j7                  t9        g «      t;        i «      «      «      }|j                  j                  d	t        j                  j                  j2                  || j                   fi «        |	||j                  j                  d	t<        |fi «      ¬«      S t>        ‰| ��  ||||«      S )Nzno stream method found named r
   ©Úproxy_args_kwargsr   ©Úwrap_fx_proxy_clsrf   r   zExpected EventVariable, got Úcall_functionry   zExpected StreamVariable, got ri   ÚqueryÚcall_method©Ú
target_clsr¶   rÖ   ra   )Úwrap_fx_proxy)r¶   rÖ   )!rè   r­   rJ   Úutilsrñ   Úbuilderró   rI   r&   rÐ   ÚoutputÚcreate_proxyr$   r�   r‚   rf   r’   r   r‘   r.   ry   rt   rù   Ú'check_event_record_after_input_mutationr«   ra   r   r'   r   r   r   r¼   rö   )r–   r¶   rß   r   r    rñ   ró   Ú	event_argÚother_streamrù   Ú	event_varr(   r\   r¾   s                €r)   rö   zStreamVariable.call_method©  sí  ø€ ô �t—z‘z 4Ô(Ü Ð#@ÀÀÐ!GÓHÐHå-Ý.à�<ÒØ˜Q™ˆIÜ˜i¬Ô7Ü$Ð'CÄDÈÃOÐCTÐ%UÓVÐVØ�I‰I×"Ñ"ØÜ—	‘	×!Ñ!×,Ñ,Ø×,Ñ,¨d×.DÑ.DÐEØô	ô $×*Ñ*¨4Ó0Ð0Ø�]Ò"Ø ™7ˆLÜ˜l¬NÔ;Ü$Ø3´D¸Ó4FÐ3GÐHóð ð �I‰I×"Ñ"ØÜ—	‘	×!Ñ!×-Ñ-Ø×'Ñ'¨×)GÑ)GÐHØô	ô $×*Ñ*¨4Ó0Ð0Ø�]Ò"Ø�I‰I×"Ñ"ØÜ—	‘	×!Ñ!×4Ñ4Ø×'Ñ'Ð)Øô	ô $×*Ñ*¨4Ó0Ð0Ø�WŠ_Ù$Ü+ØØ,�b—i‘i×,Ñ,Ø! 4ðÙ*;¸T¸FÀT¹MÈ6Ó*Ròôð ð �^Ó#Ý.à�I‰I×=Ñ=¼bÀÇÁ»nÔMÙœ
 4¨¡7¬MÔ:Ø  ™G�	Ø!Ÿ™�Ø'×9Ñ9‘àŸ
™
×/Ñ/Ó1�Ü;ØÜ!×BÑBÜ% bÓ)Ô+<¸RÓ+@óó�ð �I‰I×"Ñ"ØÜ—	‘	×!Ñ!×.Ñ.Ø˜d×4Ñ4Ð5Øô	ñ !ØØ—i‘i×,Ñ,Ø#Ü0Ø �NØó	ôð ô ‰wÑ" 2 t¨T°6Ó:Ð:r+   c                 ó¼  — ddl m}m} ddlm} ddlm} t        |t        «      s |j                  |dk(  «      S | j                  r+ || j                  j                  |j                  «      «       |j                  r+ ||j                  j                  |j                  «      «       ||   }t        j                  | || j                  |j                  «      «      S )Nr
   rá   )Úcmp_name_to_op_mappingr   r   Ú__ne__)rå   râ   rã   rú   r  Úconstantr   rI   r.   r‘   r�   ræ   rç   r   Úbuildr­   )	r–   r¶   ÚotherÚoprâ   rã   r  r   Úop_fns	            r)   Úrichcompare_implzStreamVariable.richcompare_implÿ  s©   € ß8Ý2Ý.ä˜%¤Ô0ð +Ð#×*Ñ*¨2°©>Ó:Ð:Ø�;Š;Ù˜$Ÿ+™+×0Ñ0°×1JÑ1JÓKÔLØ�<Š<Ù˜%Ÿ,™,×1Ñ1°,×2KÑ2KÓLÔMØ& rÑ*ˆÜ×$Ñ$ØÙ�$—*‘*˜eŸk™kÓ*ó
ð 	
r+   c                 ó   — | j                   S r#   ©rÖ   r    s    r)   Úas_proxyzStreamVariable.as_proxy  rî   r+   c                  ó   — y)Nztorch._CrN   r    s    r)   Úmodule_namezStreamVariable.module_name  s   € Ør+   c                  ó   — y)Nr-   rN   r    s    r)   Úfn_namezStreamVariable.fn_name  s   € Ør+   r   c                 óÂ  ‡— | j                   rt        d«      ‚| j                  �Z‰j                  ˆfd„«       ‰j	                  ‰j                  | j                  «      «       ‰j                  t        dd«      «       y d| j                  › �}‰j                  j                  j                  || j                  «      }‰j	                  ‰j                  |d¬«      «       y )Nz2Stream should not have a source during reconstructc                  ól   •— ‰ j                  t        j                  j                  j                  d«      S ©Nr   r8   ©Úcodegens   €r)   r=   z,StreamVariable.reconstruct.<locals>.<lambda>"  ó(   ø€ ˜×0Ñ0Ü—M‘M×7Ñ7×@Ñ@Ø2ó€ r+   r   FÚ_stream_T©Úadd)r�   rJ   r’   r>   Úappend_outputÚcreate_load_constr?   r   r2   r¶   rü   Úinstall_global_by_idr­   Úcreate_load_global©r–   r  Úprefixrß   s    `  r)   ÚreconstructzStreamVariable.reconstruct  s¾   ø€ ð �;Š;Ü Ð!UÓVÐVØ×!Ñ!Ð-Ø×!Ñ!óôð ×!Ñ! '×";Ñ";¸D×<RÑ<RÓ"SÔTØ×!Ñ!Ô"6°q¸%Ó"@ÕAð   §¡˜}Ð-ˆFØ—:‘:×$Ñ$×9Ñ9¸&À$Ç*Á*ÓMˆDØ×!Ñ! '×"<Ñ"<¸TÀtÐ"<Ó"LÕMr+   c                 ó   — | S r#   rN   r    s    r)   r½   zStreamVariable.get_stream/  s   € Øˆr+   c                 ó,   ‡ ‡— dt         dddd fˆ ˆfd„}|S )NrG   r  r   r!   c                 óä   •‡— ‰j                  ˆfd„«       ‰j                  ˆfd„«        ‰‰«        ‰‰«       ‰j                  t        dd«      «       ‰j                  t        dd«      «       y )Nc                  ól   •— ‰ j                  t        j                  j                  j                  d«      S r6   r8   r  s   €r)   r=   zNStreamVariable.make_construct_in_graph_stream_fn.<locals>.fn.<locals>.<lambda>8  ó(   ø€ ˜×0Ñ0Ü—M‘M×7Ñ7×@Ñ@Ø0ó€ r+   c                  ól   •— ‰ j                  t        j                  j                  j                  d«      S )NÚbuild_stream©r9   r$   r:   rú   r<   r  s   €r)   r=   zNStreamVariable.make_construct_in_graph_stream_fn.<locals>.fn.<locals>.<lambda>>  s'   ø€ ˜×0Ñ0Ü—M‘M×'Ñ'×0Ñ0°.ó€ r+   r
   Fr   ©r>   r?   r   ©rG   r  r   r    s    `€€r)   Úfnz<StreamVariable.make_construct_in_graph_stream_fn.<locals>.fn6  óg   ù€ Ø×!Ñ!óôð ×!Ñ!óôñ
 �DŒMÙ�FŒOØ×!Ñ!Ô"6°q¸%Ó"@ÔAØ×!Ñ!Ô"6°q¸%Ó"@ÕAr+   ©r³   ©r   r    r,  s   `` r)   r/   z0StreamVariable.make_construct_in_graph_stream_fn2  ó(   ù€ ð	B”cð 	B Kð 	B°Dö 	Bð" ˆ	r+   r#   ©r  r   r!   NrÌ   )#r<   r¯   r°   r±   r$   r-   rÔ   rÐ   Ú__annotations__rÕ   rÏ   r	   r³   r   r™   rÈ   rê   Úobjectrí   Úlistr   rÎ   rö   r
  r  r  r  r!  r½   rÍ   r   r   r   r/   rÑ   rÒ   s   @r)   r.   r.   t  sV  ø… Ù;àŸ,™,€M�4Ó&ð '+Ð˜˜t™Ó*ð )-ñ	)àð)ð �|‰|ð)ð  ™:ð	)ð
 ð)ð 
õ)ð,"˜Tó "ð-Ø-ð-Ø58ð-à	õ-ð"¨fó ðT;à'ðT;ð ðT;ð �?Ñ#ð	T;ð
 �S˜/Ð)Ñ*ðT;ð 
õT;òl
ð&˜%ó ð˜Só ð˜ó óNó(ð ðØðØ%6ðà	�3˜Ð$ dÐ*Ñ	+òó ôr+   r.   c                   ó@   — e Zd ZdZej
                  j                  ZdZy)ÚCudaStreamVariablezMRepresents torch.cuda.Stream, preserving device-specific type and attributes.Úcuda_streamN)	r<   r¯   r°   r±   r$   rÆ   r-   rÔ   rÕ   rN   r+   r)   r6  r6  J  s   „ ÙWà—J‘J×%Ñ%€MØ'Ñr+   r6  c                   ó@   — e Zd ZdZej
                  j                  ZdZy)ÚXpuStreamVariablezLRepresents torch.xpu.Stream, preserving device-specific type and attributes.Ú
sycl_queueN)	r<   r¯   r°   r±   r$   Úxpur-   rÔ   rÕ   rN   r+   r)   r9  r9  Q  s   „ ÙVà—I‘I×$Ñ$€MØ&Ñr+   r9  Ú_stream_fn_to_variable_clsÚ	stream_fnc                 ó,   — t         j                  | «      S r#   )r<  Úget)r=  s    r)   Ú_get_stream_variable_clsr@  ^  s   € Ü%×)Ñ)¨)Ó4Ð4r+   c                   ó&  ‡ — e Zd Zdedej
                  dedz  deddf
ˆ fd„Zdd	d
e	de
de	fd„Zdefd„Zdefd„Zdd	de
dee	   dee
e	f   de	f
d„Zdefd„Zedd	dee	   dee
e	f   dedef   fd„«       Zedededeedgdf   fd„«       Zdd„Zˆ xZS )r&   rÖ   r­   r’   Nr    r!   c                 ó
  •— |�\d|j                   j                  v rD|j                   j                  d   |k7  r(t        d|j                   j                  d   › d|› �«      ‚t        ‰| �  di |¤Ž || _        || _        || _        y )NrØ   rÙ   rÚ   rN   )rÛ   rÜ   rJ   r¼   r™   rÖ   r­   r’   rÝ   s        €r)   r™   zEventVariable.__init__c  s„   ø€ ð Ð °E·J±J·O±OÑ!CØ�z‰z�‰˜Ñ/°5Ò8Ü$Ø*¨5¯:©:¯?©?¸?Ñ+KÐ*LÈDÐQVÐPWÐXóð ô 	‰ÑÑ"˜6Ò"ØˆŒ
ØˆŒ
Ø!2ˆÕr+   r¶   r   r  r  c                 ó$   — ddl m}  || |||«      S )Nr   )Úobject_richcompare)Úobject_protocolrD  )r–   r¶   r  r  rD  s        r)   r
  zEventVariable.richcompare_implt  s   € õ 	8á! $¨¨E°2Ó6Ð6r+   c                 ó"   — t         j                  S r#   )r$   r%   r    s    r)   rÈ   zEventVariable.python_type{  s   € Ü�{‰{Ðr+   c                 ó   — | j                   S r#   rì   r    s    r)   rí   z*EventVariable.get_real_python_backed_value~  rî   r+   rß   r   c                 ó˜  — ddl m} ddlm} |dk(  r{t        j                  |||«      \  }}|j                  j                  dt        j                  j                  j                  | j                  |fi «       t        j                  d «      S |dk(  r©t        j                  |||«      \  }	}|j                  j                  t!        |	j"                  «      «       |j                  j                  dt        j                  j                  j$                  | j                  |fi «       t        j                  d «      S |dk(  r`|j                  j                  dt        j                  j                  j&                  | j                  fi «       t        j                  d «      S |d	k(  r6 |t        | |j                  j                  d
|g || g|z   |«      ¢­Ž ¬«      S t)        | j"                  «      j*                  › dt)        | j"                  «      j,                  › d|› �}
t/        dt1        |«      d|
› d�g t2        j4                  ¢¬«       y )Nr
   rð   r   rò   re   rô   r_   ri   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&   Ú_get_stream_argrü   rý   r$   r�   r‚   rf   r’   r   r‘   rþ   r«   r­   ra   rj   rÐ   r¯   r°   r   rÏ   r   ÚSUPPORTABLE)r–   r¶   rß   r   r    rñ   ró   rC   r]   Ú
stream_argÚmethod_names              r)   rö   zEventVariable.call_method�  s  € õ 	.Ý.à�6Š>Ü+×;Ñ;¸BÀÀfÓM‰OˆAˆ|Ø�I‰I×"Ñ"ØÜ—	‘	×!Ñ!×,Ñ,à×*Ñ*Ø ðð ôô $×*Ñ*¨4Ó0Ð0Ø�XÒÜ'4×'DÑ'DÀRÈÈvÓ'VÑ$ˆJ˜Ø�I‰I×=Ñ=¼bÀ×AQÑAQÓ>RÔSØ�I‰I×"Ñ"ØÜ—	‘	×!Ñ!×.Ñ.à×*Ñ*Ø ðð ôô $×*Ñ*¨4Ó0Ð0Ø�]Ò"Ø�I‰I×"Ñ"ØÜ—	‘	×!Ñ!×3Ñ3Ø×'Ñ'Ð)Øô	ô $×*Ñ*¨4Ó0Ð0Ø�WŠ_Ù$Ü+ØØ,�b—i‘i×,Ñ,Ø! 4ðÙ*;¸T¸FÀT¹MÈ6Ó*Ròôð ô ˜Ÿ
™
Ó#×.Ñ.Ð/¨q´°d·j±jÓ1A×1NÑ1NÐ0OÈqÐQUÐPVÐWð ô Ø2Ü˜D›	ØAÀ+Àð OMð NðÜ&×2Ñ2ðör+   c                 ó   — | j                   S r#   r  r    s    r)   r  zEventVariable.as_proxyÂ  rî   r+   r.   c                 ó¬   — d}|r|d   }n|r|j                  d«      }|s(| j                  j                  «       }||j                  fS ||j                  fS )a;  Returns (stream_variable, stream_index_for_op).

        The ambient current stream is registered at index 0 in the external
        object registry.  The inductor wrapper updates index 0 at runtime so
        that cudagraph capture sees the capture stream, not the stale
        trace-time default stream.
        Nr   r0   )r?  rÀ   r¥   r’   )r¶   r   r    rP  r˜   s        r)   rN  zEventVariable._get_stream_argÅ  s_   € ð ˆ
ÙØ˜a™‰JÙØŸ™ HÓ-ˆJáØ×1Ñ1×<Ñ<Ó>ˆJØ˜z×;Ñ;Ð;Ð;à˜:×7Ñ7Ð7Ð7r+   r   c                 ó,   ‡ ‡— dt         dddd fˆ ˆfd„}|S )NrG   r  r   r!   c                 óä   •‡— ‰j                  ˆfd„«       ‰j                  ˆfd„«        ‰‰«        ‰‰«       ‰j                  t        dd«      «       ‰j                  t        dd«      «       y )Nc                  ól   •— ‰ j                  t        j                  j                  j                  d«      S r6   r8   r  s   €r)   r=   zLEventVariable.make_construct_in_graph_event_fn.<locals>.fn.<locals>.<lambda>ä  r&  r+   c                  ól   •— ‰ j                  t        j                  j                  j                  d«      S )NÚbuild_eventr)  r  s   €r)   r=   zLEventVariable.make_construct_in_graph_event_fn.<locals>.fn.<locals>.<lambda>ê  s'   ø€ ˜×0Ñ0Ü—M‘M×'Ñ'×0Ñ0°-ó€ r+   r
   Fr   r*  r+  s    `€€r)   r,  z:EventVariable.make_construct_in_graph_event_fn.<locals>.fnâ  r-  r+   r.  r/  s   `` r)   r'   z.EventVariable.make_construct_in_graph_event_fnÞ  r0  r+   c                 ó¨  ‡— | j                   rt        d«      ‚| j                  �Z‰j                  ˆfd„«       ‰j	                  ‰j                  | j                  «      «       ‰j                  t        dd«      «       y d}‰j                  j                  j                  || j                  «      }‰j	                  ‰j                  |d¬«      «       y )Nz1Event should not have a source during reconstructc                  ól   •— ‰ j                  t        j                  j                  j                  d«      S r  r8   r  s   €r)   r=   z+EventVariable.reconstruct.<locals>.<lambda>ü  r  r+   r   FÚ_eventTr  )r�   rJ   r’   r>   r  r  r?   r   r¶   rü   r  r­   r  r  s    `  r)   r!  zEventVariable.reconstructõ  s±   ø€ ð �;Š;Ü Ð!TÓUÐUØ×!Ñ!Ð-Ø×!Ñ!óôð ×!Ñ! '×";Ñ";¸D×<RÑ<RÓ"SÔTØ×!Ñ!Ô"6°q¸%Ó"@ÕAàˆFØ—:‘:×$Ñ$×9Ñ9¸&À$Ç*Á*ÓMˆDØ×!Ñ! '×"<Ñ"<¸TÀtÐ"<Ó"LÕMr+   r1  )r<   r¯   r°   r	   r$   r%   r³   r   r™   r   rÏ   r
  rÐ   rÈ   r3  rí   r4  rÎ   rö   r  rÍ   ÚtuplerN  r   r   r   r'   r!  rÑ   rÒ   s   @r)   r&   r&   b  sa  ø„ ð3àð3ð �{‰{ð3ð  ™:ð	3ð
 ð3ð 
õ3ð"7Ø-ð7Ø6Eð7ØKNð7à	ó7ð˜Tó ð¨fó ð?à'ð?ð ð?ð �?Ñ#ð	?ð
 �S˜/Ð)Ñ*ð?ð 
ó?ðB˜%ó ð ð8Ø'ð8à�?Ñ#ð8ð �S˜/Ð)Ñ*ð8ð 
Ð Ð$Ñ	%ò	8ó ð8ð0 ðØðØ%6ðà	�3˜Ð$ dÐ*Ñ	+òó ð÷,Nr+   r&   )Xr“   Úcollections.abcr   Útypingr   r   r$   Útorch._dynamo.variables.dictsr   Útorch._dynamo.variables.listsr   Útorch.fxr   r	   Ú r   Úbytecode_transformationr   Úexcr   r   r;   r   r   r   r   r   r�   r   Úbaser   r  r   Úctx_managerr   Úlazyr   Útorch._dynamo.symbolic_convertr   r  r   Útorch._library.custom_opsr   ÚTensorr³   r*   r\  r1   r2   r@   rF   r-   rK   r%   rM   rV   Úregister_fakerC   r�   r‚   Úforkrƒ   rZ   Újoinra   rf   rj   rÏ   rq   rt   ry   r…   r‰   r�   rµ   r.   r6  r9  rÆ   rE   r;  r<  rÎ   r3  rÐ   r2  r@  r&   rN   r+   r)   ú<module>rn     så  ðÜ Ý $ß  ã Ý ;Ý 7ß +å  Ý :ß .÷õ õ )Ý !Ý &Ý 4Ý %ñ ÝHå#å /ð 
�‰€ð�Sð  Cð ¨Có ð�e˜C‘jð ¨Cð °Có ð5 E§L¡Lð 5°kð 5Àdó 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ñ Ð'°bÔ9ð 3ð ¨4ò ó :ðð
 × Ñ ð	�3ð 	˜4ò 	ó !ð	ñ �—	‘	×!Ñ!×3Ñ3×;Ñ;Ô <ñ Ð(°rÔ:ðK Cð K°sð K¸tò Kó ;ðKð ×!Ñ!ð	�3ð 	 cð 	¨dò 	ó "ð	ñ �—	‘	×!Ñ!×4Ñ4×<Ñ<Ô =ñ Ð(°rÔ:ð Sð ¨Tò ó ;ðð
 ×!Ñ!ð	�Cð 	˜Dò 	ó "ð	ñ �—	‘	×!Ñ!×4Ñ4×<Ñ<Ô =ñ Ð!°Ô3ð# cð #À3ð #È4ò #ó 4ð#ð ×Ñð	Øð	àð	ð 
ò	ó ð	ñ �—	‘	×!Ñ!×-Ñ-×5Ñ5Ô 6ñ Ð"°Ô4ð	MØð	MØ-0ð	MØ>C¿l¹lð	Mà	ò	Mó 5ð	Mð ×Ñð	Øð	àð	ð —‘ð	ð 
ò		ó ð	ñ �—	‘	×!Ñ!×.Ñ.×6Ñ6Ô 7ñ Ð#°"Ô5ð=˜%Ÿ,™,ð =°cð =¸dò =ó 6ð=ð ×Ñð	Ø�L‰Lð	àð	ð 
ò	ó ð	ñ �—	‘	×!Ñ!×/Ñ/×7Ñ7Ô 8÷6 ñ 6 ôr/Ð7ô /ôdSÐ*ô Sôl(˜ô (ô'˜ô 'ð 
‡J�J×ÑÐ1Ø	‡I�I×ÑÐ/ðBÐ ˜D ¨¨nÑ)=Ð!=Ñ>ó ð5¨ð 5°4¸Ñ3GÈ$Ñ3Nó 5ôdN�Oõ dNr+   