o
    Ti^                  
   @   s`   d dl mZ zddlZW n ey Z zW Y dZ[ndZ[ww G dd dZG dd deZdS )   )NPUOpBuilder    Nc                   @   s   e Zd Zedd ZdS )NPUFusedAdamc                 G   s   ||d  }||d  }t t|d D ]M}|d | }|d | }|d | }|d | }|rJtj||||
||||d dd|j||fd\|_}}qtj|||||||dd|j||fd
\|_}}qd S )Nr   r         F)out)rangelen	torch_npunpu_apply_adam_wdatanpu_apply_adam)
chunk_sizenoop_flag_buffertensor_listslrbeta1beta2epsilonstepadam_w_modebias_correctionweight_decayargsbias_correction1bias_correction2i	grad_flat
param_flatm_flatv_flat r!   [/home/ubuntu/.local/lib/python3.10/site-packages/deepspeed/ops/op_builder/npu/fused_adam.pymulti_tensor_adam   sF   

zNPUFusedAdam.multi_tensor_adamN)__name__
__module____qualname__staticmethodr#   r!   r!   r!   r"   r      s    r   c                       sF   e Zd ZdZdZ fddZdd Zdd Zd	d
 ZdddZ	  Z
S )FusedAdamBuilderDS_BUILD_FUSED_ADAM
fused_adamc                    s   t  j| jd d S )N)name)super__init__NAMEself	__class__r!   r"   r-   =   s   zFusedAdamBuilder.__init__c                 C   s   d| j  dS )Nzdeepspeed.ops.adam._op)r.   r/   r!   r!   r"   absolute_name@   s   zFusedAdamBuilder.absolute_namec                 C      g S Nr!   r/   r!   r!   r"   sourcesC      zFusedAdamBuilder.sourcesc                 C   r5   r6   r!   r/   r!   r!   r"   include_pathsF   r8   zFusedAdamBuilder.include_pathsTc                 C   s   t S r6   )r   )r0   verboser!   r!   r"   loadI   r8   zFusedAdamBuilder.load)T)r$   r%   r&   	BUILD_VARr.   r-   r4   r7   r9   r;   __classcell__r!   r!   r1   r"   r(   9   s    r(   )builderr   r
   ImportErrorer   r(   r!   r!   r!   r"   <module>   s   +