a
    d                     @   s   d dl Z d dlmZ d dl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edkre  dS )    N)PartialState)	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   o/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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s4J d S )N      )r   r   tolistlistranger
   )r   tensorZ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sjJ | dtt| j d S )Nz,  != )r   r   lenr
   r   r   )r   objZgathered_objr   r   r   test_gather_object!   s    ,r   c                 C   sL   t | }t|}|jt| jgks(J | ttd| jd ksHJ d S )Nr   )	r   r   shaper   Sizer
   r   r   r   )r   r   Zbroadcasted_tensorr   r   r   test_broadcast(   s    r    c                 C   s   | j r t| jd | j}nt| j| j}t|}|jt| jd gksXJ | j s|	 t
td| jdg ksJ d S )Nr   r   )Zis_main_processr   r	   r
   r   r   r   r   r   r   r   r   )r   r   Zpadded_tensorr   r   r   test_pad_across_processes/   s    r!   c                 C   sX   | j dkrd S t| }t|d}tddg| j}t||sTJ | d| d S )Nr   sumg      @   r   r
   r   r   r   r   r   r   Zallcloser   r   Zreduced_tensorZtruth_tensorr   r   r   test_reduce_sum<   s    

r&   c                 C   sX   | j dkrd S t| }t|d}tddg| j}t||sTJ | d| d S )Nr   meang       @   r   r$   r%   r   r   r   test_reduce_meanF   s    

r)   c                 C   s
   t   d S )N)main)indexr   r   r   _mp_fnP   s    r,   c                  C   s   t  } | d|   | d t|  | d t|  | d t|  | d t|  | d t|  | d t|  d S )NzState: ztesting gatherztesting gather_objectztesting broadcastztesting pad_across_processesztesting reduce_sumztesting reduce_mean)r   printr   r   r    r!   r&   r)   r   r   r   r   r*   U   s    





r*   __main__)r   Z
accelerater   Zaccelerate.utils.operationsr   r   r   r   r   r   r   r   r    r!   r&   r)   r,   r*   __name__r   r   r   r   <module>   s   

