Ë
    ‡\;jÅ  ã                   ó:   — d dl Z d dlmZmZmZmZ g Zd„ Zd„ Zd„ Z	y)é    N)Úget_clusterÚget_cluster_from_argsÚget_gpusÚloggerc           
      ó   — t        j                  d«      }|€J d«       ‚t        j                  d«      }|€J d«       ‚t        j                  d«      }|€J d«       ‚t        t        j                  d«      «      }|€J d	«       ‚|j                  d
«      }t	        |«      }t        |«      }|dk7  r!||k7  rt        j                  d|› d|› d�«       | dk7  r0| d
j                  |«      k7  rt        j                  d| › d|› d�«       t        j                  d«      }	|	€¨|}
|dkD  rN	 t        t        j                  dd«      «      }|t	        |«      k\  r ||k7  rt        j                  d|› d�«       |}
|
€d}
t        t        |
|
t	        |«      z   «      «      }g }	|D ]&  }|	j                  |D �cg c]	  }d||fz  ‘Œ c}«       Œ( nS|	j                  d
«      }g }	||z  t	        |«      k(  sJ ‚t        |«      D ]  }|	j                  |||z  |dz   |z   «       Œ! t        j                  d|› d|› d|› d|	› �«       t        |||	|«      \  }}||j                  |   fS # t        $ r}t        |«       Y d}~�Œd}~ww xY wc c}w )zZ
    args_node_ips:string, args_node_ip:string, args_port: int, selected_devices:list
    Ú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.1zcPlease NOTE: When using paddlecloud, node_ip is automatically got from POD_IP. Your input node_ip: z doesn't equals to node_ip: z from paddlecloud environment.z¡Please 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: ÚDISTRIBUTED_TRAINER_ENDPOINTSé   ÚPADDLE_PORTÚ zUse Cloud specified port:Ú.i  z%s:%dzparsed from args: node_ips:z         node_ip:z node_rank:z trainer_endpoints:)ÚosÚgetenvÚintÚsplitÚlenr   ÚwarningÚjoinÚ	ExceptionÚprintÚlistÚrangeÚappendÚdebugr   Úpods)Úargs_node_ipsÚargs_node_ipÚ	args_portÚselected_devicesÚnode_ipsÚnode_ipÚ	node_rankÚpaddle_ports_numÚ	num_nodesÚtrainer_endpointsÚstarted_portÚpaddle_portÚeÚportsÚipÚportÚtrainer_endpoints_oriÚiÚclusterÚpods                       úgG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/distributed/cloud_utils.pyÚget_cloud_clusterr5      sé  € ô
 �y‰yÐ*Ó+€HØÐÐEÐ!EÓEÐä�i‰i˜Ó!€GØÐÐ;Ð ;Ó;Ðä—	‘	Ð-Ó.€IØÐ ÐHÐ"HÓHÐ äœ2Ÿ9™9Ð%8Ó9Ó:ÐØÐ'ÐOÐ)OÓOÐ'à�~‰~˜cÓ"€HÜ�H“€IÜ�I“€Ià�+Ò '¨\Ò"9Ü�‰ð4Ø4@°>ð B
Ø
ˆÐ0ð2ô	
ð ˜Ò#¨¸¿¹À(Ó9KÒ(KÜ�‰ðà+˜_Ð,DÀXÀJð Oðô	
ô Ÿ	™	Ð"AÓBÐØÐ Ø ˆØ�qŠ=ðÜ!¤"§)¡)¨M¸2Ó">Ó?�ð %¬Ð,<Ó(=Ò=Ø# yÒ0ä—N‘NÐ%>¸{¸mÈ1Ð#MÔNØ#.�Lð
 ÐØˆLÜ”U˜<¨¼Ð<LÓ8MÑ)MÓNÓOˆØÐÛˆBØ×$Ñ$ÁuÓ%MÁu¸t g°°T°
Ó&:ÀuÑ%MÕNñ ð !2× 7Ñ 7¸Ó <ÐØÐØÐ+Ñ+¬sÐ3HÓ/IÒIÐIÐIÜ�yÖ!ˆAØ×$Ñ$Ø%ØÐ(Ñ(¨A°©EÐ5EÑ+Eðõð "ô ‡L�LØ
% h Zð 0Ø�	˜ Y KÐ/BÐCTÐBUð	Wôô
 Ø�'Ð,Ð.>ó�L€GˆSð �G—L‘L Ñ+Ð+Ð+øô9 ò Ü�a—’ûðüò &Ns   Ä#AI Æ+I;
É	I8É"I3É3I8c                  ó@   — t        t        j                  dd«      «      S )NÚPADDLE_TRAINERS_NUMÚ1)r   r   r   © ó    r4   Ú_get_trainers_numr;   n   s   € ÜŒr�y‰yÐ.°Ó4Ó5Ð5r:   c                 ó   — t        | j                  «      }t        «       }t        j                  dj                  ||«      «       d }d }| j                  rP|dk7  rKt        | j                  | j                  | j                  |«      \  }}t        j                  d|› �«       ||fS t        | |«      \  }}t        j                  d|› �«       ||fS )Nz5parsed from args trainerss_num:{} selected_devices:{}r   zget cluster from cloud:zget cluster from args:)r   r#   r;   r   r   ÚformatÚuse_paddlecloudr5   Úcluster_node_ipsr%   r*   Úinfor   )Úargsr#   Útrainers_numr2   r3   s        r4   Úget_cluster_and_podrC   r   sÔ   € ä × 5Ñ 5Ó6ÐÜ$Ó&€LÜ
‡L�LØ?×FÑFØÐ*ó	
ôð €GØ
€Cà×Ò °Ò 1Ü(Ø×!Ñ!Ø�L‰LØ×ÑØó	
‰ˆ�ô 	�‰Ð-¨g¨YÐ7Ô8ð
 �Cˆ<Ðô -¨TÐ3CÓD‰ˆ�Ü�‰Ð,¨W¨IÐ6Ô7à�Cˆ<Ðr:   )
r   Ú%paddle.distributed.utils.launch_utilsr   r   r   r   Ú__all__r5   r;   rC   r9   r:   r4   Ú<module>rF      s,   ðó 
÷ó ð €òP,òf6ór:   