
    x-jH                     8    d dl Z d dlmZmZ g Z	 ddZd Zd ZdS )    N)get_clusterlogger  c           
      :   t          j        d          }|
J d            t          j        d          }|
J d            t          j        d          }|
J d            t          t          j        d                    }|
J d	            |                    d
          }t	          |          }t          |          }| dk    r4| d
                    |          k    rt          j        d|  d| d           t          j        d          }	|	|}
|dk    r}	 t          t          j        dd                    }|t	          |          k    r ||k    rt          j        d| d           |}
n&# t          $ r}t          |           Y d}~nd}~ww xY w|
d}
t          t          |
|
t	          |          z                       }g }	|D ]#|	                    fd|D                        $ng|	                    d
          }g }	||z  t	          |          k    sJ t          |          D ](}|	                    |||z  |dz   |z                      )t          j        d| d| d| d|	            t          |||	||          \  }}||j        |         fS )za
    args_node_ips:string, device_mode:DeviceMode(Int), device_per_proc:list, args_port: int
    PADDLE_TRAINERSNz"PADDLE_TRAINERS should not be NonePOD_IPzPOD_IP should not be NonePADDLE_TRAINER_IDz$PADDLE_TRAINER_ID should not be NoneTRAINER_PORTS_NUMz$TRAINER_PORTS_NUM should not be None,z	127.0.0.1zPlease NOTE: When using paddlecloud, cluster_node_ips is automatically got from PADDLE_TRAINERS(multi nodes) or POD_IP(single node).Your input cluster_node_ips: z doesn't equals to IPs: z from paddlecloud environment.DISTRIBUTED_TRAINER_ENDPOINTS   PADDLE_PORT zUse Cloud specified port:.r   c                     g | ]	} d | 
S ): ).0portips     d/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/distributed/fleet/cloud_utils.py
<listcomp>z%get_cloud_cluster.<locals>.<listcomp>M   s#    %G%G%Gnndnn%G%G%G    zparsed from args: node_ips:z         node_ip:z node_rank:z trainer_endpoints:)osgetenvintsplitlenjoinr   warning	Exceptionprintlistrangeappenddebugr   pods)args_node_ipsdevice_modedevices_per_proc	args_portnode_ipsnode_ip	node_rankpaddle_ports_num	num_nodestrainer_endpointsstarted_portpaddle_porteportstrainer_endpoints_oriiclusterpodr   s                     @r   get_cloud_clusterr:      su    y*++H!Ei!!G ;	-..I  "H   29%899::'')O'''~~c""HHIII##(9K9K(K(K+ EM  	
 	
 	
 	"ABB  q==!")M2">">?? %,<(=(===#y00N#M{#M#M#MNNN#.L   a LU<<L8M8M)MNNOO 	I 	IB$$%G%G%G%G%G%G%GHHHH	I !2 7 7 < <++s3H/I/IIIIIy!! 	 	A$$%((AE5E+EE    L	Wh 	W 	W	W 	W%.	W 	WCT	W 	W  
 ',k;K LGS GL+++s   AE1 1
F;FFc                      t          j        d          } t          j        d          }t          j        d          }t          j        d          }| |||dS dS )Nr   r   r	   r
   FT)r   r   )r,   r-   r.   r/   s       r   use_paddlecloudr<   d   sc    y*++Hi!!G	-..Iy!455?#utr   c                  F    t          t          j        dd                    S )NPADDLE_TRAINERS_NUM1)r   r   r   r   r   r   get_trainers_numr@   t   s    ry.44555r   )r   )r   %paddle.distributed.fleet.launch_utilsr   r   __all__r:   r<   r@   r   r   r   <module>rC      st    
			 E E E E E E E E
 =AK, K, K, K,\   6 6 6 6 6r   