
    Αi                         S SK r S SKJr  S SKJr  SSKJr  / r\R                  R                  r	\R                  R                  5       r\R                  R                  5       rS rS rS rS	 r " S
 S5      rg)    N)core)unique_name   )wait_server_readyc                 x    SU R                   ;   =(       a%    SU R                   ;   =(       a    SU R                   ;   $ )NParamGradLearningRate)input_namesops    o/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/fleet/meta_optimizers/common.pyis_update_opr      s5    2>>! 	-bnn$	-bnn,    c                     [         U R                  ;  a  g[        U R                  5       [            5      nU[        [        R
                  5      -  =(       a    U[        [        R                  5      -  $ )NF)OP_ROLE_KEY
attr_namesint	all_attrsOpRoleBackwardLoss)r   op_roles     r   is_loss_grad_opr   &   sM    "--'",,.-.GS))HgFKK8H.HHr   c                     [         U R                  ;   =(       a:    [        U R                  5       [            5      [        [        R
                  5      -  $ N)r   r   r   r   r   r   r   s    r   is_backward_opr   -   >    "--' C
{#-FOO- r   c                     [         U R                  ;   =(       a:    [        U R                  5       [            5      [        [        R
                  5      -  $ r   )r   r   r   r   r   Optimizer   s    r   is_optimizer_opr!   3   r   r   c                   B    \ rS rSrS	S jrS
S jr  SS jrS rS rSr	g)CollectiveHelper9   c                 (    X l         X0l        Xl        g r   )nrings	wait_port
role_maker)selfr(   r&   r'   s       r   __init__CollectiveHelper.__init__:   s    "$r   Nc           	         Xl         Uc#  [        R                  R                  5       U l         U R                  R                  5       nX R                  R                  5          n[        U R                  5       HE  nU R                  U R                   UUU R                  R                  5       UU R                  5        MG     U R                  5         g r   )startup_programpaddlestaticdefault_startup_programr(   _get_trainer_endpoints_worker_indexranger&   _init_communicatorr'   _broadcast_params)r)   r-   	endpointscurrent_endpointring_ids        r   update_startup_program'CollectiveHelper.update_startup_program?   s    ."#)==#H#H#JD OO::<	$__%B%B%DET[[)G##$$ --/ * 	 r   c	                   ^ SR                  U5      n	U(       a!  [        U5      n
US S  nUR                  U5        U4S jnUR                  5       nUc  Ub   eU(       d   eU" U5        g UR	                  [
        R                  " S5      S[        R                  R                  R                  S9n[        R                  " 5       (       aa  UR                  S0 SU0SUS	US
WSU[        [        R                  0S9  UR                  SSU00 SW
SUSUSU	[        [        R                  0S9  O[        R                   " 5       (       aa  UR                  S0 SU0SUS	US
WSU[        [        R                  0S9  UR                  SSU00 SW
SUSUSU	[        [        R                  0S9  O[#        S5      eU(       a	  U" U5        g g )N,c                   > U R                  [        R                  " S5      [        R                  R
                  R                  SSS9nU R                  S0 SU/0SS/S	UR                  S
SSS[        [        R                  0S9  U R                  SSU/0SU/0STS[        R                  R                  R                  [        [        R                  0S9  U R                  SSU0SU0[        [        R                  0S9  g )Nsync_varFT)namedtypepersistablestop_gradientfill_constantOutshape   r@   value	force_cputypeinputsoutputsattrs
all_reducexoutr8   reduce_typec_sync_calc_streamX)
create_varr   generater   VarDescVarTypeINT32	append_opr@   r   r   Forwardr.   distributedReduceOpSUM)blockr>   global_ring_ids     r   _add_sync_by_allreduceCCollectiveHelper._init_communicator.<locals>._add_sync_by_allreduced   s   '' ))*5ll**00!"	 ( H OO$
+aSX^^Q	   OO!hZ(
+~!6#5#5#>#>#B#B	  	 OO)X)"FNN3	  r   comm_idT)r?   rA   rJ   c_gen_nccl_idrD   rankendpointother_endpointsr8   rI   c_comm_initrS   nranksr6   c_gen_bkcl_idzBcomm_id must be generated in paddlepaddle-xpu or paddlepaddle-xpu.)joinlenremoveglobal_blockrT   r   rU   r   rV   rW   RAWis_compiled_with_cudarY   r   r   rZ   is_compiled_with_xpu
ValueError)r)   programr7   r6   rd   r8   r'   r_   syncendpoints_strrh   rf   r`   r^   comm_id_vars          `       r   r4   #CollectiveHelper._init_communicatorQ   s    +^F'lO""#34"	H $$&#$$$K4"5)&&%%i0%%)) ' 

 %%''OO$,D 0%w	   OO"[)fDw	   &&((OO$,D 0%w	   OO"[)fDw	   T  "5) r   c                 l    U R                   (       d   eUS S  nUR                  U5        [        U5        g r   )r'   rl   r   )r)   r7   r6   rf   s       r   _waitCollectiveHelper._wait   s.    ~~~#A,/0/*r   c                    U R                   R                  5       nSnUR                  5        HV  nUR                  (       a  M  US-   U R                  -  nUR                  SSU0SU0SUSS[        [        R                  0S	9  MX     [        U R                  5       H/  nUR                  S
SW0SU0SU[        [        R                  0S	9  M1     g )NrF   	broadcastrO   rP   r8   rootr   rI   c_sync_comm_streamrS   rD   )
r-   rm   iter_parametersis_distributedr&   rY   r   r   rZ   r3   )r)   r^   r8   params       r   r5   "CollectiveHelper._broadcast_params   s    $$113**,E##{dkk1GOO U|wA	  	 -  T[[)GOO)U| ';G	   *r   )r&   r(   r-   r'   )rF   Tr   )NT)
__name__
__module____qualname____firstlineno__r*   r9   r4   rx   r5   __static_attributes__ r   r   r#   r#   9   s%    %
!4 z*x+r   r#   )r.   paddle.frameworkr   paddle.utilsr   base.private_helper_functionr   __all__op_proto_and_checker_makerr   kOpRoleAttrNamer   kOpRoleVarAttrNameOP_ROLE_VAR_KEYr   r   r   r!   r#   r   r   r   <module>r      sr      ! $ <
		(	(	/	/--==?11DDFIs sr   