Ë
    éÓ^j©  ã            	       ó^  — d Z ddlmZmZmZmZ ddlZddlmZ dej                  fd„Z		 	 	 ddee
ef   deej                     defd	„Zddeej                     defd
„Zdefd„Zd„ Zddedee   fd„Z	 ddee   dee   deddfd„Zddede
dee
   ddfd„Zdededdfd„Zdedededdfd„Zy) zASmall optimizer helpers shared by timm optimizer implementations.é    )ÚListÚOptionalÚSequenceÚUnionN)ÚTensorÚreturnc                  óŒ   — t        j                  «       t         j                  k(  rt         j                  S t         j                  S ©N)ÚtorchÚget_default_dtypeÚfloat64Úfloat32© ó    ú^/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/optim/_helpers.pyÚ_get_scalar_dtyper   	   s)   € Ü!×3Ñ3Ó5¼¿¹ÒFŒ5�=‰=ÐYÌEÏMÉMÐYr   ÚvalueÚdtypec                 ó6  — t        | t        «      rf|xs | j                  }|€| j                  nt	        j                  |«      }| j                  |k(  r| j                  |k(  r| S | j                  ||¬«      S t	        j                  | |xs
 t        «       |¬«      S )N©Údevicer   ©r   r   )Ú
isinstancer   r   r   r   ÚtoÚtensorr   )r   r   r   s      r   Ú_init_scalarr      s   € ô
 �%œÔ ØÒ$˜Ÿ™ˆØ!' �—’´U·\±\À&Ó5IˆØ�<‰<˜6Ò! e§k¡k°UÒ&:ØˆLØ�x‰x˜v¨UˆxÓ3Ð3Ü�<‰<˜ UÒ%AÔ.?Ó.AÈ&ÔQÐQr   c                 óJ   — t        j                  d|xs
 t        «       | ¬«      S )Nr   r   )r   Úzerosr   r   s     r   Ú_zeros_scalarr      s   € Ü�;‰;�r Ò!=Ô*;Ó*=ÀfÔMÐMr   c                  ó”   — t        t        d«      r8t        t        j                  d«      rt        j                  j                  «       S y)NÚcompilerÚis_compilingF)Úhasattrr   r!   r"   r   r   r   Ú_is_compilingr$      s/   € ÜŒu�jÔ!¤g¬e¯n©n¸nÔ&MÜ�~‰~×*Ñ*Ó,Ð,Ør   c                 ó®   — t         j                  j                  «       st        «       r| S t	        | t         j
                  «      r| j                  «       S | S r
   )r   ÚjitÚis_scriptingr$   r   r   Úitem)Úxs    r   Ú
_get_valuer*   %   s9   € ä�9‰9×!Ñ!Ô#¬¬ØˆÜ! !¤U§\¡\Ô2ˆ1�6‰6‹8Ð9¸Ð9r   Úsupports_xlac                 óê   — g d¢}t         j                  j                  «       s.	 |j                  t         j                  j                  «       «       | r|j                  d«       |S # t        $ r Y Œ w xY w)N)ÚcudaÚxpuÚhpuÚxla)r   r&   r'   ÚappendÚ_CÚ_get_privateuse1_backend_nameÚAttributeError)r+   Úcapturable_supported_devicess     r   Ú!_get_capturable_supported_devicesr6   ,   se   € Ú#9Ð Ü�9‰9×!Ñ!Ô#ð	Ø(×/Ñ/´·±×0VÑ0VÓ0XÔYñ Ø$×+Ñ+¨EÔ2Ø'Ð'øô	 ò 	Ùð	ús   ¤-A& Á&	A2Á1A2ÚparamsÚstate_stepsc                 óp   ‡— t        |¬«      Št        ˆfd„t        | |«      D «       «      sJ d‰› d�«       ‚y )N)r+   c              3   ó²   •K  — | ]N  \  }}|j                   j                  |j                   j                  k(  xr |j                   j                  ‰v –— ŒP y ­wr
   )r   Útype)Ú.0ÚpÚstepr5   s      €r   ú	<genexpr>z,_check_capturable_devices.<locals>.<genexpr>>   sJ   øè ø€ ò áˆAˆtð 	
�‰�‰˜Ÿ™×)Ñ)Ñ)Ò[¨a¯h©h¯m©mÐ?[Ð.[Ó[ñùs   ƒAAzIIf capturable=True, params and state_steps must be on supported devices: ú.)r6   ÚallÚzip)r7   r8   r+   r5   s      @r   Ú_check_capturable_devicesrC   8   sQ   ø€ ô
 $EÐR^Ô#_Ð Üó ä˜6 ;Ó/ôô ð sð 
SÐSoÐRpÐpqÐrósñ r   ÚnameÚ	min_valueÚ	max_valuec                 ó  — t        j                  |«      rI|j                  «       dk7  rt        | › d�«      ‚t	        |j                  «       j                  «       «      }nt	        |«      }||k  s|�||k\  rt        d| › d|› �«      ‚y y )Né   z# must be a scalar or scalar tensor.zInvalid z: )r   Ú	is_tensorÚnumelÚ
ValueErrorÚfloatÚdetachÚcpu)rD   r   rE   rF   Úvalue_floats        r   Ú_validate_scalarrP   D   s†   € Ü‡��uÔØ�;‰;‹=˜AÒÜ ˜vÐ%HÐIÓJÐJÜ˜EŸL™L›N×.Ñ.Ó0Ó1‰ä˜E“lˆØ�YÒ 9Ð#8¸[ÈIÒ=UÜ˜8 D 6¨¨E¨7Ð3Ó4Ð4ð >VÐ#8r   ÚparamÚupdatec                 ó~   — t        j                  |«      r| j                  ||z  «       y | j                  ||¬«       y )N)Úalpha)r   rI   Úadd_)rQ   rR   Úscales      r   Ú_add_scaled_rW   O   s.   € Ü‡��uÔØ�
‰
�6˜E‘>Õ"à�
‰
�6 ˆ
Õ'r   Útensor1Útensor2c                 ó†   — t        j                  |«      r| j                  ||z  |z  «       y | j                  |||¬«       y )N)r   )r   rI   rU   Úaddcdiv_)rQ   rX   rY   rV   s       r   Ú_addcdiv_scaled_r\   V   s6   € Ü‡��uÔØ�
‰
�7˜WÑ$ uÑ,Õ-à�‰�w ¨uˆÕ5r   )ç        NN)NN)T)r]   N)Ú__doc__Útypingr   r   r   r   r   r   r   r   rL   r   r   Úboolr$   r*   Ústrr6   rC   rP   rW   r\   r   r   r   ú<module>rb      sO  ðÙ Gç 2Ó 2ã Ý ðZ˜5Ÿ;™;ó Zð
 '*ØØ'+ñRØ�U˜F�]Ñ#ðRð ˜Ÿ™Ñ$ðRð ó	RñN h¨u¯{©{Ñ&;ð NÀvó Nð�tó ò:ñ	(°Dð 	(ÀDÈÁIó 	(ð "ñ	sØ˜Ñ ð	sà˜fÑ%ð	sð ð	sð 
ó		sñ5˜3ð 5°%ð 5È(ÐSXÉ/ð 5Ðeió 5ð(˜ð (¨ð (¸$ó (ð6˜Fð 6¨Vð 6¸fð 6ÐPTô 6r   