
    Vhr                         U d dl mZ 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)    )OptionalN)Tensor)2_scripted_functional_optimizer_deprecation_warning__all__c                   b    e Zd Z	 	 	 	 	 	 	 ddee   dededededededefd	Zd
eee      fdZ	y)_FunctionalAdadeltaparamslrrhoepsweight_decayforeachmaximize_allow_empty_param_listc	                 F   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   z%optimizer got an empty parameter listr	   )r   defaultsr   r   len
ValueErrorparam_grouptorchjitannotatedictr   strstate)	selfr	   r
   r   r   r   r   r   r   s	            [/home/dcms/DCMS/lib/python3.12/site-packages/torch/distributed/optim/functional_adadelta.py__init__z_FunctionalAdadelta.__init__   s     	;aH(	
  v;!$;DEE %f-YY''U\\4U\\@Q;R-R(SUWX
    	gradientsc                 T   | j                   d   }g }g }g }g }g }| 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<   t        j                  |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
   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_avg	acc_delta)r
   r   r   r   r   r   has_complex)r   r   r   r   zipr   
is_complexappendr   tensor
zeros_likepreserve_formatno_gradFadadeltar   r   )r   r"   r	   params_with_gradgradssquare_avgs
acc_deltasstate_stepsr
   r   r   r   r)   paramgradientr   s                   r   r%   z_FunctionalAdadelta.step8   s   !!(+
]]4 mmE"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,' */)9)9U-B-B*E+& 

5)""5#67!!%"45""5=1)	2, ]]_ 	JJ )'	 	 	s   6HH'N)g      ?g?gư>r$   FFF)
__name__
__module____qualname__listr   floatboolr    r   r%    r!   r   r   r      s    
 !(-YVY Y 	Y
 Y Y Y Y "&Y<7d8F#34 7r!   r   )typingr   r   torch.optim._functionaloptim_functionalr1   r   ,torch.distributed.optim._deprecation_warningr   r   r=   r   __annotations__r   scriptr   r@   r!   r   <module>rH      sO      # # 
 c  V V Vr!   