o
    X۷i>                     @  s|   d dl mZ d dlZd dlmZ d dlmZ d dlm  mZ	 d dl
mZ d dl
mZ d dl
mZ d dl
mZ dddZdS )    )annotationsN)Any)	DTypeLike)_array)_chunk)_data_transfer)_modesarr_array.DistributedArrayaxisintdtyper   returnr   c                 C  s  d}t jt jt jt jd}|j|vrtd|j ||j }|t jt jfv r5| j|ur4| t j	} d}n| |} | j
}|rutt j|}|| j}| D ]$}	tt|	D ]}
t|	|
 jdkrdqX|	|
  |	|
< |	|
 | qXqP| jd | | j|d d   }d }i }| D ]\}}	g ||< |	D ]}| }|jd | |j|d d   }t|jtjr|jj}|d | ||d d   }tj||jj |}nt!"||j||d}|j}tj||# ||j$d}|| %| t|jdkr	 W d    q|jD ]8\}}|&|j' t!"||j||d}|j}t(j)||# |j$d}|d | ||d d   }|*|| qW d    n	1 sJw   Y  qqt+,||||| j-S )	NF)cupy_maxcupy_mincupy_sum	cupy_prodzUnsupported kernel: Tr      )r   r   )
prevent_gc).r   MAXMINSUMPRODnameRuntimeError_mode_to_op_modeREPLICA_chunks_maptypingcast_OpModeidentity_ofr   valuesrangelenupdatescopy#set_identity_on_overwritten_entriesshapeitemson_readyindex
isinstancearrayr   _ArrayPlaceholder_Chunkcreate_placeholderdevice_manipulation_dims
atleast_1drecordr   append
wait_eventreadyr   
_AsyncData
add_updater   DistributedArray_comms)r	   kernelr   r   
overwritesmode_overridesmode
chunks_mapidentitychunksir)   	out_dtypeout_chunks_mapdevchunkstream	out_index	old_shape	out_shape	out_chunk	out_arrayupdateupdate_indexout_update_array
out_update rS   X/home/ubuntu/vllm_env/lib/python3.10/site-packages/cupyx/distributed/array/_reduction.py_execute   s   



 
 

%rU   )r	   r
   r   r   r   r   r   r   )
__future__r   r   r   numpy.typingr   cupy._manipulation.dims_manipulationdimsr3   cupyx.distributed.arrayr   r   r   r   rU   rS   rS   rS   rT   <module>   s    