U
    ?hs                     @   sT   d dl Zd dlmZ d dlmZ d dlmZmZ G dd deZ	e
dkrPe  dS )    N)
namedtuple)cuda)unittestCUDATestCasec                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestCudaArrayArgc                    sn   t jdddddd  t d fdd}tjd	tjd
}t|}|d || | t||k d S )Nzdouble(double[:],int64)T)Zdeviceinlinec                 S   s   | | S )N )acr   r   Y/var/www/html/venv/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_array_args.pydevice_function   s    z8TestCudaArrayArg.test_array_ary.<locals>.device_functionzvoid(double[:],double[:])c                    s   t d} | |||< d S )N   )r   grid)xyir   r   r   kernel   s    
z/TestCudaArrayArg.test_array_ary.<locals>.kernel
   Zdtype)r   r   )r   jitnparangedoubleZ
zeros_likeZ
assertTrueall)selfr   r   r   r   r   r   test_array_ary	   s    

zTestCudaArrayArg.test_array_aryc                 C   s^   t jdd }d}tjt|tjd}|d || tt|D ]}| || ||  q@d S )Nc                 S   s(   |d | d< |d | d< |d | d< d S )Nr   r      r   rr   r   r   r   f   s    z)TestCudaArrayArg.test_unituple.<locals>.f)r   r      r   r   r   )r   r   r   zeroslenint64rangeassertEqual)r   r    r   r   r   r   r   r   test_unituple   s    
zTestCudaArrayArg.test_unituplec                 C   s   t jdd }d}tjt|d tjd}tjt|d tjd}|d ||| tt|D ]}| || ||  q^tt|D ] }| || ||t|   qd S )Nc                 S   sL   |d | d< |d | d< |d | d< |d |d< |d |d< |d |d< d S Nr   r   r   r!         r   r1r2r   r   r   r   r    (   s    z&TestCudaArrayArg.test_tuple.<locals>.f)r   r   r!   g      @g      @g      @r   r   r"   )	r   r   r   r#   r$   r%   float64r&   r'   )r   r    r   r-   r.   r   r   r   r   
test_tuple'   s    
zTestCudaArrayArg.test_tuplec                 C   sl   t jdd }tdd}|dd}tjt|tjd}|d || | |d	 |j | |d |j	 d S )
Nc                 S   s   |j | d< |j| d< d S Nr   r   r   r   r   r   r   r   r    =   s    
z.TestCudaArrayArg.test_namedunituple.<locals>.fPointr2   r   r   r   r"   r   )
r   r   r   r   r#   r$   r%   r'   r   r   )r   r    r3   r   r   r   r   r   test_namedunituple<   s    


z#TestCudaArrayArg.test_namedunituplec                 C   s   t jdd }tdd}|ddd}tjdtjd}tjdtjd}|d	 ||| | |d
 |j | |d |j	 | |d
 |j
 d S )Nc                 S   s"   |j | d< |j| d< |j|d< d S r1   r   r   r   r,   r   r   r   r    K   s    

z+TestCudaArrayArg.test_namedtuple.<locals>.fr3   r5   r   r   gS@r   r"   r   )r   r   r   r   r#   r%   r/   r'   r   r   r   )r   r    r3   r   r-   r.   r   r   r   test_namedtupleJ   s    

z TestCudaArrayArg.test_namedtuplec                 C   sF   t jdd }t }tjdtjd}|d || | |d d d S )Nc                 S   s   t || d< d S )Nr   r$   r   r   r   r   r    \   s    z,TestCudaArrayArg.test_empty_tuple.<locals>.fr   r   r"   r   )r   r   tupler   onesr%   r'   r   r    r   r   r   r   r   test_empty_tuple[   s    
z!TestCudaArrayArg.test_empty_tuplec                 C   sT   t jdd }d}tjdtjd}|d || | |d d | |d	 d d S )
Nc                 S   s    t || d< t |d | d< d S r1   r7   r   r   r   r   r    g   s    z6TestCudaArrayArg.test_tuple_of_empty_tuples.<locals>.f)r   r   r   r   r   r"   r   r!   r   r   r   r   r9   r%   r'   r:   r   r   r   test_tuple_of_empty_tuplesf   s    
z+TestCudaArrayArg.test_tuple_of_empty_tuplesc                 C   s   t jdd }d}tjdtjd}|d || | |d d | |d	 d | |d
 d
 | |d d | |d d | |d d | |d d | |d d | |d d d S )Nc                 S   s   t || d< t |d | d< t |d | d< t |d | d< |d d | d< |d d | d< |d d | d< |d d | d< |d d | d	< d S )
Nr   r   r   r!   r*   r+            r7   r   r   r   r   r    t   s    z0TestCudaArrayArg.test_tuple_of_tuples.<locals>.f)r   )r+   r>   )r@   	   r   rA   r   r"   r   r!   r   r   r*   r+   r>   r@   r?   r   r<   r:   r   r   r   test_tuple_of_tupless   s    
z%TestCudaArrayArg.test_tuple_of_tuplesc                 C   s   t jdd }d}tjdtjd}|d || | |d d | |d	 d
 | |d d | |d
 d | |d d | |d d d S )Nc                 S   s\   t || d< t |d | d< |d d | d< |d d | d< |d d | d< |d | d< d S r)   r7   r   r   r   r   r       s    z<TestCudaArrayArg.test_tuple_of_tuples_and_scalars.<locals>.f))r>   r+   r*   r?   rA   r   r"   r   r   r   r!   r>   r+   r*   r?   r<   r:   r   r   r    test_tuple_of_tuples_and_scalars   s    
z1TestCudaArrayArg.test_tuple_of_tuples_and_scalarsc                 C   s^   t jdd }d}t|}t|}|d }|||f}|d|f | tj|||  d S )Nc                 S   s>   t d}|t| d k r:| d | | d |  | d |< d S )Nr   r   r   )r   r   r$   )r   r   r   r   r   r       s    
z0TestCudaArrayArg.test_tuple_of_arrays.<locals>.fr   r!   r   )r   r   r   r#   Z	ones_likeZtestingZassert_equal)r   r    NZx0x1Zx2r   r   r   r   test_tuple_of_arrays   s    



z%TestCudaArrayArg.test_tuple_of_arraysc                 C   s   t jdd }tjdtjd}d| ddf}tjdtjd}|d || | |d	 d	 | |d
 d | |d d | |d d | |d d d S )Nc                 S   sP   |d d | d< |d d | d< |d | d< |d d | d< |d d | d< d S )Nr   r   r   r!   r*   r   r   r   r   r   r       s
    z<TestCudaArrayArg.test_tuple_of_array_scalar_tuple.<locals>.fr   r   r   )r*   r!   r+   r"   r   r   r!   r*   )r   r   r   r   r%   r#   r'   )r   r    zr   r   r   r   r    test_tuple_of_array_scalar_tuple   s    
z1TestCudaArrayArg.test_tuple_of_array_scalar_tupleN)__name__
__module____qualname__r   r(   r0   r4   r6   r;   r=   rB   rC   rF   rH   r   r   r   r   r      s   r   __main__)numpyr   collectionsr   Znumbar   Znumba.cuda.testingr   r   r   rI   mainr   r   r   r   <module>   s    A