o
    ۾i                     @   s^   d dl Zd dlmZ d dlZd dlmZ ejdd ZG dd deZ	e
dkr-e  dS dS )	    N)cuda)CUDATestCasec                 C   s,   t d}|| jk r| |  d7  < d S d S N   r   gridsize)xi r   W/home/ubuntu/.local/lib/python3.10/site-packages/numba/cuda/tests/cudapy/test_forall.pyfoo   s   

r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestForAllc                 C   s8   t d}| }t|j| t j||d  d S )N   r   )nparangecopyr   forallr   testingassert_array_almost_equal)selfarrorigr   r   r   test_forall_1   s   
zTestForAll.test_forall_1c                 C   sp   t ddd }tjdtjd}tjdtjd}| }d}||j||| tjj	||| | dd d S )	Nz%void(float32, float32[:], float32[:])c                 S   s4   t d}||jk r| ||  ||  ||< d S d S r   r   )ar	   yr
   r   r   r   bar   s   

z%TestForAll.test_forall_2.<locals>.bar   )dtypegX9v?   )decimal)
r   jitr   r   float32r   r   r   r   r   )r   r   r	   r   oldyr   r   r   r   test_forall_2   s   
zTestForAll.test_forall_2c                 C   s   t d}td| d S )Nr   r   )r   r   r   r   )r   r   r   r   r   test_forall_no_work$   s   
zTestForAll.test_forall_no_workc                 C   sJ   |  t}td W d    n1 sw   Y  | dt|j d S )Nz,Can't create ForAll with negative task count)assertRaises
ValueErrorr   r   assertInstr	exception)r   raisesr   r   r   test_forall_negative_work*   s   z$TestForAll.test_forall_negative_workN)__name__
__module____qualname__r   r$   r%   r-   r   r   r   r   r      s
    r   __main__)numpyr   numbar   unittestnumba.cuda.testingr   r!   r   r   r.   mainr   r   r   r   <module>   s    
$