+
    –°³jZH  ã                   ó‚  € R t ^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIt^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^RIHtHt ^R	IHtHtHtHtHtHt ^R
IHtHt ^RIHtH t  ^RI!H"t" ^RI#H$t$ ^RI%H&t& ^RI'H(t( ^RI)H*t* ^RI+H,t, ]'       d   ^ RI-H.t.  ! R R]/4      t0 ! R R]/4      t1]! ]2R4      t3R R lt4 ! R R],4      t5R# )a
  
This module implements variable tracking for PyTorch optimizers during Dynamo tracing.

The OptimizerVariable class provides specialized handling for optimizer instances by:
- Optimizing the tracing of expensive optimizer initialization
- Managing optimizer state and parameter group tracking
- Handling tensor sources and guards for optimizer state tensors
- Supporting CUDA graph execution through static tensor address management
- Providing special handling for parameter gradients and optimizer state tensors

Key features include:
- Efficient initialization tracing via _init_group optimization
- Automatic marking of optimizer state tensors as static for CUDA graphs
- Proper source tracking for parameter groups, gradients, and state tensors
- Guard installation for optimizer state structure
- Support for both CPU and GPU tensor handling
- Cleanup of static tensor references via finalizers

The module integrates with Dynamo's broader tracing system while providing
optimizer-specific optimizations and safety guarantees.
N)ÚIterable)ÚAnyÚTYPE_CHECKING)ÚTensorVariable)ÚSource)ÚgetArtifactLogger)Útree_map_only)ÚGuardBuilderÚinstall_guard)Ú
AttrSourceÚConstDictKeySourceÚDictGetItemSourceÚGetItemSourceÚGlobalWeakRefSourceÚ
GradSource)ÚGLOBAL_KEY_PREFIXÚunpack_iterable)ÚGetSetÚVariableTracker)ÚConstantVariable)ÚConstDictVariable)ÚHashableTracker)ÚListVariable)ÚGetAttrVariable)ÚUserDefinedObjectVariable)ÚInstructionTranslatorBasec                   ó   € ] tR t^9tRtR# )ÚArgMappingException© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Úb/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_dynamo/variables/optimizer.pyr   r   9   ó   † Ûr%   r   c                   ó   € ] tR t^=tRtR# )ÚGuardInstallExceptionr   Nr   r   r%   r&   r)   r)   =   r'   r%   r)   Ú
perf_hintsc                óD   € V ^8„  d   QhR\         P                  R\        /# )é   ÚxÚreturn)ÚtorchÚTensorÚbool)Úformats   "r&   Ú__annotate__r3   D   s   € ÷ ñ ¤§¡ð ´$ñ r%   c                 óV  € ^ RI Hp V P                  '       d‘   V! V P                  P                  R4      p\
        P                  P                  P                  V 4      RJpV'       d?   VP                  f   \        R4      hT;'       g    VP                  P                  V 4      # V# R# )é    )Úget_managerFNz&CUDA graph manager has no current nodeT)Útorch._inductor.cudagraph_treesr6   Úis_cudaÚdeviceÚindexr/   Ú_dynamoÚutilsÚget_static_address_typeÚcurrent_nodeÚAssertionErrorÚ_is_cuda_graph_recorded_tensor)r-   r6   ÚmanagerÚis_static_addresss   &   r&   Ú_is_static_for_cudagraphsrC   D   s“   € Ý;à‡y‡y€yÙ˜aŸh™hŸn™n¨eÓ4ˆÜ!ŸM™M×/Ñ/×GÑGÈÓJÐRVÐVÐßØ×#Ñ#Ò+Ü$Ð%MÓNÐNà!÷ Jð JØ×'Ñ'×FÑFÀqÓIðð
 %Ð$ñ r%   c                   óR  a a€ ] tR t^Xt o0 Rm]P
                  mtRV3R lV 3R llltV3R lV 3R lltV3R lR ltV3R lR lt	R	]
! ]4      R
]
! ]	4      /tV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lR ltRtVtV ;t# )ÚOptimizerVariablec                óÞ   <€ V ^8„  d   QhRS[ P                  P                  RS[S[S[3,          R,          RS[S[,          R,          RS[S[ P                  S[	3,          R,          RS[RR/# )r,   ÚvalueÚgrad_to_sourceNÚstatic_tensor_namesÚtensor_to_sourceÚkwargsr.   )
r/   ÚoptimÚ	OptimizerÚdictr   r   ÚsetÚstrr0   r   )r2   Ú__classdict__s   "€r&   r3   ÚOptimizerVariable.__annotate__`   s‚   ø€ ÷ @ñ @á�{‰{×$Ñ$ð@ñ ™S¡*˜_Õ-°Õ4ð@ñ !¡�X¨�_ð	@ñ
 ™uŸ|™|©VÐ3Õ4°tÕ;ð@ñ ð@ð 
ñ@r%   c                ó¬   <€ \         SV `  ! V3/ VB  Wn        T;'       g    / V n        T;'       g    / V n        T;'       g    \        4       V n        R # ©N)ÚsuperÚ__init__rG   rH   rJ   rO   rI   )ÚselfrG   rH   rI   rJ   rK   Ú	__class__s   &&&&&,€r&   rV   ÚOptimizerVariable.__init__`   sN   ø€ ô 	‰Ò˜Ñ) &Ò)à,1Œ
Ø,×2Ð2°ˆÔØ 0× 6Ð 6°BˆÔØ#6×#?Ð#?¼#»%ˆÖ r%   c          
      óZ   <€ V ^8„  d   QhRRRS[ RS[S[,          RS[S[ S[3,          RR/# )r,   Útxr   ÚnameÚargsrK   r.   r   )rP   Úlistr   rN   )r2   rQ   s   "€r&   r3   rR   o   sL   ø€ ÷ ";ñ ";à'ð";ñ ð";ñ ‘?Õ#ð	";ñ
 ‘S™/Ð)Õ*ð";ð 
ñ";r%   c                óf  <€ VR8X  dý   \        V P                  R4      '       g   \        S
V `  WW44      #  V P	                  V4       V P                  4        V P                  ! V/ VB w  rVV P                  P                  ! V/ VB pV P                  V4       V P                  WWEV4       R\        V P                  4       2pVP                  W€P                  4       V P                  V4       \        P                  ! V4      # \        S
V `  WW44      #   \        \         3 d   p	 Rp	?	L&Rp	?	ii ; i)zVThis is an optimization to avoid tracing the very slow initialization of the optimizerÚ_init_groupÚ__optimizer_N)ÚhasattrrG   rU   Úcall_methodÚgraph_break_if_pending_mutationÚmove_step_if_cpuÚget_python_argsr`   Úmap_sources_and_install_guardsÚupdate_list_argsÚidÚstore_global_weakref_by_idÚcreate_finalizerr   Úcreater   r)   )rW   r[   r\   r]   rK   Úpy_argsÚ	py_kwargsÚret_valÚmangled_nameÚ_rX   s   &&&&&     €r&   rc   ÚOptimizerVariable.call_methodo   s  ø€ ð �=Ô Ü˜4Ÿ:™: }×5Ò5ä‘wÑ*¨2°TÓBÐBðØ×4Ñ4°RÔ8Ø×%Ñ%Ô'Ø%)×%9Ò%9¸4Ð%JÀ6Ñ%JÑ"�ØŸ*™*×0Ò0°'ÐG¸YÑG�Ø×3Ñ3°BÔ7Ø×%Ñ% b°ÀÔKð ".¬b°·±«nÐ-=Ð>�Ø×-Ñ-¨l¿J¹JÔGØ×%Ñ% bÔ)ô (×.Ò.¨wÓ7Ð7ô
 ‰wÑ" 2¨TÓ:Ð:øô	 (Ô)>Ð?ô äûðús   ¶CD ÄD0Ä+D0c                ó$   <€ V ^8„  d   QhRRRS[ /# )r,   r[   r   r.   )r   )r2   rQ   s   "€r&   r3   rR   •   s   ø€ ÷ 
ñ 
Ð"=ð 
Á/ñ 
r%   c           	     óÂ   € V P                   '       g   \        R 4      hRp\        \        V P                  V4      4      p\        WV\        V P                   V4      R7      # )z3OptimizerVariable requires a source for _init_groupr`   )Úpy_typeÚsource)rv   r?   ÚtypeÚgetattrrG   r   r   )rW   r[   r\   ru   s   &&  r&   Ú_get_init_groupÚ!OptimizerVariable._get_init_group•   sP   € Ø�{�{ˆ{Ü Ð!VÓWÐWØˆÜ”w˜tŸz™z¨4Ó0Ó1ˆÜØ ´
¸4¿;¹;ÈÓ0Mô
ð 	
r%   c                ó"   <€ V ^8„  d   QhRRRR/# ©r,   r[   r   r.   Nr   )r2   rQ   s   "€r&   r3   rR       s   ø€ ÷ ñ Ð$?ð ÀDñ r%   c                ó¢   € ^RI Hp V P                  P                   F  pVR,           F  pV! VRR7       K  	  K  	  V P	                  V4       R# )r,   ©Úmark_static_addressÚparamsT©ÚguardN)Ú
decoratorsr   rG   Úparam_groupsÚ_set_capturable)rW   r[   r   ÚgroupÚps   &&   r&   Ú_get_param_groupsÚ#OptimizerVariable._get_param_groups    sF   € Ý4à—Z‘Z×,Ô,ˆEØ˜8—_�_�Ù# A¨T×2ó %ñ -ð 	×Ñ˜RÔ Ùr%   r`   r„   c                ó"   <€ V ^8„  d   QhRRRR/# r|   r   )r2   rQ   s   "€r&   r3   rR   ¯   s   ø€ ÷ ñ Ð2Mð ÐRVñ r%   c           	     óL  € V P                   P                   F‰  pVR ,           Fy  pVP                  P                  pVP                  P                  \        V4      R4      pV'       g   KH  VP                  V4      '       g   Ka  ^RIH	p V! RRV RV 2R. R7       K{  	  K‹  	  R# )r€   N)Úunimplementedz(optimizer: pending mutation on parameterz
variable: z, parameter: zSPending mutations on a parameter (e.g. due to using closure) require a graph break.)Úgb_typeÚcontextÚexplanationÚhints)
rG   r„   ÚoutputÚside_effectsÚid_to_variableÚgetri   Úhas_pending_mutationÚexcrŒ   )rW   r[   Úgr‡   r’   ÚvariablerŒ   s   &&     r&   rd   Ú1OptimizerVariable.graph_break_if_pending_mutation¯   sŒ   € ð
 —‘×(Ô(ˆAØ�x—[�[�Ø!Ÿy™y×5Ñ5�Ø'×6Ñ6×:Ñ:¼2¸a»5À$ÓG�ß‘8 × AÑ AÀ(× KÔ KÝ3á!Ø JØ",¨X¨J°mÀAÀ3Ð GØ$yØ ÷	ó !ó )r%   c                ó"   <€ V ^8„  d   QhRRRR/# r|   r   )r2   rQ   s   "€r&   r3   rR   Â   s    ø€ ÷ Fñ FÐ"=ð FÀ$ñ Fr%   c                óþ  a € ^RI Hp R V 3R llpS P                  P                   F  pV! V4      '       g   K  RVR&   K  	  S P                  ;'       d    \        S P                  R4      pVP                  \        P                  ! VS P                  P                  V4      4      pVP                   FE  p\        \        P                  ! R4      4      p\        P                  ! R4      VP                  V&   KG  	  R# )é   ©ÚLazyVariableTrackerc                óR   € V ^8„  d   QhR\         \        \        3,          R\        /# )r,   r†   r.   )rN   rP   r   r1   )r2   s   "r&   r3   Ú7OptimizerVariable._set_capturable.<locals>.__annotate__Ç   s&   € ÷ 	Kñ 	K¬$¬s´C¨x­.ð 	K¼Tñ 	Kr%   c                 óú   <€ R pR pV P                  R. 4       FH  pY#P                  ;'       g    VP                  ,          pWSP                  P                  9  ,          pKJ  	  RV 9   ;'       d    T;'       d    T# )Tr€   Ú
capturable)r”   r8   Úis_xpurG   Ústate)r†   Úall_uninitializedÚall_gpur‡   rW   s   &   €r&   Úsafe_to_set_capturableÚAOptimizerVariable._set_capturable.<locals>.safe_to_set_capturableÇ   sq   ø€ Ø $ÐØˆGà—Y‘Y˜x¨Ö,�ØŸ9™9×0Ð0¨¯©Õ0�Ø!¨d¯j©j×.>Ñ.>Ñ%>Õ>Ò!ñ -ð   5Ñ(×JÐJÐ->×JÐJÀ7ÐJr%   Tr¢   r„   N)Ú rž   rG   r„   rv   r   Úrealize_allr   ÚbuildÚitemsr   r   rl   )	rW   r[   rž   r§   r†   rv   Úparam_groups_vtÚparam_group_vtÚkeys	   f&       r&   r…   Ú!OptimizerVariable._set_capturableÂ   sÊ   ø€ Ý)÷	Kð 	Kð —Z‘Z×,Ô,ˆEÙ% e×,Ô,Ø&*��lÓ#ñ -ð —‘×HÐH¤¨D¯K©K¸Ó!HˆØ-×9Ñ9Ü×!Ò! " d§j¡j×&=Ñ&=¸vÓFó
ˆð .×3Ô3ˆNÜ!Ô"2×"9Ò"9¸,Ó"GÓHˆCÜ(8×(?Ò(?ÀÓ(EˆN× Ñ  Ó%ó 4r%   c          
      óh   <€ V ^8„  d   QhRS[ RS[ RS[S[S[ ,          S[S[S[ 3,          3,          /# )r,   r]   rK   r.   )r   Útupler^   rN   rP   )r2   rQ   s   "€r&   r3   rR   à   s;   ø€ ÷ $ñ $Ùð$Ù$'ð$á	‰t‘C�y™$™s¡C˜x�.Ð(Õ	)ñ$r%   c                ó°   a € R V 3R llpV Uu. uF
  qC! V4      NK  	  ppVP                  4        UUu/ uF  w  rgWc! V4      bK  	  pppWX3# u upi u uppi )z9Get python values equivalent to the variable tracker argsc                ó0   € V ^8„  d   QhR\         R\         /# )r,   Úargr.   ©r   )r2   s   "r&   r3   Ú7OptimizerVariable.get_python_args.<locals>.__annotate__å   s   € ÷ 	&ñ 	&œð 	&¤ñ 	&r%   c                 óH  <€ \        V \        4      '       d'   V P                  4       '       d   V P                  4       # \        V \        4      '       d   V P
                  '       g   . # \        V \        4      '       d¡   \        V P                  \        4      '       d�   \        V P                  P                  \        4      '       dW   V P                  P                  P                  R 8X  d2   SP                  P                  V P                  P                  ,          # \        h)r„   )Ú
isinstancer   Úis_python_constantÚas_python_constantr   r¬   r   rv   r   Úbaser   ÚmemberrG   r„   r:   r   )rµ   rW   s   &€r&   Úmap_argÚ2OptimizerVariable.get_python_args.<locals>.map_argå   s¶   ø€ Ü˜#œ×/Ò/°C×4JÑ4J×4LÒ4LØ×-Ñ-Ó/Ð/Ü˜C¤×.Ò.°s·y·y°yà�	ä˜3Ô 1×2Ò2Ü˜sŸz™z¬=×9Ò9Ü˜sŸz™zŸ™´
×;Ò;Ø—J‘J—O‘O×*Ñ*¨nÔ<à—z‘z×.Ñ.¨s¯z©z×/?Ñ/?Õ@Ð@ä%Ð%r%   )r¬   )	rW   r]   rK   r¾   rµ   Únew_argsÚkÚvÚ
new_kwargss	   f*,      r&   rf   Ú!OptimizerVariable.get_python_argsà   s\   ø€ ÷
	&ð 	&ñ  -1Ó1©D S�G˜C–L©DˆÐ1Ø06·±´Ô?±©¨�a˜ ›’m±ˆ
Ñ?àÐ#Ð#ùò 2ùÛ?s
   �A´Ac                ó   <€ V ^8„  d   QhRR/# ©r,   r.   Nr   )r2   rQ   s   "€r&   r3   rR   ÿ   s   ø€ ÷ ;ñ ; $ñ ;r%   c                óò   € V P                   P                  P                  4        FN  w  rR V9   g   K  VR ,          P                  '       g   K)  VR ,          P	                  VP
                  4      VR &   KP  	  R# )ÚstepN)rG   r¤   r¬   Úis_cpuÚtor9   )rW   r‡   r¤   s   &  r&   re   Ú"OptimizerVariable.move_step_if_cpuÿ   sS   € ØŸ
™
×(Ñ(×.Ñ.Ö0‰HˆAØ˜Ž 5¨¥=×#7×#7Ò#7Ø % f¥× 0Ñ 0°·±Ó :��f“ó 1r%   c                ó"   <€ V ^8„  d   QhRRRR/# r|   r   )r2   rQ   s   "€r&   r3   rR     s!   ø€ ÷ hñ hÐ1Lð hÐQUñ hr%   c                ó¬	  a€ ^RI Ho ^RIHp / V n        / V n        R V3R llp\        \        P                  W0P                  P                  4       V P                  ;'       d    \        V P                  R4      pVP                  \        P                  ! WP                  P                   V4      4      pV P                  ;'       d    \        V P                  R4      p\        P                  ! WP                  P                  V4      pVP#                  4        Vf   \%        R4      hVP&                  P(                  P+                  V4       \-        V P                  P                   VP.                  4       EFP  w  r‰\1        VR	,          4      ^ 8”  dÁ   VR	,           F³  p
V
P2                  f   K  Rp\5        V P                  P                  P7                  4       4       F  w  rÍWÚJ g   K  Tp M	  V'       g   K^  VP                  \        P                  ! VV P                  P                  V
,          \9        V\;        Wk4      4      4      4        M	  V	P=                  V\>        P@                  ! R	4      4      pR
p. p\-        VR	,          \C        W4      4       FÁ  w  ppVP                  pVf   \%        RV R24      hVV P
                  V&   \E        VR4      pVP2                  eL   VV P                  VP2                  &   \G        VP2                  4      '       g   RpVPI                  V4       K—  K™  \K        VPM                  \N        PP                  4      4       KÃ  	  V'       d   EKó  \R        PU                  \V        PX                  4      '       g   EK  V Uu. uF  pVPZ                  NK  	  pp\R        P]                  RV4       EKS  	  \5        V P                  P                  P_                  4       4       FÏ  w  pp\9        V\;        VV4      4      pVP&                  P(                  P+                  V4       \5        VP_                  4       4       Fq  w  pp\a        V\        P                  4      '       g   K(  VV P                  9  g   K;  VV P
                  9  g   KN  \9        V\;        VV4      4      V P
                  V&   Ks  	  KÑ  	  R# u upi )r,   r~   r�   c                ó(   € V ^8„  d   QhR\         RR/# )r,   r-   r.   Nr¶   )r2   s   "r&   r3   ÚFOptimizerVariable.map_sources_and_install_guards.<locals>.__annotate__  s   € ÷ 	/ñ 	/œ3ð 	/ 4ñ 	/r%   c                 ó   <€ S! V R R7       R# )Tr�   Nr   )r-   r   s   &€r&   Úmark_staticÚEOptimizerVariable.map_sources_and_install_guards.<locals>.mark_static  s   ø€ Ù ¨×.r%   r„   r¤   Nzstate_source must not be Noner€   Tzparam z does not have a sourceÚgradF)zÏGrad tensors %s will be copied during cudagraphs execution.If using cudagraphs and the grad tensor addresses will be the same across runs, use torch._dynamo.decorators.mark_static_address to elide this copy.)1rƒ   r   Úlazyrž   rH   rJ   r   r/   r0   rG   r¤   rv   r   rª   r   r«   r„   Úrealizer?   r‘   Úguard_on_key_orderÚaddÚzipr¬   ÚlenrÓ   Ú	enumerateÚkeysr   r   Úgetitem_constr   rl   r   r   rC   Úappendr
   Ú
make_guardr	   ÚCONSTANT_MATCHÚperf_hint_logÚisEnabledForÚloggingÚDEBUGr\   ÚwarningÚvaluesr¹   )rW   r[   rž   rÑ   Úparams_groups_sourcer­   Ústate_sourceÚstate_vtr†   Úgroup_vtÚparamÚ	key_indexÚirÁ   Ú	params_vtÚ
all_staticÚnon_static_gradsr‡   Úp_vtÚparam_sourceÚgrad_sourceÚsrcÚnon_static_grad_namesÚidxrG   Úp_state_sourceÚ	inner_idxrÂ   r   s   &&                          @r&   rg   Ú0OptimizerVariable.map_sources_and_install_guards  sÚ  ø€ Ý4Ý-à ˆÔØ "ˆÔ÷	/ð 	/ô 	”e—l‘l K·±×1AÑ1AÔBð  $Ÿ{™{×VÐV¬z¸$¿+¹+À~Ó/VÐØ-×9Ñ9Ü×!Ò! "§j¡j×&=Ñ&=Ð?SÓTó
ˆð —{‘{×GÐG¤z°$·+±+¸wÓ'GˆÜ"×(Ò(¨¯Z©Z×-=Ñ-=¸|ÓLˆð 	×ÑÔØÒÜ Ð!@ÓAÐAØ
�	‰	×$Ñ$×(Ñ(¨Ô6ô  # 4§:¡:×#:Ñ#:¸O×<QÑ<Q×R‰OˆEô �5˜•?Ó# aÔ'Ø" 8Ÿ_˜_�EØ—z‘zÔ-Ø$(˜	Ü$-¨d¯j©j×.>Ñ.>×.CÑ.CÓ.EÖ$F™D˜AØ �zØ,- 	Ù %ñ %G÷ %™9Ø/×;Ñ;Ü /× 5Ò 5Ø$&Ø$(§J¡J×$4Ñ$4°UÕ$;Ü$5Ø(4Ü(:¸<Ó(Só%&ó!"ô	ñ "ñ% -ð( !×.Ñ.¨rÔ3C×3JÒ3JÈ8Ó3TÓUˆIØˆJØ!ÐÜ˜u X�´ÀÓ0NÖO‘��4Ø#Ÿ{™{�ØÒ'Ü(¨6°!°Ð4KÐ)LÓMÐMØ+7�×%Ñ% aÑ(Ü(Ø Øó�ð
 —6‘6Ò%Ø2=�D×'Ñ'¨¯©Ñ/Ü4°Q·V±V×<Ò<Ø%*˜
Ø(×/Ñ/°Ö<ñ =ô " +×"8Ñ"8¼×9TÑ9TÓ"UÖVñ! P÷( ’:¤-×"<Ñ"<¼W¿]¹]×"KÕ"KÙ=MÓ(NÑ=M°c¨¯¬Ñ=MÐ%Ð(NÜ×%Ñ%ðð
 *÷ñc  Sôx $ D§J¡J×$4Ñ$4×$;Ñ$;Ó$=Ö>‰JˆC�Ü.ØÔ0°¸sÓCóˆNð �I‰I×(Ñ(×,Ñ,¨^Ô<Ü )¨%¯,©,«.Ö 9‘�	˜1ä˜q¤%§,¡,×/Ô/Ø ×!4Ñ!4Ö4Ø ×!6Ñ!6Ö6ä/@Ø&Ô(:¸>È9Ó(Uó0�D×)Ñ)¨!Ó,ó !:ó ?ùò )Os   ÎSc                ó>   <€ V ^8„  d   QhRRRS[ P                  RS[/# )r,   r[   r   Útensor_valuer.   )r/   r0   r   )r2   rQ   s   "€r&   r3   rR   n  s)   ø€ ÷ ?ñ ?Ø-ð?Ù=B¿\¹\ð?á	ñ?r%   c                ó.  € ^RI Hp W P                  9   d]   V! VRR7       V P                  V,          pV P                  P	                  VP
                  P                  VP                  4      4       M�W P                  9   d   V P                  V,          pMiV! VRR7       VP                  \        V4      p\        V4      pV P                  P	                  VP
                  P                  VP                  4      4       \        P                  ! WV4      # )z%Wrap state tensor in a TensorVariabler~   Tr�   )rƒ   r   rJ   rI   r×   r‘   Úmodule_key_namer\   rH   rj   r   r   r   r«   )rW   r[   rú   r   rv   Úglobal_names   &&&   r&   Úwrap_tensorÚOptimizerVariable.wrap_tensorn  sÕ   € õ 	5ð ×0Ñ0Ô0á °DÕ9Ø×*Ñ*¨<Õ8ˆFØ×$Ñ$×(Ñ(¨¯©×)BÑ)BÀ6Ç;Á;Ó)OÕPØ×0Ñ0Ô0Ø×(Ñ(¨Õ6‰Fñ   °DÕ9à×7Ñ7Ô8IÈ<ÓXˆKÜ(¨Ó5ˆFØ×$Ñ$×(Ñ(¨¯©×)BÑ)BÀ6Ç;Á;Ó)OÔPä×$Ò$ R°vÓ>Ð>r%   c                óZ   <€ V ^8„  d   QhRRRS[ S[,          RS[RS[ S[,          RS[RR/# )	r,   r[   r   r]   rK   rm   rn   r.   N)r   r   r   )r2   rQ   s   "€r&   r3   rR   Š  sX   ø€ ÷ Qñ Qà'ðQñ ‘Õ'ðQñ ð	Qñ
 ™#•ðQñ ðQð 
ñQr%   c           	     ób  € \        W$4       EF  w  rg\        V\        4      '       g   K  \        V\        4      '       g   \	        R4      h\        V4       FÐ  w  r‰VP                  P                  P                  V4       \        V	\        P                  4      '       d-   VP                  P                  V P                  W4      4       Kv  VP                  ;'       d    \        VP                  V4      p
VP                  P                  \         P"                  ! WV
4      4       KÒ  	  EK!  	  R# )z7Update the args and kwargs to the traced optimizer callz-py_arg should be a list in optimizer variableN)rØ   r¹   r   r^   r?   rÚ   r‘   r’   Úmutationr/   r0   r¬   rÝ   rþ   rv   r   r   r«   )rW   r[   r]   rK   rm   rn   rµ   Úpy_argrì   Úvalrv   s   &&&&&&     r&   rh   Ú"OptimizerVariable.update_list_argsŠ  sÓ   € ô ˜t×-‰KˆCÜ˜#œ|×,Ô,Ü! &¬$×/Ò/Ü(ØGóð ô (¨Ö/‘F�AØ—I‘I×*Ñ*×3Ñ3°CÔ8Ü! #¤u§|¡|×4Ò4ØŸ	™	×(Ñ(¨×)9Ñ)9¸"Ó)BÖCà!$§¡×!LÐ!L´¸c¿j¹jÈ!Ó0L˜ØŸ	™	×(Ñ(¬×)>Ò)>¸rÈÓ)OÖPô 0ó .r%   c                ó"   <€ V ^8„  d   QhRRRR/# r|   r   )r2   rQ   s   "€r&   r3   rR   ¡  s   ø€ ÷ 6ñ 6Ð#>ð 6À4ñ 6r%   c                ó´   aaa€ V P                   oV P                  oVP                  P                  oR  VVV3R llpVP                  P	                  V4       R# )c                óP   € V ^8„  d   QhR\         P                  P                  RR/# )r,   Úgmr.   N)r/   ÚfxÚGraphModule)r2   s   "r&   r3   Ú8OptimizerVariable.create_finalizer.<locals>.__annotate__¦  s$   € ÷ 
	>ñ 
	>œuŸx™x×3Ñ3ð 
	>¸ñ 
	>r%   c                 óN   <a € R  V VV3R llp\         P                  ! SV4       R# )c                ó   € V ^8„  d   QhRR/# rÆ   r   )r2   s   "r&   r3   ÚPOptimizerVariable.create_finalizer.<locals>.init_finalizer.<locals>.__annotate__§  s   € ÷ Añ A¨dñ Ar%   c                  ó>  <€ S F•  p SP                   P                  V R 4       SP                  P                  V R 4       SP                  '       d   SP                  P	                  4        SP
                  '       g   K{  SP
                  P	                  4        K—  	  R # rT   )Ú_buffersÚpopÚ_parametersÚparams_flatÚclearÚparams_flat_unwrap_subclasses)r\   r	  Únames_to_deleteÚtcs    €€€r&   Úclear_static_tensor_refsÚ\OptimizerVariable.create_finalizer.<locals>.init_finalizer.<locals>.clear_static_tensor_refs§  sj   ø€ Û+�DØ—K‘K—O‘O D¨$Ô/Ø—N‘N×&Ñ& t¨TÔ2Ø—~—~�~ØŸ™×,Ñ,Ô.Ø×7×7Ò7Ø×8Ñ8×>Ñ>Ö@ó ,r%   N)ÚweakrefÚfinalize)r	  r  r  r  rG   s   f €€€r&   Úinit_finalizerÚ:OptimizerVariable.create_finalizer.<locals>.init_finalizer¦  s"   ù€ ÷Aò Aô ×Ò˜UÐ$<Ö=r%   N)rI   rG   r‘   Útracing_contextÚadd_graph_finalizer)rW   r[   r  r  r  rG   s   && @@@r&   rk   Ú"OptimizerVariable.create_finalizer¡  sD   ú€ Ø×2Ñ2ˆØ—
‘
ˆØ�Y‰Y×&Ñ&ˆ÷
	>ò 
	>ð 	�	‰	×%Ñ% nÖ5r%   )rH   rI   rJ   rG   >   rH   rJ   rI   )NNN)r    r!   r"   r#   r   Ú_nonvar_fieldsrV   rc   ry   rˆ   r   Ú	tp_getsetrd   r…   rf   re   rg   rþ   rh   rk   r$   Ú__classdictcell__Ú__classcell__)rX   rQ   s   @@r&   rE   rE   X   sÁ   ù‡ € òð 
#×	1Ñ	1ð	€N÷@õ @÷";ó ";÷L
ð 
÷ð ð 	‘v˜oÓ.Ø™Ð0Ó1ð€I÷
ð ÷&Fð F÷<$ð $÷>;ð ;÷
hð h÷T?ð ?÷8Qð Q÷.6÷ 6ð 6r%   rE   )6Ú__doc__râ   r  Úcollections.abcr   Útypingr   r   r/   Útorch._dynamo.variables.tensorr   Útorch._guardsr   Útorch._loggingr   Útorch.utils._pytreer   Úguardsr	   r
   rv   r   r   r   r   r   r   r<   r   r   r¼   r   r   Úconstantr   Údictsr   Úhashabler   Úlistsr   Úmiscr   Úuser_definedr   Útorch._dynamo.symbolic_convertr   Ú	Exceptionr   r)   r    rà   rC   rE   r   r%   r&   Ú<module>r6     s�   ðñó, Û Ý $ß %ã Ý 9Ý  Ý ,Ý -ç 0÷÷ ÷ 7ß )Ý &Ý $Ý %Ý Ý !Ý 3÷ ÝHô	˜)ô 	ô	˜Iô 	ñ " (¨LÓ9€õô(Z6Ð1ö Z6r%   