o
    WÛ·i  ã                   @  sl   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d„Z	e 
d	d
dd¡Zdd„ Zddd„ZdS )é    )Úannotations)Ú_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   úN/home/ubuntu/vllm_env/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)Ú
__future__r   Ú
cupy._corer   r   Úcupy._manipulationr   Úcupy._sortingr   r   ÚElementwiseKernelr   r   r)   r   r   r   r   Ú<module>   s    
ý	