U
    ?hû  ã                   @   sP   d dl Z d dlmZmZ d dlmZ edƒG dd„ deƒƒZedkrLe  ¡  dS )é    N)ÚCUDATestCaseÚskip_on_cudasim)Úcaptured_stdoutz4cudasim doesn't support cuda import at non-top-levelc                       s4   e Zd ZdZ‡ fdd„Z‡ fdd„Zdd„ Z‡  ZS )Ú
TestVecAddz%
    Test simple vector addition
    c                    s    t ƒ | _| j ¡  tƒ  ¡  d S ©N)r   Ú_captured_stdoutÚ	__enter__ÚsuperÚsetUp©Úself©Ú	__class__© ú[/var/www/html/venv/lib/python3.8/site-packages/numba/cuda/tests/doc_examples/test_vecadd.pyr
      s    
zTestVecAdd.setUpc                    s   | j  d d d ¡ tƒ  ¡  d S r   )r   Ú__exit__r	   ÚtearDownr   r   r   r   r      s    zTestVecAdd.tearDownc           	         sÜ   dd l }ddlm‰  ˆ j‡ fdd„ƒ}|j d¡ d}ˆ  |j |¡¡}ˆ  |j |¡¡}ˆ  |¡}| t	|ƒ¡|||ƒ t
| ¡ ƒ d}t	|ƒ| d }|||f |||ƒ t
| ¡ ƒ |j | ¡ | ¡ | ¡  ¡ d S )Nr   ©Úcudac                    s2   ˆ   d¡}t|ƒ}||k r.| | ||  ||< d S )Né   )ÚgridÚlen)ÚaÚbÚcÚtidÚsizer   r   r   Úf    s    
z$TestVecAdd.test_ex_vecadd.<locals>.fr   i † é   )ÚnumpyZnumbar   ZjitÚrandomÚseedZ	to_deviceZdevice_array_likeÚforallr   ÚprintZcopy_to_hostZtestingZassert_equal)	r   Únpr   ÚNr   r   r   ZnthreadsZnblocksr   r   r   Útest_ex_vecadd   s&    

þzTestVecAdd.test_ex_vecadd)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r&   Ú__classcell__r   r   r   r   r      s   r   Ú__main__)	ZunittestZnumba.cuda.testingr   r   Znumba.tests.supportr   r   r'   Úmainr   r   r   r   Ú<module>   s   @