o
    Y۷i                     @   sh   d dl Zd dlmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlZG dd de	Zedkr2e  dS dS )    N)cuda	vectorizeguvectorize)
from_dtype)CUDATestCaseskip_on_cudasimc                   @   s\   e Zd Zdd Zdd Zeddd Zeddd	 Zed
dd Zed
dd Z	dS )TestCudaDateTimec                 C   sf   t jdd }tjdddd}|tjdd|j }tj|d	d}|d
 ||| | |||  d S )Nc                 S   s8   t td|jtdD ]}|| | |  ||< qd S N   ranger   gridsizegridsize)startenddeltai r   [/home/ubuntu/vllm_env/lib/python3.10/site-packages/numba/cuda/tests/cudapy/test_datetime.pyfoo   s   z8TestCudaDateTime.test_basic_datetime_kernel.<locals>.foo2005-022006-02datetime64[D]dtyper   '  timedelta64[D]r
       )	r   jitnparangerandomrandintr   
zeros_likeassertPreciseEqual)selfr   arr1arr2r   r   r   r   test_basic_datetime_kernel
   s   
z+TestCudaDateTime.test_basic_datetime_kernelc                 C   s   t jdd }tjdddd}|d }|d |d  }tj|tjd}tj|dd}|d	 ||||| | }| t|dg | 	|||  d S )
Nc                 S   sD   t td|jtdD ]}| | |k||< | | | ||< qd S r	   r   )datestargetr   matchesoutdeltar   r   r   r   r      s   z9TestCudaDateTime.test_scalar_datetime_kernel.<locals>.foor   r   r   r         r   )
r   r    r!   r"   r%   bool_nonzeroassertEquallistr&   )r'   r   r(   r,   r   r-   r.   wherer   r   r   test_scalar_datetime_kernel   s   
z,TestCudaDateTime.test_scalar_datetime_kernelz&ufunc API unsupported in the simulatorc                 C   sl   t td}t||fgdddd }tjdddd}|tjd	d
|j }|||}| |||  d S )Nr   r   r,   c                 S   s   ||  S )Nr   )r   r   r   r   r   timediff.   s   z-TestCudaDateTime.test_ufunc.<locals>.timediffr   r   r   r   r   )	r   r!   r   r   r"   r#   r$   r   r&   )r'   
datetime_tr8   r(   r)   r   r   r   r   
test_ufunc*   s   

zTestCudaDateTime.test_ufuncc                 C   s   t td}t td}t|||d d  fgddddd }tjdd	dd
}|tjdd|j }|||}| |||  d S )Nr   r   z	(),()->()r   r7   c                 S   s   ||  |d< d S )Nr   r   )r   r   outr   r   r   r8   >   s   z.TestCudaDateTime.test_gufunc.<locals>.timediffr   r   r   r   r   )	r   r!   r   r   r"   r#   r$   r   r&   )r'   r9   timedelta_tr8   r(   r)   r   r   r   r   test_gufunc9   s   

zTestCudaDateTime.test_gufuncz#no .copy_to_host() in the simulatorc                 C   sR   t jdddd}t|}|t j}| |t j|  | |j	|j	 d S )Nr   r   r   r   )
r!   r"   r   	to_deviceviewint64r&   copy_to_hostr3   gpu_datar'   arrdarrviewedr   r   r   test_datetime_view_as_int64J   s
   
z,TestCudaDateTime.test_datetime_view_as_int64c                 C   sr   t jdddd}||d  }| |jt d t|}|t j}| |t j|	  | |j
|j
 d S )Nr   r   r   r   r
   r   )r!   r"   r3   r   r   r>   r?   r@   r&   rA   rB   rC   r   r   r   test_timedelta_view_as_int64R   s   
z-TestCudaDateTime.test_timedelta_view_as_int64N)
__name__
__module____qualname__r*   r6   r   r:   r=   rG   rH   r   r   r   r   r   	   s    


r   __main__)numpyr!   numbar   r   r   numba.np.numpy_supportr   numba.cuda.testingr   r   unittestr   rI   mainr   r   r   r   <module>   s    T