o
    8Î®c	  ã                   @   s\   d dl Z d dlmZmZ d dlmZ d dl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 )ÚTestCpuGpuCompatz5
    Test compatibility of CPU and GPU functions
    c                    s    t ƒ | _| j ¡  tƒ  ¡  d S ©N)r   Ú_captured_stdoutÚ	__enter__ÚsuperÚsetUp©Úself©Ú	__class__© úX/tmp/pip-target-vg8gfxp4/lib/python/numba/cuda/tests/doc_examples/test_cpu_gpu_compat.pyr
      s   
zTestCpuGpuCompat.setUpc                    s   | j  d d d ¡ tƒ  ¡  d S r   )r   Ú__exit__r	   ÚtearDownr   r   r   r   r      s   zTestCpuGpuCompat.tearDownc                    sÞ   ddl m‰ dd l}ddlm‰ ˆ g d¢¡}ˆ g d¢¡}ˆ g d¢¡}ˆ g d¢¡}|j‡fdd	„ƒ‰ tˆ d
ddƒƒ ˆj‡ ‡fdd„ƒ}| t|ƒ¡||||ƒ t|ƒ ‡ fdd„t	|||ƒD ƒ}t
j || ¡ ¡ d S )Nr   ©Úpi)Úcuda)é   é
   éê   )é   r   i®  )é   é   i£  )ç        r   r   c                    s    d| d|  d| d ˆ    S )Né   r   r   )ÚxÚyÚzr   r   r   Úbusiness_logic)   s    z?TestCpuGpuCompat.test_ex_cpu_gpu_compat.<locals>.business_logicr   r   r   c                    s:   ˆ  d¡}|t|ƒk rˆ || || || ƒ| |< d S d S )Nr   )ÚgridÚlen)ÚresÚxarrÚyarrÚzarrÚtid)r!   r   r   r   Úf3   s   
 þz2TestCpuGpuCompat.test_ex_cpu_gpu_compat.<locals>.fc                    s   g | ]\}}}ˆ |||ƒ‘qS r   r   )Ú.0r   r   r    )r!   r   r   Ú
<listcomp>A   s    ÿz;TestCpuGpuCompat.test_ex_cpu_gpu_compat.<locals>.<listcomp>)Úmathr   Únumbar   Ú	to_deviceÚjitÚprintÚforallr#   ÚzipÚnpÚtestingÚassert_equalÚcopy_to_host)r   r-   ÚXÚYÚZÚresultsr)   Úexpectr   )r!   r   r   r   Útest_ex_cpu_gpu_compat   s*   

ÿþz'TestCpuGpuCompat.test_ex_cpu_gpu_compat)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r<   Ú__classcell__r   r   r   r   r      s
    r   Ú__main__)ÚunittestÚnumba.cuda.testingr   r   Únumba.tests.supportr   Únumpyr3   r   r=   Úmainr   r   r   r   Ú<module>   s    Bÿ