
    [Th2                         % S SK Jr  S SKrS SKJs  Jr  S SKJr  S SKJ	r	  / r
\\   \S'   \R                  R                   " S S5      5       rg)    )OptionalN)Tensor)2_scripted_functional_optimizer_deprecation_warning__all__c                       \ rS rSr         SS\\   S\S\S\S\S\S\S	\S
\S\4S jjrS\S\	\   4S jr
S\\	\      4S jrSrg)_FunctionalSGD   paramslrmomentum	dampeningweight_decaynesterovmaximizeforeachfused_allow_empty_param_listc                 `   [        SS9  UUUUS.U l        X`l        Xpl        Xl        Xl        [        R                  R                  [        [        R                  [        [        [        R                  4   4   0 5      U l        [        U5      S:X  a  U
(       d  [        S5      eSU0U l        g )N   )
stacklevel)r   r   r   r   r   z%optimizer got an empty parameter listr
   )r   defaultsr   r   r   r   torchjitannotatedictr   strstatelen
ValueErrorparam_group)selfr
   r   r   r   r   r   r   r   r   r   s              ^/var/www/auris/envauris/lib/python3.13/site-packages/torch/distributed/optim/functional_sgd.py__init___FunctionalSGD.__init__   s     	;aH "(	
 ! 
YY''U\\4U\\@Q;R-R(SUWX
v;!$;DEE %f-    paramgradc                    U R                   S   nU R                   S   nU R                   S   nU R                   S   nU/n/ n/ n	Sn
Ub}  U	R                  U5        UR                  (       a  Sn
XR                  ;  a  0 U R                  U'   U R                  U   nSU;  a  UR                  S5        OUR                  US   5        [        R
                  " 5          [        R                  " UU	UUUUUU R                  U R                  U
U R                  U R                  SSS	9  SSS5        U R                  U   nUS
   nUb  XS'   gg! , (       d  f       N+= f)zKSimilar to self.step, but operates on a single parameter and
its gradient.
r   r   r   r   FNTmomentum_bufferr   r   r   r   r   r   has_sparse_gradr   r   
grad_scale	found_infr   )r   append	is_sparser   r   no_gradFsgdr   r   r   r   )r!   r&   r'   r   r   r   r   r
   momentum_buffer_listgradsr+   r   r)   s                r"   
step_param_FunctionalSGD.step_param;   sK    }}^4==,MM+.	]]4 79LL~~"&JJ&$&

5!JJu%E -$++D1$++E2C,DE]]_EE$)!# /jj $ 

5!.q1&'6#$ ') _s   A
E


E	gradientsc                    U R                   S   n/ n/ n/ nU R                  S   nU R                  S   nU R                  S   nU R                  S   n	[        U5      [        U5      :w  a*  [        SS[        U5       S3-   S	[        U5       3-   5      eS
n
[	        X!5       H  u  pUc  M
  UR                  U5        UR                  U5        UR                  (       a  Sn
XR                  ;  a  0 U R                  U'   U R                  U   nSU;  a  UR                  S 5        M  UR                  US   5        M     [        R                  " 5          [        R                  " UUUUUUU	U R                  U R                  U
U R                  U R                  S S S9  S S S 5        [!        U5       H"  u  pU R                  U   nX^   nUc  M  UUS'   M$     g ! , (       d  f       N@= f)Nr
   r   r   r   r   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: FTr)   r*   )r    r   r   r   zipr.   r/   r   r   r0   r1   r2   r   r   r   r   	enumerate)r!   r7   r
   params_with_gradr4   r3   r   r   r   r   r+   r&   gradientr   ipr)   s                    r"   step_FunctionalSGD.stepm   s   !!(+79]]4 }}^4==,MM+.	v;#i.(W#CK=34&s9~&678   "65OE# ''.X&%%&*O

*(*DJJu%

5)$E1(//5(//6G0HI  6  ]]_EE $)!# /jj & ./DAJJqME25O*+:'(	 0' _s   A
G
G%)r   r   r   r   r   r    r   N)	g{Gz?        rA   rA   FFFFF)__name__
__module____qualname____firstlineno__listr   floatboolr#   r   r5   r?   __static_attributes__ r%   r"   r   r      s    
 !(-.V. . 	.
 . . . . . . "&.B07 07hv.> 07d9;d8F#34 9;r%   r   )typingr   r   torch.optim._functionaloptim_functionalr1   r   ,torch.distributed.optim._deprecation_warningr   r   rF   r   __annotations__r   scriptr   rJ   r%   r"   <module>rR      sO      # # 
 c  M; M; M;r%   