
    g6                     "   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                            dd                    Zd Z ej        edk     d          d             Z ej        edk     d          d             Z ej        edk     d          d#defd            Z ej        edk     d          d$dedefd            Zed              Zd! Z e!d"k    r e              dS dS )%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                  B    t          dt                                  d S )NPartialState:
)printr        g/var/www/html/ai-engine/env/lib/python3.11/site-packages/accelerate/test_utils/scripts/test_notebook.pybasic_functionr      s#    	
,LNN
,
,-----r   queuec                     |                                  rd S |                                 }|dk    r'|                     |dz
             t          d          t	          dt                                  d S )Nr      z&The nut hasn't cracked yet! Try again.r   )emptygetputRuntimeErrorr   r   )r   trials     r   tough_nut_functionr   #   ss    {{}} IIKKEqyy		%!)CDDD	
,LNN
,
,-----r   	sleep_secc                     t                      }|j        dz  dk    rt          d          t          j        |            d S )N   r   +I'm an even process. I don't like to sleep.)r   process_indexr   timesleep)r   states     r   bipolar_sleep_functionr#   .   sC    NNEQ!##HIII
9r   ACCELERATE_NUM_PROCESSESr   c                  >    t          t          dt                     d S )Nr   num_processesr   r   NUM_PROCESSESr   r   r   test_can_initializer*   9   s    nbFFFFFFr   r   z<Need at least 2 processes to test static rendezvous backends)reasonc                  @    t          t          dt          d           d S )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                  @    t          t          dt          d           d S )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                     t                      }|                    |            t          t          |ft          |            d S )N)r'   r5   )r   r   r   r   r)   )r5   r   s     r   test_fault_tolerantr7   G   s>    GGE	IIl(5(-^jkkkkkkr   z,Need at least 2 processes to test monitoring{Gz?d   monitor_intervalc                    t          j                     }t          t          d          5  t          t          |ft
          |            d d d            n# 1 swxY w Y   t          j                     |z
  |k     s
J d            d S )Nr   match)r'   r:   z,Monitoring did not stop the process in time.)r    r   r   r   r#   r)   )r:   r   
start_times      r   test_monitoringr?   N   s    J	 (U	V	V	V 
 
"L'-		
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 9;;#i///1_/////s   AAAc                      t          t          d          5  dd l} t          t          dt
                     d d d            d S # 1 swxY w Y   d S )NzPlease keep these importsr<   r   r   r&   )r   r   bitsandbytesr   r   r)   )bnbs    r   test_problematic_importsrC   [   s    	$?	@	@	@ K K""""."MJJJJK K K K K K K K K K K K K K K K K Ks   !AA	A	c                     t          d           t                       t          d           t                       t          d           t                       t          d           t	                       t          d           t                       t                      rt          d           t                       t          dk    r"t                      
                                 d S d S )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   r7   r?   r
   rC   r)   r   destroy_process_groupr   r   r   mainrF   c   s    	
*+++	
*+++	
()))	
   	
 #./// """q,,..... r   __main__)r4   )r8   r9   )"__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   r7   floatr?   rC   rF   __name__r   r   r   <module>rU      sq    
			  ! ! ! ! ! !         M M M M M M 6 6 6 6 6 6 6 6 - - - - - - - - - - - -. . .
.e . . . .c     BJNN#=qAABBG G G ]Q'efff^ ^ gf^ ]Q'cddd\ \ ed\ ]Q'Z[[[l lc l l l \[l ]Q'UVVV	` 	`e 	`s 	` 	` 	` WV	` K K K/ / /$ zDFFFFF r   