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   U/home/ubuntu/veenaModal/venv/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    
	