
    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                   p    e Zd Z	 	 	 	 	 	 ddee   dedeeef   deeef   dededefdZd	eed
z     fdZ	y
)_FunctionalRpropparamslretas
step_sizesforeachmaximize_allow_empty_param_listc                 \   t        d       d|i| _        || _        || _        || _        || _        t        |      dk(  r|st        d      d|i| _        t        j                  j                  t        t        j                  t        t        t        j                  f   f   i       | _        y )N   )
stacklevelr	   r   z%optimizer got an empty parameter listr   )r   defaultsr
   r   r   r   len
ValueErrorparam_grouptorchjitannotatedictr   strstate)selfr   r	   r
   r   r   r   r   s           b/var/www/html/engine/venv/lib/python3.12/site-packages/torch/distributed/optim/functional_rprop.py__init__z_FunctionalRprop.__init__   s     	;aH"
 	$ v;!$;DEE %f-YY''U\\4U\\@Q;R-R(SUWX
    	gradientsNc                    | j                   d   }g }g }g }g }g }| j                  d   }| j                  \  }	}
| j                  \  }}t	        |      t	        |      k7  r*t        ddt	        |       dz   dt	        |       z         d}t        ||      D ]  \  }}|
|t        j                  |      z  }|j                  |       |j                  |       || j                  vrwi | j                  |<   | j                  |   }t        j                  d      |d	<   t        j                  |t        j                  
      |d<   t        j                  ||      |d<   | j                  |   }|j                  |d          |j                  |d          |j                  |d	           t        j                         5  t!        j"                  ||||||||	|
| j$                  | j&                  |       d d d        y # 1 sw Y   y xY w)Nr   r	   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: Fg        step)memory_formatprev	step_size)step_size_minstep_size_maxetaminusetaplusr   r   has_complex)r   r   r
   r   r   r   zipr   
is_complexappendr   tensor
zeros_likepreserve_format	full_likeno_gradFrpropr   r   )r   r    r   params_with_gradgradsprevsr   state_stepsr	   r(   r)   r&   r'   r*   paramgradientr   s                    r   r"   z_FunctionalRprop.step5   s    !!(+
]]4  II''+$}v;#i.(W#CK=34&s9~&678  "695 	2OE8#u//66 ''.X&

*(*DJJu% JJu-E$)LL$5E&M$)$4$4U-B-B%E&M */2)FE+&

5)U6]+!!%"45""5=1%	2( ]]_ 	GG ++!'	 	 	s   6H  H	)g{Gz?)g      ?g333333?)gư>2   FFF)
__name__
__module____qualname__listr   floattupleboolr   r"    r   r   r   r      s    
 $.*4(-YVY Y E5L!	Y
 %,'Y Y Y "&Y85d6D=1 5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  R R Rr   