
    ϑi6                     N    S SK r S SKJrJrJrJr  S SKJr  SS jrSS jr	S	S jr
g)
    N)_assign_pos_limit_by_capacity_number_count_prune_gate_by_capacity)in_dynamic_modec                    Ub  UR                  5       (       d  g [        5       (       a  Uc(  [        R                  R                  R                  5       OUn[        R                  " U R                  U R                  5      nUR                  R                  X05      nUR                  5         U$ Uc  SOUR                  n[        R                  R                  X5      $ )Nr   )	is_memberr   paddledistributed
collective_get_default_groupemptyshapedtypeprocess_groupalltoallwaitid_C_ops
all_to_all)in_tensor_listgroupuse_calc_streamouttaskring_ids         l/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/incubate/distributed/models/moe/utils.py	_alltoallr       s    !2!2 } ))<<> 	
 ll>//1E1EF""++C@		
}!%((}}''@@    c                     X-  n[         R                  " 5          [        X5      nUS:  a
  [        XdS9nOUnU(       d  S nO [         R                  " USS9n	[        X	5      nS S S 5        WWW4$ ! , (       d  f       N= f)N   r   r   )axis)r
   no_gradr   r   cumsumr   )
gate
num_expert
world_sizerequire_posr   total_expert_countlocal_expert_countglobal_expert_countposlec_cums
             r   count_by_gater/   3   s{    #0		*4D>"+,>"L"4Cmm$6Q?Gd,C 
 "$777 
	s   AA//
A=c           	      N   [         R                  " 5          [         R                  " U/[         R                  S9U-  n[	        XUSUS9u  pVn[        XsU5      nUS:  a  UR                  U:X  d   e[        XS9n	OUn	[        X	X5      n S S S 5        W	WU 4$ ! , (       d  f       N= f)N)r   r   F)r)   r   r!   r"   )	r
   r$   onesint64r/   r   nranksr   r   )
topk_idxr'   r(   capacityr   r-   lecgecnew_gecnew_lecs
             r   limit_by_capacityr:   D   s    		KKzl&,,?(J 	 &*%u
# %SJ?><<:---5GG*z
 
$ GX%%% 
	s   A3B
B$)NT)TN)N)r
   #paddle.distributed.models.moe.utilsr   r   r   r   paddle.frameworkr   r   r/   r:    r   r   <module>r>      s)   ,   -A&8"&r   