Ë
    ÃÓ^jl ã                   ó  — U d Z ddlZddlZddlZddlZddlZddlmZmZm	Z	 ddlm
Z
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 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# d	dl$m%Z%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3 erddl4m5Z5 ddl6m7Z7  ejp                  e9«      Z: G d„ de(«      Z; G d„ de3«      Z< G d„ de<«      Z= G d„ de<«      Z> G d„ de;«      Z? G d „ d!e;«      Z@ G d"„ d#e;«      ZA G d$„ d%e;«      ZB G d&„ d'e;«      ZC G d(„ d)e;«      ZD G d*„ d+e;«      ZE G d,„ d-e;«      ZF G d.„ d/e;«      ZG G d0„ d1e;«      ZH G d2„ d3e;«      ZI G d4„ d5eI«      ZJ G d6„ d7eI«      ZK G d8„ d9eI«      ZLejš                  jœ                  eJejž                  jœ                  eKej                   j¢                  eLiZReSeTeTeI   f   eUd:<   d;eTd<eTeI   d=dfd>„ZVd;eTd=eTeI   dz  fd?„ZW G d@„ dAe;«      ZX G dB„ dCe;«      ZY G dD„ dEe;«      ZZ G dF„ dGe;«      Z[ G dH„ dIe;«      Z\ G dJ„ dKe;«      Z] G dL„ dMe;«      Z^ G dN„ dOe;«      Z_ G dP„ dQe;«      Z` G dR„ dSe;«      Za G dT„ dUe;«      Zb G dV„ dWe;«      Zc G dX„ dYe;«      Zd G dZ„ d[e(«      Ze G d\„ d]e(«      Zfy)^a)  
This file contains a collection of context manager classes used by Dynamo for tracking
and managing various PyTorch runtime states during graph compilation. These context
managers handle different aspects of PyTorch's execution environment, including:

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

The context managers ensure proper state transitions during graph compilation by
tracking enter/exit points and managing cleanup operations. They help maintain
consistency between eager execution and compiled graph behavior by capturing and
restoring state changes.
é    N)ÚCallableÚSequenceÚSized)ÚAbstractContextManagerÚ	ExitStack)ÚAnyÚTYPE_CHECKING)Úconfig)ÚGuard)Úwarning_onceé   )Úgraph_break_hintsÚ	variables)Úcreate_call_function)Úunimplemented)ÚGuardBuilderÚinstall_guard)Ú
AttrSourceÚGlobalStateSource)Ú_get_error_on_graph_breakÚ_set_error_on_graph_breaké   )ÚVariableTracker)ÚNestedUserFunctionVariableÚSkipFunctionVariableÚUserFunctionVariableÚUserMethodVariableÚ!WrappedNestedUserFunctionVariableÚWrappedSkipFunctionVariableÚWrappedUserFunctionVariableÚWrappedUserMethodVariable)ÚUserDefinedObjectVariable)Ú	PyCodegen)ÚInstructionTranslatorBasec            	       ó:  ‡ — e Zd Zddddhej                  £Z	 ddededz  deddfˆ fd„Zd	d
dededefd„Zd	d
defd„Z		 dd	d
de
def   dz  ddfd„Zd	d
dedefd„Zdd„Zdd„Zdefd„Zdefd„Zd	d
dee   deeef   defd„Zdefd„Zdefd„Zdd„Zdd„Zˆ xZS ) ÚContextWrappingVariableÚcm_objÚtarget_valuesÚinitial_valuesÚstateNÚkwargsÚreturnc                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y ©N© )ÚsuperÚ__init__r(   r)   ©Úselfr(   r)   r+   Ú	__class__s       €ún/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/variables/ctx_manager.pyr1   z ContextWrappingVariable.__init__G   s%   ø€ ô 	‰ÑÑ"˜6Ò"Ø*ˆÔØ,ˆÕó    Útxr$   ÚotherÚopc                 ó$   — ddl m}  || |||«      S ©Nr   )Úobject_richcompare©Úobject_protocolr<   ©r3   r7   r8   r9   r<   s        r5   Úrichcompare_implz(ContextWrappingVariable.richcompare_implN   ó   € õ 	8á! $¨¨E°2Ó6Ð6r6   c                 ó²   — t        | d«      r| j                  || j                  «       | j                  |«       t        j
                  j                  d «      S ©NÚ
_call_func)ÚhasattrrD   r(   Úset_cleanup_hookr   ÚConstantVariableÚcreate©r3   r7   s     r5   ÚenterzContextWrappingVariable.enterU   sE   € Ü�4˜Ô&Ø�O‰O˜B × 2Ñ 2Ô3Ø×Ñ˜bÔ!Ü×)Ñ)×0Ñ0°Ó6Ð6r6   Úfn.c                 ór   ‡ ‡— |€dˆ ˆfd„}|‰ _         ‰j                  j                  ‰ j                  «       y )Nc                  óX   •— t        ‰ d«      r‰ j                  ‰‰ j                  «       y y rC   )rE   rD   r)   rI   s   €€r5   rK   z4ContextWrappingVariable.set_cleanup_hook.<locals>.fn`   s&   ø€ Ü˜4 Ô.Ø—O‘O B¨×(;Ñ(;Õ<ð /r6   ©r,   N©Ú
cleanup_fnÚoutputÚadd_cleanup_hookÚcleanup©r3   r7   rK   s   `` r5   rF   z(ContextWrappingVariable.set_cleanup_hook[   s.   ù€ ð ˆ:ö=ð 68ˆŒØ
�	‰	×"Ñ" 4§<¡<Õ0r6   Úargsc                 ó`   — | j                  «        t        j                  j                  d «      S ©N)Úcleanup_assertr   rG   rH   ©r3   r7   rU   s      r5   ÚexitzContextWrappingVariable.exitg   s'   € ð 	×ÑÔÜ×)Ñ)×0Ñ0°Ó6Ð6r6   c                 ó’   —  |t        |j                  j                  | j                  «       «      | j	                  «       «      «       y rW   )r   r7   Úimport_sourceÚmodule_nameÚfn_name©r3   Úcodegens     r5   Úreconstruct_typez(ContextWrappingVariable.reconstruct_typem   s2   € ÙÜ�w—z‘z×/Ñ/°×0@Ñ0@Ó0BÓCÀTÇ\Á\Ã^ÓTõ	
r6   c                 ó   ‡ ‡— ‰j                  ˆˆ fd„«       ‰ j                  }|sd}‰j                  |D �cg c]  }‰j                  |«      ‘Œ c}«       ‰j                  t	        t        |«      d«      «       y c c}w )Nc                  ó&   •— ‰j                  ‰ «      S rW   )ra   )r`   r3   s   €€r5   ú<lambda>z5ContextWrappingVariable.reconstruct.<locals>.<lambda>s   s   ø€  d×&;Ñ&;¸GÓ&D€ r6   r/   F)Úadd_push_nullr(   Úextend_outputÚcreate_load_constr   Úlen)r3   r`   r(   Úvals   ``  r5   Úreconstructz#ContextWrappingVariable.reconstructr   sj   ù€ Ø×ÑÔDÔEØ×*Ñ*ˆÙØˆMØ×ÑÈÖWÀ#˜w×8Ñ8¸Õ=ÒWÔXØ×ÑÔ2´3°}Ó3EÀuÓMÕNùò Xs   ·A;c                 ó   — t        d«      ‚)Nzmodule_name called on base©ÚNotImplementedError©r3   s    r5   r]   z#ContextWrappingVariable.module_namez   s   € Ü!Ð">Ó?Ð?r6   c                 ó   — t        d«      ‚)Nzfn_name called on baserl   rn   s    r5   r^   zContextWrappingVariable.fn_name}   s   € Ü!Ð":Ó;Ð;r6   c                 óì  — t        |«      dk7  rt        dt        |«      › �«      ‚t        |d   t        t        t
        t        f«      st        dt        |d   «      › �«      ‚t        |d   t        «      rt        |d   | «      S t        |d   t        «      rt        |d   | «      S t        |d   t
        «      rt        |d   | «      S t        |d   t        «      rt        |d   | «      S t        d«      ‚)Nr   zexpected exactly 1 arg, got r   z"expected a function variable, got zUnexpected arg type)rh   ÚAssertionErrorÚ
isinstancer   r   r   r   Útyper   r   r!   r    ©r3   r7   rU   r+   s       r5   Úcall_functionz%ContextWrappingVariable.call_function€   sð   € ô ˆt‹9˜Š>Ü Ð#?ÄÀDÃ	¸{Ð!KÓLÐLÜØ�‰Gä*Ü$Ü"Ü$ð	ô
ô !Ð#EÄdÈ4ÐPQÉ7ÃmÀ_Ð!UÓVÐVä�d˜1‘gÔ9Ô:Ü4°T¸!±W¸dÓCÐCÜ˜˜Q™Ô!5Ô6Ü.¨t°A©w¸Ó=Ð=Ü˜˜Q™Ô!3Ô4Ü,¨T°!©W°dÓ;Ð;Ü˜˜Q™Ô!5Ô6Ü.¨t°A©w¸Ó=Ð=ä Ð!6Ó7Ð7r6   c                  ó   — y©NTr/   rn   s    r5   Úsupports_graph_breaksz-ContextWrappingVariable.supports_graph_breaksž   ó   € Ør6   c                  ó   — yrw   r/   rn   s    r5   Úexit_on_graph_breakz+ContextWrappingVariable.exit_on_graph_break¡   ry   r6   c                 óL   — | j                   �| j                  «        d | _         y y rW   )rP   rn   s    r5   rS   zContextWrappingVariable.cleanup¤   s"   € Ø�?‰?Ð&Ø�O‰OÔØ"ˆD�Oð 'r6   c                 óR   — | j                   st        d«      ‚| j                  «        y )Nzmultiple exits?)rP   rq   rS   rn   s    r5   rX   z&ContextWrappingVariable.cleanup_assert©   s   € Ø�ŠÜ Ð!2Ó3Ð3Ø�‰�r6   rW   ©r`   r#   r,   NrN   )Ú__name__Ú
__module__Ú__qualname__r   Ú_nonvar_fieldsr   r1   Ústrr@   rJ   r   rF   rZ   ra   rj   r]   r^   ÚlistÚdictru   Úboolrx   r{   rS   rX   Ú__classcell__©r4   s   @r5   r&   r&   >   s_  ø„ àØØØð	ð
 
×	'Ñ	'ð€Nð @Dñ-Ø ð-Ø25¸±*ð-ØORð-à	õ-ð7Ø-ð7Ø6Eð7ØKNð7à	ó7ð7Ð3ð 7¸ó 7ð PTñ
1Ø-ð
1Ø3;¸CÀ¸HÑ3EÈÑ3Lð
1à	ó
1ð7Ø-ð7Ø6Eð7à	ó7ó
ó
Oð@˜Só @ð<˜ó <ð8à'ð8ð �?Ñ#ð8ð �S˜/Ð)Ñ*ð	8ð
 
ó8ð< tó ð Tó ó#÷
r6   r&   c                   ó†   ‡ — e Zd Zdee   deddfˆ fd„Zdefd„Zdefd„Zdd	de	fd
„Z
dd	de	de	fd„Zdefd„Zdefd„Zˆ xZS )ÚGenericContextWrappingVariabler'   r+   r,   Nc                 óf   •— |€t        d«      ‚t        ‰| �  d||j                  dœ|¤Ž || _        y )Nzcm_obj must not be None)ÚvalueÚ
value_typer/   )rq   r0   r1   r4   r'   )r3   r'   r+   r4   s      €r5   r1   z'GenericContextWrappingVariable.__init__²   sE   ø€ Øˆ>Ü Ð!:Ó;Ð;Ü‰Ñð 	
ØØ×'Ñ'ñ	
ð ò	
ð
 ˆ�r6   c                 ó.   — | j                   j                  S rW   )r'   r€   rn   s    r5   r]   z*GenericContextWrappingVariable.module_name¼   s   € Ø�{‰{×%Ñ%Ð%r6   c                 ó@   — t        | j                  «      j                  S rW   )rs   r'   r   rn   s    r5   r^   z&GenericContextWrappingVariable.fn_name¿   s   € Ü�D—K‘KÓ ×)Ñ)Ð)r6   r7   r$   c                 óØ   — | j                   €d nt        | j                   d«      }t        j                  | j                  j
                  j                  | |¬«      j                  |g i «      S )NÚ	__enter__©Úsource)r“   r   r   r   r'   r‘   Ú__func__ru   )r3   r7   r“   s      r5   rJ   z$GenericContextWrappingVariable.enterÂ   sY   € ØŸ™Ð,‘´*¸T¿[¹[È+Ó2VˆÜ×+Ñ+Ø�K‰K×!Ñ!×*Ñ*ØØô
÷ ‰-˜˜B Ó
#ð		$r6   rU   c                 ó"  — | j                   €d nt        | j                   d«      }t        j                  | j                  j
                  j                  | |¬«      j                  |t        |«      i «      }|j                  j                  «        |S )NÚ__exit__r’   )r“   r   r   r   r'   r–   r”   ru   r„   Úactive_generic_context_managersÚpop)r3   r7   rU   r“   Úxs        r5   rZ   z#GenericContextWrappingVariable.exitÊ   sx   € ð Ÿ™Ð,‘´*¸T¿[¹[È*Ó2UˆÜ×(Ñ(Ø�K‰K× Ñ ×)Ñ)ØØô
÷ ‰-˜œD ›J¨Ó
+ð	 	
ð
 	×*Ñ*×.Ñ.Ô0Øˆr6   c                  ó   — y©NFr/   rn   s    r5   rx   z4GenericContextWrappingVariable.supports_graph_breaksÖ   s   € Ør6   c                  ó   — yrw   r/   rn   s    r5   r{   z2GenericContextWrappingVariable.exit_on_graph_breakÙ   ry   r6   )r   r€   r�   r   r   r1   rƒ   r]   r^   r   rJ   rZ   r†   rx   r{   r‡   rˆ   s   @r5   rŠ   rŠ   ¯   s„   ø„ ðÐ5°cÑ:ð Àcð Èdõ ð&˜Só &ð*˜ó *ð$Ð3ð $¸ó $ð
Ø-ð
Ø6Eð
à	ó
ð tó ð T÷ r6   rŠ   c                   ó`   ‡ — e Zd Zdej                  j
                  deddfˆ fd„Zd„ Zd„ Z	ˆ xZ
S )ÚRecordFunctionVariabler'   r+   r,   Nc                 óv  •— t        ‰| �  |fi |¤Ž t        j                  j	                  |j
                  «      g}i }|j                  r,t        j                  j	                  |j                  «      |d<   t        j                  j                  j	                  t        | j                  «      ||¬«      | _        y )NrU   )ÚfuncÚrecord_argsÚrecord_kwargs)r0   r1   r   rG   rH   ÚnamerU   ÚtorchÚ%ProfilerRecordFunctionContextVariablers   r'   Ú	record_fn)r3   r'   r+   rU   r¢   r4   s        €r5   r1   zRecordFunctionVariable.__init__Þ   s�   ø€ Ü‰Ñ˜Ñ* 6Ò*Ü×*Ñ*×1Ñ1°&·+±+Ó>Ð?ˆØˆØ�;Š;Ü$-×$>Ñ$>×$EÑ$EÀfÇkÁkÓ$RˆM˜&Ñ!Ü"Ÿ™×NÑN×UÑUÜ�d—k‘kÓ"°ÀMð Vó 
ˆ�r6   c                 ón   — |j                   j                  | «       | j                  j                  |«      S rW   )r—   Úappendr¦   rJ   rI   s     r5   rJ   zRecordFunctionVariable.enterè   s+   € Ø
×*Ñ*×1Ñ1°$Ô7Ø�~‰~×#Ñ# BÓ'Ð'r6   c                 óp   — |j                   j                  «         | j                  j                  |g|¢­Ž S rW   )r—   r˜   r¦   rZ   rY   s      r5   rZ   zRecordFunctionVariable.exitì   s0   € Ø
×*Ñ*×.Ñ.Ô0Ø"ˆt�~‰~×"Ñ" 2Ð-¨Ò-Ð-r6   )r   r€   r�   r¤   ÚprofilerÚrecord_functionr   r1   rJ   rZ   r‡   rˆ   s   @r5   rž   rž   Ý   s2   ø„ ð
˜uŸ~™~×=Ñ=ð 
Èð 
ÐQUõ 
ò(ö.r6   rž   c                   óT   — e Zd Zdededdfd„Zdddefd„Zddd	edefd
„Zde	defd„Z
y)Ú$RepararametrizeModuleContextVariableÚctx_manager_vtÚmodr,   Nc                 ó    — || _         || _        y rW   )Úcm_vtr¯   )r3   r®   r¯   s      r5   r1   z-RepararametrizeModuleContextVariable.__init__ò   s   € Ø#ˆŒ
Øˆ�r6   r7   r$   c                 óB  — t         j                  j                  j                  j	                  |«      5  | j
                  j                  |d«      j                  «       | _        | j
                  j                  |d«      j                  «       | _	        |j                  j                  j                  | j                  «       |j                  j                  j                  | j                  «       | j                  j                  |«      cd d d «       S # 1 sw Y   y xY w)NÚ_parametersÚ_buffers)r¤   Ú_dynamor   Úhigher_order_opsÚ dynamo_allow_side_effects_in_hopr¯   Úvar_getattrÚrealizeÚold_parameters_varÚold_buffer_varrQ   Úside_effectsÚignore_mutations_onr±   rJ   rI   s     r5   rJ   z*RepararametrizeModuleContextVariable.enter÷   sÎ   € ô �]‰]×$Ñ$×5Ñ5×VÑVØó
ñ 	(ð '+§h¡h×&:Ñ&:¸2¸}Ó&M×&UÑ&UÓ&WˆDÔ#Ø"&§(¡(×"6Ñ"6°r¸:Ó"F×"NÑ"NÓ"PˆDÔØ�I‰I×"Ñ"×6Ñ6°t×7NÑ7NÔOØ�I‰I×"Ñ"×6Ñ6°t×7JÑ7JÔKØ—:‘:×#Ñ# BÓ'÷	(÷ 	(ò 	(ús   ´CDÄDrU   c                 óŽ  — t         j                  j                  j                  j	                  |«      5   | j
                  j                  |g|¢­Ž }|j                  j                  j                  | j                  «       |j                  j                  j                  | j                  «       |cd d d «       S # 1 sw Y   y xY wrW   )r¤   rµ   r   r¶   r·   r±   rZ   rQ   r¼   Ústop_ignoring_mutations_onr»   rº   )r3   r7   rU   r™   s       r5   rZ   z)RepararametrizeModuleContextVariable.exit  s”   € ô
 �]‰]×$Ñ$×5Ñ5×VÑVØó
ñ 	ð  �—
‘
—‘ Ð* TÒ*ˆAØ�I‰I×"Ñ"×=Ñ=¸d×>QÑ>QÔRØ�I‰I×"Ñ"×=Ñ=¸d×>UÑ>UÔVØ÷	÷ 	ò 	ús   ´A=B;Â;Cr£   c                 ó.   — t        | j                  |«      S rW   )Úgetattrr±   )r3   r£   s     r5   Ú__getattr__z0RepararametrizeModuleContextVariable.__getattr__  s   € ä�t—z‘z 4Ó(Ð(r6   )r   r€   r�   r&   r   r1   r   rJ   rZ   rƒ   rÂ   r/   r6   r5   r­   r­   ñ   sa   „ ðÐ'>ð ÀSð ÈTó ð

(Ð3ð 
(¸ó 
(ðØ-ðØ6Eðà	óð) ð )¨ô )r6   r­   c            	       óV   — e Zd ZdZedddededd fd„«       Zdddefd„Zddd	edefd
„Z	y)Ú)GradInplaceRequiresGradCtxManagerVariablez#represents torch grad requires gradr7   r$   r(   r+   r,   c                 ó   — t        d|d dœ|¤ŽS ©N©r(   r)   r/   )rÄ   ©r7   r(   r+   s      r5   rH   z0GradInplaceRequiresGradCtxManagerVariable.create  s&   € ô 9ð 
Ø'Øñ
ð ñ
ð 	
r6   c                 óÀ  ‡ — ‰ j                   \  }t        j                  j                  j	                  «       ‰ _        t        j                  j                  j                  |«       ‰ j                  |ˆ fd„«       |j                  j                  dt        j                  j                  j                  |fi «      ‰ _
        t        j                  j                  d «      S )Nc                  ój   •— t         j                  j                  j                  ‰ j                  «      S rW   )r¤   Ú_CÚ
_functorchÚ!set_inplace_requires_grad_allowedÚ
prev_statern   s   €r5   rd   zAGradInplaceRequiresGradCtxManagerVariable.enter.<locals>.<lambda>)  s#   ø€ ”E—H‘H×'Ñ'×IÑIØ—‘ó€ r6   ru   )r(   r¤   rË   rÌ   Ú!get_inplace_requires_grad_allowedrÎ   rÍ   rF   rQ   Úcreate_nodeÚproxyr   rG   rH   )r3   r7   Úenableds   `  r5   rJ   z/GradInplaceRequiresGradCtxManagerVariable.enter#  s§   ø€ Ø×&Ñ&‰	ˆÜŸ(™(×-Ñ-×OÑOÓQˆŒÜ�‰×Ñ×=Ñ=¸gÔFØ×ÑØóô	
ð —Y‘Y×*Ñ*ØÜ�H‰H×Ñ×AÑAØˆJØó	
ˆŒ
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   rU   c                 óö   — | j                  «        |j                  j                  dt        j                  j
                  j                  | j                  fi «       t        j                  j                  d «      S ©Nru   )rS   rQ   rÐ   r¤   rË   rÌ   rÍ   rÎ   r   rG   rH   rY   s      r5   rZ   z.GradInplaceRequiresGradCtxManagerVariable.exit5  s[   € ð 	�‰ŒØ
�	‰	×ÑØÜ�H‰H×Ñ×AÑAØ�_‰_ÐØô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   N©
r   r€   r�   Ú__doc__Ústaticmethodr   rH   r   rJ   rZ   r/   r6   r5   rÄ   rÄ     sh   „ Ù-àð
Ø'ð
Ø8;ð
ØGJð
à	4ò
ó ð
ð7Ð3ð 7¸ó 7ð$
7Ø-ð
7Ø6Eð
7à	ô
7r6   rÄ   c            	       óV   — e Zd ZdZedddededd fd„«       Zdddefd„Zddd	edefd
„Z	y)Ú0TemporarilyPopInterpreterStackCtxManagerVariablezJrepresents torch._functorch.pyfunction.temporarily_pop_interpreter_stack()r7   r$   r(   r+   r,   c                 ó   — t        d|d dœ|¤ŽS rÆ   )rÙ   rÈ   s      r5   rH   z7TemporarilyPopInterpreterStackCtxManagerVariable.createE  s'   € ô @ð 
Ø'Øñ
ð ñ
ð 	
r6   c                 óP  ‡ — t         j                  j                  j                  «       ‰ _        ‰ j                  |ˆ fd„«       |j                  j                  dt         j                  j                  j                  di «      ‰ _        t        j                  j                  d «      S )Nc                  ój   •— t         j                  j                  j                  ‰ j                  «      S rW   )r¤   rË   rÌ   Úpush_dynamic_layer_stackÚsavedrn   s   €r5   rd   zHTemporarilyPopInterpreterStackCtxManagerVariable.enter.<locals>.<lambda>S  s    ø€ ”E—H‘H×'Ñ'×@Ñ@ÀÇÁÓL€ r6   ru   r/   )r¤   rË   rÌ   Úpop_dynamic_layer_stackrÞ   rF   rQ   rÐ   rÑ   r   rG   rH   rI   s   ` r5   rJ   z6TemporarilyPopInterpreterStackCtxManagerVariable.enterO  s~   ø€ Ü—X‘X×(Ñ(×@Ñ@ÓBˆŒ
Ø×ÑØÛLô	
ð —Y‘Y×*Ñ*ØÜ�H‰H×Ñ×7Ñ7ØØó	
ˆŒ
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   rU   c                 óö   — | j                  «        |j                  j                  dt        j                  j
                  j                  | j                  fi «       t        j                  j                  d «      S rÔ   )rS   rQ   rÐ   r¤   rË   rÌ   rÝ   rÑ   r   rG   rH   rY   s      r5   rZ   z5TemporarilyPopInterpreterStackCtxManagerVariable.exit]  sZ   € ð 	�‰ŒØ
�	‰	×ÑØÜ�H‰H×Ñ×8Ñ8Ø�Z‰ZˆMØô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   NrÕ   r/   r6   r5   rÙ   rÙ   B  sh   „ ÙTàð
Ø'ð
Ø8;ð
ØGJð
à	;ò
ó ð
ð7Ð3ð 7¸ó 7ð
7Ø-ð
7Ø6Eð
7à	ô
7r6   rÙ   c                   ó‚   — e Zd ZdZ e e«       ej                  «      Ze	ddde
dd fd„«       Zdddefd„Zdddedefd	„Zy
)Ú%JvpIncrementNestingCtxManagerVariablez5represents torch.func.jvp increment/decrement nestingr7   r$   r+   r,   c                 ó"   — t        dd d dœ|¤Ž}|S rÆ   )râ   ©r7   r+   Úvars      r5   rH   z,JvpIncrementNestingCtxManagerVariable.createt  s*   € ô 4ð 
ØØñ
ð ñ
ˆð
 ˆ
r6   c                 ól  — t        | j                  «       t        j                  j                  j                  «       }| j                  |d„ «       |j                  j                  dt        j                  j                  j                  di «      | _        t        j                  j                  ||«      S )Nc                  óR   — t         j                  j                  j                  «       S rW   )r¤   rÌ   Úeager_transformsÚexit_jvp_nestingr/   r6   r5   rd   z=JvpIncrementNestingCtxManagerVariable.enter.<locals>.<lambda>ƒ  s   € œ×(Ñ(×9Ñ9×JÑJÓL€ r6   ru   r/   )r   Ú_guards_singletonr¤   rÌ   rè   Úenter_jvp_nestingrF   rQ   rÐ   ÚpredispatchÚ_jvp_increment_nestingrÑ   r   r   Úbuild)r3   r7   Ú	jvp_levels      r5   rJ   z+JvpIncrementNestingCtxManagerVariable.enter  s�   € Ü�d×,Ñ,Ô-Ü×$Ñ$×5Ñ5×GÑGÓIˆ	Ø×ÑØÑLô	
ð —Y‘Y×*Ñ*ØÜ×Ñ×(Ñ(×?Ñ?ØØó	
ˆŒ
ô ×(Ñ(×.Ñ.¨r°9Ó=Ð=r6   rU   c                 óà   — | j                  «        |j                  j                  dt        j                  j
                  j                  di «       t        j                  j                  d «      S ©Nru   r/   )
rS   rQ   rÐ   r¤   rÌ   rì   Ú_jvp_decrement_nestingr   rG   rH   rY   s      r5   rZ   z*JvpIncrementNestingCtxManagerVariable.exit�  sU   € ð 	�‰ŒØ
�	‰	×ÑØœU×-Ñ-×9Ñ9×PÑPÐRTÐVXô	
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   N©r   r€   r�   rÖ   r   r   r   ÚFUNCTORCH_STACK_MATCHrê   r×   r   rH   r   rJ   rZ   r/   r6   r5   râ   râ   j  sy   „ Ù?ñ Ñ/Ó1°<×3UÑ3UÓVÐàðØ'ðØ36ðà	0òó ðð>Ð3ð >¸ó >ð7Ø-ð7Ø6Eð7à	ô7r6   râ   c            	       ób   — e Zd ZdZedddededd fd„«       Zdddefd„Zddd	edefd
„Z	de
fd„Zy)ÚSetFwdGradEnabledContextManagerzWrepresents torch.autograd.forward_ad._set_fwd_grad_enabled() to enable/disable fwd gradr7   r$   r(   r+   r,   c                 ó   — t        d|d dœ|¤ŽS rÆ   )rö   rÈ   s      r5   rH   z&SetFwdGradEnabledContextManager.createš  s&   € ô /ð 
Ø'Øñ
ð ñ
ð 	
r6   c                 ó„  ‡ — ‰ j                   \  }t        j                  j                  «       ‰ _        t        j                  j                  |«       ‰ j                  |ˆ fd„«       |j                  j                  dt        j                  j
                  |fi «      ‰ _	        t        j                  j                  d «      S )Nc                  óV   •— t         j                  j                  ‰ j                  «      S rW   )r¤   rË   Ú_set_fwd_grad_enabledrÎ   rn   s   €r5   rd   z7SetFwdGradEnabledContextManager.enter.<locals>.<lambda>ª  s   ø€ ”E—H‘H×2Ñ2°4·?±?ÓC€ r6   ru   )r(   r¤   rË   Ú_is_fwd_grad_enabledrÎ   rú   rF   rQ   rÐ   rÑ   r   rG   rH   )r3   r7   Úmodes   `  r5   rJ   z%SetFwdGradEnabledContextManager.enter¤  s“   ø€ Ø×#Ñ#‰ˆÜŸ(™(×7Ñ7Ó9ˆŒÜ�‰×&Ñ& tÔ,Ø×ÑØÛCô	
ð —Y‘Y×*Ñ*ØÜ�H‰H×*Ñ*ØˆGØó	
ˆŒ
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   rU   c                 óâ   — | j                  «        |j                  j                  dt        j                  j
                  | j                  fi «       t        j                  j                  d «      S rÔ   )
rS   rQ   rÐ   r¤   rË   rú   rÎ   r   rG   rH   rY   s      r5   rZ   z$SetFwdGradEnabledContextManager.exit´  sU   € ð 	�‰ŒØ
�	‰	×ÑØÜ�H‰H×*Ñ*Ø�_‰_ÐØô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   c                 óJ   — t         j                  j                  j                  S rW   )r¤   ÚautogradÚ
forward_adrú   rn   s    r5   Úpython_typez+SetFwdGradEnabledContextManager.python_typeÀ  s   € Ü�~‰~×(Ñ(×>Ñ>Ð>r6   N)r   r€   r�   rÖ   r×   r   rH   r   rJ   rZ   rs   r  r/   r6   r5   rö   rö   —  st   „ Ùaàð
Ø'ð
Ø8;ð
ØGJð
à	*ò
ó ð
ð7Ð3ð 7¸ó 7ð 
7Ø-ð
7Ø6Eð
7à	ó
7ð?˜Tô ?r6   rö   c                   óŽ   — e Zd ZdZ e e«       ej                  «      Ze	ddde
dd fd„«       Zdddefd„Zdddedefd	„Zdefd
„Zy)ÚDualLevelContextManagerz;Represents torch.autograd.forward_ad.dual_level ctx managerr7   r$   r+   r,   c                 ó   — t        dd d dœ|¤ŽS rÆ   )r  )r7   r+   s     r5   rH   zDualLevelContextManager.createÉ  s&   € ô 'ð 
ØØñ
ð ñ
ð 	
r6   c                 ó�  ‡ — t        ‰ j                  «       t        j                  j                  j                  «       ‰ _        ‰ j                  |ˆ fd„«       |j                  j                  dt        j                  j                  j                  di «      ‰ _        t        j                  j!                  |‰ j                  «      S )Nc                  ól   •— t         j                  j                  j                  ‰ j                  ¬«      S )N)Úlevel)r¤   rÿ   r   Úexit_dual_levelÚ	new_levelrn   s   €r5   rd   z/DualLevelContextManager.enter.<locals>.<lambda>×  s#   ø€ œŸ™×1Ñ1×AÑAÈÏÉÐAÓW€ r6   ru   r/   )r   rê   r¤   rÿ   r   Úenter_dual_levelr	  rF   rQ   rÐ   rÌ   rì   Ú_enter_dual_levelrÑ   r   r   rî   rI   s   ` r5   rJ   zDualLevelContextManager.enterÓ  s”   ø€ Ü�d×,Ñ,Ô-ÜŸ™×2Ñ2×CÑCÓEˆŒØ×ÑØÓWô	
ð —Y‘Y×*Ñ*ØÜ×Ñ×(Ñ(×:Ñ:ØØó	
ˆŒ
ô ×(Ñ(×.Ñ.¨r°4·>±>ÓBÐBr6   rU   c                 óø   — | j                  «        |j                  j                  dt        j                  j
                  j                  dd| j                  i«       t        j                  j                  d «      S )Nru   r/   r  )rS   rQ   rÐ   r¤   rÌ   rì   Ú_exit_dual_levelr	  r   rG   rH   rY   s      r5   rZ   zDualLevelContextManager.exitá  s_   € ð 	�‰ŒØ
�	‰	×ÑØÜ×Ñ×(Ñ(×9Ñ9ØØ�d—n‘nÐ%ô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   c                 óJ   — t         j                  j                  j                  S rW   )r¤   rÿ   r   Ú
dual_levelrn   s    r5   r  z#DualLevelContextManager.python_typeí  s   € Ü�~‰~×(Ñ(×3Ñ3Ð3r6   N)r   r€   r�   rÖ   r   r   r   Ú
DUAL_LEVELrê   r×   r   rH   r   rJ   rZ   rs   r  r/   r6   r5   r  r  Ä  s†   „ ÙEáÑ/Ó1°<×3JÑ3JÓKÐàð
Ø'ð
Ø36ð
à	"ò
ó ð
ðCÐ3ð C¸ó Cð
7Ø-ð
7Ø6Eð
7à	ó
7ð4˜Tô 4r6   r  c                   ó‚   — e Zd ZdZ e e«       ej                  «      Ze	ddde
dd fd„«       Zdddefd„Zdddedefd	„Zy
)Ú&GradIncrementNestingCtxManagerVariablez6represents torch.func.grad increment/decrement nestingr7   r$   r+   r,   c                 ó"   — t        dd d dœ|¤Ž}|S rÆ   )r  rä   s      r5   rH   z-GradIncrementNestingCtxManagerVariable.createû  s*   € ô 5ð 
ØØñ
ð ñ
ˆð
 ˆ
r6   c                 ól  — t        | j                  «       t        j                  j                  j                  «       }| j                  |d„ «       |j                  j                  dt        j                  j                  j
                  di «      | _	        t        j                  j                  ||«      S )Nc                  óR   — t         j                  j                  j                  «       S rW   )r¤   rË   rÌ   Ú_grad_decrement_nestingr/   r6   r5   rd   z>GradIncrementNestingCtxManagerVariable.enter.<locals>.<lambda>	  ó   € ¬%¯(©(×*=Ñ*=×*UÑ*UÓ*W€ r6   ru   r/   )r   rê   r¤   rË   rÌ   Ú_grad_increment_nestingrF   rQ   rÐ   rÑ   r   r   rî   )r3   r7   Ú
grad_levels      r5   rJ   z,GradIncrementNestingCtxManagerVariable.enter  s†   € Ü�d×,Ñ,Ô-Ü—X‘X×(Ñ(×@Ñ@ÓBˆ
Ø×Ñ˜bÑ"WÔXØ—Y‘Y×*Ñ*ØÜ�H‰H×Ñ×7Ñ7ØØó	
ˆŒ
ô ×(Ñ(×.Ñ.¨r°:Ó>Ð>r6   rU   c                 óà   — | j                  «        |j                  j                  dt        j                  j
                  j                  di «       t        j                  j                  d «      S rñ   )
rS   rQ   rÐ   r¤   rË   rÌ   r  r   rG   rH   rY   s      r5   rZ   z+GradIncrementNestingCtxManagerVariable.exit  sQ   € ð 	�‰ŒØ
�	‰	×ÑØœUŸX™X×0Ñ0×HÑHÈ"Èbô	
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   Nró   r/   r6   r5   r  r  ñ  sy   „ Ù@ñ Ñ/Ó1°<×3UÑ3UÓVÐàðØ'ðØ36ðà	1òó ðð
?Ð3ð 
?¸ó 
?ð7Ø-ð7Ø6Eð7à	ô7r6   r  c                   ó    ‡ — e Zd ZdZedddeeef   dd fd„«       Z	 	 ddeeef   de	dz  d	e	dz  d
e	ddf
ˆ fd„Z
dddefd„Zdd„Zdefd„Zˆ xZS )ÚCatchWarningsCtxManagerVariablez'Delay a call to warnings.catch_warningsr7   r$   Úcatch_warnings_argsr,   c                 ó   — t        |d d ¬«      S )N)r  r(   r)   )r  )r7   r  s     r5   rH   z&CatchWarningsCtxManagerVariable.create  s   € ô /Ø 3ØØô
ð 	
r6   Nr(   r)   r+   c                 ót   •— t        |t        «      st        d|› �«      ‚t        ‰| �  d||dœ|¤Ž || _        y )Nz(catch_warnings_args must be a dict, got rÇ   r/   )rr   r…   rq   r0   r1   r  )r3   r  r(   r)   r+   r4   s        €r5   r1   z(CatchWarningsCtxManagerVariable.__init__)  sT   ø€ ô Ð-¬tÔ4Ü Ø:Ð;NÐ:OÐPóð ô 	‰Ñð 	
Ø'¸ñ	
ØJPò	
ð $7ˆÕ r6   c                 ó6  ‡— | j                   j                  «       D ��ci c]  \  }}||j                  «       “Œ }}}t        j                  di |¤ŽŠ| j                  |ˆfd„«       t        j                  j                  |‰j                  «       «      S c c}}w )Nc                  ó*   •— ‰ j                  d d d «      S rW   )r–   )Úctx_vals   €r5   rd   z7CatchWarningsCtxManagerVariable.enter.<locals>.<lambda>>  s   ø€ ¨'×*:Ñ*:¸4ÀÀtÓ*L€ r6   r/   )
r  ÚitemsÚas_python_constantÚwarningsÚcatch_warningsrF   r   r   rî   r‘   )r3   r7   ÚkÚvr+   r"  s        @r5   rJ   z%CatchWarningsCtxManagerVariable.enter9  s‹   ø€ à26×2JÑ2J×2PÑ2PÓ2R÷
Ù*.¨!¨QˆAˆq×#Ñ#Ó%Ñ%ð
ˆñ 
ô ×)Ñ)Ñ3¨FÑ3ˆØ×Ñ˜bÓ"LÔMÜ×(Ñ(×.Ñ.¨r°7×3DÑ3DÓ3FÓGÐGùó
s   ŸBc                 ó  ‡— ‰j                  ˆfd„«       ‰j                  | j                  j                  «       «       t	        | j                  j                  «       «      }‰j                  ‰j                  t        |«      |d«      «       y )Nc                  ó(   •— ‰ j                  dd«      S )Nr%  r&  )Úload_import_from)r`   s   €r5   rd   z=CatchWarningsCtxManagerVariable.reconstruct.<locals>.<lambda>C  s   ø€ �G×,Ñ,¨ZÐ9IÓJ€ r6   F)	re   Úforeachr  ÚvaluesÚtupleÚkeysrf   Úcreate_call_function_kwrh   )r3   r`   r/  s    ` r5   rj   z+CatchWarningsCtxManagerVariable.reconstructA  sk   ø€ Ø×ÑÛJô	
ð 	�‰˜×0Ñ0×7Ñ7Ó9Ô:Ü�T×-Ñ-×2Ñ2Ó4Ó5ˆØ×Ñ˜g×=Ñ=¼cÀ$»iÈÈuÓUÕVr6   c                 ó"   — t         j                  S rW   )r%  r&  rn   s    r5   r  z+CatchWarningsCtxManagerVariable.python_typeI  s   € Ü×&Ñ&Ð&r6   ©NNr~   )r   r€   r�   rÖ   r×   r…   rƒ   r   rH   r   r1   rJ   rj   rs   r  r‡   rˆ   s   @r5   r  r    s²   ø„ Ù1àð
Ø'ð
Ø>BÀ3ÈÐCWÑ>Xð
à	*ò
ó ð
ð %)Ø%)ñ	7à! # Ð"6Ñ7ð7ð ˜T‘zð7ð ˜d™
ð	7ð
 ð7ð 
õ7ð HÐ3ð H¸ó HóWð'˜T÷ 'r6   r  c            	       óŒ   — e Zd ZdZ e e«       ej                  «      Ze	ddde
e   dedd fd„«       Zdddefd„Zddd	edefd
„Zy)Ú&VmapIncrementNestingCtxManagerVariablez1represents torch VMap increment/decrement nestingr7   r$   r(   r+   r,   c                 ó"   — t        d|d dœ|¤Ž}|S rÆ   )r4  )r7   r(   r+   rå   s       r5   rH   z-VmapIncrementNestingCtxManagerVariable.createW  s*   € ô 5ð 
Ø'Øñ
ð ñ
ˆð
 ˆ
r6   c                 ó<  — t        | j                  «       | j                  \  }}t        |t        j
                  «      r|j                  }n|j                  «       }|j                  «       }t        j                  j                  j                  ||«      }| j                  |d„ «       |j                  j                  dt        j                  j                  j                  |j!                  «       |fi «      | _        t        j$                  j'                  ||«      S )Nc                  óR   — t         j                  j                  j                  «       S rW   )r¤   rË   rÌ   Ú_vmap_decrement_nestingr/   r6   r5   rd   z>VmapIncrementNestingCtxManagerVariable.enter.<locals>.<lambda>o  r  r6   ru   )r   rê   r(   rr   r   ÚSymNodeVariableÚsym_numr$  r¤   rË   rÌ   Ú_vmap_increment_nestingrF   rQ   Úcreate_proxyrì   Úas_proxyrÑ   r   rî   )r3   r7   Ú
batch_sizeÚ
randomnessÚbatch_size_valueÚ
vmap_levels         r5   rJ   z,VmapIncrementNestingCtxManagerVariable.enterd  sè   € Ü�d×,Ñ,Ô-Ø!%×!3Ñ!3Ñˆ
�JÜ�j¤)×";Ñ";Ô<Ø)×1Ñ1Ñà)×<Ñ<Ó>ÐØ×2Ñ2Ó4ˆ
Ü—X‘X×(Ñ(×@Ñ@Ø˜jó
ˆ
ð 	×Ñ˜bÑ"WÔXØ—Y‘Y×+Ñ+ØÜ×Ñ×(Ñ(×@Ñ@Ø× Ñ Ó" JÐ/Øó	
ˆŒ
ô ×(Ñ(×.Ñ.¨r°:Ó>Ð>r6   rU   c                 óà   — | j                  «        |j                  j                  dt        j                  j
                  j                  di «       t        j                  j                  d «      S rñ   )
rS   rQ   rÐ   r¤   rÌ   rì   r8  r   rG   rH   rY   s      r5   rZ   z+VmapIncrementNestingCtxManagerVariable.exitx  sV   € ð 	�‰ŒØ
�	‰	×ÑØÜ×Ñ×(Ñ(×@Ñ@ØØô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   N)r   r€   r�   rÖ   r   r   r   rô   rê   r×   r„   r   r   rH   rJ   rZ   r/   r6   r5   r4  r4  M  sŠ   „ Ù;ñ Ñ/Ó1°<×3UÑ3UÓVÐàð
Ø'ð
à˜OÑ,ð
ð ð
ð 
2ò	
ó ð
ð?Ð3ð ?¸ó ?ð(
7Ø-ð
7Ø6Eð
7à	ô
7r6   r4  c                   ó,  ‡ — e Zd ZdZ e e«       ej                  «      Ze		 dddde
dede
dd f
d„«       Z	 	 dd
e
dee   d	z  dede
dd	f
ˆ fd„Zdddefd„Zdddedefd„Zdddee   deeef   defˆ fd„Zddde
dd	fd„Zdefd„Zdefd„Zdefd„Zˆ xZS )ÚGradModeVariablez6represents torch.{no_grad,enable_grad,set_grad_mode}()r7   r$   Útarget_valueÚinitializedr+   r,   c                 ó†   — t        d|gt        j                  «       gdœ|¤Ž}|r|j                  | |j                  «       |S rÆ   )rD  r¤   Úis_grad_enabledrD   r(   )r7   rE  rF  r+   rå   s        r5   rH   zGradModeVariable.createŠ  sO   € ô ð 
Ø'˜.Ü!×1Ñ1Ó3Ð4ñ
ð ñ
ˆñ
 Ø�N‰N˜2˜s×0Ñ0Ô1Øˆ
r6   Nr(   r)   c                 óT   •— t        ‰| �  d||dœ|¤Ž t        | j                  «       y rÆ   )r0   r1   r   rê   )r3   r(   r)   rF  r+   r4   s        €r5   r1   zGradModeVariable.__init__š  s4   ø€ ô 	‰Ñð 	
Ø'¸ñ	
ØJPò	
ô 	�d×,Ñ,Õ-r6   c                 óx   — | j                  || j                  «       t        j                  j	                  d «      S rW   ©rD   r(   r   rG   rH   rI   s     r5   rJ   zGradModeVariable.enter¦  ó-   € Ø�‰˜˜D×.Ñ.Ô/Ü×)Ñ)×0Ñ0°Ó6Ð6r6   rU   c                 óx   — | j                  || j                  «       t        j                  j	                  d «      S rW   ©rD   r)   r   rG   rH   rY   s      r5   rZ   zGradModeVariable.exitª  ó/   € ð 	�‰˜˜D×/Ñ/Ô0Ü×)Ñ)×0Ñ0°Ó6Ð6r6   c                 ó^   •— | j                  || j                  «       t        ‰| �  |||«      S rW   ©rD   r)   r0   ru   ©r3   r7   rU   r+   r4   s       €r5   ru   zGradModeVariable.call_function°  s-   ø€ ð 	�‰˜˜D×/Ñ/Ô0Ü‰wÑ$ R¨¨vÓ6Ð6r6   r-  c                 ó4  — t        |«      dk7  rt        dt        |«      › �«      ‚|d   }t        j                  «       |k7  rW|j                  j                  dt        j                  j                  |fi «       t        j                  j                  |«       y y )Nr   úexpected 1 value, got r   ru   )rh   rq   r¤   rH  rQ   rÐ   rË   Ú_set_grad_enabled©r3   r7   r-  rŒ   s       r5   rD   zGradModeVariable._call_func¹  s   € Üˆv‹;˜!ÒÜ Ð#9¼#¸f»+¸Ð!GÓHÐHØ�q‘	ˆä× Ñ Ó" eÒ+Ø�I‰I×!Ñ!Ø¤§¡×!;Ñ!;¸e¸XÀrôô �H‰H×&Ñ& uÕ-ð	 ,r6   c                  ó   — y©Nr¤   r/   rn   s    r5   r]   zGradModeVariable.module_nameÄ  ó   € Ør6   c                  ó   — y)NÚset_grad_enabledr/   rn   s    r5   r^   zGradModeVariable.fn_nameÇ  s   € Ø!r6   c                 ó"   — t         j                  S rW   )r¤   r[  rn   s    r5   r  zGradModeVariable.python_typeÊ  s   € Ü×%Ñ%Ð%r6   ©Frw   )r   r€   r�   rÖ   r   r   r   Ú	GRAD_MODErê   r×   r   r†   rH   r   r1   r   rJ   rZ   r„   r…   rƒ   ru   rD   r]   r^   rs   r  r‡   rˆ   s   @r5   rD  rD  …  sR  ø„ Ù@áÑ/Ó1°<×3IÑ3IÓJÐàð "ñØ'ðàðð ðð ð	ð
 
òó ðð$ 15Ø ñ	
.àð
.ð ! ™¨Ñ-ð
.ð ð	
.ð
 ð
.ð 
õ
.ð7Ð3ð 7¸ó 7ð7Ø-ð7Ø6Eð7à	ó7ð7à'ð7ð �?Ñ#ð7ð �S˜/Ð)Ñ*ð	7ð
 
õ7ð	.Ð8ð 	.À#ð 	.È$ó 	.ð˜Só ð"˜ó "ð&˜T÷ &r6   rD  c            	       ó¤   ‡ — e Zd Zedddededd fd„«       Z	 dded	edz  deddfˆ fd
„Zdddedefd„Z	dddefd„Z
defd„Zdefd„Zdefd„Zˆ xZS )ÚInferenceModeVariabler7   r$   rE  r+   r,   c                 óH   — t        |gfdt        j                  «       i|¤Ž}|S )Nr)   )r`  r¤   Úis_inference_mode_enabled©r7   rE  r+   rå   s       r5   rH   zInferenceModeVariable.createÏ  s3   € ô $ØˆNñ
Ü+0×+JÑ+JÓ+Lð
ØPVñ
ˆð ˆ
r6   Nr(   r)   c                 óV   •— |€t        j                  «       }t        ‰| �  d||dœ|¤Ž y rÆ   )r¤   rb  r0   r1   r2   s       €r5   r1   zInferenceModeVariable.__init__Ø  s8   ø€ ð Ð!ä"×<Ñ<Ó>ˆNÜ‰Ñð 	
Ø'¸ñ	
ØJPó	
r6   rU   c                 óö   — | j                  «        |j                  j                  dt        j                  j
                  j                  | j                  fi «       t        j                  j                  d «      S rÔ   )rX   rQ   rÐ   r¤   rÿ   Ú	grad_modeÚ_exit_inference_moderÑ   r   rG   rH   rY   s      r5   rZ   zInferenceModeVariable.exitå  s]   € ð 	×ÑÔØ
�	‰	×ÑØÜ�N‰N×$Ñ$×9Ñ9Ø�Z‰ZˆMØô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   c                 óT  ‡‡‡— dŠt         j                  j                  j                  rE| j                  d   r6dŠt        j
                  «       Št         j                  j                  d«       n0t        j                  j                  j                  | j                  Ž Šdˆˆˆfd„}| j                  ||«       |j                  j                  dt         j                  j                  j                  g | j                  ¢­i «      | _        t        j                   j#                  d «      S )NFr   Tc                  óœ   •— ‰r t         j                  j                  ‰«       y t         j                  j                  j                  ‰ «       y rW   )r¤   rË   rU  rÿ   rf  rg  )ÚctxÚ disabled_inference_mode_forciblyÚpriors   €€€r5   Úcleanup_hookz1InferenceModeVariable.enter.<locals>.cleanup_hook   s0   ø€ Ù/Ü—‘×*Ñ*¨5Õ1ä—‘×(Ñ(×=Ñ=¸cÕBr6   ru   rN   )r¤   rµ   r
   Ú"fake_tensor_disable_inference_moder(   rH  rË   rU  rÿ   rf  Ú_enter_inference_moderF   rQ   rÐ   rÑ   r   rG   rH   )r3   r7   rm  rj  rk  rl  s      @@@r5   rJ   zInferenceModeVariable.enterñ  sà   ú€ Ø+0Ð(ä�M‰M× Ñ ×CÒCØ×"Ñ" 1Ò%ð
 04Ð,Ü×)Ñ)Ó+ˆEÜ�H‰H×&Ñ& uÕ-ä—.‘.×*Ñ*×@Ñ@À$×BTÑBTÐUˆC÷	Cð 	×Ñ˜b ,Ô/Ø—Y‘Y×*Ñ*ØÜ�N‰N×$Ñ$×:Ñ:Ø"ˆd× Ñ Ñ"Øó	
ˆŒ
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   c                  ó   — yrX  r/   rn   s    r5   r]   z!InferenceModeVariable.module_name  rY  r6   c                  ó   — y)NÚinference_moder/   rn   s    r5   r^   zInferenceModeVariable.fn_name  s   € Ør6   c                 ó"   — t         j                  S rW   )r¤   rr  rn   s    r5   r  z!InferenceModeVariable.python_type  s   € Ü×#Ñ#Ð#r6   rW   )r   r€   r�   r×   r   rH   r†   r1   r   rZ   rJ   rƒ   r]   r^   rs   r  r‡   rˆ   s   @r5   r`  r`  Î  s¾   ø„ ØðØ'ðØ7:ðØFIðà	 òó ðð '+ñ
àð
ð ˜t™ð
ð ð	
ð
 
õ
ð
7Ø-ð
7Ø6Eð
7à	ó
7ð7Ð3ð 7¸ó 7ð<˜Só ð ˜ó  ð$˜T÷ $r6   r`  c            	       óš   — e Zd ZU dZeed<   eed<   eed<   edddeded	d fd
„«       Zddded	efd„Z	ddd	efd„Z
d	efd„Zd	efd„Zd	efd„Zy)ÚGenericDeviceVariablezLAbstract base for device context managers that swap the active device index.Ú_exchange_fnÚ_maybe_exchange_fnÚ_get_device_index_fnr7   r$   Údevicer+   r,   c                 ó<   —  | d| j                  |d¬«      gd dœ|¤ŽS )NT)ÚoptionalrÇ   r/   )rx  )Úclsr7   ry  r+   s       r5   rH   zGenericDeviceVariable.create   s9   € ñ ð 
Ø×3Ñ3°FÀTÐ3ÓJÐKØñ
ð ñ
ð 	
r6   rU   c                 óÆ   — | j                  «        |j                  j                  d| j                  | j                  fi «       t
        j                  j                  d«      S )Nru   F)rX   rQ   rÐ   rw  rÑ   r   rG   rH   rY   s      r5   rZ   zGenericDeviceVariable.exit*  sS   € ð 	×ÑÔØ
�	‰	×ÑØØ×#Ñ#Ø�Z‰ZˆMØô		
ô ×)Ñ)×0Ñ0°Ó7Ð7r6   c                 ó  ‡ ‡—  ‰ j                   ‰ j                  Ž Š‰ j                  |ˆˆ fd„«       |j                  j	                  d‰ j                   g ‰ j                  ¢­i «      ‰ _        t        j                  j                  d «      S )Nc                  ó&   •— ‰j                  ‰ «      S rW   )rw  )Úprev_idxr3   s   €€r5   rd   z-GenericDeviceVariable.enter.<locals>.<lambda>8  s   ø€ ¨$×*AÑ*AÀ(Ó*K€ r6   ru   )	rv  r(   rF   rQ   rÐ   rÑ   r   rG   rH   )r3   r7   r€  s   ` @r5   rJ   zGenericDeviceVariable.enter6  sx   ù€ Ø$�4×$Ñ$ d×&8Ñ&8Ð9ˆØ×Ñ˜bÔ"KÔLØ—Y‘Y×*Ñ*ØØ×ÑØ"ˆd× Ñ Ñ"Øó	
ˆŒ
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   c                 ó   — t         ‚rW   rl   rn   s    r5   r]   z!GenericDeviceVariable.module_nameA  ó   € Ü!Ð!r6   c                  ó   — y)Nry  r/   rn   s    r5   r^   zGenericDeviceVariable.fn_nameD  s   € Ør6   c                 ó   — t         ‚rW   rl   rn   s    r5   r  z!GenericDeviceVariable.python_typeG  r‚  r6   N)r   r€   r�   rÖ   r   Ú__annotations__ÚclassmethodrH   r   rZ   rJ   rƒ   r]   r^   rs   r  r/   r6   r5   ru  ru    sž   … ÙVàÓØÓØÓàð
Ø,ð
Ø69ð
ØEHð
à	 ò
ó ð
ð
8Ø-ð
8Ø6Eð
8à	ó
8ð	7Ð3ð 	7¸ó 	7ð"˜Só "ð˜ó ð"˜Tô "r6   ru  c                   óÐ   — e Zd ZdZ eej                  j                  «      Z eej                  j                  «      Z
 eej                  j                  «      Zdefd„Zdefd„Zy)ÚCUDADeviceVariablezrepresents torch.cuda.devicer,   c                  ó   — y)Nz
torch.cudar/   rn   s    r5   r]   zCUDADeviceVariable.module_nameR  ó   € Ør6   c                 ó6   — t         j                  j                  S rW   )r¤   Úcudary  rn   s    r5   r  zCUDADeviceVariable.python_typeU  s   € Ü�z‰z× Ñ Ð r6   N)r   r€   r�   rÖ   r×   r¤   rŒ  Ú_exchange_devicerv  Ú_maybe_exchange_devicerw  Ú_get_device_indexrx  rƒ   r]   rs   r  r/   r6   r5   rˆ  rˆ  K  s[   „ Ù&á §
¡
× ;Ñ ;Ó<€LÙ% e§j¡j×&GÑ&GÓHÐÙ'¨¯
©
×(DÑ(DÓEÐð˜Só ð!˜Tô !r6   rˆ  c                   óÐ   — e Zd ZdZ eej                  j                  «      Z eej                  j                  «      Z
 eej                  j                  «      Zdefd„Zdefd„Zy)ÚXPUDeviceVariablezrepresents torch.xpu.devicer,   c                  ó   — y)Nz	torch.xpur/   rn   s    r5   r]   zXPUDeviceVariable.module_name`  s   € Ør6   c                 ó6   — t         j                  j                  S rW   )r¤   Úxpury  rn   s    r5   r  zXPUDeviceVariable.python_typec  s   € Ü�y‰y×ÑÐr6   N)r   r€   r�   rÖ   r×   r¤   r”  r�  rv  rŽ  rw  r�  rx  rƒ   r]   rs   r  r/   r6   r5   r‘  r‘  Y  s[   „ Ù%á §	¡	× :Ñ :Ó;€LÙ% e§i¡i×&FÑ&FÓGÐÙ'¨¯	©	×(CÑ(CÓDÐð˜Só ð ˜Tô  r6   r‘  c                   ó¶   — e Zd ZdZ eej                  j                  «      Z eej                  j                  «      Z
 ed„ «      Zdefd„Zdefd„Zdefd„Zy)ÚAcceleratorDeviceIndexVariablez)represents torch.accelerator.device_indexc                 ó   — | S rW   r/   )ry  r+   s     r5   rd   z'AcceleratorDeviceIndexVariable.<lambda>l  s   € À€ r6   r,   c                  ó   — y)Nztorch.acceleratorr/   rn   s    r5   r]   z*AcceleratorDeviceIndexVariable.module_namen  s   € Ø"r6   c                  ó   — y)NÚdevice_indexr/   rn   s    r5   r^   z&AcceleratorDeviceIndexVariable.fn_nameq  s   € Ør6   c                 ó6   — t         j                  j                  S rW   )r¤   Úacceleratorrš  rn   s    r5   r  z*AcceleratorDeviceIndexVariable.python_typet  s   € Ü× Ñ ×-Ñ-Ð-r6   N)r   r€   r�   rÖ   r×   r¤   rË   Ú_accelerator_exchangeDevicerv  Ú _accelerator_maybeExchangeDevicerw  rx  rƒ   r]   r^   rs   r  r/   r6   r5   r–  r–  g  s^   „ Ù3á §¡× DÑ DÓE€LÙ% e§h¡h×&OÑ&OÓPÐÙ'Ñ(GÓHÐð#˜Só #ð˜ó ð.˜Tô .r6   r–  Ú_device_context_manager_mapÚdevice_contextÚvariable_clsr,   c                 óD   — | t         v rt        d| › d�«      ‚|t         | <   y)z�Register a Dynamo variable class for a device context manager type.

    Raises ``ValueError`` if ``device_context`` is already registered.
    zDevice context z) already has a registered context managerN)rŸ  Ú
ValueError)r   r¡  s     r5   Úregister_device_context_managerr¤    s5   € ð Ô4Ñ4ÜØ˜nÐ-Ð-VÐWó
ð 	
ð 3?Ô Ò/r6   c                 ó,   — t         j                  | «      S )zWReturn the Dynamo variable class for ``device_context``, or ``None`` if not registered.)rŸ  Úget)r   s    r5   Úget_device_context_managerr§  �  s   € ô '×*Ñ*¨>Ó:Ð:r6   c                   óö   ‡ — e Zd ZdZ e e«       ej                  «      Ze	ddde
dd fd„«       Z	 	 dddded	edz  d
ede
ddfˆ fd„Z	 ddddede
f   dz  ddfd„Zdddeddfd„Zdefd„Zdefd„Zdefd„Zˆ xZS )ÚTorchFunctionDisableVariablez>represents whether torch function overrides are enabled or notr7   r$   r+   r,   c                 ó$   — t        | fg g dœ|¤Ž}|S )NrÇ   )r©  rä   s      r5   rH   z#TorchFunctionDisableVariable.create™  s-   € ô +Øð
àØñ
ð ñ	
ˆð ˆ
r6   Nr(   r)   Úonly_subclassc                 ó|  •— t        |«      dk7  rt        dt        |«      › �«      ‚|€t        d«      ‚t        |«      dk7  rt        dt        |«      › �«      ‚|| _        |j                  j                  | _        |j                  j                  | _        t        ‰| �$  d||dœ|¤Ž t        | j                  «       y )Nr   zexpected 0 target_values, got zinitial_values must not be Nonezexpected 0 initial_values, got rÇ   r/   )rh   rq   r«  Úsymbolic_torch_function_stateÚtorch_function_subclass_enabledÚ'initial_torch_function_subclass_enabledÚtorch_function_mode_enabledÚ#initial_torch_function_mode_enabledr0   r1   r   rê   )r3   r7   r(   r)   r«  r+   r4   s         €r5   r1   z%TorchFunctionDisableVariable.__init__¥  sÒ   ø€ ô ˆ}Ó Ò"Ü Ð#AÄ#ÀmÓBTÐAUÐ!VÓWÐWØÐ!Ü Ð!BÓCÐCÜˆ~Ó !Ò#Ü Ø1´#°nÓ2EÐ1FÐGóð ð +ˆÔà×,Ñ,×LÑLð 	Ô4ð ×,Ñ,×HÑHð 	Ô0ô 	‰Ñð 	
Ø'¸ñ	
ØJPò	
ô 	�d×,Ñ,Õ-r6   rK   .c                 ór   ‡ ‡— |€dˆ ˆfd„}|‰ _         ‰j                  j                  ‰ j                  «       y )Nc                  óŒ   •— ‰ j                   ‰j                  _        ‰ j                  s‰ j                  ‰j                  _        y y rW   )r¯  r­  r®  r«  r±  r°  rI   s   €€r5   rK   z9TorchFunctionDisableVariable.set_cleanup_hook.<locals>.fnÉ  sA   ø€ à×@Ñ@ð ×0Ñ0ÔPð ×)Ò)à×@Ñ@ð ×4Ñ4ÕPð *r6   rN   rO   rT   s   `` r5   rF   z-TorchFunctionDisableVariable.set_cleanup_hookÂ  s.   ù€ ð
 ˆ:öð ˆŒØ
�	‰	×"Ñ" 4§<¡<Õ0r6   r-  c                 ó¬   — t        |«      dk7  rt        dt        |«      › �«      ‚d|j                  _        | j                  sd|j                  _        y y )Nr   zexpected 0 values, got F)rh   rq   r­  r®  r«  r°  ©r3   r7   r-  s      r5   rD   z'TorchFunctionDisableVariable._call_funcÕ  sO   € Üˆv‹;˜!ÒÜ Ð#:¼3¸v»;¸-Ð!HÓIÐIØKPˆ×(Ñ(ÔHØ×!Ò!ØKPˆB×,Ñ,ÕHð "r6   c                  ó   — y)Nztorch._Cr/   rn   s    r5   r]   z(TorchFunctionDisableVariable.module_nameÜ  ó   € Ør6   c                 ó   — | j                   ryy)NÚDisableTorchFunctionSubclassÚDisableTorchFunction)r«  rn   s    r5   r^   z$TorchFunctionDisableVariable.fn_nameß  s   € Ø×ÒØ1Ø%r6   c                 ó‚   — | j                   rt        j                  j                  S t        j                  j                  S rW   )r«  r¤   rË   r¹  rº  rn   s    r5   r  z(TorchFunctionDisableVariable.python_typeä  s+   € Ø×ÒÜ—8‘8×8Ñ8Ð8Ü�x‰x×,Ñ,Ð,r6   rw   rW   )r   r€   r�   rÖ   r   r   r   ÚTORCH_FUNCTION_STATErê   r×   r   rH   r   r†   r1   r   rF   rD   rƒ   r]   r^   rs   r  r‡   rˆ   s   @r5   r©  r©  ”  s
  ø„ ÙHáÑ/Ó1°<×3TÑ3TÓUÐàð	Ø'ð	Ø36ð	à	'ò	ó ð	ð (,Ø"ñ.à'ð.ð ð.ð  ™ð	.ð
 ð.ð ð.ð 
õ.ð@ )-ñ1à'ð1ð �S˜#�XÑ Ñ%ð1ð 
ó	1ð&QÐ8ð QÀ%ð QÈDó Qð˜Só ð&˜ó &ð
-˜T÷ -r6   r©  c            	       óÒ   ‡ — e Zd ZdZedddedz  dedd fd„«       Z	 dd	eedz     d
eedz     dz  deddfˆ fd„Z	ddde
fd„Zdddeedz     ddfd„Zdefd„Zdefd„Zdefd„Zˆ xZS )Ú!DisabledSavedTensorsHooksVariablez;represents torch.autograd.graph.disable_saved_tensors_hook.r7   r$   rE  Nr+   r,   c                 óº   — t        d|gt        j                  j                  j	                  «       gdœ|¤Ž}|j                  | |g«       |j                  | «       |S rÆ   )r¾  r¤   rË   Ú	_autogradÚ/_saved_tensors_hooks_get_disabled_error_messagerD   rF   rc  s       r5   rH   z(DisabledSavedTensorsHooksVariable.createí  sb   € ô 0ð 
Ø'˜.ä—‘×"Ñ"×RÑRÓTðñ
ð
 ñ
ˆð 	�‰�r˜L˜>Ô*Ø×Ñ˜RÔ Øˆ
r6   r(   r)   c                 ó*   •— t        ‰| �  d||dœ|¤Ž y rÆ   ©r0   r1   r2   s       €r5   r1   z*DisabledSavedTensorsHooksVariable.__init__ü  ó$   ø€ ô 	‰Ñð 	
Ø'¸ñ	
ØJPó	
r6   c                 ó@   — t         j                  j                  d «      S rW   ©r   rG   rH   rI   s     r5   rJ   z'DisabledSavedTensorsHooksVariable.enter  ó   € Ü×)Ñ)×0Ñ0°Ó6Ð6r6   r-  c                 ó  — t        |«      dk7  rt        dt        |«      › �«      ‚|d   }|�k|j                  j                  dt        j
                  j                  j                  |fi «       t        j
                  j                  j                  |«       y |j                  j                  dt        j
                  j                  j                  di «       t        j
                  j                  j                  «        y )Nr   rT  r   ru   r/   )	rh   rq   rQ   rÐ   r¤   rË   rÀ  Ú_saved_tensors_hooks_disableÚ_saved_tensors_hooks_enablerV  s       r5   rD   z,DisabledSavedTensorsHooksVariable._call_func	  sÉ   € ô ˆv‹;˜!ÒÜ Ð#9¼#¸f»+¸Ð!GÓHÐHØ�q‘	ˆØÐð �I‰I×!Ñ!ØÜ—‘×"Ñ"×?Ñ?Ø�Øô	ô �H‰H×Ñ×;Ñ;¸EÕBð �I‰I×!Ñ!Ø¤§¡×!3Ñ!3×!OÑ!OÐQSÐUWôô �H‰H×Ñ×:Ñ:Õ<r6   c                  ó   — y)Nztorch.autograd.graphr/   rn   s    r5   r]   z-DisabledSavedTensorsHooksVariable.module_name!  ó   € Ø%r6   c                  ó   — y)NÚdisable_saved_tensors_hooksr/   rn   s    r5   r^   z)DisabledSavedTensorsHooksVariable.fn_name$  s   € Ø,r6   c                 ó"   — t         j                  S rW   ©Ú
contextlibÚ_GeneratorContextManagerrn   s    r5   r  z-DisabledSavedTensorsHooksVariable.python_type'  ó   € Ü×2Ñ2Ð2r6   rW   )r   r€   r�   rÖ   r×   rƒ   r   rH   r   r1   r   rJ   rD   r]   r^   rs   r  r‡   rˆ   s   @r5   r¾  r¾  ê  sá   ø„ ÙEàðØ'ðØ7:¸T±zðØMPðà	,òó ðð" 7;ñ
à  d¡
Ñ+ð
ð !  t¡Ñ,¨tÑ3ð
ð ð	
ð
 
õ
ð7Ð3ð 7¸ó 7ð=Ø-ð=Ø7?ÀÀdÁ
Ñ7Kð=à	ó=ð0&˜Só &ð-˜ó -ð3˜T÷ 3r6   r¾  c            	       óö   ‡ — e Zd Zedej
                  j                  j                  dee	   de
ee	f   dd fd„«       Z	 ddee	   de	dz  de	ddfˆ fd	„Zd
ddedefd„Zd
ddefd„Zdefd„Zdefd„Zdefd„Zˆ xZS )ÚAutocastModeVariabler    rU   r+   r,   c                 óH  — | t         j                  j                  j                  t         j                  j                  j                  t         j
                  j                  j                  fvrt        d| › �«      ‚ t        j                  | «      j                  |i |¤Ž}|j                  «        g }|j                  «        dD ]Ì  }|dk(  ru| t         j                  j                  j                  t         j
                  j                  j                  fv r+| t         j                  j                  j                  u rdnd}n|j                  |   }t        |t        «      r |j                  |j!                  «       «       Œ¼|j                  |«       ŒÎ t#        |fdd i|¤Ž}|S )Nzunexpected autocast function: )Údevice_typeÚdtyperÒ   Úcache_enabledr×  rŒ  Úcpur)   )r¤   ÚampÚautocast_modeÚautocastrŒ  rÚ  rq   ÚinspectÚ	signatureÚbindÚapply_defaultsÚclearÚ	argumentsrr   r   r¨   r$  rÕ  )r    rU   r+   Ú
bound_argsr(   ÚkeyÚargrå   s           r5   rH   zAutocastModeVariable.create,  sV  € ð Ü�I‰I×#Ñ#×,Ñ,Ü�J‰J�N‰N×#Ñ#Ü�I‰I�M‰M×"Ñ"ð
ñ 
ô
 !Ð#AÀ$ÀÐ!HÓIÐIð
 2”W×&Ñ& tÓ,×1Ñ1°4ÐB¸6ÑBˆ
Ø×!Ñ!Ô#ØˆØ�‰ŒàGò 	*ˆCØ�mÒ#¨Ü—
‘
—‘×'Ñ'Ü—	‘	—‘×&Ñ&ð1ñ )ð
 !%¬¯
©
¯©×(?Ñ(?Ñ ?‘fÀU‘à ×*Ñ*¨3Ñ/�Ü˜#œÔ/Ø×$Ñ$ S×%;Ñ%;Ó%=Õ>à×$Ñ$ SÕ)ð	*ô # =ÑPÀÐPÈÑPˆØˆ
r6   Nr(   r)   c                 ó*   •— t        ‰| �  d||dœ|¤Ž y rÆ   rÃ  r2   s       €r5   r1   zAutocastModeVariable.__init__R  rÄ  r6   r7   r$   c                 óâ   — | j                  «        |j                  j                  dt        j                  j
                  | j                  fi «       t        j                  j                  d «      S rÔ   )
rX   rQ   rÐ   r¤   rÛ  Ú_exit_autocastrÑ   r   rG   rH   rY   s      r5   rZ   zAutocastModeVariable.exit\  sT   € ð 	×ÑÔØ
�	‰	×ÑØœUŸY™Y×5Ñ5¸¿
¹
°}Àbô	
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   c                 óH  ‡— t        j                  j                  | j                  Ž Š| j	                  |ˆfd„«       |j
                  j                  dt         j                  j                  g | j                  ¢­i «      | _        t        j                  j                  d «      S )Nc                  óB   •— t         j                  j                  ‰ «      S rW   )r¤   rÛ  ré  )rj  s   €r5   rd   z,AutocastModeVariable.enter.<locals>.<lambda>g  s   ø€ ¬%¯)©)×*BÑ*BÀ3Ó*G€ r6   ru   )r¤   rÛ  Ú_enter_autocastr(   rF   rQ   rÐ   rÑ   r   rG   rH   )r3   r7   rj  s     @r5   rJ   zAutocastModeVariable.entere  s}   ø€ Ü�i‰i×'Ñ'¨×);Ñ);Ð<ˆØ×Ñ˜bÓ"GÔHØ—Y‘Y×*Ñ*ØœUŸY™Y×6Ñ6Ð8N¸$×:LÑ:LÑ8NÐPRó
ˆŒ
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   c                  ó   — y)Nztorch.amp.autocast_moder/   rn   s    r5   r]   z AutocastModeVariable.module_namem  s   € Ø(r6   c                  ó   — y)NrÝ  r/   rn   s    r5   r^   zAutocastModeVariable.fn_namep  r·  r6   c                 óJ   — t         j                  j                  j                  S rW   )r¤   rÛ  rÜ  rÝ  rn   s    r5   r  z AutocastModeVariable.python_types  s   € Ü�y‰y×&Ñ&×/Ñ/Ð/r6   rW   )r   r€   r�   r×   r¤   rÛ  rÜ  rÝ  r   r   r…   rƒ   rH   r1   r   rZ   rJ   r]   r^   rs   r  r‡   rˆ   s   @r5   rÕ  rÕ  +  sã   ø„ Øð#Ø�i‰i×%Ñ%×.Ñ.ð#à�s‰mð#ð �S˜#�X‘ð#ð 
 ò	#ó ð#ðP &*ñ
à ‘}ð
ð ˜d™
ð
ð ð	
ð
 
õ
ð7Ø-ð7Ø6Eð7à	ó7ð7Ð3ð 7¸ó 7ð)˜Só )ð˜ó ð0˜T÷ 0r6   rÕ  c                   ó€   ‡ — e Zd ZdZddedz  deddfˆ fd„Zdddefd	„Zddd
edefd„Zde	fd„Z
de	fd„Zdefd„Zˆ xZS )ÚNullContextVariablez>
    This class represents Python contextlib.nullcontext.
    Nr(   r+   r,   c                 ó(   •— t        ‰| �  dd|i|¤Ž y ©Nr(   r/   rÃ  )r3   r(   r+   r4   s      €r5   r1   zNullContextVariable.__init__|  s   ø€ Ü‰ÑÑ? }Ð?¸Ó?r6   r7   r$   c                 ót   — t         j                  j                  d «      }| j                  r| j                  S |S rW   )r   rG   rH   r(   )r3   r7   Únones      r5   rJ   zNullContextVariable.enter  s1   € Ü×)Ñ)×0Ñ0°Ó6ˆØ%)×%7Ò%7ˆt×!Ñ!ÐA¸TÐAr6   rU   c                 ó@   — t         j                  j                  d «      S rW   rÆ  rY   s      r5   rZ   zNullContextVariable.exitƒ  ó   € ô ×)Ñ)×0Ñ0°Ó6Ð6r6   c                  ó   — y©NrÑ  r/   rn   s    r5   r]   zNullContextVariable.module_nameˆ  rŠ  r6   c                  ó   — y©NÚnullcontextr/   rn   s    r5   r^   zNullContextVariable.fn_name‹  ó   € Ør6   c                 ó"   — t         j                  S rW   )rÑ  rü  rn   s    r5   r  zNullContextVariable.python_typeŽ  s   € Ü×%Ñ%Ð%r6   rW   )r   r€   r�   rÖ   r   r1   r   rJ   rZ   rƒ   r]   r^   rs   r  r‡   rˆ   s   @r5   rñ  rñ  w  s‚   ø„ ññ@ c¨D¡jð @À3ð @È4õ @ðBÐ3ð B¸ó Bð7Ø-ð7Ø6Eð7à	ó7ð
˜Só ð˜ó ð&˜T÷ &r6   rñ  c                   ó|   ‡ — e Zd ZdZdeddfˆ fd„Zdefd„Zdddefd	„Z	ddd
edefd„Z
defd„Zdefd„Zdd„Zˆ xZS )ÚProfilerContextVariablea~  
    This class represents a set of torch profiler context objects, where Dynamo
    ignores all the side-effects in the __init__, __enter__ and __exit__ methods
    by treating the object mostly as a `contextlib.nullcontext`, except for edge
    cases like the `__enter__` method which returns the object itself rather
    than `None`, per implementation of the torch objects.
    r+   r,   Nc                 ó(   •— t        ‰| �  ddd i|¤Ž y ró  rÃ  )r3   r+   r4   s     €r5   r1   z ProfilerContextVariable.__init__›  s   ø€ Ü‰ÑÑ6 tÐ6¨vÓ6r6   c                 ó6   — t         j                  j                  S rW   )r¤   rª   Úprofilern   s    r5   r  z#ProfilerContextVariable.python_typež  s   € Ü�~‰~×%Ñ%Ð%r6   r7   r$   c                 ó   — | S rW   r/   rI   s     r5   rJ   zProfilerContextVariable.enter¡  s   € Øˆr6   rU   c                 ó@   — t         j                  j                  d «      S rW   rÆ  rY   s      r5   rZ   zProfilerContextVariable.exit¤  r÷  r6   c                  ó   — yrù  r/   rn   s    r5   r]   z#ProfilerContextVariable.module_name©  rŠ  r6   c                  ó   — yrû  r/   rn   s    r5   r^   zProfilerContextVariable.fn_name¬  rý  r6   c                 óT   — t        dt        | «      dg t        j                  ¢¬«       y )Nz2torch.profiler object escaped from compiled regionzXDynamo doesn't support compiling a region that returns a torch.profiler context manager.©Úgb_typeÚcontextÚexplanationÚhints©r   rƒ   r   ÚSUPPORTABLEr_   s     r5   rj   z#ProfilerContextVariable.reconstruct¯  s*   € ÜØHÜ˜“IØrðÜ"×.Ñ.ðö		
r6   r~   )r   r€   r�   rÖ   r   r1   rs   r  r   rJ   rZ   rƒ   r]   r^   rj   r‡   rˆ   s   @r5   r   r   ’  su   ø„ ñð7 ð 7¨õ 7ð&˜Tó &ðÐ3ð ¸ó ð7Ø-ð7Ø6Eð7à	ó7ð
˜Só ð˜ó ÷
r6   r   c                   óÞ   ‡ — e Zd ZdZdhej
                  £Zededee	   dddedd f
d	„«       Z
	 	 ddeded
z  dedd
fˆ fd„Zdefd„Zddde	fd„Zddde	de	fd„Zdefd„Zdefd„Zdˆ fd„Zˆ xZS )r¥   ac  
    This class represents torch profiler context objects.

    For record_function: emits torch.ops.profiler._record_function_enter_new
    to the graph on enter, and torch.ops.profiler._record_function_exit on exit.
    But if emit_profiler_ops=False, behaves like nullcontext.

    For profile: behaves like nullcontext, ignoring all side-effects.
    Úemit_profiler_opsr    r¡   r¢   zdict[str, VariableTracker]r+   r,   c                 óˆ  — d }t         j                  r’|r|d   j                  «       n<|j                  dt        j
                  j                  d«      «      j                  «       }d }t        |«      dkD  r|d   j                  «       }nd|v r|d   j                  «       }||g}nt        t        d| «       t        d|d dœ|¤ŽS )	Nr   r£   Úunknownr   rU   z+Profiler record function %s will be ignoredrÇ   r/   )r
   Ú capture_profiler_record_functionr$  r¦  r   rG   rH   rh   r   Úlogr¥   )r    r¡   r¢   r+   r(   r£   Úrecord_args_consts          r5   rH   z,ProfilerRecordFunctionContextVariable.createÊ  sÙ   € ð ˆÜ×2Ò2ñ
 ð ˜A‘×1Ñ1Ô3à"×&Ñ&ØœI×6Ñ6×=Ñ=¸iÓHóç$Ñ$Ó&ð ð !%ÐÜ�;Ó !Ò#Ø$/°¡N×$EÑ$EÓ$GÑ!Ø˜=Ñ(Ø$1°&Ñ$9×$LÑ$LÓ$NÐ!Ø!Ð#4Ð5‰MäœÐKÈTÔRÜ4ð 
Ø'Øñ
ð ñ
ð 	
r6   Nr(   r)   c                 ó*   •— t        ‰| �  d||dœ|¤Ž y rÆ   rÃ  r2   s       €r5   r1   z.ProfilerRecordFunctionContextVariable.__init__ê  rÄ  r6   c                 óJ   — t         j                  j                  j                  S rW   )r¤   rÿ   rª   r«   rn   s    r5   r  z1ProfilerRecordFunctionContextVariable.python_typeô  s   € Ü�~‰~×&Ñ&×6Ñ6Ð6r6   r7   r$   c                 óÒ   — t         j                  rV| j                  \  }}|j                  j	                  dt
        j                  j                  j                  ||fi «      | _	        | S rÔ   )
r
   r  r(   rQ   rÐ   r¤   Úopsrª   Ú_record_function_enter_newrÑ   )r3   r7   r£   rU   s       r5   rJ   z+ProfilerRecordFunctionContextVariable.enter÷  sW   € Ü×2Ò2Ø×+Ñ+‰JˆD�$àŸ™×.Ñ.ØÜ—	‘	×"Ñ"×=Ñ=Ø�t�Øó	ˆDŒJð ˆr6   rU   c                 ó
  — t         j                  rU|j                  j                  dt        j
                  j                  j                  j                  | j                  fi «       t        j                  j                  d «      S rÔ   )r
   r  rQ   rÐ   r¤   r  rª   Ú_record_function_exitÚ_RecordFunctionrÑ   r   rG   rH   rY   s      r5   rZ   z*ProfilerRecordFunctionContextVariable.exit  s`   € ô ×2Ò2à�I‰I×!Ñ!ØÜ—	‘	×"Ñ"×8Ñ8×HÑHØ—‘�Øô	ô ×)Ñ)×0Ñ0°Ó6Ð6r6   c                 ó*   — t         j                  rdS dS )Nztorch.autograd.profilerrÑ  ©r
   r  rn   s    r5   r]   z1ProfilerRecordFunctionContextVariable.module_name  s!   € ô ×6Ò6ð &ð	
ð ð	
r6   c                 ó*   — t         j                  rdS dS )Nr«   rü  r   rn   s    r5   r^   z-ProfilerRecordFunctionContextVariable.fn_name  s!   € ô ×6Ò6ð ð	
ð ð	
r6   c                 ó–   •— t         j                  r)t        dt        | «      dg t        j
                  ¢¬«       y t        ‰| �  |«       y )Nz,record_function escaped from compiled regionzADynamo doesn't support graph break inside record_function region.r	  )r
   r  r   rƒ   r   r  r0   ra   )r3   r`   r4   s     €r5   ra   z6ProfilerRecordFunctionContextVariable.reconstruct_type  sE   ø€ ô ×2Ò2ÜØFÜ˜D›	Ø_ðÜ&×2Ñ2ðö	ô ‰GÑ$ WÕ-r6   r2  r~   )r   r€   r�   rÖ   r&   r‚   r×   r   r„   r   rH   r1   rs   r  rJ   rZ   rƒ   r]   r^   ra   r‡   rˆ   s   @r5   r¥   r¥   º  s   ø„ ñð 	ðà	 ×	/Ñ	/ð€Nð
 ð
Øð
à˜/Ñ*ð
ð 4ð
ð ð	
ð
 
1ò
ó ð
ðB "Ø%)ñ
àð
ð ˜d™
ð
ð ð	
ð
 
õ
ð7˜Tó 7ð
Ð3ð 
¸ó 
ð7Ø-ð7Ø6Eð7à	ó7ð
˜Só 
ð
˜ó 
÷.ñ .r6   r¥   c                   ó¤   ‡ — e Zd ZdZedddedd fd„«       Zedddefd„«       Zdeded	edd
fˆ fd„Z	de
fd„Zdddefd„Zdddedefd„Zdd„Zˆ xZS )ÚPreserveVersionContextVariablez?
    Wraps torch.autograd._unsafe_preserve_version_counter
    r7   r$   Útensorsr,   c           	      óÄ  — |j                  «       rKt        j                  |fD �cg c]  }|j                  | d«      ‘Œ c}«      }t        j                  |g«      }npt	        |t        j                  «      st        dt        |«      › �«      ‚t        j                  |j                  D �cg c]  }|j                  | d«      ‘Œ c}«      }|}t        ||«      S c c}w c c}w )NÚ_versionz%tensors must be a TupleVariable, got )	Ú	is_tensorr   ÚTupleVariabler¸   rr   rq   rs   r#  r$  )r7   r%  r™   ÚversionsÚtensors_tuples        r5   Ú_create_lambda_from_tensorsz:PreserveVersionContextVariable._create_lambda_from_tensors5  sÉ   € ð
 ×ÑÔÜ ×.Ñ.Ø9@¸	ÖB°1�—‘˜r :Õ.ÒBóˆHô &×3Ñ3°W°IÓ>‰Mä˜g¤y×'>Ñ'>Ô?Ü$Ø;¼DÀ»M¸?ÐKóð ô !×.Ñ.Ø8?¿¹ÖF°1�—‘˜r :Õ.ÒFóˆHð $ˆMÜ-¨m¸XÓFÐFùò Cùò Gs   ¥CÂ*Cc                 ó4   ‡ — t        j                  ˆ fd„«      S )Nc                 ó0   •— t         j                  ‰| «      S rW   )r$  r,  )r%  r7   s    €r5   rd   z<PreserveVersionContextVariable.constructor.<locals>.<lambda>M  s   ø€ Ô:×VÑVØ�Gó€ r6   )r   ÚLambdaVariable)r7   s   `r5   Úconstructorz*PreserveVersionContextVariable.constructorJ  s   ø€ ä×'Ñ'óó
ð 	
r6   Úprev_versionsr+   Nc                 ób  •— |j                  dd «       t        ‰| �  di |¤Ž || _        || _        | j                  j                  «       r%t        j                  | j                  g«      | _        | j                  j                  «       r&t        j                  | j                  g«      | _        y y ró  )	Ú
setdefaultr0   r1   r%  r1  r(  r   r)  Úis_symnode_like)r3   r%  r1  r+   r4   s       €r5   r1   z'PreserveVersionContextVariable.__init__R  s�   ø€ ð 	×Ñ˜/¨4Ô0Ü‰ÑÑ"˜6Ò"ØˆŒØ*ˆÔà�<‰<×!Ñ!Ô#Ü$×2Ñ2°D·L±L°>ÓBˆDŒLØ×Ñ×-Ñ-Ô/Ü!*×!8Ñ!8¸$×:LÑ:LÐ9MÓ!NˆDÕð 0r6   c                 óJ   — t         j                  j                  j                  S rW   )r¤   rÿ   rf  Ú _unsafe_preserve_version_counterrn   s    r5   r  z*PreserveVersionContextVariable.python_typeb  s   € Ü�~‰~×'Ñ'×HÑHÐHr6   c                 ó@   — t         j                  j                  d «      S rW   rÆ  rI   s     r5   rJ   z$PreserveVersionContextVariable.entere  rÇ  r6   rU   c                 ó†   — ddl m} t        j                  |«      j	                  || j
                  | j                  gi «      S )Nr   )Ú_unsafe_set_version_counter)Útensor_version_opr9  r   ÚTorchInGraphFunctionVariableru   r%  r1  )r3   r7   rU   r9  s       r5   rZ   z#PreserveVersionContextVariable.exith  s<   € õ 	Dä×5Ñ5Ø'ó
ç
‰-˜˜TŸ\™\¨4×+=Ñ+=Ð>ÀÓ
Cð	Dr6   c                 óT   — t        dt        | «      dg t        j                  ¢¬«       y )NzLtorch.autograd._unsafe_preserve_version_counter escaped from compiled regionzyDynamo doesn't support compiling a region that returns a torch.autograd._unsafe_preserve_version_counter context manager.r	  r  r_   s     r5   rj   z*PreserveVersionContextVariable.reconstructq  s-   € ÜØbÜ˜“IðUðÜ"×.Ñ.ðö
	
r6   r~   )r   r€   r�   rÖ   r×   r   r,  r0  r   r1   rs   r  rJ   rZ   rj   r‡   rˆ   s   @r5   r$  r$  0  sÖ   ø„ ñð ðGØ'ðGà ðGð 
*òGó ðGð( ð
Ð3ð 
¸ò 
ó ð
ðOà ðOð 'ðOð ð	Oð
 
õOð I˜Tó Ið7Ð3ð 7¸ó 7ðDØ-ðDØ6EðDà	óD÷
r6   r$  c                   ó"  ‡ — e Zd Z e e«       ej                  «      Zeddde	de	de	dd f
d„«       Z
	 dde	d	ee	   d
ee	   dz  de	ddf
ˆ fd„Zdddefd„Zdddedefd„Zdddee   deeef   defˆ fd„Zdddee	   ddfd„Zdefd„Zdefd„Zˆ xZS )Ú&FSDPParamGroupUseTrainingStateVariabler7   r$   Úparam_group_varrE  r+   r,   c                 óP   — t        d||g|j                  j                  gdœ|¤Ž}|S )N)r?  r(   r)   r/   )r>  rŒ   Ú_training_state)r7   r?  rE  r+   rå   s        r5   rH   z-FSDPParamGroupUseTrainingStateVariable.create‚  s>   € ô 5ð 
Ø+Ø'˜.Ø+×1Ñ1×AÑAÐBñ
ð ñ	
ˆð ˆ
r6   Nr(   r)   c                 ób   •— t        ‰| �  d||dœ|¤Ž || _        t        | j                  «       y rÆ   )r0   r1   r?  r   rê   )r3   r?  r(   r)   r+   r4   s        €r5   r1   z/FSDPParamGroupUseTrainingStateVariable.__init__‘  s<   ø€ ô 	‰Ñð 	
Ø'¸ñ	
ØJPò	
ð  /ˆÔÜ�d×,Ñ,Õ-r6   c                 óx   — | j                  || j                  «       t        j                  j	                  d «      S rW   rK  rI   s     r5   rJ   z,FSDPParamGroupUseTrainingStateVariable.enterž  rL  r6   rU   c                 óx   — | j                  || j                  «       t        j                  j	                  d «      S rW   rN  rY   s      r5   rZ   z+FSDPParamGroupUseTrainingStateVariable.exit¢  rO  r6   c                 ó^   •— | j                  || j                  «       t        ‰| �  |||«      S rW   rQ  rR  s       €r5   ru   z4FSDPParamGroupUseTrainingStateVariable.call_function¨  s-   ø€ ð 	�‰˜˜D×/Ñ/Ô0Ü‰wÑ$ R¨¨vÓ6Ð6r6   r-  c           	      óŽ  — t        |«      dk7  rt        dt        |«      › �«      ‚|d   }| j                  j                  j                  |k7  rx| j                  j                  |dt        j                  j                  |d«      t        j                  j                  ||«      fi «       || j                  j                  _        y y )Nr   rT  r   Ú__setattr__rA  )	rh   rq   r?  rŒ   rA  Úcall_methodr   r   rî   rV  s       r5   rD   z1FSDPParamGroupUseTrainingStateVariable._call_func²  s¶   € ô ˆv‹;˜!ÒÜ Ð#9¼#¸f»+¸Ð!GÓHÐHØ�q‘	ˆØ×Ñ×%Ñ%×5Ñ5¸Ò>Ø× Ñ ×,Ñ,ØØä×-Ñ-×3Ñ3°BÐ8IÓJÜ×-Ñ-×3Ñ3°B¸Ó>ðð ôð :?ˆD× Ñ ×&Ñ&Õ6ð ?r6   c                  ó   — y)NzDtorch.distributed.fsdp._fully_shard._fsdp_param_group.FSDPParamGroupr/   rn   s    r5   r]   z2FSDPParamGroupUseTrainingStateVariable.module_nameÄ  s   € ØUr6   c                  ó   — y)NÚuse_training_stater/   rn   s    r5   r^   z.FSDPParamGroupUseTrainingStateVariable.fn_nameÇ  ó   € Ø#r6   rW   )r   r€   r�   r   r   r   ÚFSDP_TRAINING_STATErê   r×   r   rH   r   r1   r   rJ   rZ   r„   r…   rƒ   ru   rD   r]   r^   r‡   rˆ   s   @r5   r>  r>    sG  ø„ ÙÑ/Ó1°<×3SÑ3SÓTÐàðØ'ðàðð ðð ð	ð
 
2òó ðð$ 04ñ	.àð.ð   ‘}ð.ð ! ™¨Ñ,ð	.ð
 ð.ð 
õ.ð7Ð3ð 7¸ó 7ð7Ø-ð7Ø6Eð7à	ó7ð7à'ð7ð �?Ñ#ð7ð �S˜/Ð)Ñ*ð	7ð
 
õ7ð?Ø-ð?Ø7?À±}ð?à	ó?ð$V˜Só Vð$˜÷ $r6   r>  c                   ó  ‡ — e Zd ZdZe	 ddddedededd f
d„«       Z	 	 dd
ee	j                  j                  j                     dedededd	f
ˆ fd„Zedddee   dee   fd„«       Zdddefd„Zdddedefd„Zdefd„Zdefd„Zdefd„Zˆ xZS )ÚSDPAKernelVariablez)represents torch.nn.attention.sdpa_kernelr7   r$   ÚbackendsÚset_priorityr+   r,   c                 ó†   — t        |t        j                  j                  j                  «      r|g}t        d|d |dœ|¤Ž}|S )N)r(   r)   rQ  r/   )rr   r¤   ÚnnÚ	attentionÚ
SDPBackendrO  )r7   rP  rQ  r+   rå   s        r5   rH   zSDPAKernelVariable.createÎ  sN   € ô �h¤§¡× 2Ñ 2× =Ñ =Ô>Ø �zˆHÜ ð 
Ø"ØØ%ñ
ð ñ	
ˆð ˆ
r6   Nr(   r)   c                 ó8   •— t        ‰| �  d||dœ|¤Ž || _        y rÆ   )r0   r1   rQ  )r3   r(   r)   rQ  r+   r4   s        €r5   r1   zSDPAKernelVariable.__init__ß  s.   ø€ ô 	‰Ñð 	
Ø'¸ñ	
ØJPò	
ð )ˆÕr6   c           	      óÀ   — |D �cg c]M  }| j                   j                  dt        j                  j                  j
                  |j                  fi «      ‘ŒO }}|S c c}w rÔ   )rQ   rÐ   r¤   rS  rT  Ú_backend_from_stringr£   )r7   rP  ÚbackendÚnodess       r5   Ú_backends_to_nodesz%SDPAKernelVariable._backends_to_nodesë  s`   € ð $ö
ð ð �I‰I×!Ñ!ØÜ—‘×"Ñ"×7Ñ7Ø—‘�Øõ	ð
ˆð 
ð ˆùò
s   …AAc                 ó>  ‡ — t         j                  j                  j                  ‰ j                  ¬«      ‰ _        ‰ j                  |ˆ fd„«       t         j                  j                  j                  ‰ j                  ‰ j                  ¬«       ‰ j                  |‰ j                  «      }|j                  j                  dt         j                  j                  j                  |t        ‰ j                  «      fi «       t        j                  j                  d «      S )N)Úwith_priorityc                  ó‚   •— t         j                  j                  j                  ‰ j                  ‰ j
                  ¬«      S )N©rQ  )r¤   rS  rT  Ú_sdpa_kernelÚprev_backendsrQ  rn   s   €r5   rd   z*SDPAKernelVariable.enter.<locals>.<lambda>  s2   ø€ ”E—H‘H×&Ñ&×3Ñ3Ø×"Ñ"°×1BÑ1Bð 4ó € r6   r_  ru   )r¤   rS  rT  Ú_cur_sdpa_kernel_backendsrQ  ra  rF   r`  r(   r[  rQ   rÐ   r†   r   rG   rH   )r3   r7   ræ  s   `  r5   rJ   zSDPAKernelVariable.enterü  sè   ø€ Ü"ŸX™X×/Ñ/×IÑIØ×+Ñ+ð Jó 
ˆÔð 	×ÑØóô	
ô 	�‰×Ñ×'Ñ'Ø×Ñ¨T×->Ñ->ð 	(ô 	
ð ×%Ñ% b¨$×*<Ñ*<Ó=ˆØ
�	‰	×ÑØÜ�H‰H×Ñ×+Ñ+Ø”$�t×(Ñ(Ó)Ð*Øô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   rU   c                 óB  — | j                  «        | j                  || j                  «      }|j                  j	                  dt
        j                  j                  j                  |t        | j                  «      fi «       t        j                  j                  d «      S rÔ   )rX   r[  ra  rQ   rÐ   r¤   rS  rT  r`  r†   rQ  r   rG   rH   )r3   r7   rU   ræ  s       r5   rZ   zSDPAKernelVariable.exit  s   € ð 	×ÑÔØ×%Ñ% b¨$×*<Ñ*<Ó=ˆØ
�	‰	×ÑØÜ�H‰H×Ñ×+Ñ+Ø”$�t×(Ñ(Ó)Ð*Øô		
ô ×)Ñ)×0Ñ0°Ó6Ð6r6   c                  ó   — y)Nztorch.nn.attentionr/   rn   s    r5   r]   zSDPAKernelVariable.module_name  rL  r6   c                  ó   — y)NÚ_sdpa_kernel_variadicr/   rn   s    r5   r^   zSDPAKernelVariable.fn_name$  s   € Ø&r6   c                 ó"   — t         j                  S rW   rÐ  rn   s    r5   r  zSDPAKernelVariable.python_type'  rÓ  r6   r]  r›   )r   r€   r�   rÖ   r×   r   r†   rH   r„   r¤   rS  rT  rU  r1   r[  r   rJ   rZ   rƒ   r]   r^   rs   r  r‡   rˆ   s   @r5   rO  rO  Ë  s(  ø„ Ù3àð #ñØ'ðàðð ðð ð	ð
 
òó ðð& #Ø"ñ	
)à˜EŸH™H×.Ñ.×9Ñ9Ñ:ð
)ð ð
)ð ð	
)ð
 ð
)ð 
õ
)ð ðØ'ðà�s‘)ðð 
ˆc‰òó ðð 7Ð3ð 7¸ó 7ð,7Ø-ð7Ø6Eð7à	ó7ð$˜Só $ð
'˜ó 'ð3˜T÷ 3r6   rO  c            	       óx   ‡ — e Zd ZdZ	 ddedededdfˆ fd„Zdd	d
edefd„Zdefd„Z	defd„Z
defd„Zdd„Zˆ xZS )ÚFxTracebackAnnotateVariablea¶  
    fx.traceback.annotate is a context manager that allows users to annotate the
    fx graph nodes with custom metadata. In the context of Dynamo, we don't have
    to trace the body of the context manager. Instead we want to directly run
    the body of the context manager, so the Dynamo created Fx graphs have the
    right custom metadata. This variable tracker just runs __enter__ and
    __exit__ method (instead of tracing).
    Nr(   r)   r+   r,   c                 ó*   •— t        ‰| �  d||dœ|¤Ž y rÆ   rÃ  r2   s       €r5   r1   z$FxTracebackAnnotateVariable.__init__5  s$   ø€ ô 	‰Ñð 	
Ø'¸ñ	
ØJPó	
r6   r7   r$   rU   c                 ór  ‡— t        «       Š‰j                  t        j                  j                  j                  | j                  «      «       ‰j                  t        j                  j                  j                  «       «       | j                  |ˆfd„«       t        j                  j                  d «      S )Nc                  ó$   •— ‰ j                  «       S rW   )Úclose)Ústacks   €r5   rd   z3FxTracebackAnnotateVariable.enter.<locals>.<lambda>E  s   ø€ ¨%¯+©+«-€ r6   )r   Úenter_contextr¤   ÚfxÚ	tracebackÚannotater(   Úpreserve_node_metarF   r   rG   rH   )r3   r7   rU   rn  s      @r5   rJ   z!FxTracebackAnnotateVariable.enter<  s~   ø€ ô “ˆØ×ÑœEŸH™H×.Ñ.×7Ñ7¸×8JÑ8JÓKÔLØ×ÑœEŸH™H×.Ñ.×AÑAÓCÔDØ×Ñ˜bÓ"7Ô8Ü×)Ñ)×0Ñ0°Ó6Ð6r6   c                  ó   — y)Nztorch.fx.tracebackr/   rn   s    r5   r]   z'FxTracebackAnnotateVariable.module_nameH  rL  r6   c                  ó   — y)Nrr  r/   rn   s    r5   r^   z#FxTracebackAnnotateVariable.fn_nameK  r·  r6   c                 ó"   — t         j                  S rW   rÐ  rn   s    r5   r  z'FxTracebackAnnotateVariable.python_typeN  rÓ  r6   c                 óT   — t        dt        | «      dg t        j                  ¢¬«       y )Nz8torch.fx.traceback.annotate escaped from compiled regionzBDynamo doesn't support graph break on torch.fx.traceback.annotate.r	  r  r_   s     r5   ra   z,FxTracebackAnnotateVariable.reconstruct_typeQ  s*   € ÜØNÜ˜“IØ\ðÜ"×.Ñ.ðö		
r6   rW   r~   )r   r€   r�   rÖ   r   r1   r   rJ   rƒ   r]   r^   rs   r  ra   r‡   rˆ   s   @r5   ri  ri  +  sx   ø„ ñð 9=ñ
Ø ð
Ø25ð
ØHKð
à	õ
ð
7Ø-ð
7Ø6Eð
7à	ó
7ð$˜Só $ð˜ó ð3˜Tó 3÷
r6   ri  c                   ór   ‡ — e Zd ZdZdeeef   deddfˆ fd„Zddd	eddfd
„Zdefd„Z	defd„Z
defd„Zˆ xZS )ÚDynamoConfigPatchVariablez,represents torch._dynamo.patch_dynamo_configr(   r+   r,   Nc                 ó  •— t        |j                  «       «      }t        ‰| �  d|fd dœ|¤Ž i }|D ]1  \  }}t        j
                  j                  j                  |«      ||<   Œ3 t        |j                  «       «      f| _        y rÆ   )	r.  r#  r0   r1   r¤   rµ   r
   rÂ   r)   )r3   r(   r+   Útarget_values_tupleÚinitial_values_dictrå  Ú_r4   s          €r5   r1   z"DynamoConfigPatchVariable.__init__a  s�   ø€ Ü# M×$7Ñ$7Ó$9Ó:ÐÜ‰Ñð 	
Ø.Ð0Àñ	
ØIOò	
ð !ÐØ)ò 	M‰FˆC�Ü',§}¡}×';Ñ';×'GÑ'GÈÓ'LÐ Ò$ð	Mä$Ð%8×%>Ñ%>Ó%@ÓAÐCˆÕr6   r7   r$   r-  c                 óÀ   — t        |«      dk7  rt        dt        |«      › �«      ‚|d   }|D ]/  \  }}t        j                  j                  j                  ||«       Œ1 y ©Nr   rT  r   )rh   rq   r¤   rµ   r
   rG  )r3   r7   r-  rŒ   rå  ri   s         r5   rD   z$DynamoConfigPatchVariable._call_funcl  s[   € Üˆv‹;˜!ÒÜ Ð#9¼#¸f»+¸Ð!GÓHÐHØ�q‘	ˆàò 	7‰HˆC�Ü�M‰M× Ñ ×,Ñ,¨S°#Õ6ñ	7r6   c                  ó   — y©Nztorch._dynamor/   rn   s    r5   r]   z%DynamoConfigPatchVariable.module_namex  ó   € Ør6   c                  ó   — y)NÚpatch_dynamo_configr/   rn   s    r5   r^   z!DynamoConfigPatchVariable.fn_name{  ó   € Ø$r6   c                 ó   — ddl m} |S )Nr   )ÚDynamoConfigPatchProxy)Útorch._dynamo.decoratorsr‡  )r3   r‡  s     r5   r  z%DynamoConfigPatchVariable.python_type~  s   € ÝCà%Ð%r6   )r   r€   r�   rÖ   r…   rƒ   r   r1   rD   r]   r^   rs   r  r‡   rˆ   s   @r5   ry  ry  \  sk   ø„ Ù6ð	D d¨3°¨8¡nð 	DÀð 	DÈõ 	Dð7Ð8ð 7À#ð 7È$ó 7ð˜Só ð%˜ó %ð&˜T÷ &r6   ry  c                   ón   ‡ — e Zd ZdZdededdfˆ fd„Zddd	ee   ddfd
„Zde	fd„Z
de	fd„Zdefd„Zˆ xZS )ÚErrorOnGraphBreakVariablez-represents torch._dynamo.error_on_graph_breakÚerror_on_graph_breakr+   r,   Nc                 ó>   •— t        ‰| �  d|ft        «       fdœ|¤Ž y rÆ   )r0   r1   r   )r3   r‹  r+   r4   s      €r5   r1   z"ErrorOnGraphBreakVariable.__init__‡  s.   ø€ Ü‰Ñð 	
Ø/Ð1Ü5Ó7Ð9ñ	
ð ó	
r6   r7   r$   r-  c                 ój   — t        |«      dk7  rt        dt        |«      › �«      ‚t        |d   «       y r  )rh   rq   r   rµ  s      r5   rD   z$ErrorOnGraphBreakVariable._call_funcŽ  s3   € ô ˆv‹;˜!ÒÜ Ð#9¼#¸f»+¸Ð!GÓHÐHÜ! &¨¡)Õ,r6   c                  ó   — yr�  r/   rn   s    r5   r]   z%ErrorOnGraphBreakVariable.module_name•  r‚  r6   c                  ó   — y)Nr‹  r/   rn   s    r5   r^   z!ErrorOnGraphBreakVariable.fn_name˜  rÌ  r6   c                 ó   — ddl m} |S )Nr   )Ú(ErrorOnGraphBreakDecoratorContextManager)rˆ  r‘  )r3   r‘  s     r5   r  z%ErrorOnGraphBreakVariable.python_type›  s   € ÝUà7Ð7r6   )r   r€   r�   rÖ   r†   r   r1   r   rD   rƒ   r]   r^   rs   r  r‡   rˆ   s   @r5   rŠ  rŠ  „  se   ø„ Ù7ð
¨Tð 
¸Sð 
ÀTõ 
ð-Ø-ð-Ø7?À±~ð-à	ó-ð˜Só ð&˜ó &ð8˜T÷ 8r6   rŠ  c                   ó®   ‡ — e Zd ZdZdedz  dedz  deddfˆ fd„Zdˆ fd„Zdd	deedf   ddfd„Z	de
fd„Zde
fd„Zdefd„Zdefd„Zdd	dedd
fd„Zˆ xZS )ÚCudagraphOverrideVariablez,represents torch._dynamo.override_cudagraphsÚfwdNÚbwdr+   r,   c                 ó.   •— t        ‰| �  d||fd dœ|¤Ž y rÆ   rÃ  )r3   r”  r•  r+   r4   s       €r5   r1   z"CudagraphOverrideVariable.__init__¤  s)   ø€ Ü‰Ñð 	
Ø ˜*Øñ	
ð ó	
r6   r7   r$   r   c                 óœ   •— |j                   j                  }|�|j                  |j                  f| _        nd| _        t
        ‰| �  |«      S )NrW   )rQ   Úcudagraph_annotationr”  r•  r)   r0   rJ   )r3   r7   Úprevr4   s      €r5   rJ   zCudagraphOverrideVariable.enter«  sD   ø€ à�y‰y×-Ñ-ˆØÐØ#'§8¡8¨T¯X©XÐ"6ˆDÕà")ˆDÔÜ‰w‰}˜RÓ Ð r6   r-  .c                 óP  — ddl m} t        |«      dk(  r2|d   €-d |j                  _        d |j                  j
                  _        y t        |«      dk7  rt        dt        |«      › �«      ‚|\  }} |||¬«      }||j                  _        ||j                  j
                  _        y )Nr   )Ú_CudagraphAnnotationr   r   zexpected 2 values, got )r”  r•  )Útorch._inductorr›  rh   rQ   r˜  Útracing_contextrq   )r3   r7   r-  r›  r”  r•  Ú
annotations          r5   rD   z$CudagraphOverrideVariable._call_func´  s�   € õ 	9äˆv‹;˜!Ò  q¡	Ð 1à-1ˆB�I‰IÔ*Ø=AˆB�I‰I×%Ñ%Õ:ä�6‹{˜aÒÜ$Ð'>¼sÀ6»{¸mÐ%LÓMÐMØ‰HˆC�Ù-°#¸3Ô?ˆJØ-7ˆB�I‰IÔ*Ø=GˆB�I‰I×%Ñ%Õ:r6   c                  ó   — yr�  r/   rn   s    r5   r]   z%CudagraphOverrideVariable.module_nameÅ  r‚  r6   c                  ó   — y)NÚoverride_cudagraphsr/   rn   s    r5   r^   z!CudagraphOverrideVariable.fn_nameÈ  r…  r6   c                 ó   — ddl m} |S )Nr   )ÚCudagraphOverrideContextManager)rˆ  r£  )r3   r£  s     r5   r  z%CudagraphOverrideVariable.python_typeË  s   € ÝLà.Ð.r6   c                  ó   — yr›   r/   rn   s    r5   r{   z-CudagraphOverrideVariable.exit_on_graph_breakÐ  s   € ð r6   rU   c                 ó@   — t         j                  j                  d «      S rW   rÆ  rY   s      r5   rZ   zCudagraphOverrideVariable.exitÕ  s   € ô ×)Ñ)×0Ñ0°Ó6Ð6r6   )r7   r$   r,   r   )r   r€   r�   rÖ   r†   r   r1   rJ   r.  rD   rƒ   r]   r^   rs   r  r{   r   rZ   r‡   rˆ   s   @r5   r“  r“  ¡  sª   ø„ Ù6ð
˜D 4™Kð 
¨d°T©kð 
ÀSð 
ÈTõ 
õ!ðHØ-ðHØ7<¸SÀ#¸X±ðHà	óHð"˜Só ð%˜ó %ð/˜Tó /ð
 Tó ð
7Ø-ð7Ø6Eð7à	÷7r6   r“  c                   ó†   ‡ — e Zd Zdee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ddee   deeef   defd„Zdd„Zˆ xZS )ÚWithEnterFunctionVariablerj  r+   r,   Nc                 ó2   •— t        ‰| �  di |¤Ž || _        y r.   )r0   r1   rj  )r3   rj  r+   r4   s      €r5   r1   z"WithEnterFunctionVariable.__init__ß  s   ø€ ô
 	‰ÑÑ"˜6Ò"Øˆ�r6   r7   r$   r8   r9   c                 ó$   — ddl m}  || |||«      S r;   r=   r?   s        r5   r@   z*WithEnterFunctionVariable.richcompare_implç  rA   r6   c                 ó"   — t         j                  S rW   ©ÚtypesÚ
MethodTypern   s    r5   r  z%WithEnterFunctionVariable.python_typeî  ó   € Ü×ÑÐr6   rU   c                 ó‚   — |rt        d«      ‚|rt        d«      ‚|j                  | j                  |j                  «      S )Nz7WithEnterFunctionVariable.call_function expects no argsz9WithEnterFunctionVariable.call_function expects no kwargs)rq   Ú	enter_ctxrj  Úcurrent_instructionrt   s       r5   ru   z'WithEnterFunctionVariable.call_functionñ  sI   € ñ Ü ØIóð ñ Ü ØKóð ð �|‰|˜DŸH™H b×&<Ñ&<Ó=Ð=r6   c                 ó\  — 	 | j                   j                  «       › d| j                   j                  «       › �}t        dt	        | j                   «      d|› d�dgt        j                  ¢t        j                  ¢¬«       y # t        $ r! t	        t        | j                   «      «      }Y Œqw xY w)Nú.z;Attempted to reconstruct context manager's __enter__ methodz)Attempted to reconstruct context manager z while tracing `with ...:`zžIt is likely there is a graph break while tracing `with ctx:` but outside the actual `ctx.__enter__()` method. `torch.compile` does not expect this to happen.r	  )
rj  r]   r^   rm   rƒ   rs   r   r   Ú	DIFFICULTÚ
DYNAMO_BUG)r3   r`   Útype_strs      r5   rj   z%WithEnterFunctionVariable.reconstruct  s¦   € ð	+ØŸ(™(×.Ñ.Ó0Ð1°°4·8±8×3CÑ3CÓ3EÐ2FÐGˆHô 	ØQÜ˜Ÿ™“MØCÀHÀ:ÐMgÐhðBðô #×,Ñ,ð	ô
 #×-Ñ-ðö		
øô #ò 	+Üœ4 §¡›>Ó*ŠHð	+ús   ‚7B Â'B+Â*B+r~   )r   r€   r�   r&   rŠ   r   r1   r   rƒ   r@   rs   r  r„   r…   ru   rj   r‡   rˆ   s   @r5   r§  r§  Þ  sš   ø„ ðà$Ð'EÑEðð ðð 
õ	ð7Ø-ð7Ø6Eð7ØKNð7à	ó7ð ˜Tó  ð>à'ð>ð �?Ñ#ð>ð �S˜/Ð)Ñ*ð	>ð
 
ó>÷&
r6   r§  c                   ó¨   ‡ — e Zd Zdhej                  £Zdddededefd„Zdeez  de	d	e	dd
fˆ fd„Z
defd„Zdddee   d	eeef   defd„Zdd„Zˆ xZS )ÚWithExitFunctionVariableÚtargetr7   r$   r8   r9   r,   c                 ó$   — ddl m}  || |||«      S r;   r=   r?   s        r5   r@   z)WithExitFunctionVariable.richcompare_impl  rA   r6   rj  r+   Nc                 óš   •— t        ‰| �  di |¤Ž t        |t        t        f«      st        dt        |«      › �«      ‚|| _        || _        y )NzMctx must be a ContextWrappingVariable or GenericContextWrappingVariable, got r/   )	r0   r1   rr   r&   rŠ   rq   rs   rj  r¹  )r3   rj  r¹  r+   r4   s       €r5   r1   z!WithExitFunctionVariable.__init__$  sZ   ø€ ô 	‰ÑÑ"˜6Ò"ÜØÔ)Ô+IÐJô
ô !Ø_Ô`dÐehÓ`iÐ_jÐkóð ð ˆŒØˆ�r6   c                 ó"   — t         j                  S rW   r«  rn   s    r5   r  z$WithExitFunctionVariable.python_type4  r®  r6   rU   c                 óV   — |rt        d«      ‚ | j                  j                  |g|¢­Ž S )Nz8WithExitFunctionVariable.call_function expects no kwargs)rq   rj  rZ   rt   s       r5   ru   z&WithExitFunctionVariable.call_function7  s3   € ñ Ü ØJóð ð ˆt�x‰x�}‰}˜RÐ' $Ò'Ð'r6   c                 ó:   — | j                   j                  |«       y rW   )rj  ra   r_   s     r5   rj   z$WithExitFunctionVariable.reconstructC  s   € ð 	�‰×!Ñ! 'Õ*r6   r~   )r   r€   r�   r   r‚   rƒ   r@   r&   rŠ   r   r1   rs   r  r„   r…   ru   rj   r‡   rˆ   s   @r5   r¸  r¸    s¼   ø„ àðà	×	'Ñ	'ð€Nð
7Ø-ð7Ø6Eð7ØKNð7à	ó7ðà$Ð'EÑEðð ðð ð	ð
 
õð  ˜Tó  ð
(à'ð
(ð �?Ñ#ð
(ð �S˜/Ð)Ñ*ð	
(ð
 
ó
(÷+r6   r¸  )grÖ   rÑ  rÞ  Úloggingr¬  r%  Úcollections.abcr   r   r   r   r   Útypingr   r	   Útorch._Cr¤   Útorch._dynamor
   Útorch._guardsr   Útorch._loggingr   Ú r   r   Úbytecode_transformationr   Úexcr   Úguardsr   r   r“   r   r   Úutilsr   r   Úbaser   Ú	functionsr   r   r   r   r   r   r    r!   Úuser_definedr"   Útorch._dynamo.codegenr#   Útorch._dynamo.symbolic_convertr$   Ú	getLoggerr   r  r&   rŠ   rž   r­   rÄ   rÙ   râ   rö   r  r  r  r4  rD  r`  ru  rˆ  r‘  r–  rŒ  ry  r”  rœ  rš  rŸ  r…   rs   r…  r¤  r§  r©  r¾  rÕ  rñ  r   r¥   r$  r>  rO  ri  ry  rŠ  r“  r§  r¸  r/   r6   r5   ú<module>rÑ     sæ  ðòó( Û Û Û Û ß 5Ñ 5ß 8ß %ã Ý  Ý Ý 'ç +Ý :Ý ß 0ß 2ß HÝ !÷	÷ 	ó 	õ 4ñ Ý/ÝHà€g×Ñ˜Ó!€ôn˜oô nôb+Ð%>ô +ô\.Ð;ô .ô(")Ð+Iô ")ôJ)7Ð0Gô )7ôX%7Ð7Nô %7ôP*7Ð,Cô *7ôZ*?Ð&=ô *?ôZ*4Ð5ô *4ôZ(7Ð-Dô (7ôV.'Ð&=ô .'ôb57Ð-Dô 57ôpF&Ð.ô F&ôRH$Ð3ô H$ôV/"Ð3ô /"ôd!Ð.ô !ô Ð-ô  ô.Ð%:ô .ð$ 
‡J�J×ÑÐ)Ø	‡I�I×ÑÐ'Ø	×Ñ×"Ñ"Ð$BðHÐ ˜T $¨Ð-BÑ(CÐ"CÑDó ð?Øð?Ø(,Ð-BÑ(Cð?à	ó?ð;Øð;à	Ð
Ñ  4Ñ'ó;ôS-Ð#:ô S-ôl>3Ð(?ô >3ôBI0Ð2ô I0ôX&Ð1ô &ô6%
Ð5ô %
ôPs.Ð,Cô s.ôlL
Ð%<ô L
ô^I$Ð-Dô I$ôX]3Ð0ô ]3ô@.
Ð"9ô .
ôb%&Ð 7ô %&ôP8Ð 7ô 8ô::7Ð 7ô :7ôz6
 ô 6
ôr0+˜õ 0+r6   