
    Wj                         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dS )    N)Tensor)2_scripted_functional_optimizer_deprecation_warning__all__c                       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	dS )_FunctionalRprop{Gz?g      ?g333333?gư>2   Fparamslretas
step_sizesforeachmaximize_allow_empty_param_listc                 z   t          d           d|i| _        || _        || _        || _        || _        t          |          dk    r|st          d          d|i| _        t          j
                            t          t          j        t          t          t          j        f         f         i           | _        d S )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           m/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/distributed/optim/functional_rprop.py__init__z_FunctionalRprop.__init__   s     	;aHHHH"
 	$ v;;!$;DEEE %f-Y''U\4U\@Q;R-R(SUWXX


    	gradientsNc                 *   | j         d         }g }g }g }g }g }| j        d         }| j        \  }	}
| j        \  }}t	          |          t	          |          k    r6t          ddt	          |           dz   dt	          |           z             d}t          ||          D ]\  }}||t          j        |          z  }|	                    |           |	                    |           || j
        vrii | j
        |<   | j
        |         }t          j        d          |d	<   t          j        |t          j        
          |d<   t          j        ||          |d<   | j
        |         }|	                    |d                    |	                    |d                    |	                    |d	                    t          j                    5  t!          j        ||||||||	|
| j        | j        |           d d d            d S # 1 swxY w Y   d S )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  I''+$}v;;#i..((W3CKK33347s9~~778   "6955 	2 	2OE8#u/666 ''...X&&&
**(*DJu% Ju-E$)L$5$5E&M$)$4U-B% % %E&M */2)F)FE+&
5)U6]+++!!%"4555""5=111]__ 	 	G ++!'   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   +HHH)r   r	   r
   FFF)
__name__
__module____qualname__listr   floattupleboolr"   r&    r#   r!   r   r      s        
 $.*4(-Y YVY Y E5L!	Y
 %,'Y Y Y "&Y Y Y Y85d6D=1 5 5 5 5 5 5r#   r   )r   torch.optim._functionaloptim_functionalr7   r   ,torch.distributed.optim._deprecation_warningr   r   rB   r   __annotations__r   scriptr   rF   r#   r!   <module>rM      s     # # # # # # # # #           
 c    R R R R R R R R R Rr#   