
    uki	                    f    d dl mZ d dlZd dlmZ dZdZdZdZdZ	d	Z
 G d
 dej                        Zy)    )annotationsN)clustersSLURM_JOB_IDSLURM_STEP_NODELISTSLURM_NTASKSSLURM_PROCIDSLURM_LOCALIDSLURM_STEP_NUM_NODESc                  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	)SlurmClusterslurmstrnamec                X    t        d t        t        t        t        t
        fD              S )Nc              3  @   K   | ]  }|t         j                  v   y wN)osenviron).0vars     Z/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/_src/clusters/slurm_cluster.py	<genexpr>z.SlurmCluster.is_env_present.<locals>.<genexpr>!   s      [Ssbjj  [s   )all_JOBID_PARAM
_NODE_LIST_PROCESS_COUNT_PROCESS_ID_LOCAL_PROCESS_IDclss    r   is_env_presentzSlurmCluster.is_env_present   s,     [j.+GXY[ [ [    c                  	
 |r|}n/t        t        t        j                  t                 dz  dz         }t        j                  t
           }ddh	t        	fdt        |      D        t        |            }|t        |      k(  s||   dk(  r
|d |  d| S |d | }||dz   d  }ddh
t        
fd	t        |      D        d       }| |d |  d| S )
Ni   i   ,[c              3  2   K   | ]  \  }}|v s|  y wr    )r   ichdelimss      r   r   z7SlurmCluster.get_coordinator_address.<locals>.<genexpr>2   s     EeafE   :   -c              3  2   K   | ]  \  }}|v s|  y wr   r'   )r   r(   r)   delims2s      r   r   z7SlurmCluster.get_coordinator_address.<locals>.<genexpr>9   s     H51b"-QHr+   )	r   intr   r   r   r   next	enumeratelen)r    timeout_secsoverride_coordinator_portport	node_listindprefixsuffixind2r*   r0   s            @@r   get_coordinator_addressz$SlurmCluster.get_coordinator_address$   s     ( 3rzz,/058<MNO 

:&I3ZF
E	) 4Es9~
VC
c)n	## 5DS/"!D6**4C3q56"*HYv%6H$O&$-$00r"   c                B    t        t        j                  t                 S r   )r1   r   r   r   r   s    r   get_process_countzSlurmCluster.get_process_count<   s    rzz.)**r"   c                B    t        t        j                  t                 S r   )r1   r   r   r   r   s    r   get_process_idzSlurmCluster.get_process_id@   s    rzz+&''r"   c                B    t        t        j                  t                 S r   )r1   r   r   r   r   s    r   get_local_process_idz!SlurmCluster.get_local_process_idD   s    rzz+,--r"   N)returnbool)r5   
int | Noner6   z
str | NonerD   r   )rD   r1   )rD   rF   )__name__
__module____qualname__r   __annotations__classmethodr!   r=   r?   rA   rC   r'   r"   r   r   r      sp    $[ [ 1 1. + + ( ( . .r"   r   )
__future__r   r   jax._srcr   r   r   r   r   r   
_NUM_NODES
ClusterEnvr   r'   r"   r   <module>rP      sA    # 	 "
# #
+.8&& +.r"   