o
    Neà
  ã                   @   sF   d dl Z ddlmZ ddlmZ d dlmZ dgZG dd„ deƒZdS )	é    Né   )Úcoreé   )Úps_instance)Útext_formatÚFleetc                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )r   z

    
    c                 C   s   t  ¡ | _t ¡ | _d S ©N)r   ZPaddlePSInstanceÚ	instance_r   ZFleetWrapperÚfleet_©Úself© r   úND:\Projects\ConvertPro\env\Lib\site-packages\paddle/fluid/distributed/fleet.pyÚ__init__   s   
zFleet.__init__c                 C   s@   | j  ¡  | j ¡ r| j ¡  | j  ¡  | j  ¡  | j ¡  d S r   )r	   Úbarrier_workerÚinstanceÚis_first_workerr
   Zstop_serverÚbarrier_allÚfinalizer   r   r   r   Ústop   s   




z
Fleet.stopc                 C   s   d|v rt  |d ¡| _|d | _n	tdƒ t d¡ | j | j¡ | j 	¡ }| j
 |¡ | j ¡  | j ¡ }| j || j
 ¡ ¡ | j
 ¡  d S ©NZ
fleet_descz=You should run distributed optimization to get opt_info firstéÿÿÿÿ)r   ÚMessageToStringÚdist_desc_str_Ú
dist_desc_ÚprintÚsysÚexitr
   Zinit_serverÚstart_serverr	   Zset_ipr   r   Ú
gather_ipsZfleetZgather_serversÚget_node_cnt)r   Úopt_infoÚipÚipsr   r   r   Úinit_pserver&   s    ÿÿ



zFleet.init_pserverc                 C   sv   d|v rt  |d ¡| _|d | _n	tdƒ t d¡ | j ¡  | j	 
¡ }| j | j|| j ¡ | j	j¡ | j	 ¡  d S r   )r   r   r   r   r   r   r   r	   r   r   r   r
   Úinit_workerr    Z_rankidr   )r   r!   r#   r   r   r   r%   7   s    ÿÿ


þzFleet.init_workerc                 C   s"   | j  ¡ r
| j ¡  | j  ¡  d S r   )r	   r   r
   Z
init_modelr   r   r   r   r   Úinit_pserver_modelG   s   

zFleet.init_pserver_modelc                 C   s   | j  |¡ d S r   )r
   Z
save_model)r   Z	save_pathr   r   r   Úsave_pserver_modelL   s   zFleet.save_pserver_modelN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r$   r%   r&   r'   r   r   r   r   r      s    )	r   Ú r   r   Zgoogle.protobufr   Ú__all__Úobjectr   r   r   r   r   Ú<module>   s   