o
    װi                     @   s   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
ededefddZdS )    N)Any)	DTypeLike)_array)_chunk)_data_transfer)_modesarrz_array.DistributedArrayaxisdtypereturnc                 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 rP   V/home/ubuntu/.local/lib/python3.10/site-packages/cupyx/distributed/array/_reduction.py_execute   s   



 
 

%rR   )r   r   numpy.typingr   cupy._manipulation.dims_manipulationdimsr0   cupyx.distributed.arrayr   r   r   r   intrR   rP   rP   rP   rQ   <module>   s"    