
    bi6                        d 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
mZmZ ddlmZ ddlmZ d	 Zd
efdZdefdZ eej*                  j-                  dd            Zd Z ej2                  edk  d      d        Z ej2                  edk  d      d        Z ej2                  edk  d      d defd       Z ej2                  edk  d      d!dedefd       Zed        Zd Z e!dk(  r e         yy)"zT
Test file to ensure that in general certain situational setups for notebooks work.
    N)Queue)markraises)ChildFailedError)PartialStatenotebook_launcher)require_bnb)is_bnb_availablec                  0    t        dt                       y )NPartialState:
)printr        f/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/accelerate/test_utils/scripts/test_notebook.pybasic_functionr      s    	OLN+
,-r   queuec                     | j                         ry | j                         }|dkD  r| j                  |dz
         t        d      t	        dt                       y )Nr      z&The nut hasn't cracked yet! Try again.r   )emptygetputRuntimeErrorr   r   )r   trials     r   tough_nut_functionr   #   sN    {{}IIKEqy		%!)CDD	OLN+
,-r   	sleep_secc                 |    t               }|j                  dz  dk(  rt        d      t        j                  |        y )N   r   +I'm an even process. I don't like to sleep.)r   process_indexr   timesleep)r   states     r   bipolar_sleep_functionr#   .   s4    NEQ!#HII

9r   ACCELERATE_NUM_PROCESSESr   c                  0    t        t        dt               y )Nr   num_processesr   r   NUM_PROCESSESr   r   r   test_can_initializer*   9   s    nbFr   r   z<Need at least 2 processes to test static rendezvous backends)reasonc                  2    t        t        dt        d       y )Nr   staticr'   rdzv_backendr(   r   r   r   test_static_rdzv_backendr0   =   s    nbT\]r   z:Need at least 2 processes to test c10d rendezvous backendsc                  2    t        t        dt        d       y )Nr   c10dr.   r(   r   r   r   test_c10d_rdzv_backendr3   B   s    nbTZ[r   z1Need at least 2 processes to test fault tolerancemax_restartsc                 j    t               }|j                  |        t        t        |ft        |        y )N)r'   r4   )r   r   r   r   r)   )r4   r   s     r   test_fault_tolerantr6   G   s'    GE	IIl(5(-^jkr   z,Need at least 2 processes to test monitoringmonitor_intervalc                     t        j                          }t        t        d      5  t        t        |ft
        |        d d d        t        j                          |z
  |k  sJ d       y # 1 sw Y   +xY w)Nr   match)r'   r7   z,Monitoring did not stop the process in time.)r    r   r   r   r#   r)   )r7   r   
start_times      r   test_monitoringr<   N   se    J	 (U	V 
"L'-		

 99;#i/_1__/
 
s   A))A2c                      t        t        d      5  dd l} t        t        dt
               d d d        y # 1 sw Y   y xY w)NzPlease keep these importsr9   r   r   r&   )r   r   bitsandbytesr   r   r)   )bnbs    r   test_problematic_importsr@   [   s5    	$?	@ K"."MJK K Ks   6?c                  X   t        d       t                t        d       t                t        d       t                t        d       t	                t        d       t                t               rt        d       t                t        dkD  rt               j                          y y )NzTest basic notebook can be ranzTest static rendezvous backendzTest c10d rendezvous backendzTest fault tolerantzTest monitoringzTest problematic imports (bnb)r   )r   r*   r0   r3   r6   r<   r
   r@   r)   r   destroy_process_groupr   r   r   mainrC   c   s}    	
*+	
*+	
()	
 	
./ "q,,. r   __main__)   )g{Gz?d   )"__doc__osr    multiprocessingr   pytestr   r   0torch.distributed.elastic.multiprocessing.errorsr   
accelerater   r   accelerate.test_utilsr	   accelerate.utilsr
   r   r   intr#   environr   r)   r*   skipifr0   r3   r6   floatr<   r@   rC   __name__r   r   r   <module>rT      sR   
  !  M 6 - -.
.e .c  BJJNN#=qABG ]Q'ef^ g^ ]Q'cd\ e\ ]Q'Z[lc l \l ]Q'UV	`e 	`s 	` W	` K K/$ zF r   