Ë
    L²jô\  ã            	       ó
  — 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„ dWe«      ZMy)Xé    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)ÚInstructionTranslator)Ú	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      ú^/var/www/html/ia-enhanced/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                 ód   — t        | «      }t        |t        j                  «      s
J d| › �«       ‚|S )Nz3Fork/join stream expected a stream object at index )r   Ú
isinstancer$   r-   )rG   r0   s     r)   Ú_get_stream_by_indexrJ   L   s8   € Ü)¨%Ó0€FÜ�fœeŸl™lÔ+ð Ø
=¸e¸WÐEóÐ+ð €Mr+   c                 ód   — t        | «      }t        |t        j                  «      s
J d| › �«       ‚|S )Nz4Record/wait event expected an event object at index )r   rI   r$   r%   )rG   r(   s     r)   Ú_get_event_by_indexrL   T   s8   € Ü(¨Ó/€EÜ�eœUŸ[™[Ô)ð Ø
>¸u¸gÐFóÐ)ð €Lr+   zstreams::fork© )Úmutates_argsÚ
from_indexÚto_indexc                 óT   — t         j                  j                  t        |«      «       y r#   ©r$   rD   Ú
set_streamrJ   ©rO   rP   s     r)   Úfork_streamrU   \   s   € ô
 
×Ñ× Ñ Ô!5°hÓ!?Õ@r+   c                  ó   — y r#   rM   rT   s     r)   rC   rC   d   ó   € ð
 	r+   zstreams::joinc                 óT   — t         j                  j                  t        |«      «       y r#   rR   rT   s     r)   Újoin_streamrY   o   s   € ä	×Ñ× Ñ Ô!5°hÓ!?Õ@r+   c                  ó   — y r#   rM   rT   s     r)   rC   rC   t   rW   r+   zstreams::record_eventÚevent_indexÚstream_indexc                 óR   — t        | «      }t        |«      }|j                  |«       y r#   )rL   rJ   Úrecord©r[   r\   r(   r0   s       r)   Úrecord_eventr`      s"   € ä Ó,€EÜ! ,Ó/€FØ	‡L�L�Õr+   c                  ó   — y r#   rM   ©r[   r\   s     r)   rC   rC   †   rW   r+   zstreams::wait_eventc                 óR   — t        | «      }t        |«      }|j                  |«       y r#   )rL   rJ   Úwaitr_   s       r)   Ú
wait_eventre   ‘   s"   € ä Ó,€EÜ! ,Ó/€FØ	‡J�JˆvÕr+   c                  ó   — y r#   rM   rb   s     r)   rC   rC   ˜   rW   r+   zstreams::synchronize_eventc                 ó:   — t        | «      }|j                  «        y r#   )rL   Úsynchronize)r[   r(   s     r)   Úsynchronize_eventri   £   s   € ä Ó,€EØ	×ÑÕr+   c                  ó   — y r#   rM   )r[   s    r)   rC   rC   ©   ó   € àr+   zstreams::synchronize_deviceÚdevice_typeÚdevice_indexc                 ój   — t         j                  j                  t        j                  | |«      «       y r#   )r$   rD   rh   r2   ©rl   rm   s     r)   Úsynchronize_devicerp   ±   s!   € ä	×Ñ×!Ñ!¤%§,¡,¨{¸LÓ"IÕJr+   c                  ó   — y r#   rM   ro   s     r)   rC   rC   ¶   rk   r+   zstreams::synchronize_streamc                 ó:   — t        | «      }|j                  «        y r#   )rJ   rh   )r\   r0   s     r)   Úsynchronize_streamrs   ¾   s   € ä! ,Ó/€FØ
×ÑÕr+   c                  ó   — y r#   rM   )r\   s    r)   rC   rC   Ä   rk   r+   zstreams::wait_streamÚwaiting_stream_indexÚwaited_on_stream_indexc                 óR   — t        | «      }t        |«      }|j                  |«       y r#   )rJ   Úwait_stream)ru   rv   ÚwaitingÚ	waited_ons       r)   rx   rx   Ì   s&   € ä"Ð#7Ó8€GÜ$Ð%;Ó<€IØ×Ñ˜	Õ"r+   c                  ó   — y r#   rM   rb   s     r)   rC   rC   Ó   rW   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Ústreamsre   Údefault©r|   r}   r~   s      r)   Úsync_deallocr„   Þ   s&   € ô 
‡I�I×Ñ× Ñ ×(Ñ(Ð)9Ð;KÕLr+   c                  ó   — y r#   rM   rƒ   s      r)   rC   rC   ë   s   € ð 	r+   zstreams::record_streamÚtensorc                 ó8   — | j                  t        |«      «       y r#   )Úrecord_streamrJ   ©r†   r\   s     r)   rˆ   rˆ   ÷   s   € à
×ÑÔ-¨lÓ;Õ<r+   c                  ó   — y r#   rM   r‰   s     r)   rC   rC   ü   rW   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        k(  sJ 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   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ØÔ0Ò0ð Ø=Ô>RÐ=Sð TØ�gðóÐ0ô -×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_context4  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_id7  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­   rM   r+   r)   rŒ   rŒ     sI   „ Ù3ó
ó8-ó$ñ) §¡°Ñ!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.createB  s   € ô %Øñ
àñ
ð 	
r+   r0   Nc                 ól   •— || _         t        ‰| �  dd| j                  «       j                  id dœ|¤Ž y )Nr0   )Útarget_valuesÚinitial_valuesrM   )r0   Úsuperr˜   Ú
get_streamr‘   )r•   r0   r    Ú	__class__s      €r)   r˜   zStreamContextVariable.__init__M  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.enterU  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_typee  s   € Ü�z‰z×'Ñ'Ð'r+   c                  ó   — y)NTrM   rŸ   s    r)   Úsupports_graph_breaksz+StreamContextVariable.supports_graph_breaksh  s   € Ør+   c                 ó@   — | j                   sJ d«       ‚| j                   S )Nz,Stream context should have a separate stream)r0   rŸ   s    r)   r¼   z StreamContextVariable.get_streamk  s   € Ø�{Š{ÐJÐJÓJˆ{Ø�{‰{Ð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´   ?  s»   ø„ Ù2àð
Ø#ð
à)ð
ð �s˜C�x‘.ð
ð 
!ò	
ó ð
ð
˜xÐ(8Ñ9ð 
ÀSð 
ÈTõ 
ð!Ø)ð!Ø2Að!à	õ!ð'Ø)ð'Ø2Að'à	õ'ð(˜Tó (ð tó ÷r+   r´   c                   ó  ‡ — e Zd ZdZej
                  Z	 ddedej
                  dedz  de	ddf
ˆ 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
ˆ f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 classNÚproxyr¬   r‘   r    r!   c                 óà   •— |�6d|j                   j                  v r|j                   j                  d   |k(  sJ ‚|| _        || _        |j                  | _        || _        t        ‰| �  di |¤Ž y )NÚexample_valuer#   )ÚnodeÚmetarÓ   r¬   r2   r‘   r»   r˜   ©r•   rÓ   r¬   r‘   r    r½   s        €r)   r˜   zStreamVariable.__init__u  sf   ø€ ð Ð °E·J±J·O±OÑ!CØ—:‘:—?‘? ?Ñ3°uÒ<Ð<Ð<àˆŒ
ØˆŒ
Ø—l‘lˆŒà!2ˆÔÜ‰ÑÑ( Ó(r+   c                 ó"   — t         j                  S r#   )r$   r-   rŸ   s    r)   rÇ   zStreamVariable.python_typeˆ  s   € Ü�|‰|Ðr+   c                 ó   — | j                   S r#   ©r¬   rŸ   s    r)   Úget_real_python_backed_valuez+StreamVariable.get_real_python_backed_value‹  ó   € Ø�z‰zÐr+   rµ   r   Únamer   c                 ó6  •— t        | j                  |«      s
J d|› �«       ‚ddlm}m} ddlm} |dk(  r‚|d   }t        |t        «      sJ ‚|j                  j                  dt        j                  j                  j                  |j                  | j                  fi «       t!        j"                  d «      S |d	k(  r‚|d   }	t        |	t$        «      sJ ‚|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-                  t/        | j                  «      «       |r1t        |d   t        «      r|d   }|j                  }|j                  }nL| j                  j1                  «       }t3        |t        j5                  t7        g «      t9        i «      «      «      }|j                  j                  dt        j                  j                  j0                  || j                  fi «        |
||j                  j                  dt:        |fi «      ¬«      S ||v r÷t=        |«      dk(  ré|sçddlm }m!} | jD                  r+ || jD                  jG                  |jH                  «      «       |d   }t        |t$        «      stK        jL                  |tN        «      S |jD                  r9| jD                  €J ‚ || jD                  jG                  |jH                  «      «       tK        jL                  | ||   | j                  |j                  «      «      S tP        ‰| �¥  ||||«      S )Nzno stream method found named r
   )Úcmp_name_to_op_mappingÚproxy_args_kwargsr   ©Úwrap_fx_proxy_clsre   r   Úcall_functionrx   rh   ÚqueryÚcall_method©Ú
target_clsrµ   rÓ   r`   )Úwrap_fx_proxy)rµ   rÓ   ©ÚGuardBuilderÚinstall_guard)*Úhasattrr¬   Úutilsrà   rá   Úbuilderrã   rI   r&   ÚoutputÚcreate_proxyr$   r€   r�   re   r‘   r   r�   r.   rx   rs   ré   Ú'check_event_record_after_input_mutationrª   r`   r   r'   r   r   r   r¦   Úguardsrë   rì   rŽ   Ú
make_guardÚEQUALS_MATCHr   ÚbuildÚNotImplementedr»   ræ   )r•   rµ   rÞ   r   r    rà   rá   rã   Ú	event_argÚother_streamré   Ú	event_varr(   r[   rë   rì   Úotherr½   s                    €r)   ræ   zStreamVariable.call_methodŽ  sŒ  ø€ ô �t—z‘z 4Ô(ÐPÐ,IÈ$ÈÐ*PÓPÐ(çEÝ.à�<ÒØ˜Q™ˆIÜ˜i¬Ô7Ð7Ð7Ø�I‰I×"Ñ"ØÜ—	‘	×!Ñ!×,Ñ,Ø×,Ñ,¨d×.DÑ.DÐEØô	ô $×*Ñ*¨4Ó0Ð0Ø�]Ò"Ø ™7ˆLÜ˜l¬NÔ;Ð;Ð;Ø�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Øó	ôð ð Ð+Ñ+´°D³	¸Q²Ávß<à�{Š{Ù˜dŸk™k×4Ñ4°\×5NÑ5NÓOÔPð ˜‘GˆEÜ˜e¤^Ô4Ü&×,Ñ,¨R´Ó@Ð@à�|Š|Ø—{‘{Ð.Ð.Ð.Ù˜dŸk™k×4Ñ4°\×5NÑ5NÓOÔPÜ"×(Ñ(ØØ,Ð& tÑ,¨T¯Z©Z¸¿¹ÓEóð ô
 ‰wÑ" 2 t¨T°6Ó:Ð:r+   c                 ó   — | j                   S r#   ©rÓ   rŸ   s    r)   Úas_proxyzStreamVariable.as_proxyó  rÝ   r+   c                  ó   — y)Nztorch._CrM   rŸ   s    r)   Úmodule_namezStreamVariable.module_nameö  s   € Ør+   c                  ó   — y)Nr-   rM   rŸ   s    r)   Úfn_namezStreamVariable.fn_nameù  s   € Ør+   r   c                 ó°  ‡— | j                   rJ ‚| j                  �Z‰j                  ˆfd„«       ‰j                  ‰j	                  | j                  «      «       ‰j                  t        dd«      «       y d| j                  › �}‰j                  j                  j                  || j                  «      }‰j                  ‰j                  |d¬«      «       y )Nc                  ól   •— ‰ j                  t        j                  j                  j                  d«      S )Nr   r8   ©Úcodegens   €r)   r=   z,StreamVariable.reconstruct.<locals>.<lambda>  s(   ø€ ˜×0Ñ0Ü—M‘M×7Ñ7×@Ñ@Ø2ó€ r+   r   FÚ_stream_T©Úadd)rŽ   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·   ø€ ð —;’;ÐˆØ×!Ñ!Ð-Ø×!Ñ!óôð ×!Ñ! '×";Ñ";¸D×<RÑ<RÓ"SÔTØ×!Ñ!Ô"6°q¸%Ó"@ÕAð   §¡˜}Ð-ˆFØ—:‘:×$Ñ$×9Ñ9¸&À$Ç*Á*ÓMˆDØ×!Ñ! '×"<Ñ"<¸TÀtÐ"<Ó"LÕMr+   c                 ó   — | S r#   rM   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>  ó(   ø€ ˜×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>.fn  óg   ù€ Ø×!Ñ!óôð ×!Ñ!óôñ
 �DŒMÙ�FŒOØ×!Ñ!Ô"6°q¸%Ó"@ÔAØ×!Ñ!Ô"6°q¸%Ó"@ÕAr+   ©r²   ©r   r    r  s   `` r)   r/   z0StreamVariable.make_construct_in_graph_stream_fn  ó(   ù€ ð	B”cð 	B Kð 	B°Dö 	Bð" ˆ	r+   r#   ©r  r   r!   NrË   )r<   r®   r¯   r°   r$   r-   Ú_cpython_typer	   r²   r   r˜   rÏ   rÇ   ÚobjectrÜ   rÎ   Úlistr   rÍ   ræ   rþ   r   r  r  r¼   rÌ   r   r   r   r/   rÐ   rÑ   s   @r)   r.   r.   p  s  ø„ Ù;à—L‘L€Mð )-ñ	)àð)ð �|‰|ð)ð  ™:ð	)ð
 ð)ð 
õ)ð&˜Tó ð¨fó ðc;à#ðc;ð ðc;ð �?Ñ#ð	c;ð
 �S˜/Ð)Ñ*ðc;ð 
õc;ðJ˜%ó ð˜Só ð˜ó óNó&ð ðØðØ%6ðà	�3˜Ð$ dÐ*Ñ	+òó ôr+   r.   c                   óh   ‡ — e Zd ZdZej
                  j                  Zdefd„Z	ddde
ddfˆ fd„Zˆ xZS )	ÚCudaStreamVariablezMRepresents torch.cuda.Stream, preserving device-specific type and attributes.r!   c                 ó6   — t         j                  j                  S r#   )r$   rÅ   r-   rŸ   s    r)   rÇ   zCudaStreamVariable.python_type/  s   € Ü�z‰z× Ñ Ð r+   rµ   r   rÞ   r   c                 ó¨  •— ddl m} |dk(  r·ddlm}m} | j
                  r+ || j
                  j                  |j                  «      «       t        | j                  d«      r& |j                  | j                  j                  «      S t        | j                  d«      r& |j                  | j                  j                  «      S t        ‰| �9  ||«      S )Nr   r   Úcuda_streamr
   rê   Únative_handle)Ú r   ró   rë   rì   rŽ   rô   rõ   rí   r¬   r�   r(  r)  r»   Úvar_getattr)r•   rµ   rÞ   r   rë   rì   r½   s         €r)   r+  zCudaStreamVariable.var_getattr2  sŸ   ø€ Ý&à�=Ò ß<à�{Š{Ù˜dŸk™k×4Ñ4°\×5NÑ5NÓOÔPä�t—z‘z =Ô1Ø.Ð'×.Ñ.¨t¯z©z×/EÑ/EÓFÐFä�t—z‘z ?Ô3Ø.Ð'×.Ñ.¨t¯z©z×/GÑ/GÓHÐHä‰wÑ" 2 tÓ,Ð,r+   )r<   r®   r¯   r°   r$   rÅ   r-   r!  rÏ   rÇ   rÎ   r+  rÐ   rÑ   s   @r)   r%  r%  *  sB   ø„ ÙWà—J‘J×%Ñ%€Mð!˜Tó !ð-Ð5ð -¸Sð -ÐEV÷ -ñ -r+   r%  c                   ó  ‡ — e Zd Zdedej
                  dedz  deddf
ˆ 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                 ó¾   •— |�6d|j                   j                  v r|j                   j                  d   |k(  sJ ‚t        ‰| �  di |¤Ž || _        || _        || _        y )NrÕ   rM   )rÖ   r×   r»   r˜   rÓ   r¬   r‘   rØ   s        €r)   r˜   zEventVariable.__init__E  s[   ø€ ð Ð °E·J±J·O±OÑ!CØ—:‘:—?‘? ?Ñ3°uÒ<Ð<Ð<Ü‰ÑÑ"˜6Ò"ØˆŒ
ØˆŒ
Ø!2ˆÕr+   c                 ó"   — t         j                  S r#   )r$   r%   rŸ   s    r)   rÇ   zEventVariable.python_typeS  s   € Ü�{‰{Ðr+   c                 ó   — | j                   S r#   rÛ   rŸ   s    r)   rÜ   z*EventVariable.get_real_python_backed_valueV  rÝ   r+   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â   rd   rä   r^   rh   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�   re   r‘   r   r�   rò   rª   r¬   r`   ri   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_methodY  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   )Úgetr¿   r¤   r‘   )rµ   r   r    r8  r—   s        r)   r6  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¶  r  r+   c                 óÈ   — | j                   rJ ‚d}|j                  j                  j                  || j                  «      }|j                  |j                  |d¬«      «       y )NÚ_eventTr  )rŽ   rµ   rð   r  r¬   r
  r  r  s       r)   r  zEventVariable.reconstructÍ  sS   € ð —;’;ÐˆàˆØ�z‰z× Ñ ×5Ñ5°f¸d¿j¹jÓIˆØ×Ñ˜g×8Ñ8¸À4Ð8ÓHÕIr+   r   )r<   r®   r¯   r	   r$   r%   r²   r   r˜   rÏ   rÇ   r"  rÜ   rÎ   r#  r   rÍ   ræ   rþ   rÌ   Útupler6  r   r   r   r'   r  rÐ   rÑ   s   @r)   r&   r&   D  s<  ø„ ð3àð3ð �{‰{ð3ð  ™:ð	3ð
 ð3ð 
õ3ð˜Tó ð¨fó ð?à#ð?ð ð?ð �?Ñ#ð	?ð
 �S˜/Ð)Ñ*ð?ð 
ó?ðB˜%ó ð ð8Ø#ð8à�?Ñ#ð8ð �S˜/Ð)Ñ*ð8ð 
Ð Ð$Ñ	%ò	8ó ð8ð0 ðØðØ%6ðà	�3˜Ð$ dÐ*Ñ	+òó ð÷,Jr+   r&   )Nr’   Úcollections.abcr   Útypingr   r   r$   Útorch._dynamo.variables.dictsr   Útorch._dynamo.variables.listsr   Útorch.fxr   r	   r*  r   Úbytecode_transformationr   Úexcr   r   r;   r   r   r   r   r   rŽ   r   Úbaser   Úconstantr   Úctx_managerr   Úlazyr   Útorch._dynamo.symbolic_convertr   r  r   Útorch._library.custom_opsr   ÚTensorr²   r*   rD  r1   r2   r@   rF   r-   rJ   r%   rL   rU   Úregister_fakerC   r€   r�   Úforkr‚   rY   Újoinr`   re   ri   rÎ   rp   rs   rx   r„   rˆ   rŒ   r´   r.   r%  r&   rM   r+   r)   ú<module>rV     s{  ðÛ Ý $ß  ã Ý ;Ý 7ß +å  Ý :ß .÷õ õ )Ý !Ý &Ý 4Ý %ñ ÝDå#å /ð 
�‰€ð�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÷5 ñ 5 ôp.Ð7ô .ôbwÐ*ô wôt-˜ô -ô4PJ�Oõ PJr+   