o
    )i6                     @   sH  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	d
 ZdefddZdefddZeejddZdd Zejedk dddd Zejedk dddd Zejedk ddd-defd d!Zejedk d"dd.d%edefd&d'Zed(d) Zd*d+ Z e!d,kre   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                   C   s   t dt   d S )NPartialState:
)printr    r   r   h/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/accelerate/test_utils/scripts/test_notebook.pybasic_function      r   queuec                 C   sF   |   rd S |  }|dkr| |d  tdtdt   d S )Nr      z&The nut hasn't cracked yet! Try again.r
   )emptygetputRuntimeErrorr   r   )r   trialr   r   r   tough_nut_function#   s   r   	sleep_secc                 C   s*   t  }|jd dkrtdt|  d S )N   r   +I'm an even process. I don't like to sleep.)r   process_indexr   timesleep)r   stater   r   r   bipolar_sleep_function.   s   r   ACCELERATE_NUM_PROCESSESr   c                   C   s   t tdtd d S )Nr   num_processesr   r   NUM_PROCESSESr   r   r   r   test_can_initialize9   s   r%   r   z<Need at least 2 processes to test static rendezvous backends)reasonc                   C      t tdtdd d S )Nr   staticr"   rdzv_backendr#   r   r   r   r   test_static_rdzv_backend=   r   r+   z:Need at least 2 processes to test c10d rendezvous backendsc                   C   r'   )Nr   c10dr)   r#   r   r   r   r   test_c10d_rdzv_backendB   r   r-   z1Need at least 2 processes to test fault tolerance   max_restartsc                 C   s&   t  }||  tt|ft| d d S )N)r"   r/   )r   r   r   r   r$   )r/   r   r   r   r   test_fault_tolerantG   s   
r0   z,Need at least 2 processes to test monitoring{Gz?d   monitor_intervalc                 C   sb   t   }ttdd tt|ft| d W d    n1 sw   Y  t   | |k s/J dd S )Nr   match)r"   r3   z,Monitoring did not stop the process in time.)r   r   r   r   r   r$   )r3   r   
start_timer   r   r   test_monitoringN   s   r7   c                  C   sH   t tdd dd l} ttdtd W d    d S 1 sw   Y  d S )NzPlease keep these importsr4   r   r   r!   )r   r   bitsandbytesr   r   r$   )bnbr   r   r   test_problematic_imports[   s   "r:   c                   C   st   t d t  t d t  t d t  t d t  t d t  t r-t d t  tdkr8t	 
  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%   r+   r-   r0   r7   r	   r:   r$   r   destroy_process_groupr   r   r   r   mainc   s    r<   __main__)r.   )r1   r2   )"__doc__osr   multiprocessingr   pytestr   r   0torch.distributed.elastic.multiprocessing.errorsr   
accelerater   r   accelerate.test_utilsr   accelerate.utilsr	   r   r   intr   environr   r$   r%   skipifr+   r-   r0   floatr7   r:   r<   __name__r   r   r   r   <module>   s8   



