o
    h                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZ dd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zedkr[e  dS dS )    N)PartialState)assert_exception)DistributedType)DistributedOperationException	broadcastgathergather_objectpad_across_processesreducec                 C   s$   t | jd | j| j  | jS )Ng      ?)torcharangenum_processesprocess_indextodevicestate r   \/var/www/html/ai/venv/lib/python3.10/site-packages/accelerate/test_utils/scripts/test_ops.pycreate_tensor    s   $r   c                 C   s8   t | }t|}| ttd| jd d ksJ d S )N      )r   r   tolistlistranger   )r   tensorgathered_tensorr   r   r   test_gather$   s   (r   c                 C   sn   | j g}t|}t|| jksJ | dt| d| j |tt| jks5J | dtt| j d S )Nz,  != )r   r   lenr   r   r   )r   objgathered_objr   r   r   test_gather_object*   s   ,2r"   c                 C   s6   t ddd | j}| rJ t|}d S )N         )r   r   viewtr   r   is_contiguousr   )r   r   _r   r   r   test_gather_non_contigous1   s   r*   c                 C   sL   t | }t|}|jt| jgksJ | ttd| jd ks$J d S )Nr   )	r   r   shaper   Sizer   r   r   r   )r   r   broadcasted_tensorr   r   r   test_broadcast9   s   $r.   c                 C   s   | j rt| jd | j}n
t| j| j}t|}|jt| jd gks,J | j s@|	 t
td| jdg ksBJ d S d S )Nr   r   )is_main_processr   r   r   r   r   r	   r+   r,   r   r   r   )r   r   padded_tensorr   r   r   test_pad_across_processes@   s   "r1   c                 C   X   | j dkrd S t| }t|d}tddg| j}t||s*J | d| d S )Nr   sumg      @   r   r   r   r
   r   r   r   r   allcloser   r   reduced_tensortruth_tensorr   r   r   test_reduce_sumM      

"r:   c                 C   r2   )Nr   meang       @r%   r   r5   r7   r   r   r   test_reduce_meanW   r;   r=   c                 C   s  | j tjkrd S d| _| jdkrdtg dg| ji}ndtg dgg| ji}t	t
 t|dd W d    n1 sCw   Y  | jdkr\dtg dg| ji}ndtg dg dgg| ji}t	t
 t| W d    n1 sw   Y  | jdkrdtg dg| ji}ndtg dg dgg| ji}t	t
 t| W d    n1 sw   Y  d| _d S )	NTr   r   )        r   r   r%   r$   )r>   r   r   r%   r$      )dim)r?   r4         	   F)distributed_typer   NOdebugr   r   r   r   r   r   r   r	   r
   r   )r   datar   r   r   test_op_checkera   s,   


$


$


rH   c                 C   s
   t   d S )N)main)indexr   r   r   _mp_fn   s   
rK   c                  C   s   t  } | d|   | d t|  | d t|  | d t|  | d t|  | d t|  | d t|  | d t|  | d	 t	|  d S )
NzState: ztesting gatherztesting gather_objectztesting gather non-contigousztesting broadcastztesting pad_across_processesztesting reduce_sumztesting reduce_meanztesting op_checker)
r   printr   r"   r*   r.   r1   r:   r=   rH   r   r   r   r   rI      s$   







rI   __main__)r   
accelerater   accelerate.test_utils.testingr   accelerate.utils.dataclassesr   accelerate.utils.operationsr   r   r   r   r	   r
   r   r   r"   r*   r.   r1   r:   r=   rH   rK   rI   __name__r   r   r   r   <module>   s&    


#
