
    `i                        d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	c m
Z d dlm	c mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ ej        rd d
lmZ n G d d          ZeZej         G d d                      Ze ee e!df         f         Z"ej        r*dee#         de$e#ef         fdZ%dededededede#defdZ&dS dee#         de$e#ef         fdZ%dededededede#defdZ&dS )    N)AnyIterableIterator)ndarray)Device)Event)Stream)get_current_stream)nccl)_get_nccl_dtype_and_count)NcclCommunicatorc                       e Zd ZdS )_MockCommunicatorN)__name__
__module____qualname__     z/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cupyx/distributed/array/_data_transfer.pyr   r      s        r   r   c                   l    e Zd ZU eed<   eed<   dZeed<   ddZe	j
        dee         fd            ZdS )	
_AsyncDataarrayreadyN
prevent_gcreturnc                    |                                  5 }| j                                        }|                    | j                   t          ||                                | j                  cd d d            S # 1 swxY w Y   d S N)on_readyr   copyrecordr   r   r   )selfstreamr   s      r   r   z_AsyncData.copy   s    ]]__ 	GJOO%%EMM$*%%%eV]]__doFF		G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   AA==BBc              #      K   | j         j        5  t                      }|                    | j                   |V  d d d            d S # 1 swxY w Y   d S r   )r   devicer
   
wait_eventr   )r!   r"   s     r   r   z_AsyncData.on_ready&   s      Z 	 	'))Fdj)))LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   -A		AA)r   r   )r   r   r   r   __annotations__r   r   r   r   
contextlibcontextmanagerr   r	   r   r   r   r   r   r      s         NNNLLLJG G G G (6*      r   r   .devicesr   c                 \    t          j        t          |                     }d |D             S )Nc                 8    i | ]}|                                 |S r   )	device_id).0comms     r   
<dictcomp>z)_create_communicators.<locals>.<dictcomp>7   s$    >>>4  $>>>r   )_CommunicatorinitAlllist)r)   
comms_lists     r   _create_communicatorsr4   3   s.     #*4==99
>>:>>>>r   src_comm
src_streamsrc_datadst_comm
dst_streamdst_devc                 D   |j         j        j        }||k    rt          |j         |j                  S t          |          }t          |          }	 t          |          5  |                                 |                    |j                   t          j
        |j                   }	d d d            n# 1 swxY w Y   t          |          5  |                                 t          j        |	j        |	j                  }
d d d            n# 1 swxY w Y   t          |	          \  }}t!          j                     t          |          5  |                     |	j        j        |||                                |j                   d d d            n# 1 swxY w Y   t          |          5  |                    |
j        j        |||                                 |j                   t!          j                     t          |
|                                |          cd d d            t          |          5  |                                 d d d            n# 1 swxY w Y   t          |          5  |                                 d d d            S # 1 swxY w Y   S # 1 swxY w Y   	 t          |          5  |                                 d d d            n# 1 swxY w Y   t          |          5  |                                 d d d            d S # 1 swxY w Y   d S # t          |          5  |                                 d d d            n# 1 swxY w Y   t          |          5  |                                 d d d            w # 1 swxY w Y   w xY wN)r   )r   r$   idr   r   r
   r   user%   _creation_from_dataascontiguousarray_creation_basicemptyshapedtyper   r   
groupStartsenddataptrrank_idrecvgroupEndr    )r5   r6   r7   r8   r9   r:   src_devprev_src_streamprev_dst_stream	src_arraydst_bufrD   counts                r   	_transferrR   9   s    .'*ghnhn===,W55,W55	& $ $   %%hn555/AN$ $	$ $ $ $ $ $ $ $ $ $ $ $ $ $ $  6 6   )/OY_6 66 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 5Y??LE5O B Bin0%&..00*.B B BB B B B B B B B B B B B B B B  7 7gl.u&..00*.B B B !':+<+<+>+>-57 7 77 7 7 7 7 7 7  & &##%%%& & & & & & & & & & & & & & & & &##%%%& & & & & & & & & & & & & & & &7 7 7 7 7 7 7 7 7  & &##%%%& & & & & & & & & & & & & & & & &##%%%& & & & & & & & & & & & & & & & & &  & &##%%%& & & & & & & & & & & & & & & & &##%%%& & & & & & & & & & & & & & & &s.  L'  AB4(L' 4B88L' ;B8<L' 4DL' DL' D7L' ;FL' FL' FL' .A1J"L' :II	"I	5JJ	J	"J&&L' )J&*L' =KK"%K"8LL!L'N7MNMNM N2NNNNNNc                     d | D             S )Nc                 ,    i | ]}|t                      S r   )r0   )r-   devs     r   r/   z)_create_communicators.<locals>.<dictcomp>f   s    888]__888r   r   )r)   s    r   r4   r4   c   s     988888r   c                    |j         j        j        }||k    rt          |j         |j                  S t          |          5  t                      }	 |                                 |                    |j                   |j         	                                }t          ||
                                |j                   |                                 cd d d            S # |                                 w xY w# 1 swxY w Y   d S r<   )r   r$   r=   r   r   r   r
   r>   r%   r   r    )	r5   r6   r7   r8   r9   r:   rL   prev_stream	dst_arrays	            r   rR   rR   h   s>    .'*ghnhn===G__ 
	" 
	",..K"   %%hn555$N//11	!z0022x~O O O !!!
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" !!!!
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	"s+   C:A/C! C:!C77C::C>C>)'r'   dataclassestypingr   r   r   cupy._core.corer   cupy._creation.from_data	_creation	from_datar?   cupy._creation.basicbasicrA   cupy.cuda.devicer   cupy.cuda.streamr   r	   r
   	cupy.cudar   cupyx.distributed._nccl_commr   	availablecupy.cuda.ncclr   r0   r   	dataclassr   tupleslice_PartialUpdateintdictr4   rR   r   r   r   <module>rm      s           * * * * * * * * * * # # # # # # 6 6 6 6 6 6 6 6 6 . . . . . . . . . # # # # # # " " " " " " # # # # # # / / / / / /       B B B B B B> &@@@@@@@        &M        * z5#445 > H"?#?	c= 	!? ? ? ?(&(&-3(&?I(&(&-3(&>A(& 
(& (& (& (& (& (&T9#9	c= 	!9 9 9 9
""-3"?I""-3">A" 
" " " " " "r   