
    i-                         U d dl Z d dlmc mZ d dl mZ d dlmZ g Ze	e
   ed<   e j                  j                   G d d             Zy)    N)Tensor)2_scripted_functional_optimizer_deprecation_warning__all__c                   n    e Zd Z	 	 	 	 	 	 	 	 	 ddee   dededededededed	ed
efdZdeedz     fdZy)_FunctionalRMSpropparamslralphaepsweight_decaymomentumcenteredforeachmaximize_allow_empty_param_listc                 V   t        d       |||||d| _        || _        || _        |	| _        t        |      dk(  r|
st        d      d|i| _        t        j                  j                  t        t        j                  t        t        t        j                  f   f   i       | _        y )N   )
stacklevel)r	   r
   r   r   r   r   z%optimizer got an empty parameter listr   )r   defaultsr   r   r   len
ValueErrorparam_grouptorchjitannotatedictr   strstate)selfr   r	   r
   r   r   r   r   r   r   r   s              d/var/www/html/engine/venv/lib/python3.12/site-packages/torch/distributed/optim/functional_rmsprop.py__init__z_FunctionalRMSprop.__init__   s     	;aH( 
 ! v;!$;DEE %f-YY''U\\4U\\@Q;R-R(SUWX
    	gradientsNc                 L   | j                   d   }g }g }g }g }g }g }| j                  d   }	| j                  d   }
| j                  d   }| j                  d   }| j                  d   }t        |      t        |      k7  r*t        ddt        |       d	z   d
t        |       z         d}t	        ||      D ]  \  }}|
|t        j                  |      z  }|j                  |       |j                  |       || j                  vri | j                  |<   | j                  |   }t        j                  d      |d<   t        j                  |t
        j                        |d<   |dkD  r(t        j                  |t
        j                        |d<   | j                  r(t        j                  |t
        j                        |d<   | j                  |   }|j                  |d          |dkD  r|j                  |d          | j                  r|j                  |d          |j                  |d           t        j                         5  t        j                  |||||||	|
|||| j                  | j                   | j"                  |       d d d        y # 1 sw Y   y xY w)Nr   r	   r
   r   r   r   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: F        step)memory_format
square_avgr   momentum_buffergrad_avg)	r	   r
   r   r   r   r   r   r   has_complex)r   r   r   r   zipr   
is_complexappendr   tensor
zeros_likepreserve_formatr   no_gradFrmspropr   r   )r   r#   r   params_with_gradgradssquare_avgs	grad_avgsmomentum_buffer_liststate_stepsr	   r
   r   r   r   r+   paramgradientr   s                     r    r&   z_FunctionalRMSprop.step;   s   !!(+	!]]4 g&mmE"==,}}^4v;#i.(W#CK=34&s9~&678  "695 	2OE8#u//66 ''.X&

*(*DJJu% JJu-E$)LL$5E&M*/*:*:U-B-B+E,'  !|383C3C!1F1F4/0 }},1,<,<!1F1F-j) 

5)""5#67a<(//6G0HI==$$U:%67""5=1;	2> ]]_ 	II $)!'	 	 	s   AJJ#)	g{Gz?gGz?g:0yE>r%   r%   FFFF)	__name__
__module____qualname__listr   floatboolr!   r&    r"   r    r   r      s    
 !(- YV Y  Y 	 Y
  Y  Y  Y  Y  Y  Y "& YDFd6D=1 Fr"   r   )r   torch.optim._functionaloptim_functionalr3   r   ,torch.distributed.optim._deprecation_warningr   r   r@   r   __annotations__r   scriptr   rC   r"   r    <module>rJ      sN     # # 
 c  i i ir"   