o
    Ö°“iò  ã                   @   s`   d dl mZ d dl mZ d dlmZ d dlmZ ddd„Ze dd	d
d¡Z	dd„ Z
ddd„ZdS )é    )Ú_kernel)Ú_memory_range)Újoin)ÚsearchNc                 C   s   |d u r
t  | |¡S tdƒ‚)Nz'Only supported for `max_work` is `None`)r   Úmay_share_boundsÚNotImplementedError)ÚaÚbÚmax_work© r   úL/home/ubuntu/.local/lib/python3.10/site-packages/cupy/_misc/memory_ranges.pyÚmay_share_memory   s   r   zT xz
uint64 outzout = (unsigned long long)(&x)Úcupy_get_memory_ptrsc                 C   s.   | j jdkr
t| ƒS t t| jƒt| jƒg¡S )NÚc)ÚdtypeÚkindÚ_get_memory_ptrs_kernelr   ÚconcatenateÚrealÚimag)Úxr   r   r   Ú_get_memory_ptrs   s   þr   c                 C   sŠ   | |u r| j dkrdS |dkrt | |¡S |dv rAt| ƒ ¡ }t|ƒ dd¡}| ¡  t ||d¡}t ||d¡}t	||k 
¡ ƒS td	ƒ‚)
Nr   TÚMAY_SHARE_BOUNDS)NÚMAY_SHARE_EXACTéÿÿÿÿé   ÚleftÚrightz%Not supported for integer `max_work`.)Úsizer   r   r   ÚravelÚreshapeÚsortr   ÚsearchsortedÚboolÚanyr   )r   r	   r
   Úa_ptrsÚb_ptrsr   Úyr   r   r   Úshares_memory   s   r(   )N)Ú
cupy._corer   r   Úcupy._manipulationr   Úcupy._sortingr   r   ÚElementwiseKernelr   r   r(   r   r   r   r   Ú<module>   s    
ý	