
    uki	                    f    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y)
    )annotationsN)clustersOMPI_MCA_orte_hnp_uriOMPI_COMM_WORLD_SIZEOMPI_COMM_WORLD_RANKOMPI_COMM_WORLD_LOCAL_RANKc                  v    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
y	)OmpiClusterompistrnamec                .    t         t        j                  v S N)	_ORTE_URIosenvironclss    Y/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/_src/clusters/ompi_cluster.pyis_env_presentzOmpiCluster.is_env_present   s    

""    c                8   t         j                  t           }|r|}n5|j                  dd      d   }t	        |      dz  }t        |dz  dz         }t        j                  d|      }|t        d      t        d	 |j                         D              }| d
| S )N.   )maxsplitr   i   i   z#tcp://(.+?)[,:]|tcp6://\[(.+?)[,\]]zACould not parse coordinator IP address from Open MPI environment.c              3  &   K   | ]	  }||  y wr    ).0is     r   	<genexpr>z6OmpiCluster.get_coordinator_address.<locals>.<genexpr>5   s     NQqNs   :)r   r   r   splitintr   researchRuntimeErrornextgroups)	r   timeout_secsoverride_coordinator_portorte_uriport
job_id_strjob_idlauncher_ip_matchlauncher_ips	            r   get_coordinator_addressz#OmpiCluster.get_coordinator_address#   s    
 zz)$H (^^C!^4Q7
 ZE)6E>%678		"H(S ^__N"3":":"<NNK]!D6""r   c                B    t        t        j                  t                 S r   )r#   r   r   _PROCESS_COUNTr   s    r   get_process_countzOmpiCluster.get_process_count8   s    rzz.)**r   c                B    t        t        j                  t                 S r   )r#   r   r   _PROCESS_IDr   s    r   get_process_idzOmpiCluster.get_process_id<   s    rzz+&''r   c                B    t        t        j                  t                 S r   )r#   r   r   _LOCAL_PROCESS_IDr   s    r   get_local_process_idz OmpiCluster.get_local_process_id@   s    rzz+,--r   N)returnbool)r)   
int | Noner*   z
str | Noner;   r   )r;   r#   )r;   r=   )__name__
__module____qualname__r   __annotations__classmethodr   r1   r4   r7   r:   r   r   r   r
   r
      sn    $# # # #( + + ( ( . .r   r
   )
__future__r   r   r$   jax._srcr   r   r3   r6   r9   
ClusterEnvr
   r   r   r   <module>rF      s<    # 	 	  $	'$0 '.(%% '.r   