o
    8ήc                     @   sT   d dl Z d dlmZmZmZ ededG dd deZedkr(e   dS dS )    N)CUDATestCaseskip_on_cudasimskip_unless_cuda_pythonzNVIDIA Binding needed for NVRTCz4cudasim doesn't support cuda import at non-top-levelc                   @   s   e Zd Zdd ZdS )TestFFIc           
         s   ddl m  dd l}dd l} dd|j|jt}|j	|dd} j
|gd fdd	}d
}|jd |j||j}|j||j}||}	|d |	|| |j|	||  d S )Nr   )cudamul_f32_f32zfloat32(float32, float32)ffizfunctions.cu)linkc                    s4     d}|t| k r|| || | |< d S d S )N   )gridlen)rxyir   mul M/tmp/pip-target-vg8gfxp4/lib/python/numba/cuda/tests/doc_examples/test_ffi.pymultiply_vectors   s   
z4TestFFI.test_ex_linking_cu.<locals>.multiply_vectors    r
   )r
   r   )numbar   numpyosdeclare_devicepathdirnameabspath__file__joinjitrandomseedrandastypefloat32
zeros_liketestingassert_array_equal)
selfnpr   basedirfunctions_cur   Nr   r   r   r   r   r   test_ex_linking_cu   s   
zTestFFI.test_ex_linking_cuN)__name__
__module____qualname__r.   r   r   r   r   r   	   s    r   __main__)unittestnumba.cuda.testingr   r   r   r   r/   mainr   r   r   r   <module>   s   &