o
    Û¾iû  ã                   @   sT   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r(e  ¡  dS 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__© ú]/home/ubuntu/.local/lib/python3.10/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                    s6   ˆ   d¡}t|ƒ}||k r| | ||  ||< d S d S )Né   )ÚgridÚlen)ÚaÚbÚcÚtidÚsizer   r   r   Úf    s
   
ÿz$TestVecAdd.test_ex_vecadd.<locals>.fr   i † é   )ÚnumpyÚnumbar   ÚjitÚrandomÚseedÚ	to_deviceÚdevice_array_likeÚforallr   ÚprintÚcopy_to_hostÚtestingÚassert_equal)	r   Únpr   ÚNr   r   r   ÚnthreadsÚ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__)	ÚunittestÚnumba.cuda.testingr   r   Únumba.tests.supportr   r   r0   Úmainr   r   r   r   Ú<module>   s    @ÿ