
    uki
                    Z    d dl mZ d dlmZ d dlZd dlmZ  G d dej                        Zy)    )annotations)clustersN	find_specc                      e Zd ZU dZded<   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)Mpi4pyClustermpi4pystrnameTboolopt_in_only_methodc                    t        d      d uS )Nr	   r   )clss    [/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/_src/clusters/mpi4py_cluster.pyis_env_presentzMpi4pyCluster.is_env_present   s     Xd**    c                    ddl m} |j                  }|j                         dk(  r;t	        j
                         }|r|}nt        t        |      dz  dz         }| d| }nd}|j                  |d      }|S )Nr   MPIi   i   :None)root)	r	   r   
COMM_WORLDGet_ranksocketgethostnamer
   hashbcast)r   timeout_secsoverride_coordinator_portr   r   hostnameport_ids          r   get_coordinator_addressz%Mpi4pyCluster.get_coordinator_address#   s     J !%%'$/G $x.504EFGGZq	* 
 q1H Or   c                T    ddl m} t        |j                  j	                               S Nr   r   )r	   r   intr   Get_sizer   r   s     r   get_process_countzMpi4pyCluster.get_process_countH       s~~&&())r   c                T    ddl m} t        |j                  j	                               S r%   )r	   r   r&   r   r   r(   s     r   get_process_idzMpi4pyCluster.get_process_idM   r*   r   c                    ddl m} |j                  }|j                  |j                        }t        |j                               S r%   )r	   r   r   
Split_typeCOMM_TYPE_SHAREDr&   r   )r   r   r   new_comms       r   get_local_process_idz"Mpi4pyCluster.get_local_process_idR   s>     J $$S%9%9:H x  "##r   N)returnr   )r   
int | Noner    z
str | Noner2   r
   )r2   r&   )r2   r3   )__name__
__module____qualname__r   __annotations__r   classmethodr   r#   r)   r,   r1    r   r   r   r      s|     $!d!+ +
 ! !H * * * * $ $r   r   )	
__future__r   jax._srcr   r   importlib.utilr   
ClusterEnvr   r9   r   r   <module>r>      s'    #   $I$H'' I$r   