
    Vpf	                    d    d dl mZ d dlZd dlZd dlmZ dZdZdZdZ	 G d d	ej
                  ZdS )
    )annotationsN)clustersOMPI_MCA_orte_hnp_uriOMPI_COMM_WORLD_SIZEOMPI_COMM_WORLD_RANKOMPI_COMM_WORLD_LOCAL_RANKc                      e Zd ZU dZded<   edd            Zedd	            Zedd            Zedd            Z	edd            Z
dS )OmpiClusterompistrnamereturnboolc                (    t           t          j        v S N)	_ORTE_URIosenvironclss    ^/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jax/_src/clusters/ompi_cluster.pyis_env_presentzOmpiCluster.is_env_present   s    
""    timeout_secs
int | Nonec                N   t           j        t                   }|                    dd          d         }t	          |          dz  }|dz  dz   }t          j        d|          }|t          d          t          d	 |	                                D                       }| d
| S )N.   )maxsplitr   i   i   z#tcp://(.+?)[,:]|tcp6://\[(.+?)[,\]]zACould not parse coordinator IP address from Open MPI environment.c              3     K   | ]}||V  	d S r    ).0is     r   	<genexpr>z6OmpiCluster.get_coordinator_address.<locals>.<genexpr>2   s"      NNQqNNr   :)
r   r   r   splitintresearchRuntimeErrornextgroups)r   r   orte_uri
job_id_strjob_idportlauncher_ip_matchlauncher_ips           r   get_coordinator_addressz#OmpiCluster.get_coordinator_address#   s    
 z)$Ha003J __%FE>./D	"H(SS ^___NN"3":":"<"<NNNNNK""D"""r   r'   c                J    t          t          j        t                             S r   )r'   r   r   _PROCESS_COUNTr   s    r   get_process_countzOmpiCluster.get_process_count5   s    rz.)***r   c                J    t          t          j        t                             S r   )r'   r   r   _PROCESS_IDr   s    r   get_process_idzOmpiCluster.get_process_id9   s    rz+&'''r   c                J    t          t          j        t                             S r   )r'   r   r   _LOCAL_PROCESS_IDr   s    r   get_local_process_idz OmpiCluster.get_local_process_id=   s    rz+,---r   N)r   r   )r   r   r   r   )r   r'   )r   r   )__name__
__module____qualname__r   __annotations__classmethodr   r3   r6   r9   r<   r!   r   r   r
   r
      s         $# # # ;# # # # ;#" + + + ;+ ( ( ( ;( . . . ;. . .r   r
   )
__future__r   r   r(   jax._srcr   r   r5   r8   r;   
ClusterEnvr
   r!   r   r   <module>rE      s    # " " " " " 				 				       $	'$0 $. $. $. $. $.(% $. $. $. $. $.r   