ó
    CC˜j†n  ã            	       óÄ
  • % 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JrJrJr  SSKJr  SSKJrJrJ r   SSK!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,  \RZ                  r-S\S\S\.4S jr/S\0\   S\S\.4S jr1S\Rd                  SSSS4S jr3S\Rd                  S\.4S jr4S\.S\Rj                  4S  jr6S\.S\Rn                  4S! jr8\," S"S#S$9S%\.S&\.SS4S' j5       r9\9Rt                  S%\.S&\.SS4S( j5       r;\" \Rx                  Rz                  R|                  R~                  5        \," S)S#S$9S%\.S&\.SS4S* j5       r@\@Rt                  S%\.S&\.SS4S+ j5       r;\" \Rx                  Rz                  R‚                  R~                  5        \," S,S#S$9S-\.S.\.SS4S/ j5       rB\BRt                  S-\.S.\.SS4S0 j5       r;\" \Rx                  Rz                  R„                  R~                  5        \," S1S#S$9S-\.S.\.SS4S2 j5       rC\CRt                  S-\.S.\.SS4S3 j5       r;\" \Rx                  Rz                  R†                  R~                  5        \," S4S#S$9S-\.SS4S5 j5       rD\DRt                  S-\.SS4S6 j5       r;\" \Rx                  Rz                  Rˆ                  R~                  5        \," S7S#S$9S8\ES9\.SS4S: j5       rF\FRt                  S8\ES9\.SS4S; j5       r;\" \Rx                  Rz                  RŒ                  R~                  5        \," S<S#S$9S.\.SS4S= j5       rG\GRt                  S.\.SS4S> j5       r;\" \Rx                  Rz                  RŽ                  R~                  5        \," S?S#S$9S@\.SA\.SS4SB j5       rH\HRt                  S-\.S.\.SS4SC j5       r;\" \Rx                  Rz                  R�                  R~                  5        \," SDS#S$9SE\.SF\.SG\RZ                  SS4SH j5       rI\IRt                  SE\.SF\.SG\RZ                  SS4SI j5       r;\" \Rx                  Rz                  R’                  R~                  5        \," SJS#S$9SK\RZ                  S.\.SS4SL j5       rJ\JRt                  SK\RZ                  S.\.SS4SM j5       r;\" \Rx                  Rz                  R”                  R~                  5         " SN SO5      rK " SP SQ\$5      rL " SR SS\L5      rM " ST SU\M5      rN " SV SW\M5      rO\R                   R¢                  \N\R¤                  R¢                  \O0rS\T\U\V\M   4   \WSX'   SY\US\V\M   S-  4SZ jrX " S[ S\\ 5      rYg)]é    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é   )ÚGetSetÚMethodÚVariableTracker©ÚConstantVariable)ÚFxTracebackAnnotateVariable)ÚLazyVariableTracker)ÚInstructionTranslatorBase)Ú	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      Ú­C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\torch/_dynamo/variables/streams.pyÚ	new_eventr,   &   sC   € Ü�KŠK˜Ð( Ñ(€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_streamr3   0   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__)r5   s   €r+   Ú<lambda>Ú)_codegen_current_stream.<locals>.<lambda><   s&   ø€ �×#Ñ#Ü�M‰M×/Ñ/×8Ñ8Ø(ô
r-   r   F)Úadd_push_nullr   Úextend_outputr   )r4   r5   s    `r+   Ú_codegen_current_streamrC   :   s<   ø€ Ø×Ñô	
ôñ Ô˜6Ó"Ô#Ø×ÑÔ)¨!¨UÓ3Õ4r-   c                 ób   ^ • [         R                  R                  T 5      n[        UU 4S j5      $ )Nc                 ó   >• [        TU5      $ r%   )rC   )Ú_r5   r4   s     €r+   r?   Ú$get_current_stream.<locals>.<lambda>H   s   ø€ Ô5°f¸bÔAr-   )r&   ÚacceleratorÚcurrent_streamr   )r4   r2   s   ` r+   Úget_current_streamrJ   E   s,   ø€ Ü×Ñ×-Ñ-¨fÓ5€FÜ(ØÔAóð r-   Úindexc                 óv   • [        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/   ÚAssertionError)rK   r2   s     r+   Ú_get_stream_by_indexrO   L   s;   € Ü)¨%Ó0€FÜ�fœeŸl™l×+Ñ+ÜØAÀ%ÀÐIó
ð 	
ð €Mr-   c                 óv   • [        U 5      n[        U[        R                  5      (       d  [	        SU  35      eU$ )Nz4Record/wait event expected an event object at index )r   rM   r&   r'   rN   )rK   r*   s     r+   Ú_get_event_by_indexrQ   U   s;   € Ü(¨Ó/€EÜ�eœUŸ[™[×)Ñ)ÜØBÀ5À'ÐJó
ð 	
ð €Lr-   zstreams::fork© )Úmutates_argsÚ
from_indexÚto_indexc                 óT   • [         R                  R                  [        U5      5        g r%   ©r&   rH   Ú
set_streamrO   ©rT   rU   s     r+   Úfork_streamrZ   ^   s   € ô
 
×Ñ× Ñ Ô!5°hÓ!?Õ@r-   c                 ó   • g r%   rR   rY   s     r+   rF   rF   f   ó   € ð
 	r-   zstreams::joinc                 óT   • [         R                  R                  [        U5      5        g r%   rW   rY   s     r+   Újoin_streamr^   q   s   € ä	×Ñ× Ñ Ô!5°hÓ!?Õ@r-   c                 ó   • g r%   rR   rY   s     r+   rF   rF   v   r\   r-   zstreams::record_eventÚevent_indexÚstream_indexc                 óR   • [        U 5      n[        U5      nUR                  U5        g r%   )rQ   rO   Úrecord©r`   ra   r*   r2   s       r+   Úrecord_eventre   �   s"   € ä Ó,€EÜ! ,Ó/€FØ	‡L�L�Õr-   c                 ó   • g r%   rR   ©r`   ra   s     r+   rF   rF   ˆ   r\   r-   zstreams::wait_eventc                 óR   • [        U 5      n[        U5      nUR                  U5        g r%   )rQ   rO   Úwaitrd   s       r+   Ú
wait_eventrj   “   s"   € ä Ó,€EÜ! ,Ó/€FØ	‡J�JˆvÕr-   c                 ó   • g r%   rR   rg   s     r+   rF   rF   š   r\   r-   zstreams::synchronize_eventc                 ó:   • [        U 5      nUR                  5         g r%   )rQ   Úsynchronize)r`   r*   s     r+   Úsynchronize_eventrn   ¥   s   € ä Ó,€EØ	×ÑÕr-   c                 ó   • g r%   rR   )r`   s    r+   rF   rF   «   ó   € àr-   zstreams::synchronize_deviceÚdevice_typeÚdevice_indexc                 ój   • [         R                  R                  [         R                  " X5      5        g r%   )r&   rH   rm   r4   ©rq   rr   s     r+   Úsynchronize_deviceru   ³   s   € ä	×Ñ×!Ñ!¤%§,¢,¨{Ó"IÕJr-   c                 ó   • g r%   rR   rt   s     r+   rF   rF   ¸   rp   r-   zstreams::synchronize_streamc                 ó:   • [        U 5      nUR                  5         g r%   )rO   rm   )ra   r2   s     r+   Úsynchronize_streamrx   À   s   € ä! ,Ó/€FØ
×ÑÕr-   c                 ó   • g r%   rR   )ra   s    r+   rF   rF   Æ   rp   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%   )rO   Úwait_stream)rz   r{   ÚwaitingÚ	waited_ons       r+   r}   r}   Î   s&   € ä"Ð#7Ó8€GÜ$Ð%;Ó<€IØ×Ñ˜	Õ"r-   c                 ó   • g r%   rR   rg   s     r+   rF   rF   Õ   r\   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Ústreamsrj   Údefault©r�   r‚   rƒ   s      r+   Úsync_deallocr‰   à   s#   € ô 
‡I�I×Ñ× Ñ ×(Ñ(Ð)9ÕLr-   c                 ó   • g r%   rR   rˆ   s      r+   rF   rF   í   s   € ð 	r-   zstreams::record_streamÚtensorc                 ó8   • U R                  [        U5      5        g r%   )Úrecord_streamrO   ©r‹   ra   s     r+   r�   r�   ù   s   € à
×ÑÔ-¨lÓ;Õ<r-   c                 ó   • g r%   rR   rŽ   s     r+   rF   rF   þ   r\   r-   c                   ó‚   • \ rS rSrSrSS jrSS jrSS jrSS	\R                  S-  SS4S
 jjr
S\4S jrS\4S jrSrg)ÚSymbolicStreamStatei	  z)Track the currently entered stream if anyr#   Nc                 ó’  • SSK Jn  / n[        R                  R	                  5       (       a�  [        5         [        R                  R                  5       nU" UR                  5      n[        X45      nU[        :w  a  [        S[         SU 35      e[        R                  " X4S9nXVl        U/n[        R                  " U5      U l        g )Nr
   r   z+Current stream must be registered at index z, got )Úsource)r“   r   r&   rH   Úis_availabler   rI   r4   r   r   rN   r   ÚcreateÚuser_object_indexÚcollectionsÚdequeÚcur_stream_stack)Úselfr   Ú	cur_stackr2   r“   rK   Ú
stream_vars          r+   Ú__init__ÚSymbolicStreamState.__init__  sº   € Ý0à*,ˆ	Ü×Ñ×)Ñ)×+Ñ+ä&Ô(Ü×&Ñ&×5Ñ5Ó7ˆFÙ(¨¯©Ó7ˆFô
 )¨Ó8ˆEØÔ,Ó,Ü$ØAÔBVÐAWð XØ ˜'ð#óð ô -×3Ò3°FÑJˆJð ,1Ô(Ø#˜ˆIäCN×CTÒCTØóD
ˆÕr-   r0   c                 ó:   • U R                   R                  U5        g r%   )r™   Úappend©rš   r2   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-   r4   c                 ó†   • Ub0  [        U R                  5       H  nUR                  U:X  d  M  Us  $    U R                  S   $ )Néÿÿÿÿ)Úreversedr™   r4   )rš   r4   r2   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_context7  s   € Ü�4×(Ñ(Ó)¨AÑ-Ð-r-   c                 óÐ   • U R                   S   n[        U[        5      (       a.  UR                  5       (       d  [	        UR                  5       5      $ [	        UR                  5      $ )zOGet a Python object id for the current stream without realizing lazy variables.rª   )r™   rM   r   Úis_realizedÚidÚ
peek_valueÚvaluer¡   s     r+   Úcur_stream_idÚ!SymbolicStreamState.cur_stream_id:  sQ   € à×&Ñ& rÑ*ˆÜ�fÔ1×2Ñ2¸6×;MÑ;M×;OÑ;OÜ�f×'Ñ'Ó)Ó*Ð*Ü�&—,‘,ÓÐr-   )r™   )r#   N)r2   r0   r#   Nr%   )r>   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r�   r¢   r§   r&   r4   r¬   Úboolr°   Úintr·   Ú__static_attributes__rR   r-   r+   r‘   r‘   	  sI   † Ù3ô
ô:-ô$ñ) §¡°Ñ!4ð )Ð@Põ )ð. 4ô .ð ˜s÷  r-   r‘   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\4S jrSS jrSrU =r$ )ÚStreamContextVariableiB  z(This represents torch.cuda.StreamContextÚtxr   Ústream_to_enterr0   r"   r#   c                 ó   • [        U40 UD6$ r%   )rÁ   )rÂ   rÃ   r"   s      r+   r•   ÚStreamContextVariable.createE  s   € ô %Øñ
àñ
ð 	
r-   r2   Nc                 ól   >• Xl         [        TU ]  " SSU R                  5       R                  0S S.UD6  g )Nr2   )Ú
annotationÚinitial_valuesrR   )r2   Úsuperr�   Ú
get_streamr–   )rš   r2   r"   Ú	__class__s      €r+   r�   ÚStreamContextVariable.__init__P  s<   ø€ ØŒÜ‰Òð 	
Ø  $§/¡/Ó"3×"EÑ"EÐFØñ	
ð ó	
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.enterX  s/   ø€ ð
 	× Ñ ×-Ñ-¨d¯o©oÓ.?Ô@Ü‰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                 ó6   • [         R                  R                  $ r%   )r&   ÚcudaÚStreamContextr¦   s    r+   Úpython_typeÚ!StreamContextVariable.python_typeh  s   € Ü�z‰z×'Ñ'Ð'r-   c                 ó   • g)NTrR   r¦   s    r+   Úsupports_graph_breaksÚ+StreamContextVariable.supports_graph_breaksk  s   € Ør-   c                 óR   • U R                   (       d  [        S5      eU R                   $ )Nz,Stream context should have a separate stream)r2   rN   r¦   s    r+   rÊ   Ú StreamContextVariable.get_streamn  s   € Ø�{�{Ü Ð!OÓPÐPØ�{‰{Ðr-   )r2   ©r#   r0   )r>   r¹   rº   r»   r¼   ÚstaticmethodÚdictÚstrr   r•   r   r�   r   rÏ   rÓ   ÚtyperØ   r½   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                   ó^  ^ • \ rS rSr% Sr\R                  r\\	S'   Sr
\S-  \	S'    S!S\S\R                  S\S-  S	\S
S4
U 4S jjjrS
\4S jr      S"S jrS
\4S jrSSS\\   S	\\\4   S
\4S jrSSS\\   S	\\\4   S
\4S jrSSS\\   S	\\\4   S
\4S jrSSS\\   S	\\\4   S
\4S jrSSS\\   S	\\\4   S
\4S jr\" \5      \" \5      \" \5      \" \5      \" \5      S.rS 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*$ )%r0   it  z1Represents the device-agnostic torch.Stream classÚ_cpython_typeNÚ_device_handle_attrÚproxyr¶   r–   r"   r#   c                 ó0  >• Ub_  SUR                   R                  ;   aE  UR                   R                  S   U:w  a(  [        SUR                   R                  S    SU 35      eXl        X l        UR
                  U l        X0l        [        TU ]   " S0 UD6  g )NÚexample_valueúproxy example_value ú != r%   )	ÚnodeÚmetarN   ré   r¶   r4   r–   rÉ   r�   ©rš   ré   r¶   r–   r"   rË   s        €r+   r�   Ú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                 ó   • U R                   $ r%   )rç   r¦   s    r+   rØ   ÚStreamVariable.python_type’  s   € Ø×!Ñ!Ð!r-   rÂ   r   c                 óÔ  • SSK JnJn  U R                  nUc  [	        S5      eU R
                  (       a+  U" U R
                  R                  UR                  5      5        [        U R                  U5      (       a*  [        R                  " [        U R                  U5      5      $ [        U R                  S5      (       a*  [        R                  " U R                  R                  5      $ g )Nr
   ©ÚGuardBuilderÚinstall_guardz7StreamVariable subclass must define _device_handle_attrÚnative_handle)Úguardsrö   r÷   rè   rN   r“   Ú
make_guardÚEQUALS_MATCHÚhasattrr¶   r   r•   Úgetattrrø   )rš   rÂ   rö   r÷   Únames        r+   Ú_stream_device_handle_getÚ(StreamVariable._stream_device_handle_get•  s©   € ÷ 	9à×'Ñ'ˆØ‰<Ü ØIóð ð �;�;Ù˜$Ÿ+™+×0Ñ0°×1JÑ1JÓKÔLÜ�4—:‘:˜t×$Ñ$Ü#×*Ò*¬7°4·:±:¸tÓ+DÓEÐEÜ�4—:‘:˜×/Ñ/Ü#×*Ò*¨4¯:©:×+CÑ+CÓDÐDØr-   c                 ó   • U R                   $ r%   ©r¶   r¦   s    r+   Úget_real_python_backed_valueÚ+StreamVariable.get_real_python_backed_value§  ó   € Ø�z‰zÐr-   r!   c                 ó<  • US   n[        U[        5      (       d  [        S[        U5       35      eUR                  R                  S[        R                  R                  R                  UR                  U R                  40 5        [        R                  " S 5      $ )Nr   zExpected EventVariable, got Úcall_function)rM   r(   rN   rã   ÚoutputÚcreate_proxyr&   r…   r†   rj   r–   r   r•   )rš   rÂ   r!   r"   Ú	event_args        r+   rj   ÚStreamVariable.wait_eventª  s„   € ð ˜‘Gˆ	Ü˜)¤]×3Ñ3Ü Ð#?ÄÀYÃÐ?PÐ!QÓRÐRØ
�	‰	×ÑØÜ�I‰I×Ñ×(Ñ(Ø×(Ñ(¨$×*@Ñ*@ÐAØô		
ô  ×&Ò& tÓ,Ð,r-   c                 ó<  • US   n[        U[        5      (       d  [        S[        U5       35      eUR                  R                  S[        R                  R                  R                  U R                  UR                  40 5        [        R                  " S 5      $ )Nr   zExpected StreamVariable, got r  )rM   r0   rN   rã   r  r	  r&   r…   r†   r}   r–   r   r•   )rš   rÂ   r!   r"   Úother_streams        r+   r}   ÚStreamVariable.wait_stream»  s…   € ð ˜A‘wˆÜ˜,¬×7Ñ7Ü Ð#@ÄÀlÓASÐ@TÐ!UÓVÐVØ
�	‰	×ÑØÜ�I‰I×Ñ×)Ñ)Ø×#Ñ# \×%CÑ%CÐDØô		
ô  ×&Ò& tÓ,Ð,r-   c                 óÄ   • UR                   R                  S[        R                  R                  R
                  U R                  40 5        [        R                  " S 5      $ ©Nr  )	r  r	  r&   r…   r†   rx   r–   r   r•   ©rš   rÂ   r!   r"   s       r+   rm   ÚStreamVariable.synchronizeÌ  sN   € ð 	�	‰	×ÑØÜ�I‰I×Ñ×0Ñ0Ø×#Ñ#Ð%Øô		
ô  ×&Ò& tÓ,Ð,r-   c                 ó€   • SSK Jn  SSKJn  U" [        UUR
                  R                  " SS/U" U /U-   U5      Q76 S9$ ©Nr
   )Úproxy_args_kwargsr   )Úwrap_fx_proxy_clsÚcall_methodÚquery)Ú
target_clsrÂ   ré   ©Úutilsr  Úbuilderr  r   r  r	  ©rš   rÂ   r!   r"   r  r  s         r+   r  ÚStreamVariable.queryÚ  óI   € õ 	.Ý.á Ü'ØØ—)‘)×(Ò(Ø˜wðÙ):¸D¸6ÀD¹=È&Ó)Qòñ
ð 	
r-   c           	      ób  • SSK Jn  UR                  R                  [	        U R
                  5      5        U(       a6  [        US   [        5      (       a  US   nUR
                  nUR                  nOLU R
                  R                  5       n[        U[        R                  [        / 5      [        0 5      5      5      nUR                  R                  S[        R                   R"                  R                  XpR                  40 5        U" UUR                  R                  S[$        U40 5      S9$ )Nr   )Úwrap_fx_proxyr   r  )rÂ   ré   )r  r!  r  Ú'check_event_record_after_input_mutationr´   r¶   rM   r(   r–   re   r   r)   r   r   r	  r&   r…   r†   r   )rš   rÂ   r!   r"   r!  Ú	event_varr*   r`   s           r+   re   ÚStreamVariable.record_eventë  sù   € õ 	+à
�	‰	×9Ñ9¼"¸T¿Z¹Z».ÔIÞ”J˜t A™w¬×6Ñ6Ø˜Q™ˆIØ—O‘OˆEØ#×5Ñ5‰Kà—J‘J×+Ñ+Ó-ˆEÜ7ØÜ×>Ñ>Ü! "Ó%Ô'8¸Ó'<óóˆKð 	�	‰	×ÑØÜ�I‰I×Ñ×*Ñ*Ø×0Ñ0Ð1Øô		
ñ ØØ—)‘)×(Ñ(ØÜ,Ø�Øó	ñ
ð 	
r-   )rj   r}   rm   r  re   c                 óÚ  • SSK JnJn  SSKJn  SSKJn  [        U[        5      (       d  UR                  " US:H  5      $ U R                  (       a+  U" U R                  R                  UR                  5      5        UR                  (       a+  U" UR                  R                  UR                  5      5        Xc   n[        R                  " UU" U R                  UR                  5      5      $ )Nr
   rõ   )Úcmp_name_to_op_mappingr   r   Ú__ne__)rù   rö   r÷   r  r&  Úconstantr   rM   r0   r•   r“   rú   rû   r   Úbuildr¶   )	rš   rÂ   ÚotherÚoprö   r÷   r&  r   Úop_fns	            r+   Útp_richcompare_implÚ"StreamVariable.tp_richcompare_impl  s§   € ß8Ý2Ý.ä˜%¤×0Ñ0ð $×*Ò*¨2°©>Ó:Ð:Ø�;�;Ù˜$Ÿ+™+×0Ñ0°×1JÑ1JÓKÔLØ�<�<Ù˜%Ÿ,™,×1Ñ1°,×2KÑ2KÓLÔMØ&Ñ*ˆÜ×$Ò$ØÙ�$—*‘*˜eŸk™kÓ*ó
ð 	
r-   c                 ó   • U R                   $ r%   ©ré   r¦   s    r+   Úas_proxyÚStreamVariable.as_proxy+  r  r-   c                 ó   • g)Nztorch._CrR   r¦   s    r+   Úmodule_nameÚStreamVariable.module_name.  s   € Ør-   c                 ó   • g)Nr/   rR   r¦   s    r+   Úfn_nameÚStreamVariable.fn_name1  s   € Ør-   r   c                 óÈ  ^• U R                   (       a  [        S5      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 )Nz2Stream should not have a source during reconstructc                  ól   >• T R                  [        R                  R                  R                  S5      $ ©Nr   r:   ©Úcodegens   €r+   r?   Ú,StreamVariable.reconstruct.<locals>.<lambda>;  ó&   ø€ ˜×0Ñ0Ü—M‘M×7Ñ7×@Ñ@Ø2ôr-   r   FÚ_stream_T©Úadd)r“   rN   r–   rA   Úappend_outputÚcreate_load_constrB   r   r4   rÂ   r  Úinstall_global_by_idr¶   Úcreate_load_global©rš   r=  Úprefixrþ   s    `  r+   ÚreconstructÚStreamVariable.reconstruct4  s¼   ø€ ð �;�;Ü Ð!UÓVÐVØ×!Ñ!Ñ-Ø×!Ñ!ôôð ×!Ñ! '×";Ñ";¸D×<RÑ<RÓ"SÔTØ×!Ñ!Ô"6°q¸%Ó"@ÕAð   §¡˜}Ð-ˆFØ—:‘:×$Ñ$×9Ñ9¸&Ç*Á*ÓMˆDØ×!Ñ! '×"<Ñ"<¸TÀtÐ"<Ð"LÕMr-   c                 ó   • U $ r%   rR   r¦   s    r+   rÊ   ÚStreamVariable.get_streamH  s   € Øˆr-   c                 ó0   ^ ^• S[         SSSS 4U U4S jjnU$ )NrK   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      $ r8   r:   r<  s   €r+   r?   ÚNStreamVariable.make_construct_in_graph_stream_fn.<locals>.fn.<locals>.<lambda>Q  ó&   ø€ ˜×0Ñ0Ü—M‘M×7Ñ7×@Ñ@Ø0ôr-   c                  ól   >• T R                  [        R                  R                  R                  S5      $ )NÚbuild_stream©r;   r&   r<   r  r>   r<  s   €r+   r?   rP  W  s%   ø€ ˜×0Ñ0Ü—M‘M×'Ñ'×0Ñ0°.ôr-   r
   Fr   ©rA   rB   r   ©rK   r=  r!   r"   s    `€€r+   ÚfnÚ<StreamVariable.make_construct_in_graph_stream_fn.<locals>.fnO  óg   ù€ Ø×!Ñ!ôôð ×!Ñ!ôôñ
 �DŒMÙ�FŒOØ×!Ñ!Ô"6°q¸%Ó"@ÔAØ×!Ñ!Ô"6°q¸%Ó"@ÕAr-   ©r¾   ©r!   r"   rW  s   `` r+   r1   Ú0StreamVariable.make_construct_in_graph_stream_fnK  ó.   ù€ ð	B”cð 	B Kð 	B°D÷ 	Bð 	Bð" ˆ	r-   )r4   ré   r–   r¶   r%   )rš   r0   rÂ   r   r#   zVariableTracker | None©r=  r   r#   Nrß   )+r>   r¹   rº   r»   r¼   r&   r/   rç   rã   Ú__annotations__rè   râ   r	   r¾   r   r�   rØ   rÿ   Úobjectr  Úlistr   rá   rj   r}   rm   r  re   r   Ú
tp_methodsr-  r1  r4  r7  rI  rÊ   rà   r   r   r   r1   r¿   rä   rå   s   @r+   r0   r0   t  sc  ø‡ Ù;àŸ,™,€M�4Ó&ð '+Ð˜˜t™Ó*ð )-ñ	)àð)ð �|‰|ð)ð  ™:ð	)ð
 ð)ð 
÷)ð )ð,"˜Tô "ðØðØ$?ðà	!ôð$¨fô ð-à'ð-ð �?Ñ#ð-ð �S˜/Ð)Ñ*ð	-ð
 
ô-ð"-à'ð-ð �?Ñ#ð-ð �S˜/Ð)Ñ*ð	-ð
 
ô-ð"-à'ð-ð �?Ñ#ð-ð �S˜/Ð)Ñ*ð	-ð
 
ô-ð
à'ð
ð �?Ñ#ð
ð �S˜/Ð)Ñ*ð	
ð
 
ô
ð"#
à'ð#
ð �?Ñ#ð#
ð �S˜/Ð)Ñ*ð	#
ð
 
ô#
ñL ˜ZÓ(Ù˜kÓ*Ù˜kÓ*Ù˜“Ù˜|Ó,ñ€Jò
ð&˜%ô ð˜Sô ð˜ô ôNô(ð ðØðØ%6ðà	�3˜Ð$ dÐ*Ñ	+óó ör-   r0   c                   ór   • \ rS rSrSr\R                  R                  rSr	S\
" \R                  S5      0rSrg)ÚCudaStreamVariableic  zMRepresents torch.cuda.Stream, preserving device-specific type and attributes.Úcuda_streamNrR   )r>   r¹   rº   r»   r¼   r&   rÖ   r/   rç   rè   r   r0   rÿ   Ú	tp_getsetr¿   rR   r-   r+   rd  rd  c  s5   † ÙWà—J‘J×%Ñ%€MØ'Ðð 	‘v˜n×FÑFÈÓMðƒIr-   rd  c                   ór   • \ rS rSrSr\R                  R                  rSr	S\
" \R                  S5      0rSrg)ÚXpuStreamVariablein  zLRepresents torch.xpu.Stream, preserving device-specific type and attributes.Ú
sycl_queueNrR   )r>   r¹   rº   r»   r¼   r&   Úxpur/   rç   rè   r   r0   rÿ   rf  r¿   rR   r-   r+   rh  rh  n  s5   † ÙVà—I‘I×$Ñ$€MØ&Ðð 	‘f˜^×EÑEÀtÓLðƒIr-   rh  Ú_stream_fn_to_variable_clsÚ	stream_fnc                 ó,   • [         R                  U 5      $ r%   )rk  Úget)rl  s    r+   Ú_get_stream_variable_clsro    s   € Ü%×)Ñ)¨)Ó4Ð4r-   c                   ó.  ^ • \ rS rSrS\S\R                  S\S-  S\SS4
U 4S jjr	S	S
S\
S\S\
4S jrS\4S jrS\4S jrS	S
S\\
   S\\\
4   S\
4S jrS	S
S\\
   S\\\
4   S\
4S jrS	S
S\\
   S\\\
4   S\
4S jrS	S
S\\
   S\\\
4   S\
4S jr\" \5      \" \5      \" \5      \" \5      S.rS	S
S\S\\
   S\\\
4   S\
4
U 4S jjrS\4S jr\S	S
S\\
   S\\\
4   S\S\4   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–   Nr"   r#   c                 ó  >• Ub_  SUR                   R                  ;   aE  UR                   R                  S   U:w  a(  [        SUR                   R                  S    SU 35      e[        TU ]  " S0 UD6  Xl        X l        X0l        g )Nrë   rì   rí   rR   )rî   rï   rN   rÉ   r�   ré   r¶   r–   rð   s        €r+   r�   ÚEventVariable.__init__„  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                 ó    • SSK Jn  U" XX#5      $ )Nr   )Úobject_richcompare)Úobject_protocolrt  )rš   rÂ   r*  r+  rt  s        r+   r-  Ú!EventVariable.tp_richcompare_impl•  s   € õ 	8á! $¨EÓ6Ð6r-   c                 ó,   • [        U R                  5      $ r%   )rã   r¶   r¦   s    r+   rØ   ÚEventVariable.python_typeœ  s   € Ü�D—J‘JÓÐr-   c                 ó   • U R                   $ r%   r  r¦   s    r+   r  Ú*EventVariable.get_real_python_backed_valueŸ  r  r-   r!   c                 óö   • [         R                  XU5      u  pEUR                  R                  S[        R
                  R                  R                  U R                  U40 5        [        R                  " S 5      $ r  )r(   Ú_get_stream_argr  r	  r&   r…   r†   rj   r–   r   r•   )rš   rÂ   r!   r"   rF   ra   s         r+   ri   ÚEventVariable.wait¢  si   € ô (×7Ñ7¸À&ÓI‰ˆØ
�	‰	×ÑØÜ�I‰I×Ñ×(Ñ(à×&Ñ&Øðð ô	
ô  ×&Ò& tÓ,Ð,r-   c                 óR  • [         R                  XU5      u  pEUR                  R                  [	        UR
                  5      5        UR                  R                  S[        R                  R                  R                  U R                  U40 5        [        R                  " S 5      $ r  )r(   r|  r  r"  r´   r¶   r	  r&   r…   r†   re   r–   r   r•   )rš   rÂ   r!   r"   Ú
stream_argra   s         r+   rc   ÚEventVariable.record´  s‡   € ô $1×#@Ñ#@ÀÈ6Ó#RÑ ˆ
Ø
�	‰	×9Ñ9¼"¸Z×=MÑ=MÓ:NÔOØ
�	‰	×ÑØÜ�I‰I×Ñ×*Ñ*à×&Ñ&Øðð ô	
ô  ×&Ò& tÓ,Ð,r-   c                 óÄ   • UR                   R                  S[        R                  R                  R
                  U R                  40 5        [        R                  " S 5      $ r  )	r  r	  r&   r…   r†   rn   r–   r   r•   r  s       r+   rm   ÚEventVariable.synchronizeÇ  sN   € ð 	�	‰	×ÑØÜ�I‰I×Ñ×/Ñ/Ø×#Ñ#Ð%Øô		
ô  ×&Ò& tÓ,Ð,r-   c                 ó€   • SSK Jn  SSKJn  U" [        UUR
                  R                  " SS/U" U /U-   U5      Q76 S9$ r  r  r  s         r+   r  ÚEventVariable.queryÕ  r  r-   )ri   rc   rm   r  rþ   c                 ó  >• X R                   ;   a  [        TU ]	  XX45      $ [        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 )NÚ.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)rb  rÉ   r  rã   r¶   r¹   rº   r   râ   r   ÚSUPPORTABLE)rš   rÂ   rþ   r!   r"   Úmethod_namerË   s         €r+   r  ÚEventVariable.call_methodí  s•   ø€ ð —?‘?Ó"Ü‘7Ñ& r°Ó>Ð>ä�D—J‘JÓ×*Ñ*Ð+¨1¬T°$·*±*Ó-=×-JÑ-JÐ,KÈ1ÈTÈFÐSð 	ô 	Ø.Ü˜“IØ=¸k¸]ð KIð JðÜ"×.Ñ.ðó	
r-   c                 ó   • U R                   $ r%   r0  r¦   s    r+   r1  ÚEventVariable.as_proxy  r  r-   r0   c                 óÆ   • SnU(       a  US   nOU(       a  UR                  S5      nU(       d'  U R                  R                  5       nXDR                  4$ X3R                  4$ )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   r2   )rn  rÎ   r¬   r–   )rÂ   r!   r"   r  rœ   s        r+   r|  ÚEventVariable._get_stream_arg	  s[   € ð ˆ
ÞØ˜a™‰JÞØŸ™ HÓ-ˆJæØ×1Ñ1×<Ñ<Ó>ˆJØ×;Ñ;Ð;Ð;à×7Ñ7Ð7Ð7r-   r   c                 ó0   ^ ^• S[         SSSS 4U U4S jjnU$ )NrK   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      $ r8   r:   r<  s   €r+   r?   ÚLEventVariable.make_construct_in_graph_event_fn.<locals>.fn.<locals>.<lambda>(  rQ  r-   c                  ól   >• T R                  [        R                  R                  R                  S5      $ )NÚbuild_eventrT  r<  s   €r+   r?   r•  .  s%   ø€ ˜×0Ñ0Ü—M‘M×'Ñ'×0Ñ0°-ôr-   r
   Fr   rU  rV  s    `€€r+   rW  Ú:EventVariable.make_construct_in_graph_event_fn.<locals>.fn&  rY  r-   rZ  r[  s   `` r+   r)   Ú.EventVariable.make_construct_in_graph_event_fn"  r]  r-   c                 ó®  ^• U R                   (       a  [        S5      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nTR                  R                  R                  X R                  5      nTR	                  TR                  USS95        g )Nz1Event should not have a source during reconstructc                  ól   >• T R                  [        R                  R                  R                  S5      $ r;  r:   r<  s   €r+   r?   Ú+EventVariable.reconstruct.<locals>.<lambda>@  r?  r-   r   FÚ_eventTrA  )r“   rN   r–   rA   rC  rD  rB   r   rÂ   r  rE  r¶   rF  rG  s    `  r+   rI  ÚEventVariable.reconstruct9  s¯   ø€ ð �;�;Ü Ð!TÓUÐUØ×!Ñ!Ñ-Ø×!Ñ!ôôð ×!Ñ! '×";Ñ";¸D×<RÑ<RÓ"SÔTØ×!Ñ!Ô"6°q¸%Ó"@ÕAàˆFØ—:‘:×$Ñ$×9Ñ9¸&Ç*Á*ÓMˆDØ×!Ñ! '×"<Ñ"<¸TÀtÐ"<Ð"LÕMr-   )ré   r–   r¶   r^  )%r>   r¹   rº   r»   r	   r&   r'   r¾   r   r�   r   râ   r-  rã   rØ   r`  r  ra  rá   ri   rc   rm   r  r   rb  r  r1  rà   Útupler|  r   r   r   r)   rI  r¿   rä   rå   s   @r+   r(   r(   ƒ  st  ø† ð3àð3ð �{‰{ð3ð  ™:ð	3ð
 ð3ð 
÷3ð"7Ø-ð7Ø6Eð7ØKNð7à	ô7ð ˜Tô  ð¨fô ð-à'ð-ð �?Ñ#ð-ð �S˜/Ð)Ñ*ð	-ð
 
ô-ð$-à'ð-ð �?Ñ#ð-ð �S˜/Ð)Ñ*ð	-ð
 
ô-ð&-à'ð-ð �?Ñ#ð-ð �S˜/Ð)Ñ*ð	-ð
 
ô-ð
à'ð
ð �?Ñ#ð
ð �S˜/Ð)Ñ*ð	
ð
 
ô
ñ$ �t“Ù˜“.Ù˜kÓ*Ù˜“ñ	€Jð
à'ð
ð ð
ð �?Ñ#ð	
ð
 �S˜/Ð)Ñ*ð
ð 
÷
ð2˜%ô ð ð8Ø'ð8à�?Ñ#ð8ð �S˜/Ð)Ñ*ð8ð 
Ð Ð$Ñ	%ó	8ó ð8ð0 ðØðØ%6ðà	�3˜Ð$ dÐ*Ñ	+óó ð÷,Nò Nr-   r(   )Zr—   Ú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   r(  r   Úctx_managerr   Úlazyr   Útorch._dynamo.symbolic_convertr   r=  r   Útorch._library.custom_opsr    ÚTensorr¾   r,   rŸ  r3   r4   rC   rJ   r/   rO   r'   rQ   rZ   Úregister_fakerF   r…   r†   Úforkr‡   r^   Újoinre   rj   rn   râ   ru   rx   r}   r‰   r�   r‘   rÁ   r0   rd  rh  rÖ   rI   rj  rk  rá   r`  rã   r_  ro  r(   rR   r-   r+   Ú<module>r±     sè  ðÜ Ý $ß  ã Ý ;Ý 7ß +å  Ý :ß .÷õ õ )ß 1Ñ 1Ý &Ý 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lÐ*ô lô^˜ô ô˜ô ð 
‡J�J×ÑÐ1Ø	‡I�I×ÑÐ/ðBÐ ˜D ¨¨nÑ)=Ð!=Ñ>ó ð5¨ð 5°4¸Ñ3GÈ$Ñ3Nô 5ôGN�Oõ GNr-   