o
    YÛ·i›  ã                   @   sT   d Z ddlZddlmZmZ ddlmZmZ G dd„ deƒZ	e
dkr(e ¡  dS dS )z
Test basic language features

é    N)ÚcudaÚfloat64)ÚunittestÚCUDATestCasec                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestLangc                    sL   d‰ t  d¡‡ fdd„ƒ}t tˆ ƒ¡}|d |ƒ |  t |ˆ k¡¡ d S )N)ç      ð?g      @g      @úvoid(float64[:])c                    s   t ˆ ƒD ]\}}|| |< qd S )N)Ú	enumerate)ÚaÚiÚv©Útup© úW/home/ubuntu/vllm_env/lib/python3.10/site-packages/numba/cuda/tests/cudapy/test_lang.pyÚfoo   s   
ÿz$TestLang.test_enumerate.<locals>.foo©é   r   )r   ÚjitÚnpÚzerosÚlenÚ
assertTrueÚall)Úselfr   r
   r   r   r   Útest_enumerate   s   zTestLang.test_enumeratec                    sj   d‰ d‰t  d¡‡ ‡fdd„ƒ}t d¡}|d |ƒ t ˆ ¡}t ˆ¡}|  t |||  ¡ k¡¡ d S )N)r   é   é   )g      @gffffff@gÍÌÌÌÌÌ@r   c                    s0   d}t ˆ ˆƒD ]
\}}||| 7 }q|| d< d S )Nr   )Úzip)r
   Úcr   Új©Út1Út2r   r   r      s   zTestLang.test_zip.<locals>.foor   r   )r   r   r   r   Úarrayr   r   Úsum)r   r   r
   Úbr   r   r!   r   Útest_zip   s   


 zTestLang.test_zipc                 C   s,   t  d¡dd„ ƒ}t d¡}|d |ƒ dS )a?  
        Ensure that typing and lowering of CUDA kernel API primitives works in
        more than one block. Was originally to ensure that macro expansion works
        for more than one block (issue #872), but macro expansion has been
        replaced by a "proper" implementation of all kernel API functions.
        zvoid(float64[:,:])c                 S   s^   t dƒD ]}tjj}qt dƒD ]}tjj}qtj dt¡}d|||f< |||f | ||f< d S )Nr   r   ©r   r   r   )Úranger   Ú	threadIdxÚxÚyÚsharedr$   r   )Úaryr   Útxr    ÚtyÚsmr   r   r   Ú"cuda_kernel_api_in_multiple_blocks1   s   

zCTestLang.test_issue_872.<locals>.cuda_kernel_api_in_multiple_blocksr(   )r   r(   N)r   r   r   r   )r   r2   r
   r   r   r   Útest_issue_872)   s   

	zTestLang.test_issue_872N)Ú__name__Ú
__module__Ú__qualname__r   r'   r3   r   r   r   r   r      s    r   Ú__main__)Ú__doc__Únumpyr   Únumbar   r   Únumba.cuda.testingr   r   r   r4   Úmainr   r   r   r   Ú<module>   s    4ÿ