o
    ×°“i{  ã                   @   s*   d dl Z d dlmZ G dd„ de jƒZdS )é    N)Ú_storec                   @   sæ   e Zd Zejejfdd„Zejd dd„ƒZ	ejd!dd	„ƒZ
ejd"d
d„ƒZej	d dd„ƒZejd#dd„ƒZejd#dd„ƒZejd#dd„ƒZejd#dd„ƒZejd"dd„ƒZejd"dd„ƒZejd#dd„ƒZejdd„ ƒZdd„ ZdS )$Ú_Backendc                 C   s6   || _ || _t ||¡| _|dkrt |¡| _d S d S ©Nr   )Ú
_n_devicesÚrankr   ÚTCPStoreProxyÚ_store_proxyÚTCPStore)ÚselfÚ	n_devicesr   ÚhostÚport© r   úK/home/ubuntu/.local/lib/python3.10/site-packages/cupyx/distributed/_comm.pyÚ__init__   s   ÿz_Backend.__init__ÚsumNc                 C   ó   d S ©Nr   )r
   Úin_arrayÚ	out_arrayÚopÚstreamr   r   r   Ú
all_reduce   ó   z_Backend.all_reducer   c                 C   r   r   r   )r
   r   r   Úrootr   r   r   r   r   Úreduce   r   z_Backend.reducec                 C   r   r   r   )r
   Úin_out_arrayr   r   r   r   r   Ú	broadcast   r   z_Backend.broadcastc                 C   r   r   r   )r
   r   r   Úcountr   r   r   r   r   Úreduce_scatter   s   z_Backend.reduce_scatterc                 C   r   r   r   )r
   r   r   r   r   r   r   r   Ú
all_gather!   r   z_Backend.all_gatherc                 C   r   r   r   )r
   ÚarrayÚpeerr   r   r   r   Úsend%   r   z_Backend.sendc                 C   r   r   r   )r
   r   r"   r   r   r   r   Úrecv)   r   z_Backend.recvc                 C   r   r   r   )r
   r   r   r"   r   r   r   r   Ú	send_recv-   r   z_Backend.send_recvc                 C   r   r   r   ©r
   r   r   r   r   r   r   r   Úscatter1   r   z_Backend.scatterc                 C   r   r   r   r&   r   r   r   Úgather5   r   z_Backend.gatherc                 C   r   r   r   )r
   r   r   r   r   r   r   Ú
all_to_all9   r   z_Backend.all_to_allc                 C   r   r   r   ©r
   r   r   r   Úbarrier=   r   z_Backend.barrierc                 C   s   | j dkr| j ¡  d S d S r   )r   r   Ústopr*   r   r   r   r,   A   s   
ÿz_Backend.stop)r   N)r   r   N)r   Nr   )Ú__name__Ú
__module__Ú__qualname__r   Ú_DEFAULT_HOSTÚ_DEFAULT_PORTr   ÚabcÚabstractmethodr   r   r   r   r    r#   r$   r%   r'   r(   r)   r+   r,   r   r   r   r   r      s:    
ÿÿ
r   )r2   Úcupyx.distributedr   ÚABCr   r   r   r   r   Ú<module>   s    