o
    * i                     @   s,   d dl Z ddlmZmZ G dd deZdS )    N   )
ControllerControllerModec                   @   s(   e Zd Zedd Zdd Zdd ZdS )RpcControllerc                 C   s*   |j jtjkr|j| j d dS dS )Nz enabledTF)argsZrun_moder   ZRPCloggerdebug__name__)clsctx r   u/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/paddle/distributed/launch/controllers/rpc.pyenable   s   zRpcController.enablec                 C   s"   | j jjd usJ d|   d S )Nz*Master is None, Please set master address!)r   r   master_build_pod_with_masterselfr   r   r   	build_pod   s   zRpcController.build_podc              
      s      j_t jjj j_ jj } fdd jj	 jjD }t
 jj jj jj jjjj jjj d| d|d} jd jj d jj| jj jj\}}| j_t|dk rjd	S d
d |D } jjd|   | tdd |D }tdd |d | D }|d d } j  t jjD ]}	|||	 |	|  | d}
d|	|  } j|
|d qdS )Nc                    s    g | ]} j jj d | qS ):)r   nodeip).0pr   r   r   
<listcomp>-   s    z8RpcController._build_pod_with_master.<locals>.<listcomp>r   ,)namerankreplicasdtype	candidate	endpoints/z/infor   Fc                 S   s   g | ]}t |qS r   )jsonloadsr   ir   r   r   r   H   s    zsync peers done c                 S      g | ]}|d  qS r   r   r$   r   r   r   r   M       c                 S   r&   r'   r   r$   r   r   r   r   N   r(   r   r   )ZPADDLE_MASTER_ENDPOINTZPADDLE_WORKER_ENDPOINTZPADDLE_TRAINER_IDZPADDLE_TRAINERS_NUMz
workerlog.)Zenvslog_fileT)Zpod_replicasZpodr   intr   r   r   r   Zget_free_portZget_free_portsr"   dumpsr   Zdevicer   r   joinr   Z
sync_peersZjobidlenr   r   Zsave_pod_logsumresetrangeZadd_container)r   portr    dataZ	peer_listr   Zglobal_sizeZrank_offsetZ
rpc_masterr%   er)   r   r   r   r   #   sR   




z$RpcController._build_pod_with_masterN)r	   
__module____qualname__classmethodr   r   r   r   r   r   r   r      s
    
r   )r"   
controllerr   r   r   r   r   r   r   <module>   s   