
    sg%                        U d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
 d dlZd dlmZ dgZ e j                   e      Zd a ej(                         ZdefdZ e       r"ej0                  j3                         s ed       e       rd dlZd dlmc mZ d d	lm Z  d d
l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZDmEZEmFZF ddlD ddlEmGZG ddlHmIZI ddlJmKZK eee eLeLf   ddf   eMd<   eg dz  ZeeDj                  z   eEj                  z   Z	 	 	 	 ddZNd ZOeGj                  dddddfdZQeDj                  d        ZSyy)    N)	timedelta)	GeneratorTuple)urlparseis_availablereturnc                  6    t        t        j                  d      S )N	_rpc_init)hasattrtorch_C     Q/var/www/html/venv/lib/python3.12/site-packages/torch/distributed/rpc/__init__.pyr   r      s    588[))r   z*Failed to initialize torch.distributed.rpc)Store)!_cleanup_python_rpc_handler_DEFAULT_INIT_METHOD_DEFAULT_NUM_WORKER_THREADS_DEFAULT_RPC_TIMEOUT_SEC)_delete_all_user_and_unforked_owner_rrefs_destroy_rref_context_disable_jit_rref_pickle'_disable_server_process_global_profiler_enable_jit_rref_pickle&_enable_server_process_global_profiler_get_current_rpc_agent_invoke_remote_builtin_invoke_remote_python_udf_invoke_remote_torchscript_invoke_rpc_builtin_invoke_rpc_python_udf_invoke_rpc_torchscript_is_current_rpc_agent_set_reset_current_rpc_agent_rref_context_get_debug_info_set_and_start_rpc_agent_set_profiler_node_id_set_rpc_timeout _TensorPipeRpcBackendOptionsBase_UNSET_RPC_TIMEOUTenable_gil_profilingget_rpc_timeoutPyRRefRemoteProfilerManagerRpcAgentRpcBackendOptionsTensorPipeAgent
WorkerInfo   )apibackend_registry	functions)*)BackendType)TensorPipeRpcBackendOptions)_server_process_global_profilerendezvous_iterator)init_rpcr8   r9   c           	         t         j                  j                  d       |%t        |t        j
                        st        d      |t        |t              st        d      |r|pt
        D ].  }t        |t        t	        j                  |                  s,|} n t        d|       |t
        j                  k7  rt        j                  dd|i       |t
        j                  }|t	        j                  |      }|st        j                  ||      }n5t        j                  |j                   ||      at%        t"              \  }}}|j'                  t)        |j*                  	             t,        5  t        j.                  t1        d
t2               |      }t2        dz  addd       t5        j6                  |       t9        |       t;        ||| |||       y# 1 sw Y   :xY w)ak  
        Initializes RPC primitives such as the local RPC agent
        and distributed autograd, which immediately makes the current
        process ready to send and receive RPCs.

        Args:
            name (str): a globally unique name of this node. (e.g.,
                ``Trainer3``, ``ParameterServer2``, ``Master``, ``Worker1``)
                Name can only contain number, alphabet, underscore, colon,
                and/or dash, and must be shorter than 128 characters.
            backend (BackendType, optional): The type of RPC backend
                implementation. Supported values is
                ``BackendType.TENSORPIPE`` (the default).
                See :ref:`rpc-backends` for more information.
            rank (int): a globally unique id/rank of this node.
            world_size (int): The number of workers in the group.
            rpc_backend_options (RpcBackendOptions, optional): The options
                passed to the RpcAgent constructor. It must be an agent-specific
                subclass of :class:`~torch.distributed.rpc.RpcBackendOptions`
                and contains agent-specific initialization configurations. By
                default, for all agents, it sets the default timeout to 60
                seconds and performs the rendezvous with an underlying process
                group initialized using ``init_method = "env://"``,
                meaning that environment variables ``MASTER_ADDR`` and
                ``MASTER_PORT`` need to be set properly. See
                :ref:`rpc-backends` for more information and find which options
                are available.
        ztorch.distributed.init_rpcNz0Argument backend must be a member of BackendTypezEArgument rpc_backend_options must be an instance of RpcBackendOptionsz$Could not infer backend for options zRPC was initialized with no explicit backend but with options corresponding to %(backend)s, hence that backend will be used instead of the default BackendType.TENSORPIPE. To silence this warning pass `backend=%(backend)s` explicitly.backend)rank
world_size)secondsrpc_prefix_r3   )r   r   _log_api_usage_once
isinstancer5   r8   	TypeErrorr0   typeconstruct_rpc_backend_options
TENSORPIPEloggerwarningdist_create_store_from_options
rendezvousinit_methodr;   nextset_timeoutr   rpc_timeout_init_counter_lockPrefixStorestr_init_counterdist_autograd_initr'   _init_rpc_backend)namer?   r@   rA   rpc_backend_optionscandidate_backendstore_s           r   r<   r<   T   s   F 	$$%ABz%11(
 NOO*:!24
 W 
 ?2>%0 !'(FF- 0G  :;N:OP  +000E ( ?!,,G&"2"P"P#
  334GNE #'//#//dz# 23KE1a),?,K,KLM   	$$S;}o)F%GOEQM	 	D!d#'5$jBUV	 	s   :0G##G,c                 8   | t         j                  |t        j                  |t        |t
        j                  |t
        j                  t        d       f|t        i}|j                         D ].  \  }}t        ||      rt        d| d| dt        |              y )Nz	Argument z must be of type z but got type )r5   r8   rL   r   rU   numbersIntegralrG   r0   itemsrE   RuntimeError)	r?   r]   rZ   r@   rA   r[   type_mappingargarg_types	            r   _validate_rpc_argsrg      s    %114::#'""))4:6!2
 *//1 	MCc8,"u$5hZ~dSVi[Y 	r   c                     t        | |||||       t               rt        d      t        j                  | |||||      }t        j                  |       y )NzRPC is already initialized)r]   rZ   r@   rA   r[   )rg   r#   rc   r5   init_backendr4   _init_rpc_states)r?   r]   rZ   r@   rA   r[   	rpc_agents          r   rY   rY      s]     	7E4zCVW$&;<< %11! 3
	 	Y'r   c                      t               } | j                  t        j                         j	                                | j                  t        j                                | S )N)r%   updater4   r   get_debug_inforW   _get_debug_info)infos    r   ro   ro      sB    +-C..0??ABM1134r   )Nr=   NN)Tloggingos	threadingwarningsdatetimer   typingr   r   urllib.parser   r   torch.distributeddistributedrL   __all__	getLogger__name__rJ   rV   LockrS   boolr   r   r
   rc   r`   torch.distributed.autogradautogradrW   torch._C._distributed_c10dr   torch._C._distributed_rpcr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2    r4   r5   r6   r8   optionsr9   server_process_global_profilerr:   int__annotations__r<   rg   rI   rY   _require_initializedro   r   r   r   <module>r      ss    	    # !    
 
		8	$ #Y^^% *d * >%((,,.
C
DD >660" " " " " " " " "H 32-4N"5S#94#EFFIIG#&6&>&>>G  uWn" && (2 	 k r   