Ë
    g^(hÆø  ã                   óâ  — 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 ddlm	Z	 ddl
ZddlZddl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mZ dd
lmZ ddlmZ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+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z:m;Z; ddl<m=Z=m>Z> ddl?m@Z@mAZAmBZB 	 ddlCZD	 ddlFmGZG e	rddlHmIZI  ej”                  eK«      ZLeMj�                  ejž                  jž                  j                   ej¢                  j¤                  j¦                  ej¢                  j¤                  j¨                  ej¢                  jž                  j                   ej¢                  jž                  jª                  ej¬                  j®                  ej°                  j²                  j´                  ej°                  j¶                  j¸                  ej°                  j¶                  jº                  ej°                  j¶                  j¼                  ej¾                  jÀ                  jÂ                  ej¢                  jÄ                  jÆ                  ej¢                  jÄ                  jÈ                  ej¢                  jÄ                  jÊ                  ej¢                  jÄ                  jÌ                  ej¢                  jÎ                  jÐ                  ejÒ                  j¾                  jÀ                  jÂ                  ejÔ                  j¾                  jÀ                  jÂ                  ejÖ                  jØ                  jÚ                  ejÖ                  jØ                  jÜ                  g«      ZoeMj�                  ejà                  g«      ZqejÔ                  jä                  gZsejè                  ejê                  jì                  ej¬                  jî                  ej¬                  jð                  ejÔ                  jò                  ejÔ                  jô                  ejr                  jô                  ejö                  ejø                  ejú                  ejü                  ejþ                  e�j                   e�j                  e�j                  ejÖ                  �j                  �j                  �j
                  e�j                  ej¬                  �j                  ej¢                  �j                  gesz   Z‰ejr                  jõ                  «       rTe‰�j                  ejr                  �j                  ejr                  �j                  ejr                  �j                  g«       eMj�                  es«      ZseMj�                  e‰«      Z‰e�j                  �j                  de�j                  �j                   dej¬                  �j"                  de�j$                  �j&                  �j(                  de�j*                  �j,                  de�j.                  �j0                  �j2                  dejê                  �j2                  de�j4                  �j2                  de�j4                  �j6                  de�j4                  �j8                  dejÖ                  �j:                  �j<                  �j>                  diZ eMj�                  g d¢«      Z¡ej¬                  �jD                  ej¬                  �jF                  ej¬                  �jH                  hZ¥ e�jL                  d«      d„ «       Z§ G d„ de2«      Z¨ G d „ d!e¨«      Z© G d"„ d#e¨«      Zª G d$„ d%e¨«      Z« G d&„ d'e¨«      Z¬y# eE$ r dZDY �Œ�w xY w# eE$ r dZGY �Œ¤w xY w)(ak  
This module implements variable tracking for torch functions and operations during Dynamo tracing.

It provides classes to handle different types of torch operations:

TorchInGraphFunctionVariable: Handles torch.* functions that should be captured in the FX graph.
Provides special handling for constant folding, tensor methods, and torch function overrides.
Manages complex cases like out= variants and parameter construction.

TorchCtxManagerClassVariable: Handles torch context managers like torch.no_grad(), autocast, etc.
Provides implementations for entering/exiting these contexts during tracing.

DispatchKeySetVariable: Represents torch.DispatchKeySet for managing dispatch keys and
device-specific operations during tracing.

The module includes special handling for:
- Constant folding of pure functions
- Tensor method calls
- torch.nn.Parameter construction
- __torch_function__ overrides
- Context manager state tracking
- Device and dtype management

This is a core part of Dynamo's tracing system, translating torch operations into
traceable graph nodes while preserving correct semantics and handling edge cases.
é    N)ÚSequence)ÚTYPE_CHECKING)ÚTracingContext)Úwarning_once)Ú"is_traceable_wrapper_subclass_typeé   )ÚconfigÚ	polyfillsÚ	variables)Ú	PyCodegen)Ú!can_convert_to_tracable_parameterÚnew_parameter_placeholderÚtracable_create_parameter)Ú get_registered_device_interfaces)Úunimplemented)ÚGuardBuilderÚinstall_guard)ÚCallFunctionNoArgsSourceÚSyntheticLocalSource)Úcheck_unspec_or_constant_argsÚguard_if_dynÚhas_torch_functionÚhashableÚproductÚproxy_args_kwargsÚunwrap_if_wrapperé   )ÚVariableTracker)ÚAutocastModeVariableÚProfilerContextVariableÚTorchFunctionDisableVariable)ÚConstDictVariable)ÚDistributedVariableÚProcessGroupVariable)ÚListVariableÚTupleVariable)Úcan_dispatch_torch_functionÚdispatch_torch_functionÚTorchFunctionModeStackVariable)Ú_fsdp_param_group)ÚInstructionTranslatorFT)ÚaddÚsubÚmulÚdivÚsqrtc                  óR  — ddl m}  ddlm} t	        | j                   |«       j                  «       «      «      }t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  h}|j                  |«       |S )Nr   )Úchain)Úget_overridable_functions)Ú	itertoolsr2   Útorch.overridesr3   ÚsetÚfrom_iterableÚvaluesÚtorchÚonesÚ	ones_likeÚzerosÚ
zeros_likeÚemptyÚfullÚupdate)r2   Úget_overridable_functions_ÚfuncsÚmores       ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_dynamo/variables/torch.pyr3   r3   Á   sp   € ååWä�×#Ñ#Ñ$>Ó$@×$GÑ$GÓ$IÓJÓK€Eä�
‰
Ü�‰Ü�‰Ü×ÑÜ�‰Ü�
‰
ð€Dð 
‡L�L�ÔØ€Ló    c                   óT   ‡ — e Zd ZdZed„ «       Zd	ˆ fd„Zd„ Zd„ Zd„ Z	d
d„Z
d„ Zˆ xZS )ÚBaseTorchVariablezHcommon base for all torch.* functions, classes, modules and other thingsc                 óf   — t        |j                  t        j                  «      «        | ||¬«      S ©N©Úsource)r   Ú
make_guardr   ÚFUNCTION_MATCH©ÚclsÚvaluerK   s      rD   Úcreate_with_sourcez$BaseTorchVariable.create_with_source×   s(   € ä�f×'Ñ'¬×(CÑ(CÓDÔEÙ�5 Ô(Ð(rE   c                 ó2   •— t        ‰| �  di |¤Ž || _        y )N© )ÚsuperÚ__init__rP   )ÚselfrP   ÚkwargsÚ	__class__s      €rD   rU   zBaseTorchVariable.__init__Ü   s   ø€ Ü‰ÑÑ"˜6Ò"Øˆ�
rE   c                 ó<  — 	 | j                   j                  › d| j                   j                  › �}dt        j                  dd|«      z   }|j                  |j                  || j                   «      «       y # t        $ r dt	        | j                   «      › �}Y Œiw xY w)Nú.Ú
torch_obj_Ú__z[^a-zA-Z0-9_]+Ú_)	rP   Ú
__module__Ú__name__Ú	ExceptionÚidÚrer-   Úextend_outputÚsetup_globally_cached)rV   ÚcodegenÚnameÚunique_var_names       rD   ÚreconstructzBaseTorchVariable.reconstructà   s�   € ð	1Ø—j‘j×+Ñ+Ð,¨A¨d¯j©j×.AÑ.AÐ-BÐCˆDð ¤§¡Ð(9¸3ÀÓ!EÑEˆØ×ÑØ×)Ñ)¨/¸4¿:¹:ÓFõ	
øô ò 	1Ø¤ 4§:¡:£Ð/Ð0ŠDð	1ús   ‚/A7 Á7!BÂBc                 ó   — | j                   S ©N©rP   ©rV   s    rD   Úas_proxyzBaseTorchVariable.as_proxyê   ó   € Ø�z‰zÐrE   c                 ó   — | j                   S rj   rk   rl   s    rD   Úas_python_constantz$BaseTorchVariable.as_python_constantí   rn   rE   c                 ól   — t        | j                  |«      }t        j                  j	                  |«      S rj   )ÚhasattrrP   r   ÚConstantVariableÚcreate)rV   Útxrf   Úresults       rD   Úcall_obj_hasattrz"BaseTorchVariable.call_obj_hasattrð   s)   € Ü˜Ÿ™ TÓ*ˆÜ×)Ñ)×0Ñ0°Ó8Ð8rE   c                 ó\   — | j                   t        v ryt        | j                   dd «      dk(  S )NTr^   Úmath)rP   Úconstant_fold_functionsÚgetattrrl   s    rD   Úcan_constant_fold_throughz+BaseTorchVariable.can_constant_fold_throughô   s*   € Ø�:‰:Ô0Ñ0ØÜ�t—z‘z <°Ó6¸&Ñ@Ð@rE   ©ÚreturnN©ru   r+   )r_   r^   Ú__qualname__Ú__doc__ÚclassmethodrQ   rU   rh   rm   rp   rw   r|   Ú__classcell__©rX   s   @rD   rG   rG   Ô   s7   ø„ ÙRàñ)ó ð)õò
òòó9öArE   rG   c                   óV   ‡ — e Zd ZdZdefd„Zed„ «       Zdddee	   dd	dd
fˆ fd„Z
ˆ xZS )ÚTorchCtxManagerClassVariablezLPoints to a context manager class in torch.* that dynamo has implementationsr~   c                 ó"   — d| j                   › d�S )NzTorchCtxManagerClassVariable(ú)rk   rl   s    rD   Ú__repr__z%TorchCtxManagerClassVariable.__repr__ý   s   € Ø.¨t¯z©z¨l¸!Ð<Ð<rE   c                 ó\   — t        | «      } t        | «      xr t        | «      xr | t        v S rj   )r   Úcallabler   Úsupported_ctx_manager_classesrk   s    rD   Úis_matching_clsz,TorchCtxManagerClassVariable.is_matching_cls   s6   € ô " %Ó(ˆô �U‹Oò ä˜“ò ;ØÔ:Ð:ð	
rE   ru   r+   ÚargsrW   údict[str, VariableTracker]r   c           
      óœ  •— ddl m}m}m}m}m}m}	m}
m}m	}m
}m}m} | j                  t        j                  u rlt!        |«      dk(  rLt#        |d   t$        j&                  j(                  «      r%|	j+                  |d«      }|j-                  |||«      S |	j+                  |d«      S | j                  t        j.                  u rlt!        |«      dk(  rLt#        |d   t$        j&                  j(                  «      r%|	j+                  |d«      }|j-                  |||«      S |	j+                  |d«      S | j                  t        j0                  u r3t!        |«      dk(  r%|	j+                  ||d   j3                  «       d¬«      S | j                  t        j4                  u rSt!        |«      dk  rt!        |«      dk(  sJ ‚t!        |«      dk(  r|d   j3                  «       nd}|
j+                  ||«      S t7        j8                  | j                  «      rZt;        | j                  t        j<                  «      r6ddlm }  ||||jB                  jE                  d| j                  d	i «      «      S | j                  t        jF                  jH                  jJ                  t        jL                  jF                  jJ                  t        jN                  jF                  jJ                  fv r!tQ        j*                  | j                  ||«      S | j                  t        jR                  jT                  t        jR                  jV                  t        jX                  jR                  jT                  t        jX                  jR                  jV                  fv r%t[        t\        d
| j                  «       t_        «       S | j                  t        j`                  jb                  u r|s|rJ ‚te        j*                  |«      S | j                  t        jf                  jh                  jj                  u r"t!        |«      dk(  sJ ‚|j+                  ||«      S | j                  t        jf                  jl                  jn                  u r!t!        |«      dk(  sJ ‚|j+                  |«      S | j                  t        jX                  jp                  jr                  u r9t!        |«      dk(  sJ ‚|j+                  ||D �cg c]  }tu        |«      ‘Œ c}«      S | j                  t        jX                  jp                  jv                  u r!t!        |«      dk(  sJ ‚|j+                  |«      S | j                  t        jf                  jl                  jx                  u r!t!        |«      dk(  sJ ‚|j+                  |«      S | j                  t        jf                  jl                  jz                  u r9t!        |«      dk(  sJ ‚|j+                  ||D �cg c]  }tu        |«      ‘Œ c}«      S | j                  t        jX                  j|                  j~                  u r3t!        |«      dk(  sJ ‚|j+                  ||d   j3                  «       «      S t€        �]| j                  t€        j‚                  j„                  u r7t!        |«      dk(  sJ ‚|j+                  ||d   |d   j3                  «       «      S | j                  t        j†                  jˆ                  jŠ                  u rZt!        |«      dk(  st!        |«      dk(  rd|v sJ ‚t!        |«      dk(  r|d   n|d   }|j+                  ||j3                  «       «      S | j                  t        j†                  jˆ                  jŒ                  u r.|j+                  ||D �cg c]  }|j3                  «       ‘Œ c}«      S tŽ        ‰| �Y  |||«      S c c}w c c}w c c}w )Nr   )Ú!DisabledSavedTensorsHooksVariableÚDualLevelContextManagerÚ&FSDPParamGroupUseTrainingStateVariableÚ&GradIncrementNestingCtxManagerVariableÚ)GradInplaceRequiresGradCtxManagerVariableÚGradModeVariableÚInferenceModeVariableÚ%JvpIncrementNestingCtxManagerVariableÚSDPAKernelVariableÚSetFwdGradEnabledContextManagerÚStreamVariableÚ&VmapIncrementNestingCtxManagerVariabler   FT)Úinitialized)Úwrap_fx_proxy_clsÚcall_functionrS   z$Profiler function %s will be ignoredr   Úbackends)HÚ r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   rP   r9   Úno_gradÚlenÚ
isinstancer   Ú	functionsÚBaseUserFunctionVariablert   rŸ   Úenable_gradÚset_grad_enabledrp   Úinference_modeÚinspectÚisclassÚ
issubclassÚStreamÚtorch._dynamo.variables.builderrž   ÚoutputÚcreate_proxyÚampÚautocast_modeÚautocastÚcudaÚcpur   ÚprofilerÚprofileÚrecord_functionÚautogradr   Úlogr    Ú_CÚDisableTorchFunctionSubclassr!   Ú
_functorchÚvmapÚvmap_increment_nestingÚeager_transformsÚjvp_increment_nestingÚ
forward_adÚ_set_fwd_grad_enabledr   Ú
dual_levelÚgrad_increment_nestingÚenable_inplace_requires_gradÚgraphÚdisable_saved_tensors_hooksr*   ÚFSDPParamGroupÚuse_training_stateÚnnÚ	attentionÚsdpa_kernelÚ_sdpa_kernel_variadicrT   )rV   ru   rŽ   rW   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   ÚctxÚinf_moderž   Úxr    ÚargrX   s                         €rD   rŸ   z*TorchCtxManagerClassVariable.call_function  sK  ø€ ÷	
÷ 	
÷ 	
ó 	
ð �:‰:œŸ™Ñ&Ü�4‹y˜AŠ~¤*Ø�Q‘œ×,Ñ,×EÑEô#ð '×-Ñ-¨b°%Ó8�Ø×(Ñ(¨¨T°6Ó:Ð:à'×.Ñ.¨r°5Ó9Ð9Ø�Z‰Zœ5×,Ñ,Ñ,Ü�4‹y˜AŠ~¤*Ø�Q‘œ×,Ñ,×EÑEô#ð '×-Ñ-¨b°$Ó7�Ø×(Ñ(¨¨T°6Ó:Ð:Ø#×*Ñ*¨2¨tÓ4Ð4Ø�Z‰Zœ5×1Ñ1Ñ1´c¸$³iÀ1²nØ#×*Ñ*Ø�D˜‘G×.Ñ.Ó0¸dð +ó ð ð �Z‰Zœ5×/Ñ/Ñ/Ü�t“9 ’>¤c¨&£k°QÒ&6Ð6Ð6Ü7:¸4³yÀA²~�t˜A‘w×1Ñ1Ô3È4ˆHØ(×/Ñ/°°HÓ=Ð=Ü�_‰_˜TŸZ™ZÔ(¬Z¸¿
¹
ÄEÇLÁLÔ-QÝIá$ØØØ—	‘	×&Ñ&Ø#Ø—J‘JØØó	ó	ð 	ð �Z‰ZÜ�I‰I×#Ñ#×,Ñ,Ü�J‰J�N‰N×#Ñ#Ü�I‰I�M‰M×"Ñ"ð
ñ 
ô
 (×.Ñ.¨t¯z©z¸4ÀÓHÐHØ�Z‰Zô �N‰N×"Ñ"Ü�N‰N×*Ñ*Ü�N‰N×#Ñ#×+Ñ+Ü�N‰N×#Ñ#×3Ñ3ð
ñ 
ô œÐDÀdÇjÁjÔQÜ*Ó,Ð,Ø�Z‰Zœ5Ÿ8™8×@Ñ@Ñ@Ù¡Ð'Ð'Ü/×6Ñ6°rÓ:Ð:Ø�Z‰Zœ5×+Ñ+×0Ñ0×GÑGÑGÜ�t“9 ’>Ð!�>Ø9×@Ñ@ØØóð ð �Z‰Zœ5×+Ñ+×<Ñ<×RÑRÑRÜ�t“9 ’>Ð!�>Ø8×?Ñ?ÀÓCÐCØ�Z‰Zœ5Ÿ>™>×4Ñ4×JÑJÑJÜ�t“9 ’>Ð!�>Ø2×9Ñ9ØØ*.Ö/ Q”˜a•Ò/óð ð �Z‰Zœ5Ÿ>™>×4Ñ4×?Ñ?Ñ?Ü�t“9 ’>Ð!�>Ø*×1Ñ1°"Ó5Ð5Ø�Z‰Zœ5×+Ñ+×<Ñ<×SÑSÑSÜ�t“9 ’>Ð!�>Ø9×@Ñ@ÀÓDÐDà�J‰Jœ%×*Ñ*×;Ñ;×XÑXÑXä�t“9 ’>Ð!�>Ø<×CÑCØØ*.Ö/ Q”˜a•Ò/óð ð �Z‰Zœ5Ÿ>™>×/Ñ/×KÑKÑKÜ�t“9 ’>Ð!�>Ø4×;Ñ;Ø�D˜‘G×.Ñ.Ó0óð ô Ð)Ø—
‘
Ô/×>Ñ>×QÑQÑQä�t“9 ’>Ð!�>Ø9×@Ñ@Ø�D˜‘G˜T !™W×7Ñ7Ó9óð ð �Z‰Zœ5Ÿ8™8×-Ñ-×9Ñ9Ñ9Ü�t“9 ’>¤c¨&£k°QÒ&6¸:ÈÑ;OÐPÐPÜ"% d£)¨q¢.�t˜A’w°f¸ZÑ6HˆHØ%×,Ñ,¨R°×1LÑ1LÓ1NÓOÐOØ�Z‰Zœ5Ÿ8™8×-Ñ-×CÑCÑCØ%×,Ñ,Ø¸Ö>°#�S×+Ñ+Õ-Ò>óð ô ‰wÑ$ R¨¨vÓ6Ð6ùòM 0ùò 0ùò* ?s   Ó^?
×'_
Þ_	
)r_   r^   r€   r�   Ústrr‰   Ústaticmethodr�   r   r   rŸ   rƒ   r„   s   @rD   r†   r†   ú   sa   ø„ ÙVð=˜#ó =ð ñ
ó ð
ð7à#ð7ð �Ñ'ð7ð -ð	7ð
 
÷7ñ 7rE   r†   c                   óÎ   ‡ — e Zd ZdZddˆ fd„Zdefd„Zd„ Ze e	j                  d«      d„ «       «       Zdd	d
ee   ddddfd„Zdd„Zedd„«       Zedd„«       Zd„ Zd„ Zd„ Zˆ xZS )ÚTorchInGraphFunctionVariablez@Points to a torch function/method that should be put in FX graphNr~   c                 óT   •— t        ‰| �  |fi |¤Ž ddlm} |€ ||«      }|| _        y )Nr   )Úis_nonstrict_trace_callable)rT   rU   Útrace_rulesrØ   Únonstrict_traceable)rV   rP   rÚ   rW   rØ   rX   s        €rD   rU   z%TorchInGraphFunctionVariable.__init__•  s1   ø€ Ü‰Ñ˜Ñ) &Ò)Ý=àÐ&Ù"=¸eÓ"DÐØ#6ˆÕ rE   c                 ó<   — d| j                   › d| j                  › d�S )NzTorchInGraphFunctionVariable(z, nonstrict_traceable=rˆ   )rP   rÚ   rl   s    rD   r‰   z%TorchInGraphFunctionVariable.__repr__�  s%   € Ø.¨t¯z©z¨lÐ:PÐQU×QiÑQiÐPjÐjkÐlÐlrE   c                 ó   — | j                   S rj   rk   rl   s    rD   Úget_functionz)TorchInGraphFunctionVariable.get_function   rn   rE   c                  ó¢  ‡4‡5‡6‡7‡8‡9‡:‡;‡<‡=— i Š;ˆ;fd„} ddl m} ddlmŠ4mŠ5mŠ6mŠ7mŠ8mŠ9m	Š: ddl
mŠ<mŠ=  | t        Ž 	 	 d8ˆ4fd„«       } | t        Ž 	 	 d8d„«       } | t        j                   j"                  j$                  «      	 	 d8d	„«       } | t        j&                  j(                  j*                  j,                  «      d8d
„«       } | t.        j0                  «      d8d„«       } | t        j2                  t        j                   j4                  «      d8ˆ4ˆ9ˆ:fd„«       } | t        j6                  t        j8                  «      d8ˆ4ˆ9fd„«       } | t        j:                  «      d8ˆ4ˆ9fd„«       }	 | t        j<                  «      d8d„«       }
 | t>        Ž d8ˆ9fd„«       } | t        j@                  jB                  jD                  jF                  t        j@                  jB                  jD                  jH                  t        j@                  jB                  jD                  jJ                  t        j@                  jB                  jD                  jL                  t        j@                  jB                  jD                  jN                  «      d8d„«       } | t        jP                  «      ˆ4ˆ6fd„«       } | t        jR                  «      	 d9	 d8ˆ5fd„«       } | t        jT                  «      ˆ4ˆ5fd„«       } | t        jV                  jX                  «      ˆ4fd„«       } | t        j                   jZ                  t        j                   j\                  t        j                   j^                  «      d8ˆ4fd„«       } | t`        jc                  d„ te        «       D «       «      Ž d8ˆ7fd„«       } | t        jf                  «      d8ˆ9ˆ=fd„«       } | t        jh                  jj                  «      d8d„«       } | t        jl                  jn                  jp                  «      	 	 d8ˆ4ˆ9fd„«       } | t        jD                  jr                  jt                  «      d8d„«       } | t        j@                  jv                  «      d8d„«       } | t        j&                  jx                  jz                  t        j&                  jx                  jz                  j|                  «      d:d„«       } | t        j&                  jx                  j~                  t        j&                  jx                  j~                  j|                  «      d:d „«       } | t        j€                  «      d8d!„«       } | t        j‚                  «      ˆ9fd"„«       } | t        j„                  «      	 	 d8d#„«       } | t        j†                  «      d8ˆ9fd$„«       } | t        jˆ                  «      d8ˆ4fd%„«       } | |«      d8ˆ<fd&„«       }t‹        jŒ                  «       rFdd'lGmH} mI}!mJ}"mK}#mL}$ dd(lMmN}%  | | |!|"|$|#«      	 	 d8ˆ4fd)„«       }& | |%jž                  «      d8ˆ<fd*„«       }' | t        j                   j¢                  «      	 d:dd+œ	 d8d,„«       }( | t        j@                  j¤                  j¦                  «      d8d-„«       }) | t        j¨                  jª                  j¬                  j®                  «      d8ˆ4ˆ8fd.„«       }* | t        jV                  j°                  j²                  «      	 	 d8d/„«       }+ | t        jV                  j´                  j¶                  «      	 	 d8ˆ:fd0„«       }, | t        j´                  j¸                  jº                  «      	 	 d8d1„«       }- | t        j¼                  «      d8ˆ8ˆ9fd2„«       }. | t        jV                  j¾                  «      	 	 d8d3„«       }/ | t        jV                  jÀ                  «      	 	 d8ˆ4fd4„«       }0 | t        jV                  jÂ                  «      	 	 d8ˆ4fd5„«       }1 | t        jV                  jÄ                  «      d8d6„«       }2 | t        jÆ                  «      	 	 d8ˆ4fd7„«       }3‰;S );z‡Build a dict from function -> method to handle it so that we are O(1)
        in terms of the number of function with special handling.c                  ó6   •‡ — ˆ ˆfd„}t        ‰ d   «      sJ ‚|S )Nc                 ó6   •— ‰D ]  }|‰vsJ |«       ‚| ‰|<   Œ | S rj   rS   )ÚhandlerÚfnÚfnsÚhandlerss     €€rD   Ú	_registerzOTorchInGraphFunctionVariable._get_handlers.<locals>.register.<locals>._register«  s5   ø€ Øò +�BØ XÑ-Ð1¨rÓ1Ð-Ø#*�H˜R’Lð+ð �rE   r   )r‹   )rã   rå   rä   s   ` €rD   Úregisterz<TorchInGraphFunctionVariable._get_handlers.<locals>.registerª  s"   ù€ õô ˜C ™FÔ#Ð#Ð#ØÐrE   r   )Ú
SDPAParamsr   )rs   ÚDeterministicAlgorithmsVariabler–   ÚStreamContextVariableÚSymNodeVariableÚTensorVariableÚUserDefinedObjectVariable)Úwrap_fx_proxyrž   c                 óž  •— |s|rJ ‚| j                   t        j                  j                  t        j                  j
                  j                  t        j                  j                  t        j                  j                  t        j                  j                  fv r|j                  «        ‰j                  t        | j                      «      S rj   )rP   r9   Ú_utilsÚis_compilingÚ_dynamoÚexternal_utilsÚcompilerÚis_dynamo_compilingÚis_exportingÚmark_inconsistent_side_effectsrt   Útracing_state_functions©rV   ru   rŽ   rW   rs   s       €rD   Úhandle_tracing_state_functionszRTorchInGraphFunctionVariable._get_handlers.<locals>.handle_tracing_state_functionsÁ  s‘   ø€ ñ ¡FÐ*Ð*à�z‰zÜ—‘×)Ñ)Ü—‘×,Ñ,×9Ñ9Ü—‘×+Ñ+Ü—‘×2Ñ2Ü—‘×+Ñ+ðñ ð ×1Ñ1Ô3Ø#×*Ñ*Ô+BÀ4Ç:Á:Ñ+NÓOÐOrE   c                 óò  — |rJ ‚| j                   t        j                  j                  fv �r%t	        |«      dk(  sJ ‚t        |d   t        j                  «      sJ ‚|d   j                  j                  j                  d   }| j                  |«      }t        |t        j                  j                  «      r†|t        j                  j                  t        j                  j                  j                  «      z
  t        j                  j                  t        j                  j                  j                   «      z
  }t"        j%                  |«      S |rJ ‚t"        j%                  | j                  «       «      S )Nr   r   Úexample_value)rP   r9   r»   Ú_dispatch_keysr£   r¤   r   rë   ÚproxyÚnodeÚmetaÚ_subclassesÚ
FakeTensorÚDispatchKeySetÚDispatchKeyÚPythonÚPythonTLSSnapshotÚDispatchKeySetVariablert   )rV   ru   rŽ   rW   rû   Údkss         rD   Ú!handle_dispatch_key_set_functionszUTorchInGraphFunctionVariable._get_handlers.<locals>.handle_dispatch_key_set_functionsÑ  s  € ñ Ð�:Ø�z‰zœeŸh™h×5Ñ5Ð7Ò7Ü˜4“y A’~Ð%�~Ü! $ q¡'¬9×+CÑ+CÔDÐDÐDØ $ Q¡§¡× 2Ñ 2× 7Ñ 7¸Ñ H�Ø—j‘j Ó/�ô ˜m¬U×->Ñ->×-IÑ-IÔJàÜŸ(™(×1Ñ1´%·(±(×2FÑ2F×2MÑ2MÓNñOäŸ(™(×1Ñ1Ü!ŸH™H×0Ñ0×BÑBóñð ô .×4Ñ4°SÓ9Ð9á��xÜ-×4Ñ4°T·Z±Z³\ÓBÐBrE   c                 óf   — t        j                  |t        j                  j	                  «       «      S rj   )r   Úbuildr9   Ú	overridesÚget_default_nowrap_functions©rV   ru   rŽ   rW   s       rD   Ú#handle_get_default_nowrap_functionszWTorchInGraphFunctionVariable._get_handlers.<locals>.handle_get_default_nowrap_functionsí  s)   € ô #×(Ñ(Ø”E—O‘O×@Ñ@ÓBóð rE   c                 ól   — |j                  t        j                  |t        j                  «      ||«      S rj   )Úinline_user_function_returnr   r
  r
   Úaccumulate_gradr  s       rD   Úhandle_accumulate_grad_zKTorchInGraphFunctionVariable._get_handlers.<locals>.handle_accumulate_grad_ù  s/   € à×1Ñ1Ü×%Ñ% b¬)×*CÑ*CÓDÀdÈFóð rE   c                 ó†   — t        ||«      s5|j                  t        j                  |t        j
                  «      ||«      S y rj   )r   r  r   r
  r
   Úradiansr  s       rD   Úhandle_radianszBTorchInGraphFunctionVariable._get_handlers.<locals>.handle_radiansÿ  s>   € ä0°°vÔ>à×5Ñ5Ü#×)Ñ)¨"¬i×.?Ñ.?Ó@À$Èóð ð ?rE   c                 óð   •— t        |‰«      sH| j                  t        j                  j                  u r3t        |‰«      r't        |j                  d«      r‰j                  d«      S ‰j                  d«      S )NÚ__torch_function__TF)r¤   rP   r9   r  Úis_tensor_likerr   rt   )rV   ru   rÒ   rs   rë   rì   s      €€€rD   Úhandle_is_tensorzDTorchInGraphFunctionVariable._get_handlers.<locals>.handle_is_tensor  s_   ø€ ä˜#˜~Ô.Ø—
‘
œeŸo™o×<Ñ<Ñ<Ü˜sÐ$=Ô>Ü˜CŸI™IÐ';Ô<à'×.Ñ.¨tÓ4Ð4à'×.Ñ.¨uÓ5Ð5rE   c                 óp  •— |}t        |‰«      r§|j                  �š| j                  t        j                  u r%‰j                  |j                  j                  «      S | j                  t        j                  u r%‰j                  |j                  j                  «      S t        d| j                  › �«      ‚y y )Nzcalling )r¤   ÚdtyperP   r9   Úis_floating_pointrt   Ú
is_complexÚAssertionError)rV   ru   ÚinputÚ	input_argrs   rë   s       €€rD   Úhandle_is_floating_pointzLTorchInGraphFunctionVariable._get_handlers.<locals>.handle_is_floating_point  s–   ø€ ð
 ˆIÜ˜) ^Ô4¸¿¹Ð9TØ—:‘:¤×!8Ñ!8Ñ8Ø+×2Ñ2°9·?±?×3TÑ3TÓUÐUØ—Z‘Z¤5×#3Ñ#3Ñ3Ø+×2Ñ2°9·?±?×3MÑ3MÓNÐNä(¨8°D·J±J°<Ð)@ÓAÐAð :UÐ4rE   c                 óÆ   •— t        |‰«      r4|j                  «       r$‰j                  t        |j                  «      «      S t        |‰«      r|j                  |dg i «      S y )NÚnumel)r¤   Ú
valid_sizert   r   ÚsizeÚcall_method)rV   ru   r  rs   rë   s      €€rD   Úhandle_numelz@TorchInGraphFunctionVariable._get_handlers.<locals>.handle_numel   sX   ø€ ä˜% Ô0°U×5EÑ5EÔ5GØ'×.Ñ.¬w°u·z±zÓ/BÓCÐCÜ˜E >Ô2à×(Ñ(¨¨W°b¸"Ó=Ð=ð 3rE   c                 ó@   — t        |«      dk(  r|d   S t        d«       y )Nr   r   z:torch.compile is used as a decorator in the compiled frame)r£   r   r  s       rD   Úhandle_torch_compilezHTorchInGraphFunctionVariable._get_handlers.<locals>.handle_torch_compile(  s   € ä�4‹y˜AŠ~à˜A‘w�äÐVÕWrE   c                 óH   •— t        |‰«      sJ ‚|j                  |dg i «      S ©Nr%  )r¤   r&  )rV   ru   r  rë   s      €rD   Úhandle_tensor_size_rewriteszOTorchInGraphFunctionVariable._get_handlers.<locals>.handle_tensor_size_rewrites0  s*   ø€ ä˜e ^Ô4Ð4Ð4Ø×$Ñ$ R¨°°RÓ8Ð8rE   c                 ó(   — | j                  |||«      S rj   )Ú_call_ntupler  s       rD   Úhandle_ntuplezATorchInGraphFunctionVariable._get_handlers.<locals>.handle_ntuple5  s   € ð ×$Ñ$ R¨¨vÓ6Ð6rE   c                 ót   •— t        ‰j                  «       ‰j                  t        j                  «       «      S rj   )r   Ú_guards_singletonrt   r9   Úis_grad_enabled)rV   ru   rs   r–   s     €€rD   Úhandle_is_grad_enabledzJTorchInGraphFunctionVariable._get_handlers.<locals>.handle_is_grad_enabled?  s,   ø€ äÐ*×<Ñ<Ô=Ø#×*Ñ*¬5×+@Ñ+@Ó+BÓCÐCrE   c                 ó~   •— |r|j                  «       rt        d«       ‰j                  ||j                  «       «      S )Nz2torch.use_deterministic_algorithms(warn_only=True))rp   r   rt   )rV   ru   ÚmodeÚ	warn_onlyrè   s       €rD   Ú#handle_use_deterministic_algorithmszWTorchInGraphFunctionVariable._get_handlers.<locals>.handle_use_deterministic_algorithmsD  s8   ø€ ñ ˜Y×9Ñ9Ô;ÜÐRÔSØ2×9Ñ9¸"¸d×>UÑ>UÓ>WÓXÐXrE   c                 ót   •— t        ‰j                  «       ‰j                  t        j                  «       «      S rj   )r   r1  rt   r9   Ú$are_deterministic_algorithms_enabled)rV   ru   rs   rè   s     €€rD   Ú+handle_are_deterministic_algorithms_enabledz_TorchInGraphFunctionVariable._get_handlers.<locals>.handle_are_deterministic_algorithms_enabledL  s,   ø€ äÐ9×KÑKÔLØ#×*Ñ*¬5×+UÑ+UÓ+WÓXÐXrE   c                 ó€   •— t        t        j                  «       ‰j                  |j                  j
                  «      S rj   )r   r!   r1  rt   r¯   Útorch_function_enabled)rV   ru   rs   s     €rD   Ú handle_is_torch_function_enabledzTTorchInGraphFunctionVariable._get_handlers.<locals>.handle_is_torch_function_enabledQ  s-   ø€ äÔ6×HÑHÔIØ#×*Ñ*¨2¯9©9×+KÑ+KÓLÐLrE   c                 ó´   •— t        |«      dk(  r't        |d   t        «      r|d   j                  |«      n|}‰j	                  t        d„ |D «       «      «      S )Nr   r   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrj   )r   ©Ú.0rÑ   s     rD   ú	<genexpr>z`TorchInGraphFunctionVariable._get_handlers.<locals>.handle_has_torch_function.<locals>.<genexpr>b  s   è ø€ Ò9¨aÔ& q×)Ñ9ùs   ‚)r£   r¤   r&   Úunpack_var_sequencert   Úany)rV   ru   rŽ   Úelemsrs   s       €rD   Úhandle_has_torch_functionzMTorchInGraphFunctionVariable._get_handlers.<locals>.handle_has_torch_functionV  s\   ø€ ô �t“9 ’>¤j°°a±¼-Ô&Hð �Q‘×+Ñ+¨BÔ/àð ð
 $×*Ñ*ÜÑ9°5Ô9Ó9óð rE   c              3   ó:   K  — | ]  \  }}|j                   –— Œ y ­wrj   )Ústream)rA  r]   Údevice_interfaces      rD   rB  z=TorchInGraphFunctionVariable._get_handlers.<locals>.<genexpr>f  s#   è ø€ ò á'�AÐ'ð !×'Õ'ñùs   ‚c                 ó(   •— ‰j                  ||«      S rj   )rt   )rV   ru   rH  ré   s      €rD   Úhandle_device_interface_streamzRTorchInGraphFunctionVariable._get_handlers.<locals>.handle_device_interface_streame  s   ø€ ð )×/Ñ/°°FÓ;Ð;rE   c                 óÜ   •— t         j                  st        d«       t        st        d«        ‰‰| |j                  j
                  dt        j                  gt        |i «      ¢­Ž d ¬«      S )Nz-torch.from_numpy. config.trace_numpy is Falsez(torch.from_numpy. NumPy is not availablerŸ   )Ú
target_clsru   rý   rû   )	r	   Útrace_numpyr   Únpr¯   r°   r9   Ú	as_tensorr   )rV   ru   rŽ   rë   rž   s      €€rD   Úhandle_from_numpyzETorchInGraphFunctionVariable._get_handlers.<locals>.handle_from_numpyn  sh   ø€ ä×%Ò%ÜÐMÔNÝÜÐHÔIÙ$Ø)ØØ,�b—i‘i×,Ñ,Ø#Ü—O‘Oðô ' t¨RÓ0òð
 #ô	ð 	rE   c                 ó   — |S rj   rS   )rV   ru   Úthe_typeÚ	the_values       rD   Úhandle_jit_annotatezGTorchInGraphFunctionVariable._get_handlers.<locals>.handle_jit_annotate  s   € àÐrE   c                 ó  •— |rJ d«       ‚t        |‰«      sJ d«       ‚t        j                  d|j                  |j                  ¬«      }‰j                  t        j                  j                  j                  |«      «      S )Nz%Expect 1 input to cudnn.is_acceptablez2Expect input to cudnn.is_acceptable to be a tensorr   )r  Údevice)	r¤   r9   Útensorr  rW  rt   r    ÚcudnnÚis_acceptable)rV   ru   rX  ÚextraÚ
tensor_inprs   rë   s        €€rD   Úhandle_cudnn_is_acceptablezNTorchInGraphFunctionVariable._get_handlers.<locals>.handle_cudnn_is_acceptableƒ  st   ø€ ñ ÐEÐEÓE�9Ü˜f nÔ5ð ØDóÐ5ô Ÿ™ a¨v¯|©|ÀFÇMÁMÔRˆJØ#×*Ñ*Ü—‘×$Ñ$×2Ñ2°:Ó>óð rE   c                 óH   — t        j                  j                  |g|¢­i |¤ŽS rj   )r   ÚBackwardHookVariablert   r  s       rD   Úhandle_backward_hookzHTorchInGraphFunctionVariable._get_handlers.<locals>.handle_backward_hook•  s#   € ä×1Ñ1×8Ñ8¸ÐM¸dÒMÀfÑMÐMrE   c                 ó.   —  | j                   |g|¢­i |¤ŽS rj   )Úcall_nn_parameterr  s       rD   Úhandle_parameterzDTorchInGraphFunctionVariable._get_handlers.<locals>.handle_parameter™  s   € à)�4×)Ñ)¨"Ð>¨tÒ>°vÑ>Ð>rE   Nc                 ó2   — |�|j                  |d|gi «      S y r+  ©r&  ©Úself_ru   rV   Údims       rD   Úhandle_sym_sizezCTorchInGraphFunctionVariable._get_handlers.<locals>.handle_sym_size�  s'   € ð ˆØ×'Ñ'¨¨F°S°E¸2Ó>Ð>ð rE   c                 ó2   — |�|j                  |d|gi «      S y )NÚstridere  rf  s       rD   Úhandle_sym_stridezETorchInGraphFunctionVariable._get_handlers.<locals>.handle_sym_stride£  s%   € àˆØ×'Ñ'¨¨H°s°e¸RÓ@Ð@ð rE   c                 ób  — t        |«      dk(  r¡d|v rœt        |«      dk(  r�t        t        j                  «      j	                  |g |dd  ¢i «      }t        t        j
                  «      j	                  |||d   gi «      }t        t        j                  «      j	                  ||d   |gi «      S y y y )Né   rP   r   r   )r£   rÖ   r9   r/   rŸ   r.   r,   )rV   ru   rŽ   rW   rv   s        rD   Úhandle_addcdivzBTorchInGraphFunctionVariable._get_handlers.<locals>.handle_addcdiv¨  s¯   € ä�4‹y˜AŠ~ '¨VÑ"3¼¸F»ÀqÒ8Hô 6´e·i±iÓ@×NÑNØ˜˜$˜q˜r˜(˜ Ró�ô 6´e·i±iÓ@×NÑNØ˜ ¨¡Ð1°2ó�ô 4´E·I±IÓ>×LÑLØ˜˜a™ &Ð)¨2óð ð 9IÐ"3ˆ~rE   c                 óô   •— t        |‰«      rkt        t        j                  j                  j
                  «      j                  ||gi «      }t        t        j                  «      j                  |||g|«      S y rj   )r¤   rÖ   r9   ÚopsÚatenÚ_local_scalar_denserŸ   r?   )rV   ru   r%  Ú
fill_valuerW   rv   rë   s         €rD   Úhandle_fullz?TorchInGraphFunctionVariable._get_handlers.<locals>.handle_full·  si   ø€ ä˜* nÔ5Ü5Ü—I‘I—N‘N×6Ñ6óç‘-  Z L°"Ó5ð ô 4´E·J±JÓ?×MÑMØ˜˜v˜¨óð ð	 6rE   c                 ó¸   — t        |«      dk(  rLt        |d   t        «      s8|s5|j                  t	        j
                  |t        j                  «      ||«      S y y y )Nrn  r   )r£   r¤   r%   r  r   r
  r
   Úforeach_lerp_inplace)r]   ru   rŽ   rW   s       rD   Ú"handle_inplace_foreach_lerp_scalarzVTorchInGraphFunctionVariable._get_handlers.<locals>.handle_inplace_foreach_lerp_scalarÁ  sZ   € ô �4‹y˜AŠ~¤j°°a±¼,Ô&GÑPVØ×5Ñ5Ü#×)Ñ)¨"¬i×.LÑ.LÓMØØóð ð QWÐ&Gˆ~rE   c                 ó²   •— t        |«      dk(  rHt        |d   ‰«      r8|s5|j                  t        j                  |t
        j                  «      ||«      S y y y )Nr   r   )r£   r¤   r  r   r
  r
   Úforeach_pow_scalar)r]   ru   rŽ   rW   rë   s       €rD   Úhandle_foreach_pow_scalarzMTorchInGraphFunctionVariable._get_handlers.<locals>.handle_foreach_pow_scalarÌ  sZ   ø€ ô �4‹y˜AŠ~¤*¨T°!©W°nÔ"EÉfØ×5Ñ5Ü#×)Ñ)¨"¬i×.JÑ.JÓKØØóð ð OUÐ"Eˆ~rE   c                 ó¬   •— |j                  «       r|j                  «       s*t        |t        j                  «      r|j                  «       r ‰d «      S y y rj   )Úis_python_constantrp   r¤   r   rê   Úevaluate_expr)rV   ru   Ú	conditionÚmessagers   s       €rD   Úhandle_assertzATorchInGraphFunctionVariable._get_handlers.<locals>.handle_assert×  sL   ø€ à×,Ñ,Ô.°9×3OÑ3OÔ3QÜ˜9¤i×&?Ñ&?Ô@Ø×+Ñ+Ô-á'¨Ó-Ð-ð .ð ArE   c           
      ó–   •—  ‰| |j                   j                  dt        j                  j                  gt        ||«      ¢­Ž |¬«      S )NrŸ   )rý   Ú
param_vars)r¯   r°   r9   r»   Ú_SDPAParamsr   )rV   ru   rŽ   rW   rí   s       €rD   Úhandle_sdpa_paramszFTorchInGraphFunctionVariable._get_handlers.<locals>.handle_sdpa_paramsß  sM   ø€ á ØØ,�b—i‘i×,Ñ,Ø#Ü—H‘H×(Ñ(ðô ' t¨VÓ4òð
  ôð rE   )Ú_get_group_size_by_nameÚ_get_group_tagÚ_rank_not_in_groupÚ$_resolve_group_name_by_ranks_and_tagÚget_process_group_ranks)ÚDTensorc                 óv  •— t        |«      dk(  rt        |d   t        ‰f«      sOJ ‚t        |«      dk(  r$t        |d   t        «      rt        |d   ‰«      sJ ‚t	        d|› d| j
                  › �«      ‚|D �cg c]  }|j                  «       ‘Œ }} | j
                  |Ž }t        j                  ||«      S c c}w )Nr   r   r   zInvalid group value (z) for constant pg function )	r£   r¤   r$   r%   r  rP   rp   r   r
  )rV   ru   rŽ   rÒ   Úargs_as_valueÚinvocation_resultrs   s         €rD   Ú&handle_constant_processgroup_functionszZTorchInGraphFunctionVariable._get_handlers.<locals>.handle_constant_processgroup_functionsõ  sÖ   ø€ ô �t“9 ’>ä% d¨1¡gÔ0DÐFVÐ/WÔXÐXÐXÜ˜“Y !’^ä% d¨1¡g¬|Ô<ÄØ˜Q™Ð!1ôBð ð ô )Ø/°¨vð 6$Ø$(§J¡J <ð1óð ð FJÖ J¸c ×!7Ñ!7Õ!9Ð J�Ð JØ$. D§J¡J°Ð$>Ð!ô
 '×,Ñ,¨RÐ1BÓCÐCùò !Ks   Á8B6c           
      ó¼  •‡ ‡	‡
— |dd  D �cg c]  }|j                  «       ‘Œ c}Š	|j                  «       D ��ci c]  \  }}|dvr||j                  «       “Œ c}}Š
dD �ci c]  }||v sŒ|||   “Œ }}dˆ	ˆ
ˆ fd„	}d‰ j                  j                  z   |_         ‰| |j                  j
                  d|gt        |d   g|«      ¢­Ž ¬«      S c c}w c c}}w c c}w )	Nr   ©Úshaperk  c                 ó:   •—  ‰j                   | g‰¢­i ‰¤||dœ¤ŽS )Nr‘  rk   )rÑ   r’  rk  r�  Úkwargs_as_valuerV   s      €€€rD   Úfn_with_prim_typeszaTorchInGraphFunctionVariable._get_handlers.<locals>.handle_from_local.<locals>.fn_with_prim_types'  s4   ø€ Ø%˜4Ÿ:™:ØðØ)òØ-<ðØDIÐRXóð rE   zprim rŸ   r   ©ru   rý   )NN)rp   ÚitemsrP   r_   r¯   r°   r   )rV   ru   rŽ   rW   rÑ   ÚkÚvÚkwargs_to_be_proxiedr•  r�  r”  rí   s   `        @@€rD   Úhandle_from_localzETorchInGraphFunctionVariable._get_handlers.<locals>.handle_from_local  s   û€ ð BFÀaÀbÀÖ J¸A ×!5Ñ!5Õ!7Ò J�ð !'§¡£÷#á˜˜1ØÐ 3Ñ3ð �q×+Ñ+Ó-Ñ-ó#�ð +>ö(Ø%&ÀÀfÂ�A�v˜a‘y‘Lð(Ð$ð (÷ð /6¸¿
¹
×8KÑ8KÑ.KÐ"Ô+á$ØØ0˜"Ÿ)™)×0Ñ0Ø'Ø*ðô +Ø! !™W˜IØ0óòô
ð 
ùò% !Kùó#ùò
(s   ŒC¹CÁ 	CÁ*C)Úlayoutc                óœ   — ddl m} |r,|j                  «       t        j                  k(  rt        d«       t        ||«      st        d«       y y )Nr   )ÚBaseListVariablez3torch.compile does not support strided NestedTensorz!nested_tensor with non-list input)Úlistsrž  rp   r9   Ústridedr   r¤   )rV   ru   Útensor_listrœ  rŽ   rW   rž  s          rD   Úhandle_nested_tensorzHTorchInGraphFunctionVariable._get_handlers.<locals>.handle_nested_tensor;  s@   € õ 0á˜&×3Ñ3Ó5¼¿¹ÒFÜÐSÔTÜ˜kÐ+;Ô<ÜÐAÕBð =rE   c                 óÂ   — t        |«      t        |«      z   dk(  s7t        |«      dk(  r7|d   j                  «       r#|d   j                  «       dk(  rt        d«       y y y y )Nr   r   éÿÿÿÿz<torch.nn.functional.one_hot with data-dependent output shape)r£   r}  rp   r   r  s       rD   Úhandle_one_hotzBTorchInGraphFunctionVariable._get_handlers.<locals>.handle_one_hotK  sa   € ä�4‹yœ3˜v›;Ñ&¨!Ò+Ü�D“	˜Q’Ø˜‘G×.Ñ.Ô0Ø˜‘G×.Ñ.Ó0°BÒ6äØRõð 7ð 1ð rE   c                 óî   •— t        |‰«      rZt        j                  j                  t        j
                  j                  j                  j                  |j                  «      «      S t        |‰«      r|S y rj   )
r¤   r   rs   rt   r9   ÚfxÚexperimentalÚsymbolic_shapesÚguard_size_obliviousÚsym_num)rV   ru   Úexprrs   rê   s      €€rD   Úhandle_guard_size_obliviouszOTorchInGraphFunctionVariable._get_handlers.<locals>.handle_guard_size_obliviousV  sd   ø€ ä˜$ Ô0ô !×1Ñ1×8Ñ8Ü—H‘H×)Ñ)×9Ñ9×NÑNØŸ™óóð ô
 ˜DÐ"2Ô3Ø�ð 4rE   c                 óJ   — ddl m} t        |«      j                  |g |¢|«      S )Nr   )Ú_unsafe_set_version_counter)Útensor_version_opr¯  rÖ   rŸ   )rV   ru   rŽ   rW   r¯  s        rD   Ú!handle_unsafe_set_version_counterzUTorchInGraphFunctionVariable._get_handlers.<locals>.handle_unsafe_set_version_counterc  s*   € õ Hä/Ø+óç‰m˜B  $ ¨Ó0ð1rE   c                 ó`   •—  ‰t         j                  j                  j                  «       «      S rj   )r9   r»   r½   Úpeek_interpreter_stack)rV   ru   rŽ   rW   rì   s       €rD   Ú'handle_functorch_peek_interpreter_stackz[TorchInGraphFunctionVariable._get_handlers.<locals>.handle_functorch_peek_interpreter_stackm  s(   ø€ ñ -Ü—‘×#Ñ#×:Ñ:Ó<óð rE   c                 ó„   — |d   j                   }t        t        j                  j                  j                  |«      «      S ©Nr   )rP   ÚFuncTorchInterpreterVariabler9   r½   ÚpyfunctorchÚcoerce_cinterpreter)rV   ru   rŽ   rW   Úcinterpreters        rD   Ú0handle_functorch_pyfunctorch_coerce_cinterpreterzdTorchInGraphFunctionVariable._get_handlers.<locals>.handle_functorch_pyfunctorch_coerce_cinterpreterw  s8   € ð   ™7Ÿ=™=ˆLÜ/Ü× Ñ ×,Ñ,×@Ñ@ÀÓNóð rE   c                 óÒ   •‡— ˆˆˆfd„Šd }|r|d   }n	d|v r|d   }t        |‰«      s? ‰|«      r6t        t        j                  j                  «      j                  |g |¢|«      S y y )Nc                 óŒ   •— t        | ‰‰f«      ryt        | t        t        f«      rt        ˆfd„| j                  D «       «      S y)NTc              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wrj   rS   )rA  ÚyÚcheck_any_unspecs     €rD   rB  ztTorchInGraphFunctionVariable._get_handlers.<locals>.handle_torch_tensor.<locals>.check_any_unspec.<locals>.<genexpr>‡  s   øè ø€ ÒD°qÑ/°×2ÑDùs   ƒF)r¤   r%   r&   rD  r—  )rÑ   rê   rë   rÀ  s    €€€rD   rÀ  zaTorchInGraphFunctionVariable._get_handlers.<locals>.handle_torch_tensor.<locals>.check_any_unspec‚  s>   ø€ ä˜a .°/Ð!BÔCØÜ ¤L´-Ð#@ÔAÜÓD¸A¿G¹GÔDÓDÐDð !rE   r   Údata)r¤   rÖ   r9   Ú_refsrX  rŸ   )rV   ru   rŽ   rW   Údata_argrÀ  rê   rë   s        @€€rD   Úhandle_torch_tensorzGTorchInGraphFunctionVariable._get_handlers.<locals>.handle_torch_tensor€  sx   ù€ ö	!ð ˆHÙØ ™7‘Ø˜6Ñ!Ø! &™>�ô ˜h¨Ô7Ñ<LÈXÔ<Vô 4´E·K±K×4FÑ4FÓG×UÑUØ˜˜$˜ óð ð =WÐ7rE   c                 ó®   — |s|rJ ‚|j                   j                  st        d«      ‚t        j                  |«       |j                   j                  «       S )Nz/Popping from an empty torch function mode stack)Úsymbolic_torch_function_stateÚ
mode_stackr   r)   Úregister_mutationÚpop_torch_function_moder  s       rD   Úhandle_pop_torch_functionzMTorchInGraphFunctionVariable._get_handlers.<locals>.handle_pop_torch_function›  sM   € ñ ¡FÐ*Ð*Ø×3Ñ3×>Ò>Ü#Ð$UÓVÐVÜ*×<Ñ<¸RÔ@Ø×3Ñ3×KÑKÓMÐMrE   c                 ó°   •— t        |«      dk(  r|rJ ‚t        j                  |«       |j                  j	                  |d   «       ‰j                  d «      S ©Nr   r   )r£   r)   rÈ  rÆ  Úpush_torch_function_modert   rø   s       €rD   Úhandle_push_torch_functionzNTorchInGraphFunctionVariable._get_handlers.<locals>.handle_push_torch_function¥  sO   ø€ ô �t“9 ’>©&Ð0Ð0Ü*×<Ñ<¸RÔ@Ø×,Ñ,×EÑEÀdÈ1ÁgÔNØ#×*Ñ*¨4Ó0Ð0rE   c                 ól   •— |s|rJ ‚‰j                  t        |j                  j                  «      «      S rj   )rt   r£   rÆ  rÇ  rø   s       €rD   Úhandle_len_torch_functionzMTorchInGraphFunctionVariable._get_handlers.<locals>.handle_len_torch_function®  s7   ø€ ñ ¡FÐ*Ð*Ø#×*Ñ*Ü�B×4Ñ4×?Ñ?Ó@óð rE   c                 óÐ   — t        |«      dk(  r|rJ ‚|d   j                  «       }|dk\  r"|t        |j                  j                  «      k  sJ ‚|j                  j                  |   S rÌ  )r£   rp   rÆ  rÇ  )rV   ru   rŽ   rW   Úinds        rD   Úhandle_get_stack_atzGTorchInGraphFunctionVariable._get_handlers.<locals>.handle_get_stack_at·  sc   € ä�t“9 ’>©&Ð0Ð0Ø�q‘'×,Ñ,Ó.ˆCØ˜!’8 ¤c¨"×*JÑ*J×*UÑ*UÓ&VÒ VÐVÐVØ×3Ñ3×>Ñ>¸sÑCÐCrE   c                 óò   •— t        j                  |«       |d   j                  «       r)|d   j                  «       €t        j                  |«       nt        j
                  |«       ‰j                  d «      S r¶  )r)   rÈ  r}  rp   Úclear_default_deviceÚ!register_device_context_insertionrt   rø   s       €rD   Úhandle_set_default_devicezMTorchInGraphFunctionVariable._get_handlers.<locals>.handle_set_default_device¾  sc   ø€ ô +×<Ñ<¸RÔ@Ø�A‰w×)Ñ)Ô+°°Q±×0JÑ0JÓ0LÐ0TÜ.×CÑCÀBÕGä.×PÑPÐQSÔTà#×*Ñ*¨4Ó0Ð0rE   r   )Frj   )dÚtorch.backends.cudarç   r¡   rs   rè   r–   ré   rê   rë   rì   Úbuilderrí   rž   r÷   Údispatch_key_set_functionsr9   r  r  Ú__wrapped__rq  ÚinductorÚaccumulate_grad_Údefaultry   r  Ú	is_tensorr  r  r  r#  ÚcompileÚ!REWRITE_OPS_TO_TENSOR_SIZE_METHODrË   ÚmodulesÚutilsÚ_singleÚ_pairÚ_tripleÚ
_quadrupleÚ_ntupler2  Úuse_deterministic_algorithmsr9  r»   Ú_is_torch_function_enabledr   Úhas_torch_function_variadicÚhas_torch_function_unaryÚdictÚfromkeysr   Ú
from_numpyÚjitÚannotater    rY  rZ  ÚhooksÚBackwardHookÚ	Parameterrr  Úsym_sizeÚintÚ
sym_strideÚaddcdivr?   Ú_foreach_lerp_Ú_foreach_powÚ_assertr#   Úis_availableÚ"torch.distributed.distributed_c10dr†  r‡  rˆ  r‰  rŠ  Útorch.distributed.tensorr‹  Ú
from_localÚnestedÚnested_tensorÚ
functionalÚone_hotr§  r¨  r©  rª  Ú	_autogradr¯  r½   r³  r¸  r¹  rX  Ú_pop_torch_function_stackÚ_push_on_torch_function_stackÚ_len_torch_function_stackÚ_get_function_stack_atÚset_default_device)>ræ   rç   rù   r  r  r  r  r  r!  r'  r)  r,  r/  r3  r7  r:  r=  rF  rK  rQ  rU  r]  r`  rc  ri  rl  ro  ru  rx  r{  r�  r…  r†  r‡  rˆ  r‰  rŠ  r‹  r�  r›  r¢  r¥  r­  r±  r´  r»  rÄ  rÊ  rÎ  rÐ  rÓ  r×  rs   rè   r–   ré   rê   rë   rì   rä   rí   rž   s>                                                       @@@@@@@@@@rD   Ú_get_handlersz*TorchInGraphFunctionVariable._get_handlers£  sÀ  ÿù€ ð
 ˆô	õ 	3÷	
÷ 	
ñ 	
÷ 	>á	Ô*Ð	+ð	PØ-ô	Pó 
,ð	Pñ 
Ô-Ð	.ð	CØ-ò	Có 
/ð	Cñ6 
”%—/‘/×>Ñ>×JÑJÓ	Kð		Ø-ò		ó 
Lð		ñ 
”%—)‘)×$Ñ$×5Ñ5×=Ñ=Ó	>ò	ó 
?ð	ñ
 
”$—,‘,Ó	ò	ó 
 ð	ñ 
”%—/‘/¤5§?¡?×#AÑ#AÓ	Bö	6ó 
Cð	6ñ 
Ü×#Ñ#Ü×Ñó

õ	Bó	

ð	Bñ 
”%—+‘+Ó	õ	>ó 
ð	>ñ 
”%—-‘-Ó	 ò	Xó 
!ð	Xñ 
Ô4Ð	5ô	9ó 
6ð	9ñ 
Ü�H‰H×Ñ×"Ñ"×*Ñ*Ü�H‰H×Ñ×"Ñ"×(Ñ(Ü�H‰H×Ñ×"Ñ"×*Ñ*Ü�H‰H×Ñ×"Ñ"×-Ñ-Ü�H‰H×Ñ×"Ñ"×*Ñ*ó

ò	7ó

ð	7ñ 
”%×'Ñ'Ó	(ô	Dó 
)ð	Dñ 
”%×4Ñ4Ó	5à?Dð	YØ-ô	Yó 
6ð	Yñ 
”%×<Ñ<Ó	=ô	Yó 
>ð	Yñ 
”%—(‘(×5Ñ5Ó	6ó	Mó 
7ð	Mñ 
Ü�O‰O×.Ñ.Ü�O‰O×7Ñ7Ü�O‰O×4Ñ4ó

ô
	ó

ð
	ñ 
Ü�]‰]ñ ä+KÓ+Môó ð

ô	<ó

ð	<ñ 
”%×"Ñ"Ó	#õ	ó 
$ð	ñ  
”%—)‘)×$Ñ$Ó	%ò	ó 
&ð	ñ 
”%—.‘.×&Ñ&×4Ñ4Ó	5ð	Ø-õ	ó 
6ð	ñ" 
”%—+‘+×#Ñ#×0Ñ0Ó	1ò	Nó 
2ð	Nñ 
”%—(‘(×$Ñ$Ó	%ò	?ó 
&ð	?ñ 
”%—)‘)—.‘.×)Ñ)¬5¯9©9¯>©>×+BÑ+B×+FÑ+FÓ	Gò	?ó 
Hð	?ñ
 
”%—)‘)—.‘.×+Ñ+¬U¯Y©Y¯^©^×-FÑ-F×-JÑ-JÓ	Kò	Aó 
Lð	Añ 
”%—-‘-Ó	 ò	ó 
!ð	ñ 
”%—*‘*Ó	ó	ó 
ð	ñ 
”%×&Ñ&Ó	'ð	Ø*ò	ó 
(ð	ñ 
”%×$Ñ$Ó	%ô	ó 
&ð	ñ 
”%—-‘-Ó	 ô	.ó 
!ð	.ñ 
�*Ó	ô		ó 
ð		ô ×+Ñ+Ô-÷õ õ 9áØ'ØØ"Ø'Ø4óðDØ1ôDóðDñ: �g×(Ñ(Ó)ôó *ðñB 
”%—,‘,×,Ñ,Ó	-ð ð	Cð
 ñ	Cà'ò	Có 
.ð	Cñ 
”%—(‘(×%Ñ%×-Ñ-Ó	.ò	ó 
/ð	ñ 
”%—(‘(×'Ñ'×7Ñ7×LÑLÓ	Mõ
	ó 
Nð
	ñ 
”%—(‘(×$Ñ$×@Ñ@Ó	Að	1Ø-ò	1ó 
Bð	1ñ 
”%—(‘(×%Ñ%×<Ñ<Ó	=ð	Ø-ô	ó 
>ð	ñ 
”%×"Ñ"×.Ñ.×BÑBÓ	Cð	Ø-ò	ó 
Dð	ñ 
”%—,‘,Ó	õ	ó 
 ð	ñ4 
”%—(‘(×4Ñ4Ó	5ð	NØ-ò	Nó 
6ð	Nñ 
”%—(‘(×8Ñ8Ó	9ð	1Ø-ô	1ó 
:ð	1ñ 
”%—(‘(×4Ñ4Ó	5ð	Ø-ô	ó 
6ð	ñ 
”%—(‘(×1Ñ1Ó	2ò	Dó 
3ð	Dñ 
”%×*Ñ*Ó	+ð	1Ø-ô	1ó 
,ð	1ð$ ˆrE   ru   r+   rŽ   rW   r�   r   c                 ó  ‡1‡2‡3— ddl m}mŠ1m} ddlm} | j                  �r3dd lmc m	} ddlm
}m}	 ddlmŠ2 ddlm}
 ddlm} t%        j&                  |t%        j&                  ||«      t)        j&                  ||«      f«      }t+        j,                  |
«      j/                  ||gi «      }t1        |t$        «      rt3        |j4                  «      d	k(  sJ ‚|j4                  \  }}t1        |t6        «      sJ ‚|j4                  D ]D  }|j9                  «       } |	|«      rŒ|j9                  «       j:                  }t=        d
|› d�«       ŒF |j4                  D �cg c]  }|j?                  «       ‘Œ }}	 |jA                  «       }| jJ                  Š3ˆ2ˆ3fd„} ||«      \  }}|jL                  jO                  ‰3jP                  › d�|«      }|jL                  jO                  ‰3jP                  dz   «      }tS        |«      |jT                  _)        tS        |«      |jT                  _)        ||g|¢­}|jL                  jW                  d||i «      } |||«      }|S | jY                  |||«      rt[        || ||«      S | j]                  «       rÌt_        ||«      rÀ| jJ                  t`        v r=tc        | jd                  «      }tg        |ji                  tj        jl                  «      «       |jo                   | jA                  «       |D � cg c]  } | jA                  «       ‘Œ c} i |j5                  «       D �!�"ci c]  \  }!}"|!|"jA                  «       “Œ c}"}!¤Ž«      S | jq                  «       r| js                  |||«      S | ju                  «       jw                  | jJ                  «      }#|#r |#| |g|¢­i |¤Ž}$|$r|$S ty        ˆ1fd„|D «       «      }%t{        d„ |D «       «      }&t}        | jJ                  dd«      dk(  rY| jJ                  jP                  t~        v r=|%r;|&r9dt�        | jJ                  «      › d�}'t‚        j…                  |'«       t=        |'«       | jJ                  }(|%rSd| jJ                  jP                  › �})t}        | jJ                  dd «      dk(  r t‡        tˆ        |)«      rt}        tˆ        |)«      }(d }*d|v rMt1        |d   t*        j                  «      r0|d   jŠ                  jT                  jŒ                  d   jŽ                  }* || |jL                  jV                  d|(gt‘        ||«      ¢­Ž ¬ «      }+t1        |+|«      r"d!|v r|d!   jA                  «       rt=        d"«       d|v �rt1        |d   t*        j                  «      r|d   jA                  «       ��ét1        |+t$        «      r£t1        |d   t$        t6        f«      sJ ‚t“        |d   j4                  |+j4                  «      D ]`  \  },}-t1        |,t*        j                  «      sŒ!t1        |-t*        j                  «      sŒ<|,j”                  |-j”                  k7  sŒVt=        d#«       Œb |+S t1        |+|«      rÇt1        |d   |«      sJ ‚d|d   jŠ                  jT                  jŒ                  v sJ ‚|+jŠ                  jT                  jŒ                  d   }.|d   jŠ                  jT                  jŒ                  d   }/|*|.jŽ                  k7  rt=        d#«       tˆ        j–                  j™                  |/«      st=        d$«       |+S t1        |+|«      �r<|+jJ                  �€/t1        |d   |«      ryd|d   jŠ                  jT                  jŒ                  v sJ ‚|d   jŠ                  jT                  jŒ                  d   }/tˆ        j–                  j™                  |/«      s²t=        d$«       |+S t1        |d   t6        «      r’t›        |d   j4                  «      D ]w  \  }0} d| jŠ                  jT                  jŒ                  v sJ ‚| jŠ                  jT                  jŒ                  d   }/tˆ        j–                  j™                  |/«      rŒmt=        d%«       Œy |+S t=        d&tS        |d   «      › �«       |+S c c}w # |$ rm}|jB                  j9                  «       }|j:                  }dd lm"c m#} |jI                  |«      rt=        d|› d�«       nt=        d|› d|› d�«       Y d }~�Œmd }~ww xY wc c} w c c}"}!w )'Nr   )rs   rê   rë   ©rí   r   )Úfunc_to_graphableÚis_graphable_type)Úfake_tensor_tls)Útree_flatten)Ú#AsPythonConstantNotImplementedErrorr   zà
For `nonstrict_trace`-ed function, the only allowed input types are basic types (e.g., torch.Tensor, int, float) or pytree containers of those. Here you are calling the function with arguments that contain a value of type <zÍ>, please use one of the following to register the type with pytree:
  * `torch.utils._pytree.register_constant`
  * `torch.utils._pytree.register_dataclass`
  * `torch.utils._pytree.register_pytree_node`
z`
You are calling a `nonstrict_trace`-ed function with an input that contains an object of type <zã>, which was marked with `pytree.register_constant`. However, the object was constructed _inside_ the `torch.compile` region.

Please construct the object _outside_ the `torch.compile` region, or submit an issue to GitHub.
    z–
You are calling a `nonstrict_trace`-ed function where one one of the inputs has been registered with a `pytree_flatten` that puts an object of type <z’> into the context.

Please consider modifying that `pytree_flatten` to avoid putting the object into context, and apply one of the following to <zÉ>
  * `torch.utils._pytree.register_constant`
  * `torch.utils._pytree.register_dataclass`
  * `torch.utils._pytree.register_pytree_node`

If the above doesn't work, please subtmit an issue to GitHub.
c                  óf   •— ‰j                   }d‰_         	  ‰| i |¤Ž}|‰_         |S # |‰_         w xY w©NT)Úallow_non_fake_inputs_override)rŽ   rW   Úold_valÚresr  râ   s       €€rD   Ú
patched_fnz>TorchInGraphFunctionVariable.call_function.<locals>.patched_fn.  sH   ø€ ð *×HÑH�ØAE�Ô>ðMÙ˜dÐ- fÑ-�CàEL�OÔBØ�
øð FM�OÕBús   –' §	0Ú_specÚ_input_specrŸ   c              3   ó6   •K  — | ]  }t        |‰«      –— Œ y ­wrj   )r¤   )rA  rÑ   rê   s     €rD   rB  z=TorchInGraphFunctionVariable.call_function.<locals>.<genexpr>p  s   øè ø€ Ò&TÈ!¤z°!°_×'EÑ&Tùs   ƒc              3   óp   K  — | ].  }t        |t        j                  t        j                  f«      –— Œ0 y ­wrj   )r¤   r   rs   rê   r@  s     rD   rB  z=TorchInGraphFunctionVariable.call_function.<locals>.<genexpr>r  s0   è ø€ ò !
àô �qœ9×5Ñ5´y×7PÑ7PÐQ×Rñ!
ùs   ‚46r^   r¡   r9   zCalling zí on only torch.SymInt arguments is not yet supported.
To support this behavior, we need to allow const-propping tensors that store symint data.
For now, dynamo will explicitly graph break when it encounters user code with this behavior.
Ú_sym_ry   Úoutrû   r–  Úrequires_gradz©factory functions that return tensors that require grad are not supported.
Either create the tensor outside the compiled region, or do not set the tensor to require_gradz*out variants with resizing on graph inputsz9out= op was called where output tensor was non-contiguouszGout= op was called where some of the output tensors were non-contiguouszout variant of )Nr¡   rs   rê   rë   rÙ  rí   rÚ   Ú"torch._higher_order_ops.flat_applyÚ_higher_order_opsÚ
flat_applyr  r  Útorch._subclasses.fake_tensorr  Útorch.utils._pytreer  Úbaser  r&   r
  r"   r   ÚUserFunctionVariablerŸ   r¤   r£   r—  r%   Úpython_typer€   r   rm   rp   Úvtrã  Ú_pytreeÚis_constant_classrP   r¯   Ú%register_static_attr_and_return_proxyr_   Útyperþ   r°   Útorch_function_override_enabledr(   r|   r   Ú#constant_fold_functions_need_guardsr   rK   r   rL   r   ÚEQUALS_MATCHrt   Úis_tensor_methodÚcall_tensor_methodr
  ÚgetrD  Úallr{   Úbin_opsrÓ   rº   Úwarningrr   r9   rý   rÿ   r’  r   ÚzipÚ_sizeÚ_prims_commonÚis_contiguousÚ	enumerate)4rV   ru   rŽ   rW   rs   rë   rí   r!  r  r  r  r  Úpacked_input_vtÚout_vtÚflat_args_vtsÚinput_spec_vtÚflat_arg_vtÚarg_typeÚ	type_nameÚproxified_flat_argsÚ
input_specÚeÚtypÚpytreer  r]   Úf_specÚf_spec_proxyÚinput_spec_proxyÚall_argsrý   rK   rÑ   r˜  r™  Úspecial_handlerrv   Úany_symints_or_symfloatsÚall_ints_or_floatsÚmsgÚfn_Útorch_sym_opÚfake_out_shapeÚtensor_variableÚ
out_tensorÚresult_tensorÚfake_tensorÚfake_outÚidxrê   r  râ   s4                                                    @@@rD   rŸ   z*TorchInGraphFunctionVariable.call_functionÓ  s¥  ú€ ÷ 	HÑGÝ*à×#Ó#ßCÐC÷õ FÝ8åAô ,×1Ñ1Ø”]×(Ñ(¨¨TÓ2Ô4E×4KÑ4KÈBÐPVÓ4WÐXóˆOô ×3Ñ3°LÓA×OÑOØ�_Ð% róˆFô ˜f¤mÔ4¼¸V¿\¹\Ó9JÈaÒ9OÐOÐOØ+1¯<©<Ñ(ˆM˜=Ü˜m¬\Ô:Ð:Ð:ð  -×2Ñ2ò �Ø&×2Ñ2Ó4�Ù(¨Õ2Ø +× 7Ñ 7Ó 9× FÑ F�IÜ!ð`ð ajð  `kð kðõð	ð  ;H×:MÑ:Mö#Ø+6�×$Ñ$Õ&ð#Ðð #ðØ*×=Ñ=Ó?�
ð8 —‘ˆBõ
ñ *¨*Ó5‰IˆAˆvð Ÿ9™9×JÑJØ—;‘;�-˜uÐ% vóˆLð  "Ÿy™y×NÑNØ—‘˜mÑ+¨Zó Ðô &*¨&£\ˆL×ÑÔ"Ü)-¨jÓ)9Ð×!Ñ!Ô&Ø$Ð&6ÐMÐ9LÑMˆHð —I‘I×*Ñ*¨?¸JÈÐRTÓUˆEÙ" 2 uÓ-ˆFð ˆMà×/Ñ/°°D¸&ÔAÜ*¨2¨t°T¸6ÓBÐBà×)Ñ)Ô+Ô0MØ�&ô1
ð �z‰zÔ@Ñ@Ü1°$·+±+Ó>�Ü˜f×/Ñ/´×0IÑ0IÓJÔKà#×*Ñ*Ø)�×'Ñ'Ó)Ø6:Ö;°�a×*Ñ*Õ,Ò;ðà=C¿\¹\»^×L±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÓLñóð ð × Ñ Ô"Ø×*Ñ*¨2¨t°VÓ<Ð<à×,Ñ,Ó.×2Ñ2°4·:±:Ó>ˆÙÙ$ T¨2Ð?°Ò?¸Ñ?ˆFÙØ�ä#&Ó&TÈtÔ&TÓ#TÐ ä ñ !
àô!
ó 
Ðô
 �D—J‘J ¨bÓ1°WÒ<Ø—
‘
×#Ñ#¤wÑ.Ù(Ù"ð	Ü	ˆT�Z‰Z‹Ðð ðˆCô
 �K‰K˜ÔÜ˜#Ôð
 �j‰jˆÙ#Ø" 4§:¡:×#6Ñ#6Ð"7Ð8ˆLÜ�t—z‘z <°Ó6¸&Ò@ÄWÜ�|ôFô œe \Ó2�ð ˆØ�F‰?œz¨&°©-¼×9QÑ9QÔRð $ E™]×0Ñ0×5Ñ5×:Ñ:¸?ÑK×QÑQˆNá'ØØ(�"—)‘)×(Ñ(ØØðô # 4¨Ó0òô
ˆô �¨Ô7Ø 6Ñ)Ø�Ñ'×:Ñ:Ô<äðbôð �FŠ?Ü�v˜e‘}¤i×&@Ñ&@ÔAØ�u‘×0Ñ0Ó2Ñ:ô ˜/¬=Ô9Ü! &¨¡-´-ÄÐ1NÔOÐOÐOÜ14Ø˜5‘M×'Ñ'¨×)>Ñ)>ó2ò TÑ-�J ô # :¬y×/GÑ/GÕHÜ& }´i×6NÑ6NÕOØ&×,Ñ,Ø(×.Ñ.ó/ô
 &Ð&RÕSðTðl ÐôU ˜O¨^Ô<Ü! &¨¡-°Ô@Ð@Ð@Ø&¨&°©-×*=Ñ*=×*BÑ*B×*GÑ*GÑGÐGÐGØ-×3Ñ3×8Ñ8×=Ñ=¸oÑN�Ø! %™=×.Ñ.×3Ñ3×8Ñ8¸ÑI�Ø! [×%6Ñ%6Ò6ô "Ð"NÔOÜ×*Ñ*×8Ñ8¸ÔBô "ØSôð< Ðô5 ˜?Ð,<Õ=Ø#×)Ñ)Ñ1ô ˜f U™m¨^Ô<Ø*¨f°U©m×.AÑ.A×.FÑ.F×.KÑ.KÑKÐKÐKØ% e™}×2Ñ2×7Ñ7×<Ñ<¸_ÑM�HÜ ×.Ñ.×<Ñ<¸XÔFô &ØWôð  Ðô    u¡¬|Ô<Ü"+¨F°5©M×,?Ñ,?Ó"@ò ™˜˜QØ.°!·'±'·,±,×2CÑ2CÑCÐCÐCØ#$§7¡7§<¡<×#4Ñ#4°_Ñ#E˜Ü$×2Ñ2×@Ñ@ÀÕJô *Ø iõðð Ðô  ´°V¸E±]Ó0CÐ/DÐEÔFàÐùòe#øð 7ò Ø—d‘d×&Ñ&Ó(�Ø×,Ñ,�	ß4Ð4à×+Ñ+¨CÔ0Ü!ð`Ø`iÐ_jð kðõô "ðVð W`ð  Vað a~ð Hð  ~Ið Ið	ôÿùðüòb <ùÛLs+   Åa<Å1b Ë?c6Ì,c;âc3âA"c.ã.c3c                 óÔ  ‡‡— | j                   t        j                  j                  j                  j
                  u r|d   j                  «       Šn#| j                   j                  d   j                  Št        ‰t        «      sJ ‚|rJ ‚ˆˆfd„}| j                   t        j                  j                  j                  j
                  u rt        j                  |«      S  ||d   «      S )z1inline behavior of torch.nn.modules.utils._ntupler   c                 ó†  •— | j                  ‰«      r-t        j                  t        | j	                  ‰«      «      «      S | j                  «       rct        j                  j                  t        j                  j                  j                  j                  ‰«      | j                  «       «      «      S t        d| › d�«       y )Nztorch.nn.modules.utils._ntuple(rˆ   )Úhas_unpack_var_sequencer   r&   ÚlistrC  r}  rs   rt   r9   rË   râ  rã  rè  rp   r   )rP   Úcountru   s    €€rD   r/  z@TorchInGraphFunctionVariable._call_ntuple.<locals>.handle_ntuple  sž   ø€ Ø×,Ñ,¨RÔ0Ü ×.Ñ.Ü˜×2Ñ2°2Ó6Ó7óð ð ×)Ñ)Ô+ä ×1Ñ1×8Ñ8Ü—H‘H×$Ñ$×*Ñ*×2Ñ2°5Ó9¸%×:RÑ:RÓ:TÓUóð ô Ð ?À¸wÀaÐHÕIrE   )rP   r9   rË   râ  rã  rè  rp   Ú__closure__Úcell_contentsr¤   rö  r   ÚLambdaVariable)rV   ru   rŽ   rW   r/  r[  s    `   @rD   r.  z)TorchInGraphFunctionVariable._call_ntupleû  s³   ù€ à�:‰:œŸ™×)Ñ)×/Ñ/×7Ñ7Ñ7Ø˜‘G×.Ñ.Ó0‰Eà—J‘J×*Ñ*¨1Ñ-×;Ñ;ˆEÜ˜%¤Ô%Ð%Ð%ÙÐˆzõ	Jð �:‰:œŸ™×)Ñ)×/Ñ/×7Ñ7Ñ7Ü×+Ñ+¨MÓ:Ð:á   a¡Ó)Ð)rE   c           
      ó–  — |j                   rt        d«       t        |t        j                  «      r	 |j                  «       }t        |t        j                  «      st        d|› d�«       |j                  r| j                  |||«      S t        |j                  «      rt        d«       t        «       st        d«       	 t        |j                  |d«      j                  «       «      }|j                  |d«      j                  «       }|j                  |d	«      j                  «       }|j                  j!                  t"        |g«      }|j$                  r|j'                  |dg i «      }ddlm}	  |	||j                  j-                  dt.        |j1                  «       |j1                  «       fi «      |j                  ¬«      }
t        |
t        j                  «      sJ ‚t2        j4                  j6                  |
_        d|
_        |
S # t        $ r t        d«       Y �Œßw xY w# t        $ r}t        d
|› �«       Y d}~�Œd}~ww xY w)z>A call to torch.nn.Parameter() gets lifted to before the graphz3nn parameter construction not supported with exportz)Parameter(requires_grad=...) not constantzParameter(data=z) not implementedz.Parameter constructor with tensor subclass NYIz4Workaround for issues with nn_parameter constructionr’  r  rW  zParameter not python_constant: NÚdetachr   r  rŸ   rJ   F)Úexportr   r¤   r   r   rp   ÚNotImplementedErrorrë   rK   Ú_nn_param_via_prefix_insertr   Ú
class_typer   ÚtupleÚvar_getattrr¯   Úsynthetic_graph_inputr   r  r&  rÙ  rí   r°   r   rm   r9   rË   rô  Úhas_grad_fn)rO   ru   rÁ  r  r’  r  rW  rC  Úplaceholderrí   rv   s              rD   rb  z.TorchInGraphFunctionVariable.call_nn_parameter  s
  € ð �9Š9ÜÐOÔPä�m¤Y×%>Ñ%>Ô?ðKØ -× @Ñ @Ó B�ô ˜$¤	× 8Ñ 8Ô9Ü˜O¨D¨6Ð1BÐCÔDð �;Š;Ø×2Ñ2°2°t¸]ÓKÐKä-¨d¯o©oÔ>ÜÐJÔKä0Ô2ÜÐPÔQð	AÜ˜$×*Ñ*¨2¨wÓ7×JÑJÓLÓMˆEØ×$Ñ$ R¨Ó1×DÑDÓFˆEØ×%Ñ% b¨(Ó3×FÑFÓHˆFð —i‘i×5Ñ5Ü%¨¨u°f¸mÐ'Ló
ˆð ×ÒØ×#Ñ# B¨°"°bÓ9ˆDå*áØØ�I‰I×"Ñ"ØÜ)Ø—‘“ +×"6Ñ"6Ó"8Ð9Øó	ð ×%Ñ%ô
ˆô ˜&¤)×":Ñ":Ô;Ð;Ð;Ü!ŸH™H×.Ñ.ˆÔð #ˆÔð ˆøôm 'ò KÜÐI×JðKûô( #ò 	AÜÐ;¸A¸3Ð?×@Ò@ûð	Aús*   ³H ÃA)H& ÈH#È"H#È&	IÈ/IÉIc                 ó8  ‡— | j                   j                  «       }t        | «      Š‰j                  ˆfd„«        ‰|j                  «        ‰t        j                  |«      «       ‰j                  dd«       ‰j                  |«       | j                   j                  j                  ‰j                  «       «       |j                  «       j                  }|j                  dvrt        d«       t!        |«      }t"        j$                  j'                  | j                   j)                  |j                  «       j                  «      «      }t+        j,                  | ||«      }t/        j0                  «       j2                  j4                  j7                  |«       |S )Nc                  ó(   •— ‰ j                  dd«      S )Nztorch.nnrô  )Úload_import_from)Úcgs   €rD   ú<lambda>zJTorchInGraphFunctionVariable._nn_param_via_prefix_insert.<locals>.<lambda>^  s   ø€  ×!4Ñ!4°ZÀÓ!M€ rE   r   F)ri  Úget_attrzAUnexpected type of data placeholder op for parameter construction)r¯   Únew_varr   Úadd_push_nullrK   r   rs   rŸ   ÚstoreÚpregraph_bytecodeÚextendÚget_instructionsrm   rþ   Úopr   r   r9   rË   rô  Úexample_value_from_input_noder   r
  r   r1  Úguards_contextÚdynamo_guardsÚremove_guards_with_source)	ru   rÁ  r  ÚvarnameÚ	data_noderK   rû   rv   rm  s	           @rD   rc  z8TorchInGraphFunctionVariable._nn_param_via_prefix_insertW  s8  ø€ ð —)‘)×#Ñ#Ó%ˆô �r‹]ˆØ
×ÑÓMÔNÙ
ˆ4�;‰;ŒÙ
Œ9×%Ñ% mÓ4Ô5Ø
×Ñ˜˜EÔ"Ø
�‰�ÔØ
�	‰	×#Ñ#×*Ñ*¨2×+>Ñ+>Ó+@ÔAà—M‘M“O×(Ñ(ˆ	Ø�<‰<Ð:Ñ:ÜØSôô
 & gÓ.ˆÜŸ™×*Ñ*Ø�I‰I×3Ñ3°D·M±M³O×4HÑ4HÓIó
ˆô !×&Ñ& r¨=¸&ÓAˆô 	×ÑÓ×+Ñ+×9Ñ9×SÑSØô	
ð ˆrE   c                 óf   — |d   j                  || j                  «       j                  |dd  |«      S )Nr   r   )r&  rÝ   r_   r  s       rD   r0  z/TorchInGraphFunctionVariable.call_tensor_methodx  s2   € Ø�A‰w×"Ñ" 2 t×'8Ñ'8Ó':×'CÑ'CÀTÈ!È"ÀXÈvÓVÐVrE   c                 ó,  — ddl m} t        j                  | j	                  «       «      xrQ t        | j	                  «       d«      xr5 | j	                  «       j                  t        j                  j                  k(  xs | j	                  «        |«       v S )Nr   )Úget_tensor_methodÚ__objclass__)
rÙ   r  rª   ÚismethoddescriptorrÝ   rr   r€  r9   r»   Ú
TensorBase)rV   r  s     rD   r/  z-TorchInGraphFunctionVariable.is_tensor_method{  s   € Ý3ô ×&Ñ& t×'8Ñ'8Ó':Ó;ò HÜ˜×)Ñ)Ó+¨^Ó<òHà×!Ñ!Ó#×0Ñ0´E·H±H×4GÑ4GÑGò8ð ×ÑÓ Ñ$5Ó$7Ð7ð		8rE   c                 óð   — | j                  «       t        «       v xsL t        | j                  «       t        j                  j
                  t        j                  j                  f«      xr t        |||«      S rj   )rÝ   r3   r¤   r9   Ú_opsÚ
OpOverloadÚOpOverloadPacketr'   r  s       rD   r,  z<TorchInGraphFunctionVariable.torch_function_override_enabled„  sd   € à×ÑÓÔ#<Ó#>Ð>ò ÜØ×!Ñ!Ó#Ü—‘×&Ñ&¬¯
©
×(CÑ(CÐDóò<ô *¨"¨d°FÓ;ð	<rE   rj   r}   r   r  )r_   r^   r€   r�   rU   rÓ   r‰   rÝ   rÔ   Ú	functoolsÚ	lru_cacher
  r   r   rŸ   r.  r‚   rb  rc  r0  r/  r,  rƒ   r„   s   @rD   rÖ   rÖ   ’  s¿   ø„ ÙJö7ðm˜#ó mòð Ø€Y×Ñ˜Óñló ó ðlð\fà#ðfð �Ñ'ðfð -ð	fð
 
ófóP	*ð6 ò>ó ð>ð@ òó ðò@Wò8ö<rE   rÖ   c                   óf   ‡ — e Zd ZdZed„ «       Zed„ «       Zd„ Zde	e
   deee
f   ddfˆ fd	„Zˆ xZS )
r  zrepresents torch.DispatchKeySetc                 ó   — t        | fi |¤ŽS rj   )r  )rP   rW   s     rD   rt   zDispatchKeySetVariable.create‘  s   € ä% eÑ6¨vÑ6Ð6rE   c                 óf   — t        |j                  t        j                  «      «        | ||¬«      S rI   )r   rL   r   ÚDISPATCH_KEY_SET_MATCHrN   s      rD   rQ   z)DispatchKeySetVariable.create_with_source•  s(   € ä�f×'Ñ'¬×(KÑ(KÓLÔMÙ�5 Ô(Ð(rE   c                 ó
   — |dv S )N)ÚhasrS   )rV   rf   s     rD   Úis_constant_fold_methodz.DispatchKeySetVariable.is_constant_fold_methodš  s   € Ø�wˆÐrE   rŽ   rW   r~   r   c                 óê  •— | j                  |«      r“t        ||«      r‡t        | j                  |«      }t        j
                  j                   ||D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž«      S |dk(  r-t	        j                  | j                  j                  «       «      S t        ‰	| �1  ||||«      S c c}w c c}}w )NÚhighestPriorityTypeId)r�  r   r{   rP   r   rs   rt   rp   r—  ÚEnumVariabler‘  rT   r&  )
rV   ru   rf   rŽ   rW   ÚmethodrÑ   r˜  r™  rX   s
            €rD   r&  z"DispatchKeySetVariable.call_method�  sÜ   ø€ ð ×'Ñ'¨Ô-Ô2OØ�&ô3
ô ˜TŸZ™Z¨Ó.ˆFÜ×-Ñ-×4Ñ4ÙØ6:Ö;°�a×*Ñ*Õ,Ò;ðà=C¿\¹\»^×L±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÓLñóð ð Ð,Ò,Ü×)Ñ)¨$¯*©*×*JÑ*JÓ*LÓMÐMÜ‰wÑ" 2 t¨T°6Ó:Ð:ùò <ùÛLs   ÁC*ÂC/)r_   r^   r€   r�   rÔ   rt   r‚   rQ   r�  rZ  r   rí  rÓ   r&  rƒ   r„   s   @rD   r  r  Ž  sh   ø„ Ù)àñ7ó ð7ð ñ)ó ð)òð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
÷;ñ ;rE   r  c                   óP   ‡ — e Zd ZdZed„ «       Zdee   dee	ef   ddfˆ fd„Z
ˆ xZS )r·  z<represents torch._functorch.pyfunctorch.FuncTorchInterpreterc                 óf   — t        |j                  t        j                  «      «        | ||¬«      S rI   )r   rL   r   ÚID_MATCHrN   s      rD   rQ   z/FuncTorchInterpreterVariable.create_with_source¶  s(   € ä�f×'Ñ'¬×(=Ñ(=Ó>Ô?Ù�5 Ô(Ð(rE   rŽ   rW   r~   r   c                 óô  •— |dk(  r-t        j                  | j                  j                  «       «      S |dk(  rH|j	                  t        j
                  | j                  j                  j                  «      | g|z   |«      S |dv r8t         j                  j                   t        | j                  |«      «       «      S |dk(  r&|s|rJ ‚t         j                  j                  |d «      S t        ‰| �5  ||||«      S )NÚkeyÚprocess)ÚlevelÚ
batch_sizeÚ
randomnessÚlower)r   r’  rP   r˜  r  r%  r™  Ú__func__rs   rt   r{   Ú0TemporarilyPopInterpreterStackCtxManagerVariablerT   r&  )rV   ru   rf   rŽ   rW   rX   s        €rD   r&  z(FuncTorchInterpreterVariable.call_method»  sè   ø€ ð �5Š=Ü×)Ñ)¨$¯*©*¯.©.Ó*:Ó;Ð;Ø�YÒØ×1Ñ1Ü×.Ñ.¨t¯z©z×/AÑ/A×/JÑ/JÓKØ�˜‘Øóð ð
 Ð:Ñ:Ü×-Ñ-×4Ñ4Ð5N´W¸T¿Z¹ZÈÓ5NÓ5PÓQÐQØ�WŠ_Ù¡FÐ*Ð*Ü×MÑM×TÑTØ�Dóð ô ‰wÑ" 2 t¨T°6Ó:Ð:rE   )r_   r^   r€   r�   r‚   rQ   rZ  r   rí  rÓ   r&  rƒ   r„   s   @rD   r·  r·  ³  sO   ø„ ÙFàñ)ó ð)ð;ð �?Ñ#ð	;ð
 �S˜/Ð)Ñ*ð;ð 
÷;ñ ;rE   r·  )­r�   r‡  rª   Úloggingry   rb   Úcollections.abcr   Útypingr   Útorch._Cr9   Útorch._refsÚtorch.fxÚtorch.nnÚtorch._guardsr   Útorch._loggingr   Útorch.utils._python_dispatchr   r¡   r	   r
   r   re   r   Úcreate_parameter_opr   r   r   rI  r   Úexcr   Úguardsr   r   rK   r   r   rã  r   r   r   r   r   r   r   r$  r   Úctx_managerr   r    r!   Údictsr"   Údistributedr#   r$   rŸ  r%   r&   Útorch_functionr'   r(   r)   ÚnumpyrO  ÚModuleNotFoundErrorÚ#torch.distributed.fsdp._fully_shardr*   Útorch._dynamo.symbolic_convertr+   Ú	getLoggerr_   rº   rí  rî  r¶   r·   r¹   rÂ   rÃ   rÄ   r¸   r»   r¼   r½   r¾   r¿   rÀ   rÅ   rÁ   rÆ   r±   r²   r³   Ú	grad_moder§   r©   r¢   r¨   rÇ   rÈ   rµ   r´   rË   rÌ   rÍ   rÎ   rŒ   Ú_shape_as_tensorrá  Úcurrent_devicer-  rû  rï   Ú_get_device_indexÚ_get_cublas_allow_tf32Ú_is_any_autocast_enabledÚget_device_propertiesrü  Úget_autocast_dtypeÚget_autocast_gpu_dtypeÚget_default_dtypeÚis_autocast_cache_enabledÚis_autocast_cpu_enabledÚis_autocast_enabledr  r  r  Ú
_ReductionÚget_enumÚpromote_typesÚ_get_privateuse1_backend_nameÚ_is_checkpoint_validrz   rt  Úis_initializedÚget_rankÚget_world_sizerð  Úis_scriptingÚ
is_tracingÚ_get_tracing_stater§  Ú_symbolic_traceÚis_fx_tracingÚonnxÚis_in_onnx_exportrñ   rò   rð   ró   rô   rõ   râ  Ú
activationÚ_is_make_fx_tracingr÷   r3  rü   Ú_dispatch_tls_local_include_setÚ_dispatch_tls_local_exclude_setrÚ  rˆ  r3   rG   r†   rÖ   r  r·  rS   rE   rD   ú<module>rÖ     s�  ðñó6 Û Û Û Û 	Ý $Ý  ã Û Û Û Ý (Ý 'Ý Kç +Ñ +Ý ÷ñ õ
 @Ý ß 0ß C÷÷ ñ õ "÷ñ õ
 %ß Bß .÷ñ ðÛðÝEñ
 ÝDð €g×Ñ˜Ó!€à $§¡à�‰×Ñ×'Ñ'Ø�‰×!Ñ!×7Ñ7Ø�‰×!Ñ!×,Ñ,Ø�‰×Ñ×'Ñ'Ø�‰×Ñ×/Ñ/Ø�‰×-Ñ-Ø×Ñ×Ñ×4Ñ4Ø×Ñ×)Ñ)×@Ñ@Ø×Ñ×)Ñ)×?Ñ?Ø×Ñ×)Ñ)×FÑFØ�	‰	×Ñ×(Ñ(Ø�‰× Ñ ×,Ñ,Ø�‰× Ñ ×/Ñ/Ø�‰× Ñ ×(Ñ(Ø�‰× Ñ ×1Ñ1Ø�‰×Ñ×8Ñ8Ø�	‰	�‰×#Ñ#×,Ñ,Ø�
‰
�‰×$Ñ$×-Ñ-Ø�‰×Ñ×&Ñ&Ø�‰×Ñ×0Ñ0ð)ó!Ð ð4 %)§M¡Mà×Ñðó%Ð !ð 
‡J�J×Ñð'Ð #ð
 
‡M�MØ	‡L�L×"Ñ"Ø	‡H�H×#Ñ#Ø	‡H�H×%Ñ%Ø	‡J�J×$Ñ$Ø	‡J�J×ÑØ	×Ñ×"Ñ"Ø	×ÑØ	× Ñ Ø	×ÑØ	×#Ñ#Ø	×!Ñ!Ø	×ÒØ	×ÒØ	×ÒØ	‡H�H×Ò×"Ò"×+Ò+Ø	×ÒØ	‡H�H×*Ò*Ø	‡N�N×'Ò'ð'ð( (ñ)(Ð ð* 	×Ñ×!Ñ!Ô#Ø×"Ò"à×Ñ×,Ò,Ø×Ñ×&Ò&Ø×Ñ×,Ò,ð	
ôð '+§m¡mÐ4WÓ&XÐ #ØŸ-™-Ð(?Ó@Ð ð 
‡I‚I×Ò˜EØ	‡I‚I×Ò˜%Ø	‡H�H×Ò Ø	‡H‚H×Ò×*Ò*¨EØ	‡J‚J× Ò  %Ø	‡M‚M× Ò ×-Ò-¨tØ	‡L�L×Ò˜tØ	‡N‚N×Ò Ø	‡N‚N×&Ò&¨Ø	‡N‚N×Ò Ø	‡H�H×Ò×Ò×3Ò3°UðÐ ð �-‰-Ò<Ó
=€ð 
‡H�H×ÒØ	‡H�H×,Ò,Ø	‡H�H×,Ò,ðÐ ð €×Ò�TÓñó ðô$#A˜ô #AôLU7Ð#4ô U7ôpy<Ð#4ô y<ôx";Ð.ô ";ôJ;Ð#4õ ;øð}* ò Ø	ƒBðûð
 ò ØÓðús$   Â>] Ã]# Ý] Ý] Ý#].Ý-].