U
    hâËdb  ã                   @   sX   d dl Zd dlmZmZmZ d dlmZmZ dd„ Z	G dd„ deƒZ
edkrTe ¡  dS )	é    N)ÚcudaÚfloat32Úvoid)ÚunittestÚCUDATestCasec                 C   sD   t jt  | |  ¡ | | ¡t jd�}t jt  | ¡d |jd�}||fS )N©Údtyper   )ÚnpÚarrayZarangeZreshaper   r   )ÚnÚAÚB© r   ú\/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_nondet.pyÚgenerate_input   s    "r   c                   @   s   e Zd Zdd„ ZdS )ÚTestCudaNonDetc                 C   sÊ   t  ttdd…dd…f tdd…dd…f tdd… ƒ¡dd„ ƒ}d}t|ƒ\}}tj|j|jd�}d}d}t  	|¡}t  	|¡}	t j	|dd	�}
|||f |
||	ƒ t 
|t |¡¡}tj |
 ¡ |¡ dS )
ziTest issue with loop not running due to bad sign-extension at the for
        loop precondition.
        Nc                 S   s†   t  d¡\}}t jjt jj }t jjt jj }| jd }| jd }t|||ƒD ]2}	t|||ƒD ] }
||
|	f ||	  | |
|	f< q^qNd S )Né   r   é   )r   ÚgridZgridDimÚxZblockDimÚyÚshapeÚrange)ÚcÚaÚbZstartXZstartYZgridXZgridYÚheightÚwidthr   r   r   r   r   Údiagproduct   s    

z0TestCudaNonDet.test_for_pre.<locals>.diagproducté   r   )é    r   )r   r   F)Úcopy)r   Zjitr   r   r   r	   Úemptyr   r   Z	to_deviceÚdotZdiagÚtestingZassert_array_almost_equalZcopy_to_host)Úselfr   ÚNr   r   ÚFZblockdimZgriddimZdAZdBZdFÚEr   r   r   Útest_for_pre   s    8


zTestCudaNonDet.test_for_preN)Ú__name__Ú
__module__Ú__qualname__r)   r   r   r   r   r      s   r   Ú__main__)Únumpyr	   Znumbar   r   r   Znumba.cuda.testingr   r   r   r   r*   Úmainr   r   r   r   Ú<module>   s   $