U
    -e                     @   sd   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r`e  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sizeZgridsize)startenddeltai r   f/var/www/html/Darija-Ai-Train/env/lib/python3.8/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$   Zbool_Z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_tr5   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   r4   c                 S   s   ||  |d< d S )Nr   r   )r   r   outr   r   r   r5   >   s    z.TestCudaDateTime.test_gufunc.<locals>.timediffr   r   r   r   r   )	r   r    r   r   r!   r"   r#   r   r%   )r&   r6   Ztimedelta_tr5   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_hostr0   gpu_datar&   ZarrdarrZ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!   r0   r   r   r:   r;   r<   r%   r=   r>   r?   r   r   r   test_timedelta_view_as_int64R   s    
z-TestCudaDateTime.test_timedelta_view_as_int64N)
__name__
__module____qualname__r)   r3   r   r7   r9   rA   rB   r   r   r   r   r   	   s   


r   __main__)numpyr    Znumbar   r   r   Znumba.np.numpy_supportr   Znumba.cuda.testingr   r   Zunittestr   rC   mainr   r   r   r   <module>   s   T